diff --git a/quickstep/res/values-ne/strings.xml b/quickstep/res/values-ne/strings.xml index 99ad8143e9..f3b1151ef6 100644 --- a/quickstep/res/values-ne/strings.xml +++ b/quickstep/res/values-ne/strings.xml @@ -45,72 +45,40 @@ "सिफारिस गरिएका एपहरू देखाउने सुविधा सक्षम पारिएका छन्" "सिफारिस गरिएका एपहरू देखाउने सुविधा असक्षम पारिएको छ" "पूर्वानुमान गरिएको एप: %1$s" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + "स्क्रिनको सबैभन्दा बायाँ किनाराबाट स्वाइप गर्नुहोस्।" + "स्क्रिनको बायाँ किनाराबाट मध्य भागसम्म स्वाइप गर्नुहोस् अनि औँला उठाउनुहोस्।" + "यत्ति हो! अब दायाँ किनाराबाट स्वाइप गरी हेर्नुहोस्।" + "स्क्रिनको सबैभन्दा दायाँ किनाराबाट स्वाइप गर्नुहोस्।" + "स्क्रिनको दायाँ किनाराबाट मध्य भागसम्म स्वाइप गर्नुहोस् अनि औँला उठाउनुहोस्।" + "तपाईंले \'पछाडि जानुहोस्\' नामक इसारा प्रयोग गर्ने तरिका सिक्नुभयो। अब होम स्क्रिनमा जाने तरिका सिक्नुहोस्।" + "स्क्रिनको फेदको धेरै नजिकसम्म स्वाइप नगर्नुहोस्।" + "\'पछाडि\' नामक इसाराको संवेदनशीलता बदल्न सेटिङमा जानुहोस्" + "पछाडि जान स्वाइप गर्नुहोस्" + "यसअघिको स्क्रिनमा फर्कन स्क्रिनको बायाँ वा दायाँ किनाराबाट मध्य भागसम्म स्वाइप गर्नुहोस्।" + "स्क्रिनको फेदबाट माथितिर स्वाइप गर्नुहोस्।" + "औँला उठाउनुअघि नरोकिनुहोस्।" + "सीधै माथितिर स्वाइप गर्नुहोस्।" + "तपाईंले \'होम स्क्रिनमा जानुहोस्\' नामक इसारा प्रयोग गर्ने तरिका सिक्नुभयो। अब एउटा एपबाट अर्को एपमा जाने तरिका सिक्नुहोस्।" + "होम स्क्रिनमा जान स्वाइप गर्नुहोस्" + "स्क्रिनको फेदबाट माथितिर स्वाइप गर्नुहोस्। यो इसारा प्रयोग गर्दा सधैँ होम स्क्रिन खुल्छ।" + "स्क्रिनको फेदबाट माथितिर स्वाइप गर्नुहोस्।" + "स्क्रिनबाट औँला उठाउनुअघि एपको विन्डोमा केही बेर छोइराख्नुहोस्।" + "सीधै माथितिर स्वाइप गर्नुहोस् अनि रोकिनुहोस्।" + "तपाईंले \'एउटा एपबाट अर्को एपमा जानुहोस्\' नामक इसारा प्रयोग गर्ने तरिका सिक्नुभयो। तपाईं अब आफ्नो फोन चलाउन सक्नुहुन्छ!" + "एउटा एपबाट अर्को एपमा जान स्वाइप गर्नुहोस्" + "स्क्रिनको फेदबाट माथितिर स्वाइप गर्नुहोस्, छोइराख्नुहोस् अनि औँला उठाउनुहोस्।" + "सबै तयार छ" + "अर्को" + "सम्पन्न भयो" + "सेटिङ" + "फेरि प्रयास गर्नुहोस्" + "राम्रो!" + "ट्युटोरियल %1$d/%2$d" "सेयर गर्नुहोस्" "स्क्रिनसट" "यो एप वा तपाईंको सङ्गठनले यो कारबाही गर्ने अनुमति दिँदैन" - - + "नेभिगेसन ट्युटोरियल स्किप गर्ने हो?" "तपाईं पछि %1$s एपमा गई यो ट्युटोरियल भेट्टाउन सक्नुहुन्छ" - - - - + "रद्द गर्नुहोस्" + "स्किप गर्नु…" diff --git a/quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java b/quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java index 7aae38c7f1..910e473401 100644 --- a/quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java +++ b/quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java @@ -443,6 +443,19 @@ public abstract class BaseQuickstepLauncher extends Launcher if (info == null) { return; } + switch (info.container) { + case LauncherSettings.Favorites.CONTAINER_DESKTOP: + case LauncherSettings.Favorites.CONTAINER_HOTSEAT: + // Fall through and continue it's on the workspace (we don't support swiping back + // to other containers like all apps or the hotseat predictions (which can change) + break; + default: + if (info.container >= 0) { + // Also allow swiping to folders + break; + } + return; + } switch (info.itemType) { case LauncherSettings.Favorites.ITEM_TYPE_APPLICATION: case LauncherSettings.Favorites.ITEM_TYPE_SHORTCUT: diff --git a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java index 61803aa13b..883b02933e 100644 --- a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java +++ b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java @@ -1095,8 +1095,10 @@ public abstract class AbsSwipeUpHandler, final RemoteAnimationTargetCompat runningTaskTarget = mRecentsAnimationTargets != null ? mRecentsAnimationTargets.findTask(mGestureState.getRunningTaskId()) : null; - HomeAnimationFactory homeAnimFactory = createHomeAnimationFactory( - runningTaskTarget.taskInfo.launchCookies, duration); + final ArrayList cookies = runningTaskTarget != null + ? runningTaskTarget.taskInfo.launchCookies + : new ArrayList<>(); + HomeAnimationFactory homeAnimFactory = createHomeAnimationFactory(cookies, duration); mIsSwipingPipToHome = homeAnimFactory.supportSwipePipToHome() && runningTaskTarget != null && runningTaskTarget.taskInfo.pictureInPictureParams != null diff --git a/quickstep/src/com/android/quickstep/LauncherSwipeHandlerV2.java b/quickstep/src/com/android/quickstep/LauncherSwipeHandlerV2.java index dd35d68dcf..2ea34d7f93 100644 --- a/quickstep/src/com/android/quickstep/LauncherSwipeHandlerV2.java +++ b/quickstep/src/com/android/quickstep/LauncherSwipeHandlerV2.java @@ -244,8 +244,9 @@ public class LauncherSwipeHandlerV2 extends return null; } - // Find the associated item info for the launch cookie (if available) - int launchCookieItemId = -1; + // Find the associated item info for the launch cookie (if available), note that predicted + // apps actually have an id of -1, so use another default id here + int launchCookieItemId = -2; for (IBinder cookie : launchCookies) { Integer itemId = ObjectWrapper.unwrap(cookie); if (itemId != null) { diff --git a/quickstep/src/com/android/quickstep/logging/StatsLogCompatManager.java b/quickstep/src/com/android/quickstep/logging/StatsLogCompatManager.java index 66c24c8bae..3b26108aab 100644 --- a/quickstep/src/com/android/quickstep/logging/StatsLogCompatManager.java +++ b/quickstep/src/com/android/quickstep/logging/StatsLogCompatManager.java @@ -84,6 +84,7 @@ public class StatsLogCompatManager extends StatsLogManager { private static final int FOLDER_HIERARCHY_OFFSET = 100; private static final int SEARCH_RESULT_HIERARCHY_OFFSET = 200; private static final int EXTENDED_CONTAINERS_HIERARCHY_OFFSET = 300; + private static final int ATTRIBUTE_MULTIPLIER = 100; public static final CopyOnWriteArrayList LOGS_CONSUMER = new CopyOnWriteArrayList<>(); @@ -112,7 +113,8 @@ public class StatsLogCompatManager extends StatsLogManager { } SysUiStatsLog.write(SysUiStatsLog.LAUNCHER_SNAPSHOT, LAUNCHER_WORKSPACE_SNAPSHOT.getId() /* event_id */, - info.getItemCase().getNumber() /* target_id */, + info.getAttribute().getNumber() * ATTRIBUTE_MULTIPLIER + + info.getItemCase().getNumber() /* target_id */, instanceId.getId() /* instance_id */, 0 /* uid */, getPackageName(info) /* package_name */, @@ -329,7 +331,8 @@ public class StatsLogCompatManager extends StatsLogManager { null /* launcher extensions, deprecated */, false /* quickstep_enabled, deprecated */, event.getId() /* event_id */, - atomInfo.getItemCase().getNumber() /* target_id */, + atomInfo.getAttribute().getNumber() * ATTRIBUTE_MULTIPLIER + + atomInfo.getItemCase().getNumber() /* target_id */, instanceId.getId() /* instance_id TODO */, 0 /* uid TODO */, getPackageName(atomInfo) /* package_name */, diff --git a/res/drawable/ic_conversations_widget_category.xml b/res/drawable/ic_conversations_widget_category.xml new file mode 100644 index 0000000000..7b13b239ac --- /dev/null +++ b/res/drawable/ic_conversations_widget_category.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + diff --git a/res/drawable/top_round_rect_primary.xml b/res/drawable/widgets_bottom_sheet_background.xml similarity index 85% rename from res/drawable/top_round_rect_primary.xml rename to res/drawable/widgets_bottom_sheet_background.xml index 1caaa026f0..faa414c506 100644 --- a/res/drawable/top_round_rect_primary.xml +++ b/res/drawable/widgets_bottom_sheet_background.xml @@ -1,6 +1,6 @@ - + android:shape="rectangle"> + - + \ No newline at end of file diff --git a/res/layout/widgets_bottom_sheet.xml b/res/layout/widgets_bottom_sheet.xml index 8002d1ddc7..08635c6e60 100644 --- a/res/layout/widgets_bottom_sheet.xml +++ b/res/layout/widgets_bottom_sheet.xml @@ -20,7 +20,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingTop="16dp" - android:background="@drawable/top_round_rect_primary" + android:background="@drawable/widgets_bottom_sheet_background" android:elevation="@dimen/deep_shortcuts_elevation" android:layout_gravity="bottom" android:theme="?attr/widgetsTheme"> diff --git a/res/values/attrs.xml b/res/values/attrs.xml index 9089a6445c..93d88c2e94 100644 --- a/res/values/attrs.xml +++ b/res/values/attrs.xml @@ -80,7 +80,8 @@ - + + diff --git a/src/com/android/launcher3/PagedView.java b/src/com/android/launcher3/PagedView.java index c9cc3721a8..f7de3cac71 100644 --- a/src/com/android/launcher3/PagedView.java +++ b/src/com/android/launcher3/PagedView.java @@ -388,7 +388,8 @@ public abstract class PagedView extends ViewGrou } protected void pageEndTransition() { - if (mIsPageInTransition) { + if (mIsPageInTransition && !mIsBeingDragged && mScroller.isFinished() + && mEdgeGlowLeft.isFinished() && mEdgeGlowRight.isFinished()) { mIsPageInTransition = false; onPageEndTransition(); } @@ -1740,6 +1741,7 @@ public abstract class PagedView extends ViewGrou public void draw(Canvas canvas) { super.draw(canvas); drawEdgeEffect(canvas); + pageEndTransition(); } protected void drawEdgeEffect(Canvas canvas) { diff --git a/src/com/android/launcher3/config/FeatureFlags.java b/src/com/android/launcher3/config/FeatureFlags.java index 7d5ed60019..bad87043ef 100644 --- a/src/com/android/launcher3/config/FeatureFlags.java +++ b/src/com/android/launcher3/config/FeatureFlags.java @@ -151,7 +151,7 @@ public final class FeatureFlags { "ENABLE_OVERVIEW_SHARE", false, "Show Share button in Overview Actions"); public static final BooleanFlag ENABLE_OVERVIEW_SHARING_TO_PEOPLE = getDebugFlag( - "ENABLE_OVERVIEW_SHARING_TO_PEOPLE", false, + "ENABLE_OVERVIEW_SHARING_TO_PEOPLE", true, "Show indicators for content on Overview to share with top people. "); public static final BooleanFlag ENABLE_OVERVIEW_CONTENT_PUSH = getDebugFlag( diff --git a/src/com/android/launcher3/views/DoubleShadowBubbleTextView.java b/src/com/android/launcher3/views/DoubleShadowBubbleTextView.java index d89e7f81de..a309e6e95e 100644 --- a/src/com/android/launcher3/views/DoubleShadowBubbleTextView.java +++ b/src/com/android/launcher3/views/DoubleShadowBubbleTextView.java @@ -60,7 +60,7 @@ public class DoubleShadowBubbleTextView extends BubbleTextView { // We enhance the shadow by drawing the shadow twice getPaint().setShadowLayer(mShadowInfo.ambientShadowBlur, 0, 0, - setColorAlphaBound(mShadowInfo.ambientShadowColor, alpha)); + getTextShadowColor(mShadowInfo.ambientShadowColor, alpha)); drawWithoutDot(canvas); canvas.save(); @@ -68,8 +68,11 @@ public class DoubleShadowBubbleTextView extends BubbleTextView { getScrollX() + getWidth(), getScrollY() + getHeight()); - getPaint().setShadowLayer(mShadowInfo.keyShadowBlur, 0.0f, mShadowInfo.keyShadowOffset, - setColorAlphaBound(mShadowInfo.keyShadowColor, alpha)); + getPaint().setShadowLayer( + mShadowInfo.keyShadowBlur, + mShadowInfo.keyShadowOffsetX, + mShadowInfo.keyShadowOffsetY, + getTextShadowColor(mShadowInfo.keyShadowColor, alpha)); drawWithoutDot(canvas); canvas.restore(); @@ -81,7 +84,8 @@ public class DoubleShadowBubbleTextView extends BubbleTextView { public final int ambientShadowColor; public final float keyShadowBlur; - public final float keyShadowOffset; + public final float keyShadowOffsetX; + public final float keyShadowOffsetY; public final int keyShadowColor; public ShadowInfo(Context c, AttributeSet attrs, int defStyle) { @@ -89,11 +93,13 @@ public class DoubleShadowBubbleTextView extends BubbleTextView { TypedArray a = c.obtainStyledAttributes( attrs, R.styleable.ShadowInfo, defStyle, 0); - ambientShadowBlur = a.getDimension(R.styleable.ShadowInfo_ambientShadowBlur, 0); + ambientShadowBlur = a.getDimensionPixelSize( + R.styleable.ShadowInfo_ambientShadowBlur, 0); ambientShadowColor = a.getColor(R.styleable.ShadowInfo_ambientShadowColor, 0); - keyShadowBlur = a.getDimension(R.styleable.ShadowInfo_keyShadowBlur, 0); - keyShadowOffset = a.getDimension(R.styleable.ShadowInfo_keyShadowOffset, 0); + keyShadowBlur = a.getDimensionPixelSize(R.styleable.ShadowInfo_keyShadowBlur, 0); + keyShadowOffsetX = a.getDimensionPixelSize(R.styleable.ShadowInfo_keyShadowOffsetX, 0); + keyShadowOffsetY = a.getDimensionPixelSize(R.styleable.ShadowInfo_keyShadowOffsetY, 0); keyShadowColor = a.getColor(R.styleable.ShadowInfo_keyShadowColor, 0); a.recycle(); } @@ -105,17 +111,26 @@ public class DoubleShadowBubbleTextView extends BubbleTextView { if (textAlpha == 0 || (keyShadowAlpha == 0 && ambientShadowAlpha == 0)) { textView.getPaint().clearShadowLayer(); return true; - } else if (ambientShadowAlpha > 0) { + } else if (ambientShadowAlpha > 0 && keyShadowAlpha == 0) { textView.getPaint().setShadowLayer(ambientShadowBlur, 0, 0, - setColorAlphaBound(ambientShadowColor, textAlpha)); + getTextShadowColor(ambientShadowColor, textAlpha)); return true; - } else if (keyShadowAlpha > 0) { - textView.getPaint().setShadowLayer(keyShadowBlur, 0.0f, keyShadowOffset, - setColorAlphaBound(keyShadowColor, textAlpha)); + } else if (keyShadowAlpha > 0 && ambientShadowAlpha == 0) { + textView.getPaint().setShadowLayer( + keyShadowBlur, + keyShadowOffsetX, + keyShadowOffsetY, + getTextShadowColor(keyShadowColor, textAlpha)); return true; } else { return false; } } } + + // Multiplies the alpha of shadowColor by textAlpha. + private static int getTextShadowColor(int shadowColor, int textAlpha) { + return setColorAlphaBound(shadowColor, + Math.round(Color.alpha(shadowColor) * textAlpha / 255f)); + } } diff --git a/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java b/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java index 8f5d4dc6ef..b4d48562be 100644 --- a/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java +++ b/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java @@ -28,7 +28,6 @@ import android.graphics.Rect; import android.os.Process; import android.os.UserHandle; import android.util.AttributeSet; -import android.util.Log; import android.util.Pair; import android.util.SparseArray; import android.view.LayoutInflater; @@ -473,10 +472,6 @@ public class WidgetsFullSheet extends BaseWidgetSheet WidgetsRecommendationTableLayout table = mSearchAndRecommendationViewHolder.mRecommendedWidgetsTable; if (recommendedWidgets.size() > 0) { - // TODO(b/185508758): Revert the following log after debugging. - if (getHeaderViewHeight() == 0) { - Log.d(TAG, "Header view height is 0 when inflating recommended widgets"); - } float maxTableHeight = (mLauncher.getDeviceProfile().availableHeightPx - mTabsHeight - getHeaderViewHeight()) * RECOMMENDATION_TABLE_HEIGHT_RATIO; diff --git a/src/com/android/launcher3/widget/picker/WidgetsListHeader.java b/src/com/android/launcher3/widget/picker/WidgetsListHeader.java index ccf3187770..41aa4378f0 100644 --- a/src/com/android/launcher3/widget/picker/WidgetsListHeader.java +++ b/src/com/android/launcher3/widget/picker/WidgetsListHeader.java @@ -35,7 +35,6 @@ import androidx.recyclerview.widget.RecyclerView; import com.android.launcher3.DeviceProfile; import com.android.launcher3.LauncherAppState; import com.android.launcher3.R; -import com.android.launcher3.icons.FastBitmapDrawable; import com.android.launcher3.icons.IconCache.ItemInfoUpdateReceiver; import com.android.launcher3.icons.PlaceHolderIconDrawable; import com.android.launcher3.icons.cache.HandlerRunnable; @@ -174,7 +173,14 @@ public final class WidgetsListHeader extends LinearLayout implements ItemInfoUpd } private void setIcon(PackageItemInfo info) { - FastBitmapDrawable icon = info.newIcon(getContext()); + Drawable icon; + switch (info.category) { + case PackageItemInfo.CONVERSATIONS: + icon = getContext().getDrawable(R.drawable.ic_conversations_widget_category); + break; + default: + icon = info.newIcon(getContext()); + } applyDrawables(icon); mIconDrawable = icon; if (mIconDrawable != null) { diff --git a/src/com/android/launcher3/widget/picker/WidgetsRecommendationTableLayout.java b/src/com/android/launcher3/widget/picker/WidgetsRecommendationTableLayout.java index 2d3f1a0188..62ef4ff64e 100644 --- a/src/com/android/launcher3/widget/picker/WidgetsRecommendationTableLayout.java +++ b/src/com/android/launcher3/widget/picker/WidgetsRecommendationTableLayout.java @@ -93,9 +93,6 @@ public final class WidgetsRecommendationTableLayout extends TableLayout { mRecommendationTableMaxHeight = recommendationTableMaxHeight; RecommendationTableData data = fitRecommendedWidgetsToTableSpace(/* previewScale= */ 1f, recommendedWidgets); - // TODO(b/185508758): Revert the following logs after debugging. - Log.d(TAG, "Recommended widgets section max height: " + recommendationTableMaxHeight); - Log.d(TAG, "Recommended widget down scale: " + data.mPreviewScale); bindData(data); }