Make all widgets collapsed in the full widget picker by default

Changes:
1. Add a WidgetListHeader view for showing icon, app name and a subtitle.
2. Only WidgetListHeaders are always visible to users in the full widget
   picker.
3. Only one widgets list from an app is visible in the full widget picker
   at any one time.

Test: Auto: run add robolectric tests under widget/picker
      Manual: Open full widgets picker. Then, expand and collapse apps.
      Video: https://drive.google.com/file/d/1gzfeEm5IOAu0qHsO77OTS2eMfU7CHJiL/view?usp=sharing

Bug: 179797520
Change-Id: Idac58be23dfeafcb79b3c61b4972d3addb462de1
This commit is contained in:
Steven Ng
2021-02-10 17:10:15 +00:00
parent fa58bfa0b7
commit e92bc55d12
25 changed files with 1254 additions and 124 deletions

View File

@@ -16,9 +16,15 @@
package com.android.launcher3.widget.model;
import static java.lang.annotation.RetentionPolicy.SOURCE;
import androidx.annotation.IntDef;
import com.android.launcher3.model.data.ItemInfo;
import com.android.launcher3.model.data.PackageItemInfo;
import java.lang.annotation.Retention;
/** Holder class to store the package information of an entry shown in the widgets list. */
public abstract class WidgetsListBaseEntry {
public final PackageItemInfo mPkgItem;
@@ -33,4 +39,22 @@ public abstract class WidgetsListBaseEntry {
mPkgItem = pkgItem;
mTitleSectionName = titleSectionName;
}
/**
* Returns the ranking of this entry in the
* {@link com.android.launcher3.widget.picker.WidgetsListAdapter}.
*
* <p>Entries with smaller value should be shown first. See
* {@link com.android.launcher3.widget.picker.WidgetsDiffReporter} for more details.
*/
@Rank
public abstract int getRank();
@Retention(SOURCE)
@IntDef({RANK_WIDGETS_LIST_HEADER, RANK_WIDGETS_LIST_CONTENT})
public @interface Rank {
}
public static final int RANK_WIDGETS_LIST_HEADER = 1;
public static final int RANK_WIDGETS_LIST_CONTENT = 2;
}