blob: 1097a71630dd3109336cc9acc4499e8391ef2159 [file] [log] [blame]
Chihhang Chuang1473ab02021-06-10 10:49:38 +08001package com.android.customization.module;
2
Chihhang Chuang1473ab02021-06-10 10:49:38 +08003import android.os.Bundle;
4
5import androidx.annotation.Nullable;
Alejandro Nijamkinabda67b2022-11-30 14:34:56 -08006import androidx.fragment.app.FragmentActivity;
Chihhang Chuang1473ab02021-06-10 10:49:38 +08007import androidx.lifecycle.LifecycleOwner;
Alejandro Nijamkin0eb2cc22022-12-19 10:55:57 -08008import androidx.lifecycle.ViewModelProvider;
Chihhang Chuang1473ab02021-06-10 10:49:38 +08009
Kunhung Li7b10d5b2022-07-06 16:19:47 +080010import com.android.customization.model.color.ColorSectionController;
Chihhang Chuang1473ab02021-06-10 10:49:38 +080011import com.android.customization.model.grid.GridOptionsManager;
12import com.android.customization.model.grid.GridSectionController;
Chihhang Chuang8d14e8a2021-06-15 14:03:18 +080013import com.android.customization.model.mode.DarkModeSectionController;
Chihhang Chuang1473ab02021-06-10 10:49:38 +080014import com.android.customization.model.themedicon.ThemedIconSectionController;
15import com.android.customization.model.themedicon.ThemedIconSwitchProvider;
Alejandro Nijamkin0eb2cc22022-12-19 10:55:57 -080016import com.android.customization.picker.quickaffordance.domain.interactor.KeyguardQuickAffordancePickerInteractor;
17import com.android.customization.picker.quickaffordance.ui.section.KeyguardQuickAffordanceSectionController;
18import com.android.customization.picker.quickaffordance.ui.viewmodel.KeyguardQuickAffordancePickerViewModel;
Chihhang Chuang8d14e8a2021-06-15 14:03:18 +080019import com.android.wallpaper.model.CustomizationSectionController;
20import com.android.wallpaper.model.CustomizationSectionController.CustomizationSectionNavigationController;
Chihhang Chuang1473ab02021-06-10 10:49:38 +080021import com.android.wallpaper.model.PermissionRequester;
22import com.android.wallpaper.model.WallpaperColorsViewModel;
23import com.android.wallpaper.model.WallpaperPreviewNavigator;
24import com.android.wallpaper.model.WallpaperSectionController;
25import com.android.wallpaper.model.WorkspaceViewModel;
Alejandro Nijamkin2fe5f2d2022-12-22 15:24:22 -080026import com.android.wallpaper.module.CurrentWallpaperInfoFactory;
Chihhang Chuang8d14e8a2021-06-15 14:03:18 +080027import com.android.wallpaper.module.CustomizationSections;
Alejandro Nijamkin2fe5f2d2022-12-22 15:24:22 -080028import com.android.wallpaper.picker.customization.ui.section.ScreenPreviewSectionController;
Chihhang Chuang1473ab02021-06-10 10:49:38 +080029
30import java.util.ArrayList;
31import java.util.List;
32
Chihhang Chuang8d14e8a2021-06-15 14:03:18 +080033/** {@link CustomizationSections} for the customization picker. */
34public final class DefaultCustomizationSections implements CustomizationSections {
Chihhang Chuang1473ab02021-06-10 10:49:38 +080035
Alejandro Nijamkin0eb2cc22022-12-19 10:55:57 -080036 private final KeyguardQuickAffordancePickerInteractor mKeyguardQuickAffordancePickerInteractor;
37 private final KeyguardQuickAffordancePickerViewModel.Factory
38 mKeyguardQuickAffordancePickerViewModelFactory;
39
40 public DefaultCustomizationSections(
41 KeyguardQuickAffordancePickerInteractor keyguardQuickAffordancePickerInteractor,
42 KeyguardQuickAffordancePickerViewModel.Factory
43 keyguardQuickAffordancePickerViewModelFactory) {
44 mKeyguardQuickAffordancePickerInteractor = keyguardQuickAffordancePickerInteractor;
45 mKeyguardQuickAffordancePickerViewModelFactory =
46 keyguardQuickAffordancePickerViewModelFactory;
47 }
48
49 @Override
50 public List<CustomizationSectionController<?>> getSectionControllersForScreen(
51 Screen screen,
52 FragmentActivity activity,
53 LifecycleOwner lifecycleOwner,
54 WallpaperColorsViewModel wallpaperColorsViewModel,
55 WorkspaceViewModel workspaceViewModel,
56 PermissionRequester permissionRequester,
57 WallpaperPreviewNavigator wallpaperPreviewNavigator,
58 CustomizationSectionNavigationController sectionNavigationController,
Alejandro Nijamkin2fe5f2d2022-12-22 15:24:22 -080059 @Nullable Bundle savedInstanceState,
60 CurrentWallpaperInfoFactory wallpaperInfoFactory) {
Alejandro Nijamkin0eb2cc22022-12-19 10:55:57 -080061 List<CustomizationSectionController<?>> sectionControllers = new ArrayList<>();
62
63 // Wallpaper section.
Alejandro Nijamkin2fe5f2d2022-12-22 15:24:22 -080064 sectionControllers.add(
65 new ScreenPreviewSectionController(
66 activity,
67 lifecycleOwner,
68 screen,
69 wallpaperInfoFactory,
70 wallpaperColorsViewModel));
Alejandro Nijamkin0eb2cc22022-12-19 10:55:57 -080071
72 // Theme color section.
73 sectionControllers.add(new ColorSectionController(
74 activity, wallpaperColorsViewModel, lifecycleOwner, savedInstanceState));
75
76 switch (screen) {
77 case LOCK_SCREEN:
78 // Lock screen quick affordances section.
79 sectionControllers.add(
80 new KeyguardQuickAffordanceSectionController(
81 sectionNavigationController,
82 mKeyguardQuickAffordancePickerInteractor,
83 new ViewModelProvider(
84 activity,
85 mKeyguardQuickAffordancePickerViewModelFactory)
86 .get(KeyguardQuickAffordancePickerViewModel.class),
87 lifecycleOwner));
88 break;
89
90 case HOME_SCREEN:
91 // Dark/Light theme section.
92 sectionControllers.add(new DarkModeSectionController(activity,
93 lifecycleOwner.getLifecycle()));
94
95 // Themed app icon section.
96 sectionControllers.add(new ThemedIconSectionController(
97 ThemedIconSwitchProvider.getInstance(activity), workspaceViewModel,
98 savedInstanceState));
99
100 // App grid section.
101 sectionControllers.add(new GridSectionController(
102 GridOptionsManager.getInstance(activity), sectionNavigationController));
103 break;
104 }
105
106 return sectionControllers;
107 }
108
Chihhang Chuang1473ab02021-06-10 10:49:38 +0800109 @Override
Alejandro Nijamkinabda67b2022-11-30 14:34:56 -0800110 public List<CustomizationSectionController<?>> getAllSectionControllers(
111 FragmentActivity activity,
112 LifecycleOwner lifecycleOwner,
113 WallpaperColorsViewModel wallpaperColorsViewModel,
114 WorkspaceViewModel workspaceViewModel,
115 PermissionRequester permissionRequester,
Chihhang Chuang1473ab02021-06-10 10:49:38 +0800116 WallpaperPreviewNavigator wallpaperPreviewNavigator,
Chihhang Chuang8d14e8a2021-06-15 14:03:18 +0800117 CustomizationSectionNavigationController sectionNavigationController,
Chihhang Chuang1473ab02021-06-10 10:49:38 +0800118 @Nullable Bundle savedInstanceState) {
Chihhang Chuang8d14e8a2021-06-15 14:03:18 +0800119 List<CustomizationSectionController<?>> sectionControllers = new ArrayList<>();
Chihhang Chuang1473ab02021-06-10 10:49:38 +0800120
121 // Wallpaper section.
122 sectionControllers.add(new WallpaperSectionController(
123 activity, lifecycleOwner, permissionRequester, wallpaperColorsViewModel,
Chihhang Chuang8d14e8a2021-06-15 14:03:18 +0800124 workspaceViewModel, sectionNavigationController, wallpaperPreviewNavigator,
Chihhang Chuang1473ab02021-06-10 10:49:38 +0800125 savedInstanceState));
126
Kunhung Li7b10d5b2022-07-06 16:19:47 +0800127 // Theme color section.
128 sectionControllers.add(new ColorSectionController(
129 activity, wallpaperColorsViewModel, lifecycleOwner, savedInstanceState));
130
Chihhang Chuang1473ab02021-06-10 10:49:38 +0800131 // Dark/Light theme section.
Chihhang Chuang8d14e8a2021-06-15 14:03:18 +0800132 sectionControllers.add(new DarkModeSectionController(activity,
133 lifecycleOwner.getLifecycle()));
Chihhang Chuang1473ab02021-06-10 10:49:38 +0800134
135 // Themed app icon section.
136 sectionControllers.add(new ThemedIconSectionController(
Ching-Sung Li3f62f8a2021-06-30 15:37:48 +0800137 ThemedIconSwitchProvider.getInstance(activity), workspaceViewModel,
138 savedInstanceState));
Chihhang Chuang1473ab02021-06-10 10:49:38 +0800139
140 // App grid section.
141 sectionControllers.add(new GridSectionController(
Chihhang Chuang8d14e8a2021-06-15 14:03:18 +0800142 GridOptionsManager.getInstance(activity), sectionNavigationController));
Chihhang Chuang1473ab02021-06-10 10:49:38 +0800143
144 return sectionControllers;
145 }
146}