Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ebdfe226 authored by Tony Huang's avatar Tony Huang
Browse files

Implement AOSP landing page by config

For AOSP landing page design, the style of toolbar follow
Material design, add config to customize toolbar.
Note:https://material.io/design/components/app-bars-top.html

Bug: 124823605
Test: manual
Test: atest DocumentsUITests
Change-Id: I08345132d47b1409ee601aa466f270d5f9ee0f19
parent a2141c1d
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -46,6 +46,7 @@
            <item type="bool" name="config_default_show_device_root"/>
            <item type="bool" name="feature_default_root_in_browse"/>
            <item type="bool" name="is_launcher_enabled"/>
            <item type="bool" name="show_search_bar"/>
            <!-- END BOOLEAN CONFIG -->

            <!-- START STRING CONFIG -->
+2 −1
Original line number Diff line number Diff line
@@ -301,7 +301,8 @@ public abstract class BaseActivity
        getMenuInflater().inflate(R.menu.activity, menu);
        mNavigator.update();
        boolean fullBarSearch = getResources().getBoolean(R.bool.full_bar_search_view);
        mSearchManager.install(menu, fullBarSearch);
        boolean showSearchBar = getResources().getBoolean(R.bool.show_search_bar);
        mSearchManager.install(menu, fullBarSearch, showSearchBar);

        final ActionMenuView subMenuView = findViewById(R.id.sub_menu);
        // If size is 0, it means the menu has not inflated and it should only do once.
+7 −5
Original line number Diff line number Diff line
@@ -18,9 +18,6 @@ package com.android.documentsui;

import static com.android.documentsui.base.SharedMinimal.VERBOSE;

import androidx.annotation.Nullable;
import androidx.appcompat.widget.Toolbar;

import android.app.Activity;
import android.content.res.Resources;
import android.graphics.Outline;
@@ -29,6 +26,9 @@ import android.util.Log;
import android.view.View;
import android.view.ViewOutlineProvider;

import androidx.annotation.Nullable;
import androidx.appcompat.widget.Toolbar;

import com.android.documentsui.R;
import com.android.documentsui.base.RootInfo;
import com.android.documentsui.base.State;
@@ -55,6 +55,7 @@ public class NavigationViewManager {
    private final CollapsingToolbarLayout mCollapsingBarLayout;
    private final Drawable mDefaultActionBarBackground;
    private final ViewOutlineProvider mSearchBarOutlineProvider;
    private final boolean mShowSearchBar;

    public NavigationViewManager(
            Activity activity,
@@ -80,6 +81,7 @@ public class NavigationViewManager {
        mSearchBarView = activity.findViewById(R.id.searchbar_title);
        mCollapsingBarLayout = activity.findViewById(R.id.collapsing_toolbar);
        mDefaultActionBarBackground = mToolbar.getBackground();
        mShowSearchBar = activity.getResources().getBoolean(R.bool.show_search_bar);

        final Resources resources = mToolbar.getResources();
        final int radius = resources.getDimensionPixelSize(R.dimen.search_bar_radius);
@@ -133,7 +135,7 @@ public class NavigationViewManager {
        mToolbar.setNavigationIcon(getActionBarIcon());
        mToolbar.setNavigationContentDescription(R.string.drawer_open);

        if (mState.stack.isRecents()) {
        if (shouldShowSearchBar()) {
            mBreadcrumb.show(false);
            mToolbar.setTitle(null);
            mSearchBarView.setVisibility(View.VISIBLE);
@@ -186,7 +188,7 @@ public class NavigationViewManager {
    }

    private boolean shouldShowSearchBar() {
        return mState.stack.isRecents() && !mEnv.isSearchExpanded();
        return mState.stack.isRecents() && !mEnv.isSearchExpanded() && mShowSearchBar;
    }

    // Hamburger if drawer is present, else sad nullness.
+11 −2
Original line number Diff line number Diff line
@@ -84,6 +84,7 @@ public class SearchViewManager implements
    private boolean mIgnoreNextClose;
    private boolean mFullBar;
    private boolean mIsHistorySearch;
    private boolean mShowSearchBar;

    private Menu mMenu;
    private MenuItem mMenuItem;
@@ -206,7 +207,14 @@ public class SearchViewManager implements
        mSearchView.clearFocus();
    }

    public void install(Menu menu, boolean isFullBarSearch) {
    /**
     * Initailize search view by option menu.
     *
     * @param menu the menu include search view
     * @param isFullBarSearch whether hide other menu when search view expand
     * @param isShowSearchBar whether replace collapsed search view by search hint text
     */
    public void install(Menu menu, boolean isFullBarSearch, boolean isShowSearchBar) {
        mMenu = menu;
        mMenuItem = mMenu.findItem(R.id.option_menu_search);
        mSearchView = (SearchView) mMenuItem.getActionView();
@@ -224,6 +232,7 @@ public class SearchViewManager implements
        }

        mFullBar = isFullBarSearch;
        mShowSearchBar = isShowSearchBar;
        mSearchView.setMaxWidth(Integer.MAX_VALUE);
        mMenuItem.setOnActionExpandListener(this);

@@ -300,7 +309,7 @@ public class SearchViewManager implements
        }

        // Recent root show open search bar, do not show duplicate search icon.
        mMenuItem.setVisible(supportsSearch && !stack.isRecents());
        mMenuItem.setVisible(supportsSearch && (!stack.isRecents() || !mShowSearchBar));

        mChipViewManager.setChipsRowVisible(supportsSearch && root.supportsMimeTypesSearch());
    }
+7 −1
Original line number Diff line number Diff line
@@ -60,7 +60,13 @@ public class FilesActivityDefaultsUiTest extends ActivityTest<FilesActivity> {
                bots.main.assertWindowTitle("Downloads");
            }
        } else {
            boolean showSearchBar =
                    context.getResources().getBoolean(R.bool.show_search_bar);
            if (showSearchBar) {
                bots.main.assertSearchBarShow();
            } else {
                bots.main.assertWindowTitle("Recent");
            }
        }
    }

Loading