diff options
author | Fabian Henneke <FabianHenneke@users.noreply.github.com> | 2020-04-10 13:18:42 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-10 16:48:42 +0530 |
commit | 575ef8472654f49dd60f0e6909164dd8dbd098fb (patch) | |
tree | bd94860a1dcb4a8c630ff5954c262716ac307b7a /app/src/main/res | |
parent | 2738d7500fa0d4d925f698a04045d930c27a2d59 (diff) |
Modernize legacy RecyclerView adapters (#694)
* Modernize legacy RecyclerView adapters
Introduces new adapters based on the SearchableRepositoryViewModel and
using androidx.recyclerview.selection for multiselection support.
The following positive effects in behavior are observable to end-users:
- Search and navigation actions are executed on IO threads.
- RecyclerViews are now animated during searches (but not navigations).
- Exact scroll position is restored when navigating back.
- The ActionBar title is updated with the current folder name.
The following negative effects may warrant attention:
- Support for the "always search from root" setting has been removed.
- Due to a limitation of the fast scroll dependency, using the scroller
may result in unwanted multiselections. If this is not fixed in the
library, native fast scroller capabilities could be used, but these
are more limited in appearance and to not offer popups.
* Fix lint
* Fix FastScroller/SelectionTracker incompatibility
* Immediately react to settings changes
* List directory entries when search term is blank
* Use isEmpty() instead of == ""
* Replace adapter inheritance with builders and fix selection drags
* Remove dividers in password lists
* Run spotlessApply
* Use a more logical string in action mode
* Commonize and constify path bundle key
* Make lambda parameter name explicit
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
Co-authored-by: Harsh Shandilya <me@msfjarvis.dev>
Diffstat (limited to 'app/src/main/res')
-rw-r--r-- | app/src/main/res/drawable/password_row_background.xml | 22 | ||||
-rw-r--r-- | app/src/main/res/layout/oreo_autofill_filter_row.xml | 4 | ||||
-rw-r--r-- | app/src/main/res/layout/password_row_layout.xml | 4 | ||||
-rw-r--r-- | app/src/main/res/values-ru/strings.xml | 2 | ||||
-rw-r--r-- | app/src/main/res/values/strings.xml | 7 | ||||
-rw-r--r-- | app/src/main/res/xml/preference.xml | 5 |
6 files changed, 21 insertions, 23 deletions
diff --git a/app/src/main/res/drawable/password_row_background.xml b/app/src/main/res/drawable/password_row_background.xml index 20b8540f..51f14173 100644 --- a/app/src/main/res/drawable/password_row_background.xml +++ b/app/src/main/res/drawable/password_row_background.xml @@ -1,12 +1,14 @@ <?xml version="1.0" encoding="utf-8"?> -<layer-list xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <item> - <selector> - <item app:state_multiselected="true" android:state_activated="true"> - <color android:color="@color/list_multiselect_background" /> - </item> - </selector> - </item> - <item android:drawable="?attr/selectableItemBackground" /> +<!-- +Requires a layer-list since attributes cannot be resolved in selectors, see: +https://stackoverflow.com/a/36424426/297261 + --> +<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> +<item> + <selector> + <item android:drawable="@color/list_multiselect_background" android:state_selected="true" /> + <item android:drawable="@android:color/transparent"/> + </selector> +</item> +<item android:drawable="?android:attr/selectableItemBackground"/> </layer-list> diff --git a/app/src/main/res/layout/oreo_autofill_filter_row.xml b/app/src/main/res/layout/oreo_autofill_filter_row.xml index c60c2693..8ba0c3dd 100644 --- a/app/src/main/res/layout/oreo_autofill_filter_row.xml +++ b/app/src/main/res/layout/oreo_autofill_filter_row.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<com.zeapo.pwdstore.widget.MultiselectableConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" @@ -61,4 +61,4 @@ app:layout_constraintStart_toEndOf="@id/title" app:layout_constraintTop_toTopOf="parent" /> -</com.zeapo.pwdstore.widget.MultiselectableConstraintLayout> +</androidx.constraintlayout.widget.ConstraintLayout> diff --git a/app/src/main/res/layout/password_row_layout.xml b/app/src/main/res/layout/password_row_layout.xml index ae76d7a9..257b9d4c 100644 --- a/app/src/main/res/layout/password_row_layout.xml +++ b/app/src/main/res/layout/password_row_layout.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<com.zeapo.pwdstore.widget.MultiselectableConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" @@ -52,4 +52,4 @@ app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" /> -</com.zeapo.pwdstore.widget.MultiselectableConstraintLayout> +</androidx.constraintlayout.widget.ConstraintLayout> diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 4d174061..a703ba9f 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -318,8 +318,6 @@ <string name="button_create">Создать</string> <string name="pref_search_on_start">Открыть поиск на старте</string> <string name="pref_search_on_start_hint">Открыть панель поиска при запуске приложения</string> - <string name="pref_search_from_root">Всегда начинать поиск от корня</string> - <string name="pref_search_from_root_hint">Искать от корня хранилища независимо от текущей открытой директории</string> <string name="password_generator_category_title">Генератор паролей</string> <string name="tap_clear_clipboard">Нажмите здесь чтобы очистить буфер обмена</string> <string name="clone_git_repo">Для синхронизации изменений клонируйте git репозиторий</string> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 87d97d5b..8637235b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,6 +1,11 @@ <?xml version="1.0" encoding="utf-8"?> <resources> + <plurals name="delete_title"> + <item quantity="one">%d item selected</item> + <item quantity="other">%d items selected</item> + </plurals> + <!-- Activity names --> <string name="app_name" translatable="false">Password Store</string> @@ -330,8 +335,6 @@ <string name="button_create">Create</string> <string name="pref_search_on_start">Open search on start</string> <string name="pref_search_on_start_hint">Open search bar when app is launched</string> - <string name="pref_search_from_root">Always search from root</string> - <string name="pref_search_from_root_hint">Search from root of store regardless of currently open directory</string> <string name="password_generator_category_title">Password Generator</string> <string name="tap_clear_clipboard">Tap here to clear clipboard</string> <string name="clone_git_repo">Clone a git repository to sync changes</string> diff --git a/app/src/main/res/xml/preference.xml b/app/src/main/res/xml/preference.xml index 31c6de5a..fc041ee1 100644 --- a/app/src/main/res/xml/preference.xml +++ b/app/src/main/res/xml/preference.xml @@ -147,11 +147,6 @@ app:key="search_on_start" app:summary="@string/pref_search_on_start_hint" app:title="@string/pref_search_on_start" /> - <androidx.preference.CheckBoxPreference - app:defaultValue="false" - app:key="search_from_root" - app:summary="@string/pref_search_from_root_hint" - app:title="@string/pref_search_from_root" /> <androidx.preference.ListPreference app:title="@string/pref_sort_order_title" app:defaultValue="FOLDER_FIRST" |