From 29a702d97cadb7672952c0b79da0b3152d9363cb Mon Sep 17 00:00:00 2001 From: tobiasKaminsky Date: Wed, 20 Jun 2018 11:05:47 +0200 Subject: [PATCH 1/5] on filter close: restore all files Signed-off-by: tobiasKaminsky --- .../android/ui/adapter/LocalFileListAdapter.java | 12 +++++++----- .../android/ui/fragment/ExtendedListFragment.java | 13 +++++++++++-- .../android/ui/fragment/LocalFileListFragment.java | 3 ++- .../android/ui/fragment/OCFileListFragment.java | 2 +- 4 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/owncloud/android/ui/adapter/LocalFileListAdapter.java b/src/main/java/com/owncloud/android/ui/adapter/LocalFileListAdapter.java index 25835f078471..65fc75bf5835 100644 --- a/src/main/java/com/owncloud/android/ui/adapter/LocalFileListAdapter.java +++ b/src/main/java/com/owncloud/android/ui/adapter/LocalFileListAdapter.java @@ -25,6 +25,7 @@ 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.Set; /** - * This Adapter populates a RecycylerView with all files and directories contained in a local directory + * This Adapter populates a RecyclerView with all files and directories contained in a local directory */ public class LocalFileListAdapter extends RecyclerView.Adapter implements FilterableListAdapter { @@ -160,7 +161,7 @@ public long getItemId(int position) { } @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 +230,9 @@ private void setThumbnail(File file, ImageView thumbnailView) { } 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 +282,9 @@ public int getItemViewType(int position) { } } + @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: diff --git a/src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.java b/src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.java index 51d6cb7c7eac..e53dde44ad7f 100644 --- a/src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.java +++ b/src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.java @@ -29,6 +29,7 @@ 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 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 void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 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(); @@ -336,9 +339,15 @@ public void run() { } } + @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); diff --git a/src/main/java/com/owncloud/android/ui/fragment/LocalFileListFragment.java b/src/main/java/com/owncloud/android/ui/fragment/LocalFileListFragment.java index e8ad59cedd8b..c7c8b7f64d03 100644 --- a/src/main/java/com/owncloud/android/ui/fragment/LocalFileListFragment.java +++ b/src/main/java/com/owncloud/android/ui/fragment/LocalFileListFragment.java @@ -23,6 +23,7 @@ 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 void onAttach(Activity activity) { * {@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); diff --git a/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java b/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java index d2626e18722d..697bca108477 100644 --- a/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java +++ b/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java @@ -228,7 +228,7 @@ public void onAttach(Context context) { * {@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); From e856a4b43a1f1c9a7f1964a7a0b49194c79e639f Mon Sep 17 00:00:00 2001 From: tobiasKaminsky Date: Wed, 20 Jun 2018 11:06:52 +0200 Subject: [PATCH 2/5] correct annotations Signed-off-by: tobiasKaminsky --- .../com/owncloud/android/ui/fragment/ExtendedListFragment.java | 2 +- .../com/owncloud/android/ui/fragment/OCFileListFragment.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.java b/src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.java index e53dde44ad7f..ec590d94ef3b 100644 --- a/src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.java +++ b/src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.java @@ -469,7 +469,7 @@ public void onActivityCreated(Bundle savedInstanceState) { @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()); diff --git a/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java b/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java index 697bca108477..c5d92a3561e5 100644 --- a/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java +++ b/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java @@ -604,7 +604,7 @@ public void onViewStateRestored(@Nullable Bundle savedInstanceState) { * 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)); From b0fcf989a20809ce3076bfccc4bff745a88aa73d Mon Sep 17 00:00:00 2001 From: AndyScherzinger Date: Wed, 20 Jun 2018 12:34:52 +0200 Subject: [PATCH 3/5] enhance javaDoc, add annotation --- .../com/owncloud/android/ui/adapter/LocalFileListAdapter.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/owncloud/android/ui/adapter/LocalFileListAdapter.java b/src/main/java/com/owncloud/android/ui/adapter/LocalFileListAdapter.java index 65fc75bf5835..b99e49d20517 100644 --- a/src/main/java/com/owncloud/android/ui/adapter/LocalFileListAdapter.java +++ b/src/main/java/com/owncloud/android/ui/adapter/LocalFileListAdapter.java @@ -57,7 +57,7 @@ import java.util.Set; /** - * This Adapter populates a RecyclerView 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 implements FilterableListAdapter { @@ -100,6 +100,7 @@ public void registerDataSetObserver(DataSetObserver observer) { // not needed } + @Override public void unregisterDataSetObserver(DataSetObserver observer) { // not needed } From 6c69e4eb5031e8c51f3a4a24dacc9e29c15e8655 Mon Sep 17 00:00:00 2001 From: tobiasKaminsky Date: Wed, 20 Jun 2018 13:47:47 +0200 Subject: [PATCH 4/5] On UploadFilesActivity FAB is always hidden Signed-off-by: tobiasKaminsky --- .../owncloud/android/ui/fragment/ExtendedListFragment.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.java b/src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.java index ec590d94ef3b..e53c0079dc92 100644 --- a/src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.java +++ b/src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.java @@ -206,7 +206,10 @@ public void onFocusChange(View v, final boolean hasFocus) { @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())); From b5279ccd906116785af6aed63107b3ef913ee000 Mon Sep 17 00:00:00 2001 From: tobiasKaminsky Date: Thu, 21 Jun 2018 11:42:09 +0200 Subject: [PATCH 5/5] fix bug found by CR Signed-off-by: tobiasKaminsky --- .../ui/activity/UploadFilesActivity.java | 55 ++++++++++++------- 1 file changed, 36 insertions(+), 19 deletions(-) diff --git a/src/main/java/com/owncloud/android/ui/activity/UploadFilesActivity.java b/src/main/java/com/owncloud/android/ui/activity/UploadFilesActivity.java index 7ad211d71c5d..d630ce8d4671 100644 --- a/src/main/java/com/owncloud/android/ui/activity/UploadFilesActivity.java +++ b/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 boolean onCreateOptionsMenu(Menu menu) { 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 boolean onNavigationItemSelected(int itemPosition, long itemId) { } 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); + } } }