From a5ace71d912c8ceafeecbabc7296e41c60d47602 Mon Sep 17 00:00:00 2001 From: Sunny Goyal Date: Wed, 15 Nov 2017 17:12:51 -0800 Subject: [PATCH] Temorarily changing the long press action on the homescreen to show a popup menu Change-Id: If160a2e4d0f73e2e1ecb424a0625d642b8775ada --- .../launcher3/uioverrides/UiFactory.java | 30 +++++++++++++++++++ src/com/android/launcher3/Launcher.java | 19 ++++++++---- .../launcher3/uioverrides/UiFactory.java | 6 ++++ 3 files changed, 49 insertions(+), 6 deletions(-) diff --git a/quickstep/src/com/android/launcher3/uioverrides/UiFactory.java b/quickstep/src/com/android/launcher3/uioverrides/UiFactory.java index c490c3fa7f..20abdc7d7e 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/UiFactory.java +++ b/quickstep/src/com/android/launcher3/uioverrides/UiFactory.java @@ -16,12 +16,17 @@ package com.android.launcher3.uioverrides; +import android.content.Intent; import android.view.View.AccessibilityDelegate; +import android.widget.PopupMenu; +import android.widget.Toast; import com.android.launcher3.Launcher; import com.android.launcher3.LauncherStateManager.StateHandler; +import com.android.launcher3.R; import com.android.launcher3.VerticalSwipeController; import com.android.launcher3.util.TouchController; +import com.android.launcher3.widget.WidgetsFullSheet; public class UiFactory { @@ -38,4 +43,29 @@ public class UiFactory { launcher.getAllAppsController(), launcher.getWorkspace(), new RecentsViewStateController(launcher)}; } + + public static void onWorkspaceLongPress(Launcher launcher) { + PopupMenu menu = new PopupMenu(launcher, launcher.getWorkspace().getPageIndicator()); + menu.getMenu().add(R.string.wallpaper_button_text).setOnMenuItemClickListener((i) -> { + launcher.onClickWallpaperPicker(null); + return true; + }); + menu.getMenu().add(R.string.widget_button_text).setOnMenuItemClickListener((i) -> { + if (launcher.getPackageManager().isSafeMode()) { + Toast.makeText(launcher, R.string.safemode_widget_error, Toast.LENGTH_SHORT).show(); + } else { + WidgetsFullSheet.show(launcher, true /* animated */); + } + return true; + }); + if (launcher.hasSettings()) { + menu.getMenu().add(R.string.settings_button_text).setOnMenuItemClickListener((i) -> { + launcher.startActivity(new Intent(Intent.ACTION_APPLICATION_PREFERENCES) + .setPackage(launcher.getPackageName()) + .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)); + return true; + }); + } + menu.show(); + } } diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index 782ddc30fb..cb63510484 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -60,6 +60,7 @@ import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.content.pm.PackageManager; import android.database.sqlite.SQLiteDatabase; import android.graphics.Point; +import android.graphics.PointF; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.os.AsyncTask; @@ -123,6 +124,7 @@ import com.android.launcher3.popup.PopupDataProvider; import com.android.launcher3.shortcuts.DeepShortcutManager; import com.android.launcher3.states.AllAppsState; import com.android.launcher3.states.InternalStateHandler; +import com.android.launcher3.uioverrides.UiFactory; import com.android.launcher3.userevent.nano.LauncherLogProto; import com.android.launcher3.userevent.nano.LauncherLogProto.Action; import com.android.launcher3.userevent.nano.LauncherLogProto.ContainerType; @@ -2062,11 +2064,16 @@ public class Launcher extends BaseActivity intent.setPackage(pickerPackage); } - intent.setSourceBounds(getViewBounds(v)); + final Bundle launchOptions; + if (v != null) { + intent.setSourceBounds(getViewBounds(v)); + // If there is no target package, use the default intent chooser animation + launchOptions = hasTargetPackage ? getActivityLaunchOptions(v) : null; + } else { + launchOptions = null; + } try { - startActivityForResult(intent, REQUEST_PICK_WALLPAPER, - // If there is no target package, use the default intent chooser animation - hasTargetPackage ? getActivityLaunchOptions(v) : null); + startActivityForResult(intent, REQUEST_PICK_WALLPAPER, launchOptions); } catch (ActivityNotFoundException e) { setWaitingForResult(null); Toast.makeText(this, R.string.activity_not_found, Toast.LENGTH_SHORT).show(); @@ -2222,7 +2229,7 @@ public class Launcher extends BaseActivity getUserEventDispatcher().logActionOnContainer(Action.Touch.LONGPRESS, Action.Direction.NONE, ContainerType.WORKSPACE, mWorkspace.getCurrentPage()); - getStateManager().goToState(OVERVIEW); + UiFactory.onWorkspaceLongPress(this); mWorkspace.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS, HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING); return true; @@ -2259,7 +2266,7 @@ public class Launcher extends BaseActivity getUserEventDispatcher().logActionOnContainer(Action.Touch.LONGPRESS, Action.Direction.NONE, ContainerType.WORKSPACE, mWorkspace.getCurrentPage()); - getStateManager().goToState(OVERVIEW); + UiFactory.onWorkspaceLongPress(this); } mWorkspace.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS, HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING); diff --git a/src_ui_overrides/com/android/launcher3/uioverrides/UiFactory.java b/src_ui_overrides/com/android/launcher3/uioverrides/UiFactory.java index 8521334fc7..51cf6615dd 100644 --- a/src_ui_overrides/com/android/launcher3/uioverrides/UiFactory.java +++ b/src_ui_overrides/com/android/launcher3/uioverrides/UiFactory.java @@ -16,6 +16,8 @@ package com.android.launcher3.uioverrides; +import static com.android.launcher3.LauncherState.OVERVIEW; + import android.view.View.AccessibilityDelegate; import com.android.launcher3.Launcher; @@ -39,4 +41,8 @@ public class UiFactory { (OverviewPanel) launcher.getOverviewPanel(), launcher.getAllAppsController(), launcher.getWorkspace() }; } + + public static void onWorkspaceLongPress(Launcher launcher) { + launcher.getStateManager().goToState(OVERVIEW); + } }