From 0c883f96168683e4cbb79ca775978f9b93e72639 Mon Sep 17 00:00:00 2001 From: tobiasKaminsky Date: Wed, 20 Jun 2018 11:05:47 +0200 Subject: [PATCH 1/6] 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 0857765540ca..ed99f768182e 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 df18fffb208d..0231aedf7b4c 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 1f7ec654052721952386f1a2364c607d16a3d5c3 Mon Sep 17 00:00:00 2001 From: tobiasKaminsky Date: Wed, 20 Jun 2018 11:06:52 +0200 Subject: [PATCH 2/6] 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 0231aedf7b4c..43a43ad648b4 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 8406ab45a2c9697b9c1169c435ec08f6fba7d2f4 Mon Sep 17 00:00:00 2001 From: AndyScherzinger Date: Wed, 20 Jun 2018 12:34:52 +0200 Subject: [PATCH 3/6] 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 ed99f768182e..aa88e7093213 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 f59fc6f466ed2910cd7ab2b8eb7a1f1719ebef07 Mon Sep 17 00:00:00 2001 From: tobiasKaminsky Date: Wed, 20 Jun 2018 13:47:47 +0200 Subject: [PATCH 4/6] 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 43a43ad648b4..8d3dc56da457 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 35476c22ef6bf73f2d727e2ed10cb97f938928f2 Mon Sep 17 00:00:00 2001 From: tobiasKaminsky Date: Thu, 21 Jun 2018 11:42:09 +0200 Subject: [PATCH 5/6] fix bug found by CR Signed-off-by: tobiasKaminsky # Conflicts: # src/main/java/com/owncloud/android/ui/activity/UploadFilesActivity.java --- .../ui/activity/UploadFilesActivity.java | 58 ++++++++++++++----- 1 file changed, 42 insertions(+), 16 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 23a88310bb2b..d69907c0b74a 100644 --- a/src/main/java/com/owncloud/android/ui/activity/UploadFilesActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/UploadFilesActivity.java @@ -85,6 +85,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"; @@ -221,6 +222,15 @@ public boolean onCreateOptionsMenu(Menu menu) { MenuItem switchView = menu.findItem(R.id.action_switch_view); switchView.setTitle(isGridView() ? R.string.action_switch_list_view : R.string.action_switch_grid_view); + int fontColor = ThemeUtils.fontColor(this); + final MenuItem item = menu.findItem(R.id.action_search); + 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 = mSearchView.findViewById(android.support.v7.appcompat.R.id.search_close_btn); + searchClose.setColorFilter(fontColor); + return super.onCreateOptionsMenu(menu); } @@ -290,27 +300,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); + } } } From 60eea10f2a5e953c2b8323cb630baeb4bbf5bcc2 Mon Sep 17 00:00:00 2001 From: AndyScherzinger Date: Thu, 21 Jun 2018 14:54:03 +0200 Subject: [PATCH 6/6] imports after cherry pick --- .../com/owncloud/android/ui/activity/UploadFilesActivity.java | 4 ++++ 1 file changed, 4 insertions(+) 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 d69907c0b74a..a9a0c5eabf64 100644 --- a/src/main/java/com/owncloud/android/ui/activity/UploadFilesActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/UploadFilesActivity.java @@ -33,8 +33,10 @@ import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; +import android.support.v4.view.MenuItemCompat; import android.support.v7.app.ActionBar; import android.support.v7.widget.AppCompatButton; +import android.support.v7.widget.SearchView; import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -42,6 +44,8 @@ import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.Button; +import android.widget.EditText; +import android.widget.ImageView; import android.widget.Spinner; import android.widget.TextView;