summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher3/shortcuts
diff options
context:
space:
mode:
authorSunny Goyal <sunnygoyal@google.com>2016-08-15 17:13:16 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2016-08-15 17:13:16 +0000
commitc9a0a7c62f92bf54f5d63202fd85f1125d72df21 (patch)
treeaa31fe671b6c413134c74271c7a510fd31327d7e /src/com/android/launcher3/shortcuts
parent8769b44ae073ea7ec5ba5b7687105df6d35c3282 (diff)
parent5836bf728e85c1c4fae67862deb4e973ac55e944 (diff)
downloadandroid_packages_apps_Trebuchet-c9a0a7c62f92bf54f5d63202fd85f1125d72df21.tar.gz
android_packages_apps_Trebuchet-c9a0a7c62f92bf54f5d63202fd85f1125d72df21.tar.bz2
android_packages_apps_Trebuchet-c9a0a7c62f92bf54f5d63202fd85f1125d72df21.zip
Merge "Moving the shortcut application logic to the DeepShortcutView. This makes the logic for accessing various properties consistant and and ties it to the UI of the DeepShortcutView." into ub-launcher3-calgary-polish
Diffstat (limited to 'src/com/android/launcher3/shortcuts')
-rw-r--r--src/com/android/launcher3/shortcuts/DeepShortcutView.java33
-rw-r--r--src/com/android/launcher3/shortcuts/DeepShortcutsContainer.java44
2 files changed, 41 insertions, 36 deletions
diff --git a/src/com/android/launcher3/shortcuts/DeepShortcutView.java b/src/com/android/launcher3/shortcuts/DeepShortcutView.java
index 37b6d0422..e7fc41512 100644
--- a/src/com/android/launcher3/shortcuts/DeepShortcutView.java
+++ b/src/com/android/launcher3/shortcuts/DeepShortcutView.java
@@ -21,16 +21,19 @@ import android.animation.ValueAnimator;
import android.content.Context;
import android.graphics.Point;
import android.graphics.Rect;
+import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.View;
import android.widget.FrameLayout;
import com.android.launcher3.IconCache;
+import com.android.launcher3.Launcher;
import com.android.launcher3.LauncherAppState;
import com.android.launcher3.LogAccelerateInterpolator;
import com.android.launcher3.R;
import com.android.launcher3.ShortcutInfo;
import com.android.launcher3.Utilities;
+import com.android.launcher3.shortcuts.DeepShortcutsContainer.UnbadgedShortcutInfo;
import com.android.launcher3.util.PillRevealOutlineProvider;
import com.android.launcher3.util.PillWidthRevealOutlineProvider;
@@ -48,6 +51,8 @@ public class DeepShortcutView extends FrameLayout implements ValueAnimator.Anima
private View mIconView;
private float mOpenAnimationProgress;
+ private UnbadgedShortcutInfo mInfo;
+
public DeepShortcutView(Context context) {
this(context, null, 0);
}
@@ -87,10 +92,36 @@ public class DeepShortcutView extends FrameLayout implements ValueAnimator.Anima
mPillRect.set(0, 0, getMeasuredWidth(), getMeasuredHeight());
}
- public void applyShortcutInfo(ShortcutInfo info) {
+ /** package private **/
+ void applyShortcutInfo(UnbadgedShortcutInfo info, DeepShortcutsContainer container) {
+ mInfo = info;
IconCache cache = LauncherAppState.getInstance().getIconCache();
mBubbleText.applyFromShortcutInfo(info, cache);
mIconView.setBackground(mBubbleText.getIcon());
+
+ // Use the long label as long as it exists and fits.
+ CharSequence longLabel = info.mDetail.getLongLabel();
+ int availableWidth = mBubbleText.getWidth() - mBubbleText.getTotalPaddingLeft()
+ - mBubbleText.getTotalPaddingRight();
+ boolean usingLongLabel = !TextUtils.isEmpty(longLabel)
+ && mBubbleText.getPaint().measureText(longLabel.toString()) <= availableWidth;
+ mBubbleText.setText(usingLongLabel ? longLabel : info.mDetail.getShortLabel());
+
+ // TODO: Add the click handler to this view directly and not the child view.
+ mBubbleText.setOnClickListener(Launcher.getLauncher(getContext()));
+ mBubbleText.setOnLongClickListener(container);
+ mBubbleText.setOnTouchListener(container);
+ }
+
+ /**
+ * Returns the shortcut info that is suitable to be added on the homescreen
+ */
+ public ShortcutInfo getFinalInfo() {
+ ShortcutInfo badged = new ShortcutInfo(mInfo);
+ // Queue an update task on the worker thread. This ensures that the badged
+ // shortcut eventually gets its icon updated.
+ Launcher.getLauncher(getContext()).getModel().updateShortcutInfo(mInfo.mDetail, badged);
+ return badged;
}
public View getIconView() {
diff --git a/src/com/android/launcher3/shortcuts/DeepShortcutsContainer.java b/src/com/android/launcher3/shortcuts/DeepShortcutsContainer.java
index cfeccfc1a..4d1050640 100644
--- a/src/com/android/launcher3/shortcuts/DeepShortcutsContainer.java
+++ b/src/com/android/launcher3/shortcuts/DeepShortcutsContainer.java
@@ -183,12 +183,8 @@ public class DeepShortcutsContainer extends LinearLayout implements View.OnLongC
}
for (int i = 0; i < shortcuts.size(); i++) {
final ShortcutInfoCompat shortcut = shortcuts.get(i);
- final ShortcutInfo launcherShortcutInfo =
- new UnbadgedShortcutInfo(shortcut, mLauncher);
- CharSequence shortLabel = shortcut.getShortLabel();
- CharSequence longLabel = shortcut.getLongLabel();
- uiHandler.post(new UpdateShortcutChild(i, launcherShortcutInfo,
- shortLabel, longLabel));
+ uiHandler.post(new UpdateShortcutChild(
+ i, new UnbadgedShortcutInfo(shortcut, mLauncher)));
}
}
});
@@ -197,32 +193,17 @@ public class DeepShortcutsContainer extends LinearLayout implements View.OnLongC
/** Updates the child of this container at the given index based on the given shortcut info. */
private class UpdateShortcutChild implements Runnable {
private int mShortcutChildIndex;
- private ShortcutInfo mShortcutChildInfo;
- private CharSequence mShortLabel;
- private CharSequence mLongLabel;
+ private UnbadgedShortcutInfo mShortcutChildInfo;
- public UpdateShortcutChild(int shortcutChildIndex, ShortcutInfo shortcutChildInfo,
- CharSequence shortLabel, CharSequence longLabel) {
+ public UpdateShortcutChild(int shortcutChildIndex, UnbadgedShortcutInfo shortcutChildInfo) {
mShortcutChildIndex = shortcutChildIndex;
mShortcutChildInfo = shortcutChildInfo;
- mShortLabel = shortLabel;
- mLongLabel = longLabel;
}
@Override
public void run() {
- DeepShortcutView shortcutViewContainer = getShortcutAt(mShortcutChildIndex);
- shortcutViewContainer.applyShortcutInfo(mShortcutChildInfo);
- BubbleTextView shortcutView = getShortcutAt(mShortcutChildIndex).getBubbleText();
- // Use the long label as long as it exists and fits.
- int availableWidth = shortcutView.getWidth() - shortcutView.getTotalPaddingLeft()
- - shortcutView.getTotalPaddingRight();
- boolean usingLongLabel = !TextUtils.isEmpty(mLongLabel)
- && shortcutView.getPaint().measureText(mLongLabel.toString()) <= availableWidth;
- shortcutView.setText(usingLongLabel ? mLongLabel : mShortLabel);
- shortcutView.setOnClickListener(mLauncher);
- shortcutView.setOnLongClickListener(DeepShortcutsContainer.this);
- shortcutView.setOnTouchListener(DeepShortcutsContainer.this);
+ getShortcutAt(mShortcutChildIndex)
+ .applyShortcutInfo(mShortcutChildInfo, DeepShortcutsContainer.this);
}
}
@@ -525,14 +506,7 @@ public class DeepShortcutsContainer extends LinearLayout implements View.OnLongC
// Return if global dragging is not enabled
if (!mLauncher.isDraggingEnabled()) return false;
- UnbadgedShortcutInfo unbadgedInfo = (UnbadgedShortcutInfo) v.getTag();
- ShortcutInfo badged = new ShortcutInfo(unbadgedInfo);
- // Queue an update task on the worker thread. This ensures that the badged
- // shortcut eventually gets its icon updated.
- mLauncher.getModel().updateShortcutInfo(unbadgedInfo.mDetail, badged);
-
// Long clicked on a shortcut.
-
mDeferContainerRemoval = true;
DeepShortcutView sv = (DeepShortcutView) v.getParent();
sv.setWillDrawIcon(false);
@@ -542,7 +516,7 @@ public class DeepShortcutsContainer extends LinearLayout implements View.OnLongC
mIconShift.y = mIconLastTouchPos.y - mLauncher.getDeviceProfile().iconSizePx;
DragView dv = mLauncher.getWorkspace().beginDragShared(
- sv.getBubbleText(), this, false, badged,
+ sv.getBubbleText(), this, false, sv.getFinalInfo(),
new ShortcutDragPreviewProvider(sv.getIconView(), mIconShift));
dv.animateShift(-mIconShift.x, -mIconShift.y);
@@ -754,8 +728,8 @@ public class DeepShortcutsContainer extends LinearLayout implements View.OnLongC
/**
* Extension of {@link ShortcutInfo} which does not badge the icons.
*/
- private static class UnbadgedShortcutInfo extends ShortcutInfo {
- private final ShortcutInfoCompat mDetail;
+ static class UnbadgedShortcutInfo extends ShortcutInfo {
+ public final ShortcutInfoCompat mDetail;
public UnbadgedShortcutInfo(ShortcutInfoCompat shortcutInfo, Context context) {
super(shortcutInfo, context);