瀏覽代碼

Merge pull request #2735 from nextcloud/revertLocalSearch

Revert local search
Andy Scherzinger 6 年之前
父節點
當前提交
8f6a2d134d

+ 36 - 19
src/main/java/com/owncloud/android/ui/activity/UploadFilesActivity.java

@@ -93,6 +93,7 @@ public class UploadFilesActivity extends FileActivity implements
     private Account mAccountOnCreation;
     private DialogFragment mCurrentDialog;
     private Menu mOptionsMenu;
+    private SearchView mSearchView;
 
     public static final String EXTRA_CHOSEN_FILES =
             UploadFilesActivity.class.getCanonicalName() + ".EXTRA_CHOSEN_FILES";
@@ -237,11 +238,11 @@ public class UploadFilesActivity extends FileActivity implements
 
         int fontColor = ThemeUtils.fontColor(this);
         final MenuItem item = menu.findItem(R.id.action_search);
-        SearchView searchView = (SearchView) MenuItemCompat.getActionView(item);
-        EditText editText = searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
+        mSearchView = (SearchView) MenuItemCompat.getActionView(item);
+        EditText editText = mSearchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
         editText.setHintTextColor(fontColor);
         editText.setTextColor(fontColor);
-        ImageView searchClose = searchView.findViewById(android.support.v7.appcompat.R.id.search_close_btn);
+        ImageView searchClose = mSearchView.findViewById(android.support.v7.appcompat.R.id.search_close_btn);
         searchClose.setColorFilter(fontColor);
 
 
@@ -314,27 +315,43 @@ public class UploadFilesActivity extends FileActivity implements
         }
         return true;
     }
+
+    private boolean isSearchOpen() {
+        if (mSearchView == null) {
+            return false;
+        } else {
+            View mSearchEditFrame = mSearchView.findViewById(android.support.v7.appcompat.R.id.search_edit_frame);
+            return (mSearchEditFrame != null && mSearchEditFrame.getVisibility() == View.VISIBLE);
+        }
+    }
     
     @Override
     public void onBackPressed() {
-        if (mDirectories.getCount() <= 1) {
-            finish();
-            return;
-        }
-        popDirname();
-        mFileListFragment.onNavigateUp();
-        mCurrentDir = mFileListFragment.getCurrentDirectory();
-
-        if (mCurrentDir.getParentFile() == null) {
-            ActionBar actionBar = getSupportActionBar();
-            if (actionBar != null) {
-                actionBar.setDisplayHomeAsUpEnabled(false);
+        if (isSearchOpen() && mSearchView != null) {
+            mSearchView.setQuery("", false);
+            mFileListFragment.onClose();
+            mSearchView.onActionViewCollapsed();
+            setDrawerIndicatorEnabled(isDrawerIndicatorAvailable());
+        } else {
+            if (mDirectories.getCount() <= 1) {
+                finish();
+                return;
+            }
+            popDirname();
+            mFileListFragment.onNavigateUp();
+            mCurrentDir = mFileListFragment.getCurrentDirectory();
+
+            if (mCurrentDir.getParentFile() == null) {
+                ActionBar actionBar = getSupportActionBar();
+                if (actionBar != null) {
+                    actionBar.setDisplayHomeAsUpEnabled(false);
+                }
             }
-        }
 
-        // invalidate checked state when navigating directories
-        if(!mLocalFolderPickerMode) {
-            setSelectAllMenuItem(mOptionsMenu.findItem(R.id.action_select_all), false);
+            // invalidate checked state when navigating directories
+            if (!mLocalFolderPickerMode) {
+                setSelectAllMenuItem(mOptionsMenu.findItem(R.id.action_select_all), false);
+            }
         }
     }
     

+ 8 - 5
src/main/java/com/owncloud/android/ui/adapter/LocalFileListAdapter.java

@@ -25,6 +25,7 @@ import android.content.res.Resources;
 import android.database.DataSetObserver;
 import android.graphics.Bitmap;
 import android.graphics.Color;
+import android.support.annotation.NonNull;
 import android.support.v7.widget.RecyclerView;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -56,7 +57,7 @@ import java.util.Locale;
 import java.util.Set;
 
 /**
- * This Adapter populates a RecycylerView with all files and directories contained in a local directory
+ * This Adapter populates a {@link RecyclerView} with all files and directories contained in a local directory
  */
 public class LocalFileListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements FilterableListAdapter {
 
@@ -99,6 +100,7 @@ public class LocalFileListAdapter extends RecyclerView.Adapter<RecyclerView.View
         // not needed
     }
 
+    @Override
     public void unregisterDataSetObserver(DataSetObserver observer) {
         // not needed
     }
@@ -160,7 +162,7 @@ public class LocalFileListAdapter extends RecyclerView.Adapter<RecyclerView.View
     }
 
     @Override
-    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
+    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
         if (holder instanceof LocalFileListFooterViewHolder) {
             ((LocalFileListFooterViewHolder) holder).footerText.setText(getFooterText());
         } else {
@@ -229,9 +231,9 @@ public class LocalFileListAdapter extends RecyclerView.Adapter<RecyclerView.View
         } else {
             thumbnailView.setImageResource(R.drawable.file);
 
-            /** Cancellation needs do be checked and done before changing the drawable in fileIcon, or
+            /* Cancellation needs do be checked and done before changing the drawable in fileIcon, or
              * {@link ThumbnailsCacheManager#cancelPotentialThumbnailWork} will NEVER cancel any task.
-             **/
+             */
             boolean allowedToCreateNewThumbnail = (ThumbnailsCacheManager.cancelPotentialThumbnailWork(file, thumbnailView));
 
 
@@ -281,8 +283,9 @@ public class LocalFileListAdapter extends RecyclerView.Adapter<RecyclerView.View
         }
     }
 
+    @NonNull
     @Override
-    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
         switch (viewType) {
             default:
             case VIEWTYPE_ITEM:

+ 16 - 4
src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.java

@@ -29,6 +29,7 @@ import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
 import android.support.annotation.DrawableRes;
+import android.support.annotation.NonNull;
 import android.support.annotation.StringRes;
 import android.support.design.widget.BottomNavigationView;
 import android.support.design.widget.FloatingActionButton;
@@ -81,7 +82,8 @@ import org.parceler.Parcel;
 import java.util.ArrayList;
 
 public class ExtendedListFragment extends Fragment
-        implements OnItemClickListener, OnEnforceableRefreshListener, SearchView.OnQueryTextListener {
+        implements OnItemClickListener, OnEnforceableRefreshListener, SearchView.OnQueryTextListener,
+        SearchView.OnCloseListener {
 
     protected static final String TAG = ExtendedListFragment.class.getSimpleName();
 
@@ -176,6 +178,7 @@ public class ExtendedListFragment extends Fragment
         final MenuItem item = menu.findItem(R.id.action_search);
         searchView = (SearchView) MenuItemCompat.getActionView(item);
         searchView.setOnQueryTextListener(this);
+        searchView.setOnCloseListener(this);
 
         final Handler handler = new Handler();
 
@@ -203,7 +206,10 @@ public class ExtendedListFragment extends Fragment
                     @Override
                     public void run() {
                         if (getActivity() != null && !(getActivity() instanceof FolderPickerActivity)) {
-                            setFabEnabled(!hasFocus);
+
+                            if (!(getActivity() instanceof UploadFilesActivity)) {
+                                setFabEnabled(!hasFocus);
+                            }
 
                             boolean searchSupported = AccountUtils.hasSearchSupport(AccountUtils.
                                     getCurrentOwnCloudAccount(MainApp.getAppContext()));
@@ -336,9 +342,15 @@ public class ExtendedListFragment extends Fragment
         }
     }
 
+    @Override
+    public boolean onClose() {
+        performSearch("", true);
+
+        return false;
+    }
 
     @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+    public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
         Log_OC.d(TAG, "onCreateView");
 
         View v = inflater.inflate(R.layout.list_fragment, null);
@@ -460,7 +472,7 @@ public class ExtendedListFragment extends Fragment
 
 
     @Override
-    public void onSaveInstanceState(Bundle savedInstanceState) {
+    public void onSaveInstanceState(@NonNull Bundle savedInstanceState) {
         super.onSaveInstanceState(savedInstanceState);
         Log_OC.d(TAG, "onSaveInstanceState()");
         savedInstanceState.putBoolean(KEY_IS_GRID_VISIBLE, isGridEnabled());

+ 2 - 1
src/main/java/com/owncloud/android/ui/fragment/LocalFileListFragment.java

@@ -23,6 +23,7 @@ package com.owncloud.android.ui.fragment;
 import android.app.Activity;
 import android.os.Bundle;
 import android.os.Environment;
+import android.support.annotation.NonNull;
 import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuInflater;
@@ -77,7 +78,7 @@ public class LocalFileListFragment extends ExtendedListFragment implements Local
      * {@inheritDoc}
      */
     @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+    public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
         Log_OC.i(TAG, "onCreateView() start");
         View v = super.onCreateView(inflater, container, savedInstanceState);
 

+ 2 - 2
src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java

@@ -228,7 +228,7 @@ public class OCFileListFragment extends ExtendedListFragment implements
      * {@inheritDoc}
      */
     @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+    public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
         Log_OC.i(TAG, "onCreateView() start");
         View v = super.onCreateView(inflater, container, savedInstanceState);
         bottomNavigationView = v.findViewById(R.id.bottom_navigation_view);
@@ -604,7 +604,7 @@ public class OCFileListFragment extends ExtendedListFragment implements
      * Saves the current listed folder.
      */
     @Override
-    public void onSaveInstanceState(Bundle outState) {
+    public void onSaveInstanceState(@NonNull Bundle outState) {
         outState.putParcelable(KEY_FILE, mFile);
         if (searchFragment) {
             outState.putParcelable(KEY_CURRENT_SEARCH_TYPE, Parcels.wrap(currentSearchType));