diff options
author | Steven Ng <stevenckng@google.com> | 2021-02-08 17:18:25 +0000 |
---|---|---|
committer | Steven Ng <stevenckng@google.com> | 2021-02-10 21:23:40 +0000 |
commit | 2f5648a9117c8e19a5785ffb2eff26373fb3c24c (patch) | |
tree | 12cf29ddc5327ab2fb6c4fdb5a8c7283fe2e47ba /src_shortcuts_overrides | |
parent | 823c5f8bf66d0d66f6e11fae53c720a0977b8005 (diff) | |
download | Launcher3-2f5648a9117c8e19a5785ffb2eff26373fb3c24c.tar.gz |
Refactoring before adding a new view type in the WidgetsListAdapter
Changes made:
1. Model: added an abstract class for storing common information for
entries shown in the full page widgets picker.
2. Introduced a ViewHolderBinder interface to split the logic of binding
data to ViewHolder into separate classes.
3. Move the view holder binding of WidgetsListRow from WidgetListAdapter
to its new class.
4. Move some widgets picker classes into a new picker package.
Test: Auto: Run WidgetsListAdapterTest, WidgetsListRowEntryTest and
WidgetsListRowViewHolderBinderTest.
Manual: open the all apps widgets tray and navigate the list.
Bug: 179797520
Change-Id: Iab29557842bb79156cad84d00a4c5d0db0c5aa06
Diffstat (limited to 'src_shortcuts_overrides')
-rw-r--r-- | src_shortcuts_overrides/com/android/launcher3/model/LoaderResults.java | 6 | ||||
-rw-r--r-- | src_shortcuts_overrides/com/android/launcher3/model/WidgetsModel.java | 31 |
2 files changed, 18 insertions, 19 deletions
diff --git a/src_shortcuts_overrides/com/android/launcher3/model/LoaderResults.java b/src_shortcuts_overrides/com/android/launcher3/model/LoaderResults.java index 269af7bcc5..73b1601c34 100644 --- a/src_shortcuts_overrides/com/android/launcher3/model/LoaderResults.java +++ b/src_shortcuts_overrides/com/android/launcher3/model/LoaderResults.java @@ -21,10 +21,10 @@ import static com.android.launcher3.util.Executors.MAIN_EXECUTOR; import com.android.launcher3.LauncherAppState; import com.android.launcher3.model.BgDataModel.Callbacks; import com.android.launcher3.util.ComponentKey; -import com.android.launcher3.widget.WidgetListRowEntry; +import com.android.launcher3.widget.model.WidgetsListBaseEntry; -import java.util.ArrayList; import java.util.HashMap; +import java.util.List; /** * Helper class to handle results of {@link com.android.launcher3.model.LoaderTask}. @@ -47,7 +47,7 @@ public class LoaderResults extends BaseLoaderResults { @Override public void bindWidgets() { - final ArrayList<WidgetListRowEntry> widgets = + final List<WidgetsListBaseEntry> widgets = mBgDataModel.widgetsModel.getWidgetsList(mApp.getContext()); executeCallbacksTask(c -> c.bindAllWidgets(widgets), mUiExecutor); } diff --git a/src_shortcuts_overrides/com/android/launcher3/model/WidgetsModel.java b/src_shortcuts_overrides/com/android/launcher3/model/WidgetsModel.java index b4e45f835a..f27922b757 100644 --- a/src_shortcuts_overrides/com/android/launcher3/model/WidgetsModel.java +++ b/src_shortcuts_overrides/com/android/launcher3/model/WidgetsModel.java @@ -28,12 +28,12 @@ import com.android.launcher3.model.data.PackageItemInfo; import com.android.launcher3.pm.ShortcutConfigActivityInfo; import com.android.launcher3.util.PackageUserKey; import com.android.launcher3.util.Preconditions; -import com.android.launcher3.widget.WidgetItemComparator; -import com.android.launcher3.widget.WidgetListRowEntry; import com.android.launcher3.widget.WidgetManagerHelper; +import com.android.launcher3.widget.model.WidgetsListBaseEntry; +import com.android.launcher3.widget.model.WidgetsListContentEntry; +import com.android.launcher3.widget.picker.WidgetsDiffReporter; import java.util.ArrayList; -import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -60,24 +60,23 @@ public class WidgetsModel { private final Map<PackageItemInfo, List<WidgetItem>> mWidgetsList = new HashMap<>(); /** - * Returns a list of {@link WidgetListRowEntry}. All {@link WidgetItem} in a single row - * are sorted (based on label and user), but the overall list of {@link WidgetListRowEntry}s - * is not sorted. This list is sorted at the UI when using - * {@link com.android.launcher3.widget.WidgetsDiffReporter} + * Returns a list of {@link WidgetsListBaseEntry}. All {@link WidgetItem} in a single row + * are sorted (based on label and user), but the overall list of + * {@link WidgetsListBaseEntry}s is not sorted. This list is sorted at the UI when using + * {@link WidgetsDiffReporter} * - * @see com.android.launcher3.widget.WidgetsListAdapter#setWidgets(ArrayList) + * @see com.android.launcher3.widget.picker.WidgetsListAdapter#setWidgets(List) */ - public synchronized ArrayList<WidgetListRowEntry> getWidgetsList(Context context) { - ArrayList<WidgetListRowEntry> result = new ArrayList<>(); + public synchronized ArrayList<WidgetsListBaseEntry> getWidgetsList(Context context) { + ArrayList<WidgetsListBaseEntry> result = new ArrayList<>(); AlphabeticIndexCompat indexer = new AlphabeticIndexCompat(context); - WidgetItemComparator widgetComparator = new WidgetItemComparator(); for (Map.Entry<PackageItemInfo, List<WidgetItem>> entry : mWidgetsList.entrySet()) { - WidgetListRowEntry row = new WidgetListRowEntry( - entry.getKey(), new ArrayList<>(entry.getValue())); - row.titleSectionName = (row.pkgItem.title == null) ? "" : - indexer.computeSectionName(row.pkgItem.title); - Collections.sort(row.widgets, widgetComparator); + PackageItemInfo pkgItem = entry.getKey(); + String sectionName = (pkgItem.title == null) ? "" : + indexer.computeSectionName(pkgItem.title); + WidgetsListContentEntry row = + new WidgetsListContentEntry(pkgItem, sectionName, entry.getValue()); result.add(row); } return result; |