Add up arrow for action bar
- Implement AppbarFragmentHost for activity.
- Inherit onBottomActionBarReady parent function to hide back button
if back arrow exists.
Bug: 177638480
Test: Manual
Change-Id: I75ef8626126bd4583d5dfa864e9adb02292db285
diff --git a/src/com/android/customization/picker/CustomizationPickerActivity.java b/src/com/android/customization/picker/CustomizationPickerActivity.java
index e198484..17b4fc7 100644
--- a/src/com/android/customization/picker/CustomizationPickerActivity.java
+++ b/src/com/android/customization/picker/CustomizationPickerActivity.java
@@ -68,6 +68,7 @@
import com.android.wallpaper.module.InjectorProvider;
import com.android.wallpaper.module.UserEventLogger;
import com.android.wallpaper.module.WallpaperPreferences;
+import com.android.wallpaper.picker.AppbarFragment.AppbarFragmentHost;
import com.android.wallpaper.picker.BottomActionBarFragment;
import com.android.wallpaper.picker.CategoryFragment;
import com.android.wallpaper.picker.CategoryFragment.CategoryFragmentHost;
@@ -92,7 +93,7 @@
* Fragments providing customization options.
*/
public class CustomizationPickerActivity extends FragmentActivity implements WallpapersUiContainer,
- CategoryFragmentHost, CustomizationFragmentHost,
+ AppbarFragmentHost, CategoryFragmentHost, CustomizationFragmentHost,
ThemeFragmentHost, GridFragmentHost,
ClockFragmentHost, BottomActionBarHost, FragmentTransactionChecker {
@@ -514,6 +515,16 @@
return mIsSafeToCommitFragmentTransaction;
}
+ @Override
+ public void onUpArrowPressed() {
+ onBackPressed();
+ }
+
+ @Override
+ public boolean isUpArrowSupported() {
+ return true;
+ }
+
/**
* {@link CustomizationSection} corresponding to the "Wallpaper" section of the Picker.
*/
diff --git a/src/com/android/customization/picker/ViewOnlyFullPreviewActivity.java b/src/com/android/customization/picker/ViewOnlyFullPreviewActivity.java
index 2afbc16..91c310c 100644
--- a/src/com/android/customization/picker/ViewOnlyFullPreviewActivity.java
+++ b/src/com/android/customization/picker/ViewOnlyFullPreviewActivity.java
@@ -30,6 +30,7 @@
import com.android.customization.picker.grid.GridFullPreviewFragment;
import com.android.customization.picker.theme.ThemeFullPreviewFragment;
import com.android.wallpaper.R;
+import com.android.wallpaper.picker.AppbarFragment.AppbarFragmentHost;
import com.android.wallpaper.widget.BottomActionBar;
import com.android.wallpaper.widget.BottomActionBar.BottomActionBarHost;
@@ -37,7 +38,8 @@
import java.lang.annotation.RetentionPolicy;
/** Activity for full preview. */
-public class ViewOnlyFullPreviewActivity extends FragmentActivity implements BottomActionBarHost {
+public class ViewOnlyFullPreviewActivity extends FragmentActivity implements AppbarFragmentHost,
+ BottomActionBarHost {
private static final String EXTRA_PREVIEW_SECTION = "preview_section";
private static final String EXTRA_PREVIEW_BUNDLE = "preview_bundle";
@@ -46,6 +48,16 @@
public static final int SECTION_GRID = 1;
public static final int SECTION_CLOCK = 2;
+ @Override
+ public void onUpArrowPressed() {
+ onBackPressed();
+ }
+
+ @Override
+ public boolean isUpArrowSupported() {
+ return true;
+ }
+
@IntDef({SECTION_STYLE, SECTION_GRID, SECTION_CLOCK})
@Retention(RetentionPolicy.SOURCE)
private @interface Section {}
diff --git a/src/com/android/customization/picker/grid/GridFragment.java b/src/com/android/customization/picker/grid/GridFragment.java
index ad37fbf..f4a4ce4 100644
--- a/src/com/android/customization/picker/grid/GridFragment.java
+++ b/src/com/android/customization/picker/grid/GridFragment.java
@@ -51,6 +51,7 @@
import com.android.wallpaper.module.CurrentWallpaperInfoFactory;
import com.android.wallpaper.module.InjectorProvider;
import com.android.wallpaper.picker.AppbarFragment;
+import com.android.wallpaper.util.ActivityUtils;
import com.android.wallpaper.widget.BottomActionBar;
import com.bumptech.glide.Glide;
@@ -126,7 +127,7 @@
@Nullable Bundle savedInstanceState) {
View view = inflater.inflate(
R.layout.fragment_grid_picker, container, /* attachToRoot */ false);
- setUpToolbar(view);
+ setUpToolbar(view, ActivityUtils.isLaunchedFromSettings(getActivity().getIntent()));
mContent = view.findViewById(R.id.content_section);
mOptionsContainer = view.findViewById(R.id.options_container);
mLoading = view.findViewById(R.id.loading_indicator);
@@ -184,6 +185,7 @@
@Override
protected void onBottomActionBarReady(BottomActionBar bottomActionBar) {
+ super.onBottomActionBarReady(bottomActionBar);
mBottomActionBar = bottomActionBar;
mBottomActionBar.showActionsOnly(APPLY);
mBottomActionBar.setActionClickListener(APPLY, unused -> applyGridOption(mSelectedOption));
diff --git a/src/com/android/customization/picker/grid/GridFullPreviewFragment.java b/src/com/android/customization/picker/grid/GridFullPreviewFragment.java
index 69105df..abea1c1 100644
--- a/src/com/android/customization/picker/grid/GridFullPreviewFragment.java
+++ b/src/com/android/customization/picker/grid/GridFullPreviewFragment.java
@@ -124,6 +124,7 @@
@Override
protected void onBottomActionBarReady(BottomActionBar bottomActionBar) {
+ super.onBottomActionBarReady(bottomActionBar);
bottomActionBar.showActionsOnly(APPLY);
bottomActionBar.setActionClickListener(APPLY, v -> finishActivityWithResultOk());
bottomActionBar.show();
diff --git a/src/com/android/customization/picker/theme/CustomThemeActivity.java b/src/com/android/customization/picker/theme/CustomThemeActivity.java
index c1c2d0e..62a2f26 100644
--- a/src/com/android/customization/picker/theme/CustomThemeActivity.java
+++ b/src/com/android/customization/picker/theme/CustomThemeActivity.java
@@ -53,6 +53,7 @@
import com.android.customization.picker.theme.CustomThemeStepFragment.CustomThemeComponentStepHost;
import com.android.wallpaper.R;
import com.android.wallpaper.module.InjectorProvider;
+import com.android.wallpaper.picker.AppbarFragment.AppbarFragmentHost;
import org.json.JSONException;
@@ -60,7 +61,7 @@
import java.util.List;
public class CustomThemeActivity extends FragmentActivity implements
- CustomThemeComponentStepHost {
+ AppbarFragmentHost, CustomThemeComponentStepHost {
public static final String EXTRA_THEME_ID = "CustomThemeActivity.ThemeId";
public static final String EXTRA_THEME_TITLE = "CustomThemeActivity.ThemeTitle";
public static final String EXTRA_THEME_PACKAGES = "CustomThemeActivity.ThemePackages";
@@ -283,6 +284,19 @@
return mCustomThemeManager;
}
+ @Override
+ public void onUpArrowPressed() {
+ // Skip it because CustomThemeStepFragment will implement cancel button
+ // (instead of up arrow) on action bar.
+ }
+
+ @Override
+ public boolean isUpArrowSupported() {
+ // Skip it because CustomThemeStepFragment will implement cancel button
+ // (instead of up arrow) on action bar.
+ return false;
+ }
+
/**
* Represents a step in selecting a custom theme, picking a particular component (eg font,
* color, shape, etc).
diff --git a/src/com/android/customization/picker/theme/ThemeFragment.java b/src/com/android/customization/picker/theme/ThemeFragment.java
index 7b58274..da2a8f6 100644
--- a/src/com/android/customization/picker/theme/ThemeFragment.java
+++ b/src/com/android/customization/picker/theme/ThemeFragment.java
@@ -57,6 +57,7 @@
import com.android.wallpaper.module.CurrentWallpaperInfoFactory;
import com.android.wallpaper.module.InjectorProvider;
import com.android.wallpaper.picker.AppbarFragment;
+import com.android.wallpaper.util.ActivityUtils;
import com.android.wallpaper.widget.BottomActionBar;
import com.android.wallpaper.widget.BottomActionBar.AccessibilityCallback;
@@ -115,7 +116,7 @@
@Nullable Bundle savedInstanceState) {
View view = inflater.inflate(
R.layout.fragment_theme_picker, container, /* attachToRoot */ false);
- setUpToolbar(view);
+ setUpToolbar(view, ActivityUtils.isLaunchedFromSettings(getActivity().getIntent()));
mContent = view.findViewById(R.id.content_section);
mLoading = view.findViewById(R.id.loading_indicator);
@@ -149,6 +150,7 @@
@Override
protected void onBottomActionBarReady(BottomActionBar bottomActionBar) {
+ super.onBottomActionBarReady(bottomActionBar);
mBottomActionBar = bottomActionBar;
mBottomActionBar.showActionsOnly(INFORMATION, APPLY);
mBottomActionBar.setActionClickListener(APPLY, v -> {
diff --git a/src/com/android/customization/picker/theme/ThemeFullPreviewFragment.java b/src/com/android/customization/picker/theme/ThemeFullPreviewFragment.java
index 7cbeab9..77325e7 100644
--- a/src/com/android/customization/picker/theme/ThemeFullPreviewFragment.java
+++ b/src/com/android/customization/picker/theme/ThemeFullPreviewFragment.java
@@ -125,6 +125,7 @@
@Override
protected void onBottomActionBarReady(BottomActionBar bottomActionBar) {
+ super.onBottomActionBarReady(bottomActionBar);
if (mCanApplyFromFullPreview) {
bottomActionBar.showActionsOnly(INFORMATION, APPLY);
bottomActionBar.setActionClickListener(APPLY, v -> finishActivityWithResultOk());