Browse Source

Implement new searchbar

Signed-off-by: Joris Bodin <joris.bodin@infomaniak.com>
Joris Bodin 5 years ago
parent
commit
25f9485e4d

+ 8 - 2
src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java

@@ -775,8 +775,12 @@ public class FileDisplayActivity extends FileActivity
 
 
         menu.findItem(R.id.action_select_all).setVisible(false);
         menu.findItem(R.id.action_select_all).setVisible(false);
         MenuItem searchMenuItem = menu.findItem(R.id.action_search);
         MenuItem searchMenuItem = menu.findItem(R.id.action_search);
-        searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.action_search));
+        searchView = (SearchView) MenuItemCompat.getActionView(searchMenuItem);
         searchMenuItem.setVisible(false);
         searchMenuItem.setVisible(false);
+        mSearchText.setOnClickListener(v -> {
+            showSearchView();
+            searchView.setIconified(false);
+        });
 
 
         ThemeUtils.themeSearchView(searchView, this);
         ThemeUtils.themeSearchView(searchView, this);
 
 
@@ -785,7 +789,7 @@ public class FileDisplayActivity extends FileActivity
         mDrawerMenuItemstoShowHideList.add(menu.findItem(R.id.action_sort));
         mDrawerMenuItemstoShowHideList.add(menu.findItem(R.id.action_sort));
         mDrawerMenuItemstoShowHideList.add(menu.findItem(R.id.action_sync_account));
         mDrawerMenuItemstoShowHideList.add(menu.findItem(R.id.action_sync_account));
         mDrawerMenuItemstoShowHideList.add(menu.findItem(R.id.action_switch_view));
         mDrawerMenuItemstoShowHideList.add(menu.findItem(R.id.action_switch_view));
-        mDrawerMenuItemstoShowHideList.add(menu.findItem(R.id.action_search));
+        mDrawerMenuItemstoShowHideList.add(searchMenuItem);
 
 
         //focus the SearchView
         //focus the SearchView
         if (!TextUtils.isEmpty(searchQuery)) {
         if (!TextUtils.isEmpty(searchQuery)) {
@@ -1145,6 +1149,8 @@ public class FileDisplayActivity extends FileActivity
             // Remove the list to the original state
             // Remove the list to the original state
             listOfFiles.performSearch("", true);
             listOfFiles.performSearch("", true);
 
 
+            hideSearchView(getCurrentDir());
+
             setDrawerIndicatorEnabled(isDrawerIndicatorAvailable());
             setDrawerIndicatorEnabled(isDrawerIndicatorAvailable());
         } else if (isDrawerOpen) {
         } else if (isDrawerOpen) {
             // close drawer first
             // close drawer first

+ 20 - 4
src/main/java/com/owncloud/android/ui/activity/ToolbarActivity.java

@@ -59,7 +59,7 @@ public abstract class ToolbarActivity extends BaseActivity {
 
 
     private MaterialCardView mHomeSearchToolbar;
     private MaterialCardView mHomeSearchToolbar;
     protected MaterialButton mMenuButton;
     protected MaterialButton mMenuButton;
-    private MaterialTextView mSearchText;
+    protected MaterialTextView mSearchText;
     protected MaterialButton mSwitchAccountButton;
     protected MaterialButton mSwitchAccountButton;
     private ImageView mPreviewImage;
     private ImageView mPreviewImage;
     private FrameLayout mPreviewImageContainer;
     private FrameLayout mPreviewImageContainer;
@@ -129,9 +129,26 @@ public abstract class ToolbarActivity extends BaseActivity {
         }
         }
     }
     }
 
 
-    @SuppressLint("PrivateResource")
+    public void showSearchView() {
+        if (isHomeSearchToolbarShow) {
+            showHomeSearchToolbar(false);
+        }
+    }
+
+    public void hideSearchView(OCFile chosenFile) {
+        if (isHomeSearchToolbarShow) {
+            showHomeSearchToolbar(isRoot(chosenFile));
+        }
+    }
+
     private void showHomeSearchToolbar(String title, boolean isRoot) {
     private void showHomeSearchToolbar(String title, boolean isRoot) {
-        if (isHomeSearchToolbarShow && isRoot) {
+        showHomeSearchToolbar(isHomeSearchToolbarShow && isRoot);
+        mSearchText.setText(getString(R.string.appbar_search_in, title));
+    }
+
+    @SuppressLint("PrivateResource")
+    private void showHomeSearchToolbar(boolean isShow) {
+        if (isShow) {
             if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
             if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                 mAppBar.setStateListAnimator(AnimatorInflater.loadStateListAnimator(mAppBar.getContext(),
                 mAppBar.setStateListAnimator(AnimatorInflater.loadStateListAnimator(mAppBar.getContext(),
                                                                                     R.animator.appbar_elevation_off));
                                                                                     R.animator.appbar_elevation_off));
@@ -140,7 +157,6 @@ public abstract class ToolbarActivity extends BaseActivity {
             }
             }
             mDefaultToolbar.setVisibility(View.GONE);
             mDefaultToolbar.setVisibility(View.GONE);
             mHomeSearchToolbar.setVisibility(View.VISIBLE);
             mHomeSearchToolbar.setVisibility(View.VISIBLE);
-            mSearchText.setText(String.format("Search in %s", title));
         } else {
         } else {
             if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
             if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                 mAppBar.setStateListAnimator(AnimatorInflater.loadStateListAnimator(mAppBar.getContext(),
                 mAppBar.setStateListAnimator(AnimatorInflater.loadStateListAnimator(mAppBar.getContext(),

+ 1 - 0
src/main/res/values/strings.xml

@@ -3,6 +3,7 @@
     <string name="about_android">%1$s Android app</string>
     <string name="about_android">%1$s Android app</string>
     <string name="about_version">version %1$s</string>
     <string name="about_version">version %1$s</string>
     <string name="about_version_with_build">version %1$s, build #%2$s</string>
     <string name="about_version_with_build">version %1$s, build #%2$s</string>
+    <string name="appbar_search_in">Search in %s</string>
     <string name="actionbar_sync">Refresh account</string>
     <string name="actionbar_sync">Refresh account</string>
     <string name="actionbar_open_with">Open with</string>
     <string name="actionbar_open_with">Open with</string>
     <string name="actionbar_mkdir">New folder</string>
     <string name="actionbar_mkdir">New folder</string>