diff options
author | Sunny Goyal <sunnygoyal@google.com> | 2016-08-15 17:13:16 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2016-08-15 17:13:16 +0000 |
commit | c9a0a7c62f92bf54f5d63202fd85f1125d72df21 (patch) | |
tree | aa31fe671b6c413134c74271c7a510fd31327d7e /src/com/android/launcher3/shortcuts | |
parent | 8769b44ae073ea7ec5ba5b7687105df6d35c3282 (diff) | |
parent | 5836bf728e85c1c4fae67862deb4e973ac55e944 (diff) | |
download | android_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.java | 33 | ||||
-rw-r--r-- | src/com/android/launcher3/shortcuts/DeepShortcutsContainer.java | 44 |
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); |