Migrate hotseat items into a folder
If feature flag HOTSEAT_MIGRATE_TO_FOLDER is enabled, this moves hotseat
items into a folder in the workspace. If not, it moves the whole hotseat
to the first workspace page that can host the hotseat.
Bug: 151099421
Test: Manual
Change-Id: I49f6a22a0ada2c4cf237ca91a323a46346a11a59
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 7986c26..bcce168 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
@@ -29,6 +29,7 @@
import android.widget.TextView;
import android.widget.Toast;
+import com.android.launcher3.ArrowTipView;
import com.android.launcher3.CellLayout;
import com.android.launcher3.DeviceProfile;
import com.android.launcher3.Insettable;
@@ -53,20 +54,15 @@
private static final int DEFAULT_CLOSE_DURATION = 200;
protected static final int FINAL_SCRIM_BG_COLOR = 0x88000000;
- private static final int MIGRATE_SAME_PAGE = 0;
- private static final int MIGRATE_NEW_PAGE = 1;
- private static final int MIGRATE_NO_MIGRATE = 2;
+ // we use this value to keep track of migration logs as we experiment with different migrations
+ private static final int MIGRATION_EXPERIMENT_IDENTIFIER = 1;
private final Rect mInsets = new Rect();
private View mHotseatWrapper;
private CellLayout mSampleHotseat;
- private TextView mEduHeading;
- private TextView mEduContent;
private Button mDismissBtn;
- private int mMigrationMode = MIGRATE_SAME_PAGE;
-
public void setHotseatEduController(HotseatEduController hotseatEduController) {
mHotseatEduController = hotseatEduController;
}
@@ -89,8 +85,6 @@
super.onFinishInflate();
mHotseatWrapper = findViewById(R.id.hotseat_wrapper);
mSampleHotseat = findViewById(R.id.sample_prediction);
- mEduHeading = findViewById(R.id.hotseat_edu_heading);
- mEduContent = findViewById(R.id.hotseat_edu_content);
DeviceProfile grid = mLauncher.getDeviceProfile();
Rect padding = grid.getHotseatLayoutPadding();
@@ -105,25 +99,30 @@
mDismissBtn = findViewById(R.id.no_thanks);
mDismissBtn.setOnClickListener(this::onDismiss);
+ // update ui to reflect which migration method is going to be used
+ if (FeatureFlags.HOTSEAT_MIGRATE_TO_FOLDER.get()) {
+ ((TextView) findViewById(R.id.hotseat_edu_content)).setText(
+ R.string.hotseat_edu_message_migrate_alt);
+ }
}
private void onAccept(View v) {
- if (mMigrationMode == MIGRATE_NO_MIGRATE || !mHotseatEduController.migrate()) {
- onDismiss(v);
- return;
- }
+ mHotseatEduController.migrate();
handleClose(true);
mHotseatEduController.finishOnboarding();
- logUserAction(true);
- int toastStringRes = mMigrationMode == MIGRATE_SAME_PAGE
+ //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);
+ int toastStringRes = !FeatureFlags.HOTSEAT_MIGRATE_TO_FOLDER.get()
? R.string.hotseat_items_migrated : R.string.hotseat_items_migrated_alt;
Toast.makeText(mLauncher, toastStringRes, Toast.LENGTH_LONG).show();
}
private void onDismiss(View v) {
- Toast.makeText(getContext(), R.string.hotseat_no_migration, Toast.LENGTH_LONG).show();
+ int top = mLauncher.getHotseat().getTop();
+ new ArrowTipView(mLauncher).show(mLauncher.getString(R.string.hotseat_no_migration), top);
mHotseatEduController.finishOnboarding();
- logUserAction(false);
+ logUserAction(false, -1);
handleClose(true);
}
@@ -155,7 +154,7 @@
mLauncher.getDeviceProfile().hotseatBarSizePx + insets.bottom;
}
- private void logUserAction(boolean migrated) {
+ private void logUserAction(boolean migrated, int pageIndex) {
LauncherLogProto.Action action = new LauncherLogProto.Action();
LauncherLogProto.Target target = new LauncherLogProto.Target();
action.type = LauncherLogProto.Action.Type.TOUCH;
@@ -164,8 +163,9 @@
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 = mMigrationMode;
+ target.pageIndex = pageIndex;
LauncherLogProto.LauncherEvent event = newLauncherEvent(action, target);
UserEventDispatcher.newInstance(getContext()).dispatchUserEvent(event, null);
}
@@ -218,15 +218,6 @@
}
}
- @Override
- protected void attachToContainer() {
- super.attachToContainer();
- if (FeatureFlags.HOTSEAT_MIGRATE_NEW_PAGE.get()) {
- mEduContent.setText(R.string.hotseat_edu_message_migrate_alt);
- mMigrationMode = MIGRATE_NEW_PAGE;
- }
- }
-
/**
* Opens User education dialog with a list of suggested apps
*/