summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/com/android/customization/model/color/ColorSectionController.java24
-rw-r--r--src/com/android/customization/model/grid/GridOptionsManager.java4
2 files changed, 26 insertions, 2 deletions
diff --git a/src/com/android/customization/model/color/ColorSectionController.java b/src/com/android/customization/model/color/ColorSectionController.java
index c9e062e2..afd5ebfa 100644
--- a/src/com/android/customization/model/color/ColorSectionController.java
+++ b/src/com/android/customization/model/color/ColorSectionController.java
@@ -35,10 +35,12 @@ import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.FrameLayout;
import androidx.annotation.Nullable;
import androidx.lifecycle.LifecycleOwner;
import androidx.recyclerview.widget.RecyclerView;
+import androidx.viewpager2.widget.MarginPageTransformer;
import androidx.viewpager2.widget.ViewPager2;
import com.android.customization.model.CustomizationManager;
@@ -51,6 +53,7 @@ import com.android.wallpaper.R;
import com.android.wallpaper.model.CustomizationSectionController;
import com.android.wallpaper.model.WallpaperColorsViewModel;
import com.android.wallpaper.module.InjectorProvider;
+import com.android.wallpaper.module.LargeScreenMultiPanesChecker;
import com.android.wallpaper.widget.PageIndicator;
import com.android.wallpaper.widget.SeparatedTabLayout;
@@ -93,6 +96,7 @@ public class ColorSectionController implements CustomizationSectionController<Co
private Optional<Integer> mTabPositionToRestore = Optional.empty();
private long mLastColorApplyingTime = 0L;
private ColorSectionView mColorSectionView;
+ private boolean mIsMultiPane;
private static int getNumPages(int optionsPerPage, int totalOptions) {
return (int) Math.ceil((float) totalOptions / optionsPerPage);
@@ -106,6 +110,7 @@ public class ColorSectionController implements CustomizationSectionController<Co
new OverlayManagerCompat(activity));
mWallpaperColorsViewModel = viewModel;
mLifecycleOwner = lifecycleOwner;
+ mIsMultiPane = new LargeScreenMultiPanesChecker().isMultiPanesEnabled(activity);
if (savedInstanceState != null && savedInstanceState.containsKey(KEY_COLOR_TAB_POSITION)) {
mTabPositionToRestore = Optional.of(savedInstanceState.getInt(KEY_COLOR_TAB_POSITION));
@@ -422,6 +427,16 @@ public class ColorSectionController implements CustomizationSectionController<Co
ColorPageViewHolder(View itemView) {
super(itemView);
mContainer = itemView.findViewById(R.id.color_page_container);
+ /**
+ * Sets page transformer with margin to separate color pages and
+ * sets color pages' padding to not scroll to window boundary if multi-pane case
+ */
+ if (mIsMultiPane) {
+ final int padding = itemView.getContext().getResources().getDimensionPixelSize(
+ R.dimen.section_horizontal_padding);
+ mContainer.setPageTransformer(new MarginPageTransformer(padding * 2));
+ mContainer.setPadding(padding, /* top= */ 0, padding, /* bottom= */ 0);
+ }
mPageIndicator = itemView.findViewById(R.id.color_page_indicator);
if (ColorProvider.themeStyleEnabled) {
mPageIndicator.setVisibility(VISIBLE);
@@ -477,6 +492,15 @@ public class ColorSectionController implements CustomizationSectionController<Co
ColorOptionViewHolder(View itemView) {
super(itemView);
mContainer = itemView.findViewById(R.id.color_option_container);
+ // Sets layout with margins for non multi-pane case to separate color options.
+ if (!mIsMultiPane) {
+ final FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(
+ mContainer.getLayoutParams());
+ final int margin = itemView.getContext().getResources().getDimensionPixelSize(
+ R.dimen.section_horizontal_padding);
+ layoutParams.setMargins(margin, /* top= */ 0, margin, /* bottom= */ 0);
+ mContainer.setLayoutParams(layoutParams);
+ }
}
}
}
diff --git a/src/com/android/customization/model/grid/GridOptionsManager.java b/src/com/android/customization/model/grid/GridOptionsManager.java
index c19a8728..7f15d836 100644
--- a/src/com/android/customization/model/grid/GridOptionsManager.java
+++ b/src/com/android/customization/model/grid/GridOptionsManager.java
@@ -75,8 +75,8 @@ public class GridOptionsManager implements CustomizationManager<GridOption> {
try {
gridOptionSize = sExecutorService.submit(() -> {
List<GridOption> gridOptions = mProvider.fetch(/* reload= */true);
- return gridOptions;
- }).get().size();
+ return gridOptions == null ? 0 : gridOptions.size();
+ }).get();
} catch (InterruptedException | ExecutionException e) {
Log.w(TAG, "could not get gridOptionSize", e);
}