mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-02-27 15:26:58 +00:00
Fix two pane widget picker bugs
Here we: -Move no widgets text outside of the right pane so that we can center it -setInset and change the clipping of children in the views so that we can fix the padding at the bottom when we have 3 button nav -create selectedHeader where we keep track of the currently selected header in order to refresh the widgets for the selected header on rotation -when widgets are bound we check if there are no recommended widgets, and if there aren't we select the first visible header Fix: 324002996 Fix: 324001940 Fix: 323417968 Fix: 323460545 Fix: 323409306 Test: WidgetPickerImageTest Flag: NONE Change-Id: Ibd85cb086bb6c2aede6cf79da0c688a1fdaec4e5
This commit is contained in:
@@ -45,7 +45,7 @@
|
||||
android:visibility="gone"
|
||||
android:textSize="18sp"
|
||||
android:layout_below="@id/search_and_recommendations_container"
|
||||
tools:text="No widgets available" />
|
||||
tools:text="@string/no_widgets_available" />
|
||||
|
||||
<!-- Fast scroller popup -->
|
||||
<TextView
|
||||
|
||||
@@ -47,6 +47,16 @@
|
||||
android:textColor="?attr/widgetPickerTitleColor"
|
||||
android:textSize="24sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/no_widgets_text"
|
||||
style="@style/PrimaryHeadline"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center"
|
||||
android:textSize="18sp"
|
||||
android:visibility="gone"
|
||||
tools:text="@string/no_widgets_available" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/linear_layout_container"
|
||||
android:layout_width="match_parent"
|
||||
@@ -57,6 +67,9 @@
|
||||
android:id="@+id/recycler_view_container"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:clipChildren="false"
|
||||
android:clipToPadding="false"
|
||||
android:paddingBottom="24dp"
|
||||
android:layout_gravity="start"
|
||||
android:layout_weight="0.33">
|
||||
<TextView
|
||||
@@ -90,15 +103,6 @@
|
||||
android:gravity="end"
|
||||
android:layout_gravity="end"
|
||||
android:orientation="horizontal">
|
||||
<TextView
|
||||
android:id="@+id/no_widgets_text"
|
||||
style="@style/PrimaryHeadline"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center"
|
||||
android:textSize="18sp"
|
||||
android:visibility="gone"
|
||||
tools:text="No widgets available" />
|
||||
<ScrollView
|
||||
android:id="@+id/right_pane_scroll_view"
|
||||
android:layout_width="match_parent"
|
||||
|
||||
@@ -22,6 +22,8 @@
|
||||
android:gravity="start"
|
||||
android:paddingHorizontal="@dimen/widget_list_horizontal_margin_two_pane"
|
||||
android:layout_gravity="start"
|
||||
android:clipChildren="false"
|
||||
android:clipToPadding="false"
|
||||
android:layout_alignParentStart="true">
|
||||
<com.android.launcher3.widget.picker.WidgetPagedView
|
||||
android:id="@+id/widgets_view_pager"
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="start"
|
||||
android:layout_gravity="start"
|
||||
android:clipChildren="false"
|
||||
android:layout_alignParentStart="true">
|
||||
|
||||
<com.android.launcher3.widget.picker.WidgetsRecyclerView
|
||||
|
||||
@@ -173,6 +173,7 @@ public class WidgetsFullSheet extends BaseWidgetSheet
|
||||
protected WidgetsSearchBar mSearchBar;
|
||||
protected TextView mHeaderTitle;
|
||||
protected RecyclerViewFastScroller mFastScroller;
|
||||
protected int mBottomPadding;
|
||||
|
||||
public WidgetsFullSheet(Context context, AttributeSet attrs, int defStyleAttr) {
|
||||
super(context, attrs, defStyleAttr);
|
||||
@@ -370,15 +371,16 @@ public class WidgetsFullSheet extends BaseWidgetSheet
|
||||
@Override
|
||||
public void setInsets(Rect insets) {
|
||||
super.setInsets(insets);
|
||||
int bottomPadding = Math.max(insets.bottom, mNavBarScrimHeight);
|
||||
setBottomPadding(mAdapters.get(AdapterHolder.PRIMARY).mWidgetsRecyclerView, bottomPadding);
|
||||
setBottomPadding(mAdapters.get(AdapterHolder.SEARCH).mWidgetsRecyclerView, bottomPadding);
|
||||
mBottomPadding = Math.max(insets.bottom, mNavBarScrimHeight);
|
||||
setBottomPadding(mAdapters.get(AdapterHolder.PRIMARY).mWidgetsRecyclerView, mBottomPadding);
|
||||
setBottomPadding(mAdapters.get(AdapterHolder.SEARCH).mWidgetsRecyclerView, mBottomPadding);
|
||||
if (mHasWorkProfile) {
|
||||
setBottomPadding(mAdapters.get(AdapterHolder.WORK).mWidgetsRecyclerView, bottomPadding);
|
||||
setBottomPadding(mAdapters.get(AdapterHolder.WORK)
|
||||
.mWidgetsRecyclerView, mBottomPadding);
|
||||
}
|
||||
((MarginLayoutParams) mNoWidgetsView.getLayoutParams()).bottomMargin = bottomPadding;
|
||||
((MarginLayoutParams) mNoWidgetsView.getLayoutParams()).bottomMargin = mBottomPadding;
|
||||
|
||||
if (bottomPadding > 0) {
|
||||
if (mBottomPadding > 0) {
|
||||
setupNavBarColor();
|
||||
} else {
|
||||
clearNavBarColor();
|
||||
@@ -387,6 +389,15 @@ public class WidgetsFullSheet extends BaseWidgetSheet
|
||||
requestLayout();
|
||||
}
|
||||
|
||||
@Override
|
||||
public WindowInsets onApplyWindowInsets(WindowInsets insets) {
|
||||
WindowInsets w = super.onApplyWindowInsets(insets);
|
||||
if (mInsets.bottom != mNavBarScrimHeight) {
|
||||
setInsets(mInsets);
|
||||
}
|
||||
return w;
|
||||
}
|
||||
|
||||
private void setBottomPadding(RecyclerView recyclerView, int bottomPadding) {
|
||||
recyclerView.setPadding(
|
||||
recyclerView.getPaddingLeft(),
|
||||
@@ -791,8 +802,9 @@ public class WidgetsFullSheet extends BaseWidgetSheet
|
||||
if (mDeviceProfile.isLandscape != dp.isLandscape && dp.isTablet && !dp.isTwoPanels) {
|
||||
handleClose(false);
|
||||
show(BaseActivity.fromContext(getContext()), false);
|
||||
} else {
|
||||
} else if (!isTwoPane()) {
|
||||
reset();
|
||||
resetExpandedHeaders();
|
||||
}
|
||||
|
||||
// When folding/unfolding the foldables, we need to switch between the regular widget picker
|
||||
|
||||
@@ -20,6 +20,7 @@ import static com.android.launcher3.Flags.enableUnfoldedTwoPanePicker;
|
||||
import android.content.Context;
|
||||
import android.content.res.Configuration;
|
||||
import android.graphics.Outline;
|
||||
import android.graphics.Rect;
|
||||
import android.os.Process;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.LayoutInflater;
|
||||
@@ -58,11 +59,13 @@ public class WidgetsTwoPaneSheet extends WidgetsFullSheet {
|
||||
|
||||
private FrameLayout mSuggestedWidgetsContainer;
|
||||
private WidgetsListHeader mSuggestedWidgetsHeader;
|
||||
private PackageUserKey mSuggestedWidgetsPackageUserKey;
|
||||
private LinearLayout mRightPane;
|
||||
|
||||
private ScrollView mRightPaneScrollView;
|
||||
private WidgetsListTableViewHolderBinder mWidgetsListTableViewHolderBinder;
|
||||
private int mActivePage = -1;
|
||||
private PackageUserKey mSelectedHeader;
|
||||
|
||||
private final ViewOutlineProvider mViewOutlineProviderRightPane = new ViewOutlineProvider() {
|
||||
@Override
|
||||
@@ -124,6 +127,7 @@ public class WidgetsTwoPaneSheet extends WidgetsFullSheet {
|
||||
mFastScroller.setVisibility(GONE);
|
||||
}
|
||||
|
||||
/** Overrides onConfigurationChanged method from WidgetsFullSheet. Needed for b/319150904 */
|
||||
@Override
|
||||
protected void onConfigurationChanged(Configuration newConfig) {}
|
||||
|
||||
@@ -147,6 +151,23 @@ public class WidgetsTwoPaneSheet extends WidgetsFullSheet {
|
||||
}
|
||||
layoutParams.weight = layoutParams.width == 0 ? 0.33F : 0;
|
||||
leftPane.setLayoutParams(layoutParams);
|
||||
requestApplyInsets();
|
||||
if (mSelectedHeader != null) {
|
||||
if (mSelectedHeader.equals(mSuggestedWidgetsPackageUserKey)) {
|
||||
mSuggestedWidgetsHeader.callOnClick();
|
||||
} else {
|
||||
getHeaderChangeListener().onHeaderChanged(mSelectedHeader);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onWidgetsBound() {
|
||||
super.onWidgetsBound();
|
||||
if (!mHasRecommendedWidgets && mSelectedHeader == null) {
|
||||
mAdapters.get(mActivePage).mWidgetsListAdapter.selectFirstHeaderEntry();
|
||||
mAdapters.get(mActivePage).mWidgetsRecyclerView.scrollToTop();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -195,6 +216,8 @@ public class WidgetsTwoPaneSheet extends WidgetsFullSheet {
|
||||
mRightPane.removeAllViews();
|
||||
mRightPane.addView(mRecommendedWidgetsTable);
|
||||
mRightPaneScrollView.setScrollY(0);
|
||||
mSuggestedWidgetsPackageUserKey = PackageUserKey.fromPackageItemInfo(packageItemInfo);
|
||||
mSelectedHeader = mSuggestedWidgetsPackageUserKey;
|
||||
});
|
||||
mSuggestedWidgetsContainer.addView(mSuggestedWidgetsHeader);
|
||||
}
|
||||
@@ -273,6 +296,7 @@ public class WidgetsTwoPaneSheet extends WidgetsFullSheet {
|
||||
return new HeaderChangeListener() {
|
||||
@Override
|
||||
public void onHeaderChanged(@NonNull PackageUserKey selectedHeader) {
|
||||
mSelectedHeader = selectedHeader;
|
||||
WidgetsListContentEntry contentEntry = mActivityContext.getPopupDataProvider()
|
||||
.getSelectedAppWidgets(selectedHeader);
|
||||
|
||||
@@ -302,6 +326,18 @@ public class WidgetsTwoPaneSheet extends WidgetsFullSheet {
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setInsets(Rect insets) {
|
||||
super.setInsets(insets);
|
||||
FrameLayout rightPaneContainer = mContent.findViewById(R.id.right_pane_container);
|
||||
rightPaneContainer.setPadding(
|
||||
rightPaneContainer.getPaddingLeft(),
|
||||
rightPaneContainer.getPaddingTop(),
|
||||
rightPaneContainer.getPaddingRight(),
|
||||
mBottomPadding);
|
||||
requestLayout();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getWidgetListHorizontalMargin() {
|
||||
return getResources().getDimensionPixelSize(
|
||||
|
||||
Reference in New Issue
Block a user