Loading src/com/android/launcher3/accessibility/LauncherAccessibilityDelegate.java +13 −9 Original line number Diff line number Diff line Loading @@ -265,7 +265,7 @@ public class LauncherAccessibilityDelegate extends AccessibilityDelegate impleme List<OptionItem> actions = getSupportedResizeActions(host, info); Rect pos = new Rect(); mLauncher.getDragLayer().getDescendantRectRelativeToSelf(host, pos); ArrowPopup popup = OptionsPopupView.show(mLauncher, new RectF(pos), actions); ArrowPopup popup = OptionsPopupView.show(mLauncher, new RectF(pos), actions, false); popup.requestFocus(); popup.setOnCloseCallback(host::requestFocus); return true; Loading Loading @@ -294,15 +294,17 @@ public class LauncherAccessibilityDelegate extends AccessibilityDelegate impleme if ((providerInfo.resizeMode & AppWidgetProviderInfo.RESIZE_HORIZONTAL) != 0) { if (layout.isRegionVacant(info.cellX + info.spanX, info.cellY, 1, info.spanY) || layout.isRegionVacant(info.cellX - 1, info.cellY, 1, info.spanY)) { actions.add(new OptionItem( R.string.action_increase_width, R.drawable.ic_widget_width_increase, actions.add(new OptionItem(mLauncher, R.string.action_increase_width, R.drawable.ic_widget_width_increase, IGNORE, v -> performResizeAction(R.string.action_increase_width, host, info))); } if (info.spanX > info.minSpanX && info.spanX > 1) { actions.add(new OptionItem( R.string.action_decrease_width, R.drawable.ic_widget_width_decrease, actions.add(new OptionItem(mLauncher, R.string.action_decrease_width, R.drawable.ic_widget_width_decrease, IGNORE, v -> performResizeAction(R.string.action_decrease_width, host, info))); } Loading @@ -311,15 +313,17 @@ public class LauncherAccessibilityDelegate extends AccessibilityDelegate impleme if ((providerInfo.resizeMode & AppWidgetProviderInfo.RESIZE_VERTICAL) != 0) { if (layout.isRegionVacant(info.cellX, info.cellY + info.spanY, info.spanX, 1) || layout.isRegionVacant(info.cellX, info.cellY - 1, info.spanX, 1)) { actions.add(new OptionItem( R.string.action_increase_height, R.drawable.ic_widget_height_increase, actions.add(new OptionItem(mLauncher, R.string.action_increase_height, R.drawable.ic_widget_height_increase, IGNORE, v -> performResizeAction(R.string.action_increase_height, host, info))); } if (info.spanY > info.minSpanY && info.spanY > 1) { actions.add(new OptionItem( R.string.action_decrease_height, R.drawable.ic_widget_height_decrease, actions.add(new OptionItem(mLauncher, R.string.action_decrease_height, R.drawable.ic_widget_height_decrease, IGNORE, v -> performResizeAction(R.string.action_decrease_height, host, info))); } Loading src/com/android/launcher3/views/AccessibilityActionsView.java +1 −1 Original line number Diff line number Diff line Loading @@ -67,7 +67,7 @@ public class AccessibilityActionsView extends View implements StateListener<Laun info.addAction(new AccessibilityAction( R.string.all_apps_button_label, l.getText(R.string.all_apps_button_label))); for (OptionItem item : OptionsPopupView.getOptions(l)) { info.addAction(new AccessibilityAction(item.labelRes, l.getText(item.labelRes))); info.addAction(new AccessibilityAction(item.labelRes, item.label)); } return info; } Loading src/com/android/launcher3/views/OptionsPopupView.java +39 −12 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.content.Context; import android.content.Intent; import android.graphics.Rect; import android.graphics.RectF; import android.graphics.drawable.Drawable; import android.text.TextUtils; import android.util.ArrayMap; import android.util.AttributeSet; Loading @@ -37,6 +38,7 @@ import android.widget.Toast; import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; import androidx.core.content.ContextCompat; import com.android.launcher3.Launcher; import com.android.launcher3.LauncherSettings; Loading @@ -62,6 +64,7 @@ public class OptionsPopupView extends ArrowPopup private final ArrayMap<View, OptionItem> mItemMap = new ArrayMap<>(); private RectF mTargetRect; private boolean mShouldAddArrow; public OptionsPopupView(Context context, AttributeSet attrs) { this(context, attrs, 0); Loading Loading @@ -113,9 +116,13 @@ public class OptionsPopupView extends ArrowPopup return (type & TYPE_OPTIONS_POPUP) != 0; } public void setShouldAddArrow(boolean shouldAddArrow) { mShouldAddArrow = shouldAddArrow; } @Override protected boolean shouldAddArrow() { return false; return mShouldAddArrow; } @Override Loading @@ -124,16 +131,17 @@ public class OptionsPopupView extends ArrowPopup } public static OptionsPopupView show( Launcher launcher, RectF targetRect, List<OptionItem> items) { Launcher launcher, RectF targetRect, List<OptionItem> items, boolean shouldAddArrow) { OptionsPopupView popup = (OptionsPopupView) launcher.getLayoutInflater() .inflate(R.layout.longpress_options_menu, launcher.getDragLayer(), false); popup.mTargetRect = targetRect; popup.setShouldAddArrow(shouldAddArrow); for (OptionItem item : items) { DeepShortcutView view = (DeepShortcutView) popup.inflateAndAdd(R.layout.system_shortcut, popup); view.getIconView().setBackgroundResource(item.iconRes); view.getBubbleText().setText(item.labelRes); view.getIconView().setBackgroundDrawable(item.icon); view.getBubbleText().setText(item.label); view.setOnClickListener(popup); view.setOnLongClickListener(popup); popup.mItemMap.put(view, item); Loading @@ -154,7 +162,7 @@ public class OptionsPopupView extends ArrowPopup y = launcher.getDragLayer().getHeight() / 2; } RectF target = new RectF(x - halfSize, y - halfSize, x + halfSize, y + halfSize); show(launcher, target, getOptions(launcher)); show(launcher, target, getOptions(launcher), false); } /** Loading @@ -162,11 +170,15 @@ public class OptionsPopupView extends ArrowPopup */ public static ArrayList<OptionItem> getOptions(Launcher launcher) { ArrayList<OptionItem> options = new ArrayList<>(); options.add(new OptionItem(R.string.settings_button_text, R.drawable.ic_setting, options.add(new OptionItem(launcher, R.string.settings_button_text, R.drawable.ic_setting, LAUNCHER_SETTINGS_BUTTON_TAP_OR_LONGPRESS, OptionsPopupView::startSettings)); if (!WidgetsModel.GO_DISABLE_WIDGETS) { options.add(new OptionItem(R.string.widget_button_text, R.drawable.ic_widget, options.add(new OptionItem(launcher, R.string.widget_button_text, R.drawable.ic_widget, LAUNCHER_WIDGETSTRAY_BUTTON_TAP_OR_LONGPRESS, OptionsPopupView::onWidgetsClicked)); } Loading @@ -174,7 +186,9 @@ public class OptionsPopupView extends ArrowPopup R.string.styles_wallpaper_button_text : R.string.wallpaper_button_text; int resDrawable = Utilities.existsStyleWallpapers(launcher) ? R.drawable.ic_palette : R.drawable.ic_wallpaper; options.add(new OptionItem(resString, resDrawable, options.add(new OptionItem(launcher, resString, resDrawable, IGNORE, OptionsPopupView::startWallpaperPicker)); return options; Loading Loading @@ -241,15 +255,28 @@ public class OptionsPopupView extends ArrowPopup public static class OptionItem { // Used to create AccessibilityNodeInfo in AccessibilityActionsView.java. public final int labelRes; public final int iconRes; public final CharSequence label; public final Drawable icon; public final EventEnum eventId; public final OnLongClickListener clickListener; public OptionItem(int labelRes, int iconRes, EventEnum eventId, public OptionItem(Context context, int labelRes, int iconRes, EventEnum eventId, OnLongClickListener clickListener) { this.labelRes = labelRes; this.iconRes = iconRes; this.label = context.getText(labelRes); this.icon = ContextCompat.getDrawable(context, iconRes); this.eventId = eventId; this.clickListener = clickListener; } public OptionItem(CharSequence label, Drawable icon, EventEnum eventId, OnLongClickListener clickListener) { this.labelRes = 0; this.label = label; this.icon = icon; this.eventId = eventId; this.clickListener = clickListener; } Loading Loading
src/com/android/launcher3/accessibility/LauncherAccessibilityDelegate.java +13 −9 Original line number Diff line number Diff line Loading @@ -265,7 +265,7 @@ public class LauncherAccessibilityDelegate extends AccessibilityDelegate impleme List<OptionItem> actions = getSupportedResizeActions(host, info); Rect pos = new Rect(); mLauncher.getDragLayer().getDescendantRectRelativeToSelf(host, pos); ArrowPopup popup = OptionsPopupView.show(mLauncher, new RectF(pos), actions); ArrowPopup popup = OptionsPopupView.show(mLauncher, new RectF(pos), actions, false); popup.requestFocus(); popup.setOnCloseCallback(host::requestFocus); return true; Loading Loading @@ -294,15 +294,17 @@ public class LauncherAccessibilityDelegate extends AccessibilityDelegate impleme if ((providerInfo.resizeMode & AppWidgetProviderInfo.RESIZE_HORIZONTAL) != 0) { if (layout.isRegionVacant(info.cellX + info.spanX, info.cellY, 1, info.spanY) || layout.isRegionVacant(info.cellX - 1, info.cellY, 1, info.spanY)) { actions.add(new OptionItem( R.string.action_increase_width, R.drawable.ic_widget_width_increase, actions.add(new OptionItem(mLauncher, R.string.action_increase_width, R.drawable.ic_widget_width_increase, IGNORE, v -> performResizeAction(R.string.action_increase_width, host, info))); } if (info.spanX > info.minSpanX && info.spanX > 1) { actions.add(new OptionItem( R.string.action_decrease_width, R.drawable.ic_widget_width_decrease, actions.add(new OptionItem(mLauncher, R.string.action_decrease_width, R.drawable.ic_widget_width_decrease, IGNORE, v -> performResizeAction(R.string.action_decrease_width, host, info))); } Loading @@ -311,15 +313,17 @@ public class LauncherAccessibilityDelegate extends AccessibilityDelegate impleme if ((providerInfo.resizeMode & AppWidgetProviderInfo.RESIZE_VERTICAL) != 0) { if (layout.isRegionVacant(info.cellX, info.cellY + info.spanY, info.spanX, 1) || layout.isRegionVacant(info.cellX, info.cellY - 1, info.spanX, 1)) { actions.add(new OptionItem( R.string.action_increase_height, R.drawable.ic_widget_height_increase, actions.add(new OptionItem(mLauncher, R.string.action_increase_height, R.drawable.ic_widget_height_increase, IGNORE, v -> performResizeAction(R.string.action_increase_height, host, info))); } if (info.spanY > info.minSpanY && info.spanY > 1) { actions.add(new OptionItem( R.string.action_decrease_height, R.drawable.ic_widget_height_decrease, actions.add(new OptionItem(mLauncher, R.string.action_decrease_height, R.drawable.ic_widget_height_decrease, IGNORE, v -> performResizeAction(R.string.action_decrease_height, host, info))); } Loading
src/com/android/launcher3/views/AccessibilityActionsView.java +1 −1 Original line number Diff line number Diff line Loading @@ -67,7 +67,7 @@ public class AccessibilityActionsView extends View implements StateListener<Laun info.addAction(new AccessibilityAction( R.string.all_apps_button_label, l.getText(R.string.all_apps_button_label))); for (OptionItem item : OptionsPopupView.getOptions(l)) { info.addAction(new AccessibilityAction(item.labelRes, l.getText(item.labelRes))); info.addAction(new AccessibilityAction(item.labelRes, item.label)); } return info; } Loading
src/com/android/launcher3/views/OptionsPopupView.java +39 −12 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.content.Context; import android.content.Intent; import android.graphics.Rect; import android.graphics.RectF; import android.graphics.drawable.Drawable; import android.text.TextUtils; import android.util.ArrayMap; import android.util.AttributeSet; Loading @@ -37,6 +38,7 @@ import android.widget.Toast; import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; import androidx.core.content.ContextCompat; import com.android.launcher3.Launcher; import com.android.launcher3.LauncherSettings; Loading @@ -62,6 +64,7 @@ public class OptionsPopupView extends ArrowPopup private final ArrayMap<View, OptionItem> mItemMap = new ArrayMap<>(); private RectF mTargetRect; private boolean mShouldAddArrow; public OptionsPopupView(Context context, AttributeSet attrs) { this(context, attrs, 0); Loading Loading @@ -113,9 +116,13 @@ public class OptionsPopupView extends ArrowPopup return (type & TYPE_OPTIONS_POPUP) != 0; } public void setShouldAddArrow(boolean shouldAddArrow) { mShouldAddArrow = shouldAddArrow; } @Override protected boolean shouldAddArrow() { return false; return mShouldAddArrow; } @Override Loading @@ -124,16 +131,17 @@ public class OptionsPopupView extends ArrowPopup } public static OptionsPopupView show( Launcher launcher, RectF targetRect, List<OptionItem> items) { Launcher launcher, RectF targetRect, List<OptionItem> items, boolean shouldAddArrow) { OptionsPopupView popup = (OptionsPopupView) launcher.getLayoutInflater() .inflate(R.layout.longpress_options_menu, launcher.getDragLayer(), false); popup.mTargetRect = targetRect; popup.setShouldAddArrow(shouldAddArrow); for (OptionItem item : items) { DeepShortcutView view = (DeepShortcutView) popup.inflateAndAdd(R.layout.system_shortcut, popup); view.getIconView().setBackgroundResource(item.iconRes); view.getBubbleText().setText(item.labelRes); view.getIconView().setBackgroundDrawable(item.icon); view.getBubbleText().setText(item.label); view.setOnClickListener(popup); view.setOnLongClickListener(popup); popup.mItemMap.put(view, item); Loading @@ -154,7 +162,7 @@ public class OptionsPopupView extends ArrowPopup y = launcher.getDragLayer().getHeight() / 2; } RectF target = new RectF(x - halfSize, y - halfSize, x + halfSize, y + halfSize); show(launcher, target, getOptions(launcher)); show(launcher, target, getOptions(launcher), false); } /** Loading @@ -162,11 +170,15 @@ public class OptionsPopupView extends ArrowPopup */ public static ArrayList<OptionItem> getOptions(Launcher launcher) { ArrayList<OptionItem> options = new ArrayList<>(); options.add(new OptionItem(R.string.settings_button_text, R.drawable.ic_setting, options.add(new OptionItem(launcher, R.string.settings_button_text, R.drawable.ic_setting, LAUNCHER_SETTINGS_BUTTON_TAP_OR_LONGPRESS, OptionsPopupView::startSettings)); if (!WidgetsModel.GO_DISABLE_WIDGETS) { options.add(new OptionItem(R.string.widget_button_text, R.drawable.ic_widget, options.add(new OptionItem(launcher, R.string.widget_button_text, R.drawable.ic_widget, LAUNCHER_WIDGETSTRAY_BUTTON_TAP_OR_LONGPRESS, OptionsPopupView::onWidgetsClicked)); } Loading @@ -174,7 +186,9 @@ public class OptionsPopupView extends ArrowPopup R.string.styles_wallpaper_button_text : R.string.wallpaper_button_text; int resDrawable = Utilities.existsStyleWallpapers(launcher) ? R.drawable.ic_palette : R.drawable.ic_wallpaper; options.add(new OptionItem(resString, resDrawable, options.add(new OptionItem(launcher, resString, resDrawable, IGNORE, OptionsPopupView::startWallpaperPicker)); return options; Loading Loading @@ -241,15 +255,28 @@ public class OptionsPopupView extends ArrowPopup public static class OptionItem { // Used to create AccessibilityNodeInfo in AccessibilityActionsView.java. public final int labelRes; public final int iconRes; public final CharSequence label; public final Drawable icon; public final EventEnum eventId; public final OnLongClickListener clickListener; public OptionItem(int labelRes, int iconRes, EventEnum eventId, public OptionItem(Context context, int labelRes, int iconRes, EventEnum eventId, OnLongClickListener clickListener) { this.labelRes = labelRes; this.iconRes = iconRes; this.label = context.getText(labelRes); this.icon = ContextCompat.getDrawable(context, iconRes); this.eventId = eventId; this.clickListener = clickListener; } public OptionItem(CharSequence label, Drawable icon, EventEnum eventId, OnLongClickListener clickListener) { this.labelRes = 0; this.label = label; this.icon = icon; this.eventId = eventId; this.clickListener = clickListener; } Loading