فهرست منبع

feat(#103): make hidden apps findable with search (#130)

Co-authored-by: Joshua Kuestersteffen <jkuester@kuester7.com>
JuanJakobo 2 سال پیش
والد
کامیت
4b25d7e21b

+ 2 - 1
app/src/main/java/com/sduduzog/slimlauncher/adapters/AppDrawerAdapter.kt

@@ -89,9 +89,10 @@ class AppDrawerAdapter(
 
     private fun updateFilteredApps(filterQuery: String = "") {
         val showDrawerHeadings = corePreferencesRepo.get().showDrawerHeadings
+        val searchAllApps = corePreferencesRepo.get().searchAllAppsInDrawer && filterQuery != ""
         val displayableApps = apps
             .filter { app ->
-                app.displayInDrawer && regex.replace(app.displayName, "")
+                (app.displayInDrawer || searchAllApps) && regex.replace(app.displayName, "")
                         .contains(filterQuery, ignoreCase = true)
             }
 

+ 8 - 0
app/src/main/java/com/sduduzog/slimlauncher/datasource/coreprefs/CorePreferencesRepository.kt

@@ -93,4 +93,12 @@ class CorePreferencesRepository(
             }
         }
     }
+
+    fun updateSearchAllAppsInDrawer(searchAllAppsInDrawer: Boolean) {
+        lifecycleScope.launch {
+            corePreferencesStore.updateData {
+                it.toBuilder().setSearchAllAppsInDrawer(searchAllAppsInDrawer).build()
+            }
+        }
+    }
 }

+ 17 - 0
app/src/main/java/com/sduduzog/slimlauncher/ui/options/CustomizeSearchFieldFragment.kt

@@ -15,6 +15,7 @@ import kotlinx.android.synthetic.main.customize_app_drawer_fragment_search_field
 import kotlinx.android.synthetic.main.customize_app_drawer_fragment_search_field_options.customize_app_drawer_fragment_search_field_position
 import kotlinx.android.synthetic.main.customize_app_drawer_fragment_search_field_options.customize_app_drawer_fragment_show_search_field_switch
 import kotlinx.android.synthetic.main.customize_app_drawer_fragment_search_field_options.customize_app_drawer_open_keyboard_switch
+import kotlinx.android.synthetic.main.customize_app_drawer_fragment_search_field_options.customize_app_drawer_search_all_switch
 
 import javax.inject.Inject
 
@@ -42,6 +43,7 @@ class CustomizeSearchFieldFragment : BaseFragment() {
         setupShowSearchBarSwitch()
         setupSearchBarPositionOption()
         setupKeyboardSwitch()
+        setupSearchAllAppsSwitch()
     }
 
     private fun setupShowSearchBarSwitch() {
@@ -91,4 +93,19 @@ class CustomizeSearchFieldFragment : BaseFragment() {
                 R.string.customize_app_drawer_fragment_open_keyboard_subtitle
             )
     }
+
+    private fun setupSearchAllAppsSwitch() {
+        val prefsRepo = unlauncherDataSource.corePreferencesRepo
+        customize_app_drawer_search_all_switch.setOnCheckedChangeListener { _, checked ->
+            prefsRepo.updateSearchAllAppsInDrawer(checked)
+        }
+        prefsRepo.liveData().observe(viewLifecycleOwner) {
+            customize_app_drawer_search_all_switch.isChecked = it.searchAllAppsInDrawer
+        }
+        customize_app_drawer_search_all_switch.text =
+                createTitleAndSubtitleText(
+                        requireContext(), R.string.customize_app_drawer_fragment_search_all,
+                        R.string.customize_app_drawer_fragment_search_all_subtitle
+                )
+    }
 }

+ 1 - 0
app/src/main/proto/core_preferences.proto

@@ -9,6 +9,7 @@ message CorePreferences {
   optional bool show_search_bar = 3;
   SearchBarPosition search_bar_position = 4;
   bool show_drawer_headings = 5;
+  bool search_all_apps_in_drawer = 6;
 }
 
 enum SearchBarPosition {

+ 12 - 0
app/src/main/res/layout/customize_app_drawer_fragment_search_field_options.xml

@@ -44,4 +44,16 @@
         android:textSize="@dimen/_20ssp"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toBottomOf="@id/customize_app_drawer_fragment_search_field_position" />
+
+    <androidx.appcompat.widget.SwitchCompat
+        android:id="@+id/customize_app_drawer_search_all_switch"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="32dp"
+        android:layout_marginBottom="32dp"
+        android:text="@string/customize_app_drawer_fragment_search_all"
+        android:textAppearance="@style/TextAppearance.AppCompat"
+        android:textSize="@dimen/font_size_customize_options"
+        app:layout_constraintTop_toBottomOf="@id/customize_app_drawer_open_keyboard_switch"
+        app:layout_constraintStart_toStartOf="parent"/>
 </androidx.constraintlayout.widget.ConstraintLayout>

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

@@ -60,6 +60,7 @@
         <item>Unten</item>
     </string-array>
     <string name="customize_app_drawer_fragment_open_keyboard">Tastatur anzeigen</string>
+    <string name="customize_app_drawer_fragment_search_all">Suche in allen Apps</string>
     <string name="customize_app_drawer_fragment_visible_apps">Appsichtbarkeit einstellen</string>
     <string name="customize_app_drawer_fragment_auto_theme_wallpaper_text">Themenhintergrund verwenden</string>
     <string name="customize_app_drawer_fragment_auto_theme_wallpaper_subtext_no_default_launcher">Unlauncher muss die standard Start-App sein</string>

+ 2 - 0
app/src/main/res/values/strings.xml

@@ -54,6 +54,8 @@
     <string name="options_fragment_hide_status_bar">Hide Status Bar</string>
     <string name="options_fragment_show_status_bar">Show Status Bar</string>
     <string name="customize_app_drawer_fragment_open_keyboard">Open Keyboard</string>
+    <string name="customize_app_drawer_fragment_search_all">Search all apps</string>
+    <string name="customize_app_drawer_fragment_search_all_subtitle">Hidden apps can be found when searching</string>
     <string name="customize_app_drawer_fragment_auto_theme_wallpaper_text">Set theme background as wallpaper</string>
     <string name="customize_app_drawer_fragment_auto_theme_wallpaper_subtext_no_default_launcher">App needs to be default launcher</string>
     <string name="customize_app_drawer_fragment_visible_apps">Visible Apps</string>