diff --git a/res/layout/widgets_full_sheet_large_screen.xml b/res/layout/widgets_full_sheet_large_screen.xml index b99ac5ca6d..808d3eb9b6 100644 --- a/res/layout/widgets_full_sheet_large_screen.xml +++ b/res/layout/widgets_full_sheet_large_screen.xml @@ -20,68 +20,89 @@ android:orientation="vertical" android:theme="?attr/widgetsTheme"> - - + - + - - + + + android:layout_gravity="start" + android:layout_weight="0.33"> + - - + + - - + + + - + android:layout_weight="0.67" + android:paddingEnd="16dp" + android:paddingTop="24dp" + android:gravity="end" + android:layout_gravity="end" + android:paddingStart="8dp" + android:orientation="horizontal"> + + - - - - - - - - + + + + diff --git a/res/layout/widgets_full_sheet_paged_view_large_screen.xml b/res/layout/widgets_full_sheet_paged_view_large_screen.xml index edee35251e..f729981d3d 100644 --- a/res/layout/widgets_full_sheet_paged_view_large_screen.xml +++ b/res/layout/widgets_full_sheet_paged_view_large_screen.xml @@ -18,13 +18,11 @@ + android:layout_width="match_parent" + android:layout_height="match_parent" + android:gravity="start" + android:layout_gravity="start" + android:layout_alignParentStart="true"> + android:layout_width="match_parent" + android:layout_height="match_parent" + android:gravity="start" + android:layout_gravity="start" + android:layout_alignParentStart="true"> - + \ No newline at end of file diff --git a/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java b/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java index 0b2f5a547b..d3be00ce3a 100644 --- a/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java +++ b/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java @@ -204,6 +204,7 @@ public class WidgetsFullSheet extends BaseWidgetSheet && mDeviceProfile.isLandscape && LARGE_SCREEN_WIDGET_PICKER.get(); mHasWorkProfile = context.getSystemService(LauncherApps.class).getProfiles().size() > 1; + mOrientation = Launcher.getLauncher(context).getOrientation(); mAdapters.put(AdapterHolder.PRIMARY, new AdapterHolder(AdapterHolder.PRIMARY)); mAdapters.put(AdapterHolder.WORK, new AdapterHolder(AdapterHolder.WORK)); mAdapters.put(AdapterHolder.SEARCH, new AdapterHolder(AdapterHolder.SEARCH)); @@ -232,13 +233,22 @@ public class WidgetsFullSheet extends BaseWidgetSheet mContent.setClipToOutline(true); LayoutInflater layoutInflater = LayoutInflater.from(getContext()); - int contentLayoutRes = mHasWorkProfile ? R.layout.widgets_full_sheet_paged_view - : R.layout.widgets_full_sheet_recyclerview; + if (mIsTwoPane) { - contentLayoutRes = mHasWorkProfile ? R.layout.widgets_full_sheet_paged_view_large_screen - : R.layout.widgets_full_sheet_recyclerview_large_screen; + layoutInflater.inflate( + mHasWorkProfile + ? R.layout.widgets_full_sheet_paged_view_large_screen + : R.layout.widgets_full_sheet_recyclerview_large_screen, + findViewById(R.id.recycler_view_container), + true); + } else { + layoutInflater.inflate( + mHasWorkProfile + ? R.layout.widgets_full_sheet_paged_view + : R.layout.widgets_full_sheet_recyclerview, + mContent, + true); } - layoutInflater.inflate(contentLayoutRes, mContent, true); mFastScroller = findViewById(R.id.fast_scroller); if (mIsTwoPane) { @@ -349,7 +359,8 @@ public class WidgetsFullSheet extends BaseWidgetSheet // if the current active page changes to personal or work we set suggestions // to be the selected widget - if (mIsTwoPane && (currentActivePage == PERSONAL_TAB || currentActivePage == WORK_TAB)) { + if (mIsTwoPane && mSuggestedWidgetsHeader != null + && (currentActivePage == PERSONAL_TAB || currentActivePage == WORK_TAB)) { mSuggestedWidgetsHeader.callOnClick(); } @@ -433,7 +444,9 @@ public class WidgetsFullSheet extends BaseWidgetSheet super.onAttachedToWindow(); mActivityContext.getAppWidgetHolder().addProviderChangeListener(this); notifyWidgetProvidersChanged(); - onRecommendedWidgetsBound(); + if (!mIsTwoPane) { + onRecommendedWidgetsBound(); + } } @Override @@ -696,6 +709,9 @@ public class WidgetsFullSheet extends BaseWidgetSheet recommendedWidgetsInTable, maxTableHeight); } else { mRecommendedWidgetsTable.setVisibility(GONE); + if (mSuggestedWidgetsContainer != null) { + mSuggestedWidgetsContainer.setVisibility(GONE); + } } } diff --git a/tests/src/com/android/launcher3/ui/widget/AddWidgetTest.java b/tests/src/com/android/launcher3/ui/widget/AddWidgetTest.java index 0fccf7960b..78a006e11e 100644 --- a/tests/src/com/android/launcher3/ui/widget/AddWidgetTest.java +++ b/tests/src/com/android/launcher3/ui/widget/AddWidgetTest.java @@ -60,11 +60,11 @@ public class AddWidgetTest extends AbstractLauncherUiTest { final LauncherAppWidgetProviderInfo widgetInfo = TestViewHelpers.findWidgetProvider(this, false /* hasConfigureScreen */); - WidgetResizeFrame resizeFrame = mLauncher. - getWorkspace(). - openAllWidgets(). - getWidget(widgetInfo.getLabel(mTargetContext.getPackageManager())). - dragWidgetToWorkspace(); + WidgetResizeFrame resizeFrame = mLauncher + .getWorkspace() + .openAllWidgets() + .getWidget(widgetInfo.getLabel(mTargetContext.getPackageManager())) + .dragWidgetToWorkspace(); assertTrue(mActivityMonitor.itemExists( (info, view) -> info instanceof LauncherAppWidgetInfo && diff --git a/tests/tapl/com/android/launcher3/tapl/Widgets.java b/tests/tapl/com/android/launcher3/tapl/Widgets.java index 96e2e3fbec..c1c26ec901 100644 --- a/tests/tapl/com/android/launcher3/tapl/Widgets.java +++ b/tests/tapl/com/android/launcher3/tapl/Widgets.java @@ -77,8 +77,8 @@ public final class Widgets extends LauncherInstrumentation.VisibleContainer { mLauncher.scroll( widgetsContainer, Direction.UP, - new Rect(0, 0, mLauncher.getRightGestureMarginInContainer(widgetsContainer) + 1, - 0), + new Rect(0, 0, 0, + mLauncher.getBottomGestureMarginInContainer(widgetsContainer) + 1), FLING_STEPS, false); try (LauncherInstrumentation.Closable c1 = mLauncher.addContextLayer("flung back")) { verifyActiveContainer(); @@ -168,6 +168,8 @@ public final class Widgets extends LauncherInstrumentation.VisibleContainer { private UiObject2 findTestAppWidgetsTableContainer() { final BySelector headerSelector = By.res(mLauncher.getLauncherPackageName(), "widgets_list_header"); + final BySelector widgetPickerSelector = By.res(mLauncher.getLauncherPackageName(), + "container"); final BySelector targetAppSelector = By.clazz("android.widget.TextView").text( mLauncher.getContext().getPackageName()); final BySelector widgetsContainerSelector = By.res(mLauncher.getLauncherPackageName(), @@ -176,17 +178,23 @@ public final class Widgets extends LauncherInstrumentation.VisibleContainer { boolean hasHeaderExpanded = false; int scrollDistance = 0; for (int i = 0; i < SCROLL_ATTEMPTS; i++) { - UiObject2 fullWidgetsPicker = verifyActiveContainer(); - - UiObject2 header = mLauncher.waitForObjectInContainer(fullWidgetsPicker, + UiObject2 widgetPicker = mLauncher.waitForLauncherObject(widgetPickerSelector); + UiObject2 widgetListView = verifyActiveContainer(); + UiObject2 header = mLauncher.waitForObjectInContainer(widgetListView, headerSelector); + // If we are in a tablet in landscape mode then we will have a two pane view and we use + // the right pane to display the widgets table. + UiObject2 rightPane = mLauncher.findObjectInContainer( + widgetPicker, + widgetsContainerSelector); + // If a header is barely visible in the bottom edge of the screen, its height could be // too small for a scroll gesture. Since all header should have roughly the same height, // let's pick the max height we have seen so far. scrollDistance = Math.max(scrollDistance, header.getVisibleBounds().height()); // Look for a header that has the test app name. - UiObject2 headerTitle = mLauncher.findObjectInContainer(fullWidgetsPicker, + UiObject2 headerTitle = mLauncher.findObjectInContainer(widgetListView, targetAppSelector); if (headerTitle != null) { // If we find the header and it has not been expanded, let's click it to see the @@ -202,7 +210,8 @@ public final class Widgets extends LauncherInstrumentation.VisibleContainer { } // Look for a widgets list. - UiObject2 widgetsContainer = mLauncher.findObjectInContainer(fullWidgetsPicker, + UiObject2 widgetsContainer = mLauncher.findObjectInContainer( + rightPane != null ? rightPane : widgetListView, widgetsContainerSelector); if (widgetsContainer != null) { log("Widgets container found."); @@ -210,7 +219,9 @@ public final class Widgets extends LauncherInstrumentation.VisibleContainer { } } log("Finding test widget package - scroll with distance: " + scrollDistance); - mLauncher.scrollDownByDistance(fullWidgetsPicker, scrollDistance); + mLauncher.scrollDownByDistance(hasHeaderExpanded && rightPane != null + ? rightPane + : widgetListView, scrollDistance); } return null;