Merge "Adding tooltip for Select button." into ub-launcher3-rvc-dev
diff --git a/quickstep/recents_ui_overrides/src/com/android/launcher3/hybridhotseat/HotseatEduController.java b/quickstep/recents_ui_overrides/src/com/android/launcher3/hybridhotseat/HotseatEduController.java
index 49f3eb8..5d807d3 100644
--- a/quickstep/recents_ui_overrides/src/com/android/launcher3/hybridhotseat/HotseatEduController.java
+++ b/quickstep/recents_ui_overrides/src/com/android/launcher3/hybridhotseat/HotseatEduController.java
@@ -15,6 +15,9 @@
*/
package com.android.launcher3.hybridhotseat;
+import static com.android.launcher3.logging.StatsLogManager.LauncherEvent
+ .LAUNCHER_HOTSEAT_EDU_ONLY_TIP;
+
import android.content.Intent;
import android.view.View;
@@ -262,6 +265,7 @@
requiresMigration ? R.string.hotseat_tip_no_empty_slots
: R.string.hotseat_auto_enrolled),
mHotseat.getTop());
+ mLauncher.getStatsLogManager().log(LAUNCHER_HOTSEAT_EDU_ONLY_TIP);
finishOnboarding();
}
}
diff --git a/quickstep/recents_ui_overrides/src/com/android/launcher3/hybridhotseat/HotseatEduDialog.java b/quickstep/recents_ui_overrides/src/com/android/launcher3/hybridhotseat/HotseatEduDialog.java
index bbc128f..96be5df 100644
--- a/quickstep/recents_ui_overrides/src/com/android/launcher3/hybridhotseat/HotseatEduDialog.java
+++ b/quickstep/recents_ui_overrides/src/com/android/launcher3/hybridhotseat/HotseatEduDialog.java
@@ -15,9 +15,10 @@
*/
package com.android.launcher3.hybridhotseat;
-import static com.android.launcher3.logging.LoggerUtils.newLauncherEvent;
-import static com.android.launcher3.userevent.nano.LauncherLogProto.ControlType
- .HYBRID_HOTSEAT_CANCELED;
+import static com.android.launcher3.logging.StatsLogManager.LauncherEvent
+ .LAUNCHER_HOTSEAT_EDU_ACCEPT;
+import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_HOTSEAT_EDU_DENY;
+import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_HOTSEAT_EDU_SEEN;
import android.animation.PropertyValuesHolder;
import android.content.Context;
@@ -35,10 +36,8 @@
import com.android.launcher3.Insettable;
import com.android.launcher3.Launcher;
import com.android.launcher3.R;
-import com.android.launcher3.Workspace;
import com.android.launcher3.anim.Interpolators;
import com.android.launcher3.config.FeatureFlags;
-import com.android.launcher3.logging.UserEventDispatcher;
import com.android.launcher3.model.data.WorkspaceItemInfo;
import com.android.launcher3.uioverrides.PredictedAppIcon;
import com.android.launcher3.userevent.nano.LauncherLogProto;
@@ -113,15 +112,13 @@
mHotseatEduController.moveHotseatItems();
mHotseatEduController.finishOnboarding();
- //TODO: pass actual page index here.
- // Temporarily we're passing 1 for folder migration and 2 for page migration
- logUserAction(true, FeatureFlags.HOTSEAT_MIGRATE_TO_FOLDER.get() ? 1 : 2);
+ mLauncher.getStatsLogManager().log(LAUNCHER_HOTSEAT_EDU_ACCEPT);
}
private void onDismiss(View v) {
mHotseatEduController.showDimissTip();
mHotseatEduController.finishOnboarding();
- logUserAction(false, -1);
+ mLauncher.getStatsLogManager().log(LAUNCHER_HOTSEAT_EDU_DENY);
handleClose(true);
}
@@ -165,39 +162,6 @@
}
}
- private void logUserAction(boolean migrated, int pageIndex) {
- LauncherLogProto.Action action = new LauncherLogProto.Action();
- LauncherLogProto.Target target = new LauncherLogProto.Target();
-
- int hotseatItemsCount = mLauncher.getHotseat().getShortcutsAndWidgets().getChildCount();
- // -1 to exclude smart space
- int workspaceItemCount = mLauncher.getWorkspace().getScreenWithId(
- Workspace.FIRST_SCREEN_ID).getShortcutsAndWidgets().getChildCount() - 1;
-
- action.type = LauncherLogProto.Action.Type.TOUCH;
- action.touch = LauncherLogProto.Action.Touch.TAP;
- target.containerType = LauncherLogProto.ContainerType.TIP;
- target.tipType = LauncherLogProto.TipType.HYBRID_HOTSEAT;
- target.controlType = migrated ? LauncherLogProto.ControlType.HYBRID_HOTSEAT_ACCEPTED
- : HYBRID_HOTSEAT_CANCELED;
- target.rank = MIGRATION_EXPERIMENT_IDENTIFIER;
- // encoding migration type on pageIndex
- target.pageIndex = pageIndex;
- target.cardinality = (workspaceItemCount * 1000) + hotseatItemsCount;
- LauncherLogProto.LauncherEvent event = newLauncherEvent(action, target);
- UserEventDispatcher.newInstance(getContext()).dispatchUserEvent(event, null);
- }
-
- private void logOnBoardingSeen() {
- LauncherLogProto.Action action = new LauncherLogProto.Action();
- LauncherLogProto.Target target = new LauncherLogProto.Target();
- action.type = LauncherLogProto.Action.Type.TIP;
- target.containerType = LauncherLogProto.ContainerType.TIP;
- target.tipType = LauncherLogProto.TipType.HYBRID_HOTSEAT;
- LauncherLogProto.LauncherEvent event = newLauncherEvent(action, target);
- UserEventDispatcher.newInstance(getContext()).dispatchUserEvent(event, null);
- }
-
private void animateOpen() {
if (mIsOpen || mOpenCloseAnimator.isRunning()) {
return;
@@ -248,7 +212,7 @@
}
AbstractFloatingView.closeAllOpenViews(mLauncher);
attachToContainer();
- logOnBoardingSeen();
+ mLauncher.getStatsLogManager().log(LAUNCHER_HOTSEAT_EDU_SEEN);
animateOpen();
populatePreview(predictions);
}
diff --git a/quickstep/recents_ui_overrides/src/com/android/launcher3/hybridhotseat/HotseatPredictionController.java b/quickstep/recents_ui_overrides/src/com/android/launcher3/hybridhotseat/HotseatPredictionController.java
index 27423a5..63cc3a0 100644
--- a/quickstep/recents_ui_overrides/src/com/android/launcher3/hybridhotseat/HotseatPredictionController.java
+++ b/quickstep/recents_ui_overrides/src/com/android/launcher3/hybridhotseat/HotseatPredictionController.java
@@ -339,11 +339,15 @@
/**
* Create WorkspaceItemInfo objects and binds PredictedAppIcon views for cached predicted items.
*/
- public void showCachedItems(List<AppInfo> apps, IntArray ranks) {
+ public void showCachedItems(List<AppInfo> apps, IntArray ranks) {
+ if (hasPredictions() && mAppPredictor != null) {
+ mAppPredictor.requestPredictionUpdate();
+ fillGapsWithPrediction();
+ return;
+ }
mIsCacheEmpty = apps.isEmpty();
int count = Math.min(ranks.size(), apps.size());
List<WorkspaceItemInfo> items = new ArrayList<>(count);
- mComponentKeyMappers.clear();
for (int i = 0; i < count; i++) {
WorkspaceItemInfo item = new WorkspaceItemInfo(apps.get(i));
ComponentKey componentKey = new ComponentKey(item.getTargetComponent(), item.user);
diff --git a/quickstep/recents_ui_overrides/src/com/android/launcher3/uioverrides/QuickstepLauncher.java b/quickstep/recents_ui_overrides/src/com/android/launcher3/uioverrides/QuickstepLauncher.java
index f7d0cd5..3b45ec9 100644
--- a/quickstep/recents_ui_overrides/src/com/android/launcher3/uioverrides/QuickstepLauncher.java
+++ b/quickstep/recents_ui_overrides/src/com/android/launcher3/uioverrides/QuickstepLauncher.java
@@ -187,8 +187,7 @@
@Override
public void bindPredictedItems(List<AppInfo> appInfos, IntArray ranks) {
super.bindPredictedItems(appInfos, ranks);
- if (mHotseatPredictionController != null
- && !mHotseatPredictionController.hasPredictions()) {
+ if (mHotseatPredictionController != null) {
mHotseatPredictionController.showCachedItems(appInfos, ranks);
}
}
diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/QuickstepTestInformationHandler.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/QuickstepTestInformationHandler.java
index a28dabc..ebc83c6 100644
--- a/quickstep/recents_ui_overrides/src/com/android/quickstep/QuickstepTestInformationHandler.java
+++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/QuickstepTestInformationHandler.java
@@ -37,7 +37,7 @@
case TestProtocol.REQUEST_BACKGROUND_TO_OVERVIEW_SWIPE_HEIGHT: {
final float swipeHeight =
LayoutUtils.getShelfTrackingDistance(mContext, mDeviceProfile,
- PagedOrientationHandler.HOME_ROTATED);
+ PagedOrientationHandler.PORTRAIT);
response.putInt(TestProtocol.TEST_INFO_RESPONSE_FIELD, (int) swipeHeight);
return response;
}
diff --git a/quickstep/src/com/android/quickstep/util/RecentsOrientedState.java b/quickstep/src/com/android/quickstep/util/RecentsOrientedState.java
index fe5a6c9..5af3d70 100644
--- a/quickstep/src/com/android/quickstep/util/RecentsOrientedState.java
+++ b/quickstep/src/com/android/quickstep/util/RecentsOrientedState.java
@@ -197,7 +197,7 @@
mPreviousRotation = touchRotation;
if (mLauncherRotation == mTouchRotation || canLauncherRotate()) {
- mOrientationHandler = PagedOrientationHandler.HOME_ROTATED;
+ mOrientationHandler = PagedOrientationHandler.PORTRAIT;
if (DEBUG) {
Log.d(TAG, "current RecentsOrientedState: " + this);
}
diff --git a/src/com/android/launcher3/logging/StatsLogManager.java b/src/com/android/launcher3/logging/StatsLogManager.java
index 6af0eef..ce70a32 100644
--- a/src/com/android/launcher3/logging/StatsLogManager.java
+++ b/src/com/android/launcher3/logging/StatsLogManager.java
@@ -130,9 +130,20 @@
LAUNCHER_ALL_APPS_EDU_SHOWN(523),
@UiEvent(doc = "User opened a folder.")
- LAUNCHER_FOLDER_OPEN(551);
- // ADD MORE
+ LAUNCHER_FOLDER_OPEN(551),
+ @UiEvent(doc = "Hotseat education half sheet seen")
+ LAUNCHER_HOTSEAT_EDU_SEEN(479),
+
+ @UiEvent(doc = "Hotseat migration accepted")
+ LAUNCHER_HOTSEAT_EDU_ACCEPT(480),
+
+ @UiEvent(doc = "Hotseat migration denied")
+ LAUNCHER_HOTSEAT_EDU_DENY(481),
+
+ @UiEvent(doc = "Hotseat education tip shown")
+ LAUNCHER_HOTSEAT_EDU_ONLY_TIP(482);
+ // ADD MORE
private final int mId;
LauncherEvent(int id) {
diff --git a/src/com/android/launcher3/model/GridSizeMigrationTaskV2.java b/src/com/android/launcher3/model/GridSizeMigrationTaskV2.java
index 5ba2c8e..25a2c69 100644
--- a/src/com/android/launcher3/model/GridSizeMigrationTaskV2.java
+++ b/src/com/android/launcher3/model/GridSizeMigrationTaskV2.java
@@ -59,7 +59,6 @@
import java.util.Map;
import java.util.Objects;
import java.util.Set;
-import java.util.stream.Collectors;
/**
* This class takes care of shrinking the workspace (by maximum of one row and one column), as a
@@ -248,12 +247,25 @@
/** Return what's in the src but not in the dest */
private static List<DbEntry> calcDiff(List<DbEntry> src, List<DbEntry> dest) {
- Set<String> destSet = dest.parallelStream().map(DbEntry::getIntentStr).collect(
- Collectors.toSet());
+ Set<String> destIntentSet = new HashSet<>();
+ Set<Set<String>> destFolderIntentSet = new HashSet<>();
+ for (DbEntry entry : dest) {
+ if (entry.itemType == LauncherSettings.Favorites.ITEM_TYPE_FOLDER) {
+ destFolderIntentSet.add(entry.mFolderItems.keySet());
+ } else {
+ destIntentSet.add(entry.mIntent);
+ }
+ }
List<DbEntry> diff = new ArrayList<>();
for (DbEntry entry : src) {
- if (!destSet.contains(entry.mIntent)) {
- diff.add(entry);
+ if (entry.itemType == LauncherSettings.Favorites.ITEM_TYPE_FOLDER) {
+ if (!destFolderIntentSet.contains(entry.mFolderItems.keySet())) {
+ diff.add(entry);
+ }
+ } else {
+ if (!destIntentSet.contains(entry.mIntent)) {
+ diff.add(entry);
+ }
}
}
return diff;
diff --git a/src/com/android/launcher3/touch/HomeRotatedPageHandler.java b/src/com/android/launcher3/touch/HomeRotatedPageHandler.java
deleted file mode 100644
index db5c659..0000000
--- a/src/com/android/launcher3/touch/HomeRotatedPageHandler.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.launcher3.touch;
-
-import android.graphics.RectF;
-import android.view.Surface;
-import android.widget.LinearLayout;
-
-public class HomeRotatedPageHandler extends PortraitPagedViewHandler {
- @Override
- public void offsetTaskRect(RectF rect, float value, int displayRotation, int launcherRotation) {
- if (launcherRotation == Surface.ROTATION_0) {
- super.offsetTaskRect(rect, value, displayRotation, launcherRotation);
- } else if (launcherRotation == Surface.ROTATION_90) {
- if (displayRotation == Surface.ROTATION_0) {
- rect.offset(0, value);
- } else if (displayRotation == Surface.ROTATION_90) {
- rect.offset(value, 0);
- } else if (displayRotation == Surface.ROTATION_180) {
- rect.offset(-value, 0);
- } else {
- rect.offset(-value, 0);
- }
- } else if (launcherRotation == Surface.ROTATION_270) {
- if (displayRotation == Surface.ROTATION_0) {
- rect.offset(0, -value);
- } else if (displayRotation == Surface.ROTATION_90) {
- rect.offset(value, 0);
- } else if (displayRotation == Surface.ROTATION_180) {
- rect.offset(0, -value);
- } else {
- rect.offset(value, 0);
- }
- } // TODO (b/149609488) handle 180 case as well
- }
-
- @Override
- public int getTaskMenuLayoutOrientation(LinearLayout taskMenuLayout) {
- return taskMenuLayout.getOrientation();
- }
-}
diff --git a/src/com/android/launcher3/touch/LandscapePagedViewHandler.java b/src/com/android/launcher3/touch/LandscapePagedViewHandler.java
index d02c731..48c7734 100644
--- a/src/com/android/launcher3/touch/LandscapePagedViewHandler.java
+++ b/src/com/android/launcher3/touch/LandscapePagedViewHandler.java
@@ -181,19 +181,6 @@
}
@Override
- public void offsetTaskRect(RectF rect, float value, int displayRotation, int launcherRotation) {
- if (displayRotation == Surface.ROTATION_0) {
- rect.offset(0, value);
- } else if (displayRotation == Surface.ROTATION_90) {
- rect.offset(value, 0);
- } else if (displayRotation == Surface.ROTATION_180) {
- rect.offset(0, -value);
- } else {
- rect.offset(-value, 0);
- }
- }
-
- @Override
public int getChildStart(View view) {
return view.getTop();
}
diff --git a/src/com/android/launcher3/touch/PagedOrientationHandler.java b/src/com/android/launcher3/touch/PagedOrientationHandler.java
index 2e0268d..65b1a7a 100644
--- a/src/com/android/launcher3/touch/PagedOrientationHandler.java
+++ b/src/com/android/launcher3/touch/PagedOrientationHandler.java
@@ -43,7 +43,6 @@
PagedOrientationHandler PORTRAIT = new PortraitPagedViewHandler();
PagedOrientationHandler LANDSCAPE = new LandscapePagedViewHandler();
PagedOrientationHandler SEASCAPE = new SeascapePagedViewHandler();
- PagedOrientationHandler HOME_ROTATED = new HomeRotatedPageHandler();
interface Int2DAction<T> {
void call(T target, int x, int y);
@@ -82,7 +81,6 @@
boolean getRecentsRtlSetting(Resources resources);
float getDegreesRotated();
int getRotation();
- void offsetTaskRect(RectF rect, float value, int delta, int launcherRotation);
int getPrimaryValue(int x, int y);
int getSecondaryValue(int x, int y);
void delegateScrollTo(PagedView pagedView, int secondaryScroll, int primaryScroll);
diff --git a/src/com/android/launcher3/touch/PortraitPagedViewHandler.java b/src/com/android/launcher3/touch/PortraitPagedViewHandler.java
index 2fc7a9f..79e5c87 100644
--- a/src/com/android/launcher3/touch/PortraitPagedViewHandler.java
+++ b/src/com/android/launcher3/touch/PortraitPagedViewHandler.java
@@ -179,19 +179,6 @@
}
@Override
- public void offsetTaskRect(RectF rect, float value, int displayRotation, int launcherRotation) {
- if (displayRotation == Surface.ROTATION_0) {
- rect.offset(value, 0);
- } else if (displayRotation == Surface.ROTATION_90) {
- rect.offset(0, -value);
- } else if (displayRotation == Surface.ROTATION_180) {
- rect.offset(-value, 0);
- } else {
- rect.offset(0, value);
- }
- }
-
- @Override
public int getChildStart(View view) {
return view.getLeft();
}
@@ -250,7 +237,7 @@
@Override
public int getTaskMenuLayoutOrientation(LinearLayout taskMenuLayout) {
- return LinearLayout.VERTICAL;
+ return taskMenuLayout.getOrientation();
}
@Override
diff --git a/src/com/android/launcher3/touch/SeascapePagedViewHandler.java b/src/com/android/launcher3/touch/SeascapePagedViewHandler.java
index 4c1700e..d5ae2dc 100644
--- a/src/com/android/launcher3/touch/SeascapePagedViewHandler.java
+++ b/src/com/android/launcher3/touch/SeascapePagedViewHandler.java
@@ -18,7 +18,6 @@
import android.content.res.Resources;
import android.graphics.PointF;
-import android.graphics.RectF;
import android.view.Surface;
import android.view.View;
@@ -42,19 +41,6 @@
}
@Override
- public void offsetTaskRect(RectF rect, float value, int displayRotation, int launcherRotation) {
- if (displayRotation == Surface.ROTATION_0) {
- rect.offset(0, value);
- } else if (displayRotation == Surface.ROTATION_90) {
- rect.offset(value, 0);
- } else if (displayRotation == Surface.ROTATION_180) {
- rect.offset(0, -value);
- } else {
- rect.offset(-value, 0);
- }
- }
-
- @Override
public float getDegreesRotated() {
return 270;
}