mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-02-28 15:56:49 +00:00
Have a recycler view to show search results.
-Have a recycler view layout for search widgets list. -Make WidgetsFullSheet implement interface- SearchModeListener to get notified when user is using search and also when search results are ready. -Have a WidgetsListSearchHeaderViewHolderBinder for search result headers which shows subtext in header as concatenated string of widget/shortcut labels. -Modify WidgetsListAdapter and WidgetsDiffReporter to work well with search recycler view. Test: Tested prototype locally. Also added robolectric test. Bug: b/157286785 Change-Id: Ie29d9f295fddb6d727b5fc26a360f514f2f4a763
This commit is contained in:
@@ -25,6 +25,7 @@ import com.android.launcher3.model.data.PackageItemInfo;
|
||||
import com.android.launcher3.widget.model.WidgetsListBaseEntry;
|
||||
import com.android.launcher3.widget.model.WidgetsListContentEntry;
|
||||
import com.android.launcher3.widget.model.WidgetsListHeaderEntry;
|
||||
import com.android.launcher3.widget.model.WidgetsListSearchHeaderEntry;
|
||||
import com.android.launcher3.widget.picker.WidgetsListAdapter.WidgetListBaseRowEntryComparator;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -113,7 +114,7 @@ public class WidgetsDiffReporter {
|
||||
// or did the header view changed due to user interactions?
|
||||
// or did the widget size and desc, span, etc change?
|
||||
if (!isSamePackageItemInfo(orgRowEntry.mPkgItem, newRowEntry.mPkgItem)
|
||||
|| hasHeaderUpdated(newRowEntry)
|
||||
|| hasHeaderUpdated(orgRowEntry, newRowEntry)
|
||||
|| hasWidgetsListChanged(orgRowEntry, newRowEntry)) {
|
||||
index = currentEntries.indexOf(orgRowEntry);
|
||||
currentEntries.set(index, newRowEntry);
|
||||
@@ -174,12 +175,16 @@ public class WidgetsDiffReporter {
|
||||
* Returns {@code true} if {@code newRow} is {@link WidgetsListHeaderEntry} and its content has
|
||||
* been changed due to user interactions.
|
||||
*/
|
||||
private boolean hasHeaderUpdated(WidgetsListBaseEntry newRow) {
|
||||
if (!(newRow instanceof WidgetsListHeaderEntry)) {
|
||||
return false;
|
||||
private boolean hasHeaderUpdated(WidgetsListBaseEntry curRow, WidgetsListBaseEntry newRow) {
|
||||
if (newRow instanceof WidgetsListHeaderEntry && curRow instanceof WidgetsListHeaderEntry) {
|
||||
return ((WidgetsListHeaderEntry) newRow).hasEntryUpdated() || !curRow.equals(newRow);
|
||||
}
|
||||
WidgetsListHeaderEntry newRowEntry = (WidgetsListHeaderEntry) newRow;
|
||||
return newRowEntry.hasEntryUpdated();
|
||||
if (newRow instanceof WidgetsListSearchHeaderEntry
|
||||
&& curRow instanceof WidgetsListSearchHeaderEntry) {
|
||||
return ((WidgetsListSearchHeaderEntry) newRow).hasEntryUpdated()
|
||||
|| !curRow.equals(newRow);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean isSamePackageItemInfo(PackageItemInfo curInfo, PackageItemInfo newInfo) {
|
||||
|
||||
Reference in New Issue
Block a user