use of org.adw.launcher2.actions.LauncherActions.Action in project ADWLauncher2 by boombuler.
the class CustomShirtcutActivity method onActivityResult.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
switch(requestCode) {
case PICK_CUSTOM_PICTURE:
mBitmap = (Bitmap) data.getParcelableExtra("data");
if (mBitmap != null) {
if (mBitmap.getWidth() > mIconSize)
mBitmap = Bitmap.createScaledBitmap(mBitmap, mIconSize, mIconSize, true);
btPickIcon.setImageBitmap(mBitmap);
}
break;
case PICK_CUSTOM_ICON:
Uri photoUri = data.getData();
try {
InputStream is = getContentResolver().openInputStream(photoUri);
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inJustDecodeBounds = true;
BitmapFactory.decodeStream(is, null, opts);
BitmapFactory.Options ops2 = new BitmapFactory.Options();
int width = mIconSize;
float w = opts.outWidth;
//int scale = Math.round(w / width);
int scale = (int) (w / width);
ops2.inSampleSize = scale;
is = getContentResolver().openInputStream(photoUri);
mBitmap = BitmapFactory.decodeStream(is, null, ops2);
if (mBitmap != null) {
if (mBitmap.getWidth() > mIconSize)
mBitmap = Bitmap.createScaledBitmap(mBitmap, mIconSize, mIconSize, true);
btPickIcon.setImageBitmap(mBitmap);
}
} catch (Exception e) {
e.printStackTrace();
}
break;
case PICK_FROM_ICON_PACK:
mBitmap = (Bitmap) data.getParcelableExtra("icon");
if (mBitmap != null) {
if (mBitmap.getWidth() > mIconSize)
mBitmap = Bitmap.createScaledBitmap(mBitmap, mIconSize, mIconSize, true);
btPickIcon.setImageBitmap(mBitmap);
}
break;
case PICK_STANDARD_MENU:
String applicationName = getResources().getString(R.string.group_applications);
String activitiesName = getResources().getString(R.string.shirtcuts_activity);
String launcheractionsName = getResources().getString(R.string.launcher_actions);
String shortcutName = data.getStringExtra(Intent.EXTRA_SHORTCUT_NAME);
if (applicationName != null && applicationName.equals(shortcutName)) {
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
Intent pickIntent = new Intent(Intent.ACTION_PICK_ACTIVITY);
pickIntent.putExtra(Intent.EXTRA_INTENT, mainIntent);
startActivityForResult(pickIntent, PICK_STANDARD_APPLICATION);
} else if (activitiesName != null && activitiesName.equals(shortcutName)) {
Intent picker = new Intent();
picker.setClass(this, ActivityPickerActivity.class);
startActivityForResult(picker, PICK_STANDARD_SHORTCUT);
} else if (launcheractionsName != null && launcheractionsName.equals(shortcutName)) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(getString(R.string.launcher_actions));
final ListAdapter adapter = LauncherActions.getInstance().getSelectActionAdapter();
builder.setAdapter(adapter, new Dialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
LauncherActions.Action action = (LauncherActions.Action) adapter.getItem(which);
Intent result = new Intent();
result.putExtra(Intent.EXTRA_SHORTCUT_NAME, action.getName());
result.putExtra(Intent.EXTRA_SHORTCUT_INTENT, LauncherActions.getInstance().getIntentForAction(action));
ShortcutIconResource iconResource = new ShortcutIconResource();
iconResource.packageName = CustomShirtcutActivity.this.getPackageName();
iconResource.resourceName = getResources().getResourceName(action.getIconResourceId());
result.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconResource);
onActivityResult(PICK_STANDARD_SHORTCUT, RESULT_OK, result);
}
});
builder.create().show();
} else {
startActivityForResult(data, PICK_STANDARD_SHORTCUT);
}
break;
case PICK_STANDARD_APPLICATION:
if (mBitmap != null) {
mBitmap.recycle();
mBitmap = null;
}
ComponentName component = data.getComponent();
ActivityInfo activityInfo = null;
try {
activityInfo = mPackageManager.getActivityInfo(component, 0);
} catch (NameNotFoundException e) {
}
String title = null;
if (activityInfo != null) {
title = activityInfo.loadLabel(mPackageManager).toString();
if (title == null) {
title = activityInfo.name;
}
mIntent = data;
btPickActivity.setText(title);
mBitmap = null;
btPickIcon.setImageDrawable(activityInfo.loadIcon(mPackageManager));
btPickIcon.setEnabled(true);
btOk.setEnabled(true);
edLabel.setText(title);
}
break;
case PICK_STANDARD_SHORTCUT:
if (mBitmap != null) {
mBitmap.recycle();
mBitmap = null;
}
Intent intent = data.getParcelableExtra(Intent.EXTRA_SHORTCUT_INTENT);
String name = data.getStringExtra(Intent.EXTRA_SHORTCUT_NAME);
Bitmap bitmap = data.getParcelableExtra(Intent.EXTRA_SHORTCUT_ICON);
Drawable icon = null;
if (bitmap != null) {
icon = new FastBitmapDrawable(Bitmap.createScaledBitmap(bitmap, mIconSize, mIconSize, true));
mBitmap = bitmap;
} else {
Parcelable extra = data.getParcelableExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE);
if (extra != null && extra instanceof ShortcutIconResource) {
try {
ShortcutIconResource iconResource = (ShortcutIconResource) extra;
Resources resources = mPackageManager.getResourcesForApplication(iconResource.packageName);
final int id = resources.getIdentifier(iconResource.resourceName, null, null);
icon = resources.getDrawable(id);
mBitmap = Utilities.createIconBitmap(icon, this);
} catch (Exception e) {
}
}
}
if (icon == null) {
icon = getPackageManager().getDefaultActivityIcon();
}
mIntent = intent;
btPickActivity.setText(name);
btPickIcon.setImageDrawable(icon);
btPickIcon.setEnabled(true);
btOk.setEnabled(true);
edLabel.setText(name);
break;
default:
break;
}
}
}
use of org.adw.launcher2.actions.LauncherActions.Action in project ADWLauncher2 by boombuler.
the class Launcher method showActions.
public void showActions(ItemInfo info, View view, PopupWindow.OnDismissListener onDismissListener) {
if (info == null || view == null)
return;
List<EditAction> actions = info.getAvailableActions(view, this);
if (actions.size() <= 0)
return;
final View finalview = view;
final ItemInfo finalInfo = info;
int[] xy = new int[2];
//fills the array with the computed coordinates
view.getLocationInWindow(xy);
new Rect(xy[0], xy[1], xy[0] + view.getWidth(), xy[1] + view.getHeight());
//a new QuickActionWindow object
final QuickAction qa = new QuickAction(view);
view.setTag(org.adw.launcher2.R.id.TAG_PREVIEW, qa);
if (onDismissListener != null) {
qa.setOnDismissListener(onDismissListener);
}
//when the item is clicked on
for (EditAction action : actions) {
final EditAction finalaction = action;
Drawable icon;
CharSequence title;
if (action.getIconResourceId() == 0) {
icon = action.getIconDrawable();
} else {
icon = getResources().getDrawable(action.getIconResourceId());
}
if (action.getTitleResourceId() == 0) {
title = action.getTitleString();
} else {
title = getResources().getString(action.getTitleResourceId());
}
ActionItem ai = new ActionItem(icon);
if (title != null)
ai.setTitle(title.toString());
ai.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
qa.dismiss();
finalInfo.executeAction(finalaction, finalview, Launcher.this);
}
});
qa.addActionItem(ai);
}
//shows the quick action window on the screen
qa.show();
}
use of org.adw.launcher2.actions.LauncherActions.Action in project ADWLauncher2 by boombuler.
the class LauncherActionPreference method onClick.
@Override
protected void onClick() {
AlertDialog.Builder builder = new Builder(getContext());
builder.setTitle(this.getTitle());
final ListAdapter adapter = LauncherActions.getInstance().getSelectActionAdapter();
builder.setAdapter(adapter, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Action act = (Action) adapter.getItem(which);
Intent intent = LauncherActions.getInstance().getIntentForAction(act);
String sIntent = intent.toUri(0).toString();
persistString(sIntent);
}
});
builder.create().show();
}
use of org.adw.launcher2.actions.LauncherActions.Action in project ADWLauncher2 by boombuler.
the class DragController method onTouchEvent.
/**
* Call this from a drag source view.
*/
public boolean onTouchEvent(MotionEvent ev) {
View scrollView = mScrollView;
if (!mDragging) {
return false;
}
final int action = ev.getAction();
final int screenX = clamp((int) ev.getRawX(), 0, mDisplayMetrics.widthPixels);
final int screenY = clamp((int) ev.getRawY(), 0, mDisplayMetrics.heightPixels);
switch(action) {
case MotionEvent.ACTION_DOWN:
// Remember where the motion event started
mMotionDownX = screenX;
mMotionDownY = screenY;
if ((screenX < mScrollZone) || (screenX > scrollView.getWidth() - mScrollZone)) {
mScrollState = SCROLL_WAITING_IN_ZONE;
mHandler.postDelayed(mScrollRunnable, SCROLL_DELAY);
} else {
mScrollState = SCROLL_OUTSIDE_ZONE;
}
break;
case MotionEvent.ACTION_MOVE:
// Update the drag view. Don't use the clamped pos here so the dragging looks
// like it goes off screen a little, intead of bumping up against the edge.
mDragView.move((int) ev.getRawX(), (int) ev.getRawY());
// Drop on someone?
final int[] coordinates = mCoordinatesTemp;
DropTarget dropTarget = findDropTarget(screenX, screenY, coordinates);
if (dropTarget != null) {
if (mLastDropTarget == dropTarget) {
dropTarget.onDragOver(mDragSource, coordinates[0], coordinates[1], (int) mTouchOffsetX, (int) mTouchOffsetY, mDragView, mDragInfo);
} else {
if (mLastDropTarget != null) {
mLastDropTarget.onDragExit(mDragSource, coordinates[0], coordinates[1], (int) mTouchOffsetX, (int) mTouchOffsetY, mDragView, mDragInfo);
}
dropTarget.onDragEnter(mDragSource, coordinates[0], coordinates[1], (int) mTouchOffsetX, (int) mTouchOffsetY, mDragView, mDragInfo);
}
} else {
if (mLastDropTarget != null) {
mLastDropTarget.onDragExit(mDragSource, coordinates[0], coordinates[1], (int) mTouchOffsetX, (int) mTouchOffsetY, mDragView, mDragInfo);
}
}
mLastDropTarget = dropTarget;
if (mTagPopup != null) {
final float movX = Math.abs(screenX - mMotionDownX);
final float movY = Math.abs(screenY - mMotionDownY);
if (movX > QA_HIDE_OFFSET || movY > QA_HIDE_OFFSET) {
final QuickAction qa = (QuickAction) mTagPopup;
qa.dismiss();
mTagPopup = null;
}
}
// Scroll, maybe, but not if we're in the delete region.
boolean inDeleteRegion = false;
if (mDeleteRegion != null) {
inDeleteRegion = mDeleteRegion.contains(screenX, screenY);
}
// + " mScrollZone=" + mScrollZone);
if (!inDeleteRegion && screenX < mScrollZone) {
if (mScrollState == SCROLL_OUTSIDE_ZONE) {
mScrollState = SCROLL_WAITING_IN_ZONE;
mScrollRunnable.setDirection(SCROLL_LEFT);
mHandler.postDelayed(mScrollRunnable, SCROLL_DELAY);
}
} else if (!inDeleteRegion && screenX > scrollView.getWidth() - mScrollZone) {
if (mScrollState == SCROLL_OUTSIDE_ZONE) {
mScrollState = SCROLL_WAITING_IN_ZONE;
mScrollRunnable.setDirection(SCROLL_RIGHT);
mHandler.postDelayed(mScrollRunnable, SCROLL_DELAY);
}
} else {
if (mScrollState == SCROLL_WAITING_IN_ZONE) {
mScrollState = SCROLL_OUTSIDE_ZONE;
mScrollRunnable.setDirection(SCROLL_RIGHT);
mHandler.removeCallbacks(mScrollRunnable);
}
}
break;
case MotionEvent.ACTION_UP:
mHandler.removeCallbacks(mScrollRunnable);
if (mDragging) {
drop(screenX, screenY);
}
endDrag();
break;
case MotionEvent.ACTION_CANCEL:
cancelDrag();
}
return true;
}
Aggregations