From f91bd777b270e4b27e9a679478596a0e71f94e07 Mon Sep 17 00:00:00 2001 From: HeCodes2Much Date: Sat, 11 May 2024 21:29:10 +0100 Subject: [PATCH] Feat: Added Auto keyboard & Auto Open last app toggle settings. --- .../launcher/ui/drawer/DrawFragment.kt | 30 ++++++-- .../launcher/ui/settings/SettingsFragment.kt | 12 +++ .../launcher/viewmodel/PreferenceViewModel.kt | 12 +++ app/src/main/res/layout/fragment_settings.xml | 76 +++++++++++++++++-- app/src/main/res/values/strings.xml | 19 ++--- 5 files changed, 126 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/ui/drawer/DrawFragment.kt b/app/src/main/java/com/github/droidworksstudio/launcher/ui/drawer/DrawFragment.kt index dd63447..cc3cec7 100644 --- a/app/src/main/java/com/github/droidworksstudio/launcher/ui/drawer/DrawFragment.kt +++ b/app/src/main/java/com/github/droidworksstudio/launcher/ui/drawer/DrawFragment.kt @@ -13,13 +13,13 @@ import androidx.fragment.app.Fragment import androidx.fragment.app.viewModels import androidx.lifecycle.coroutineScope import androidx.lifecycle.lifecycleScope -import androidx.navigation.fragment.NavHostFragment import androidx.recyclerview.widget.StaggeredGridLayoutManager import com.github.droidworksstudio.launcher.R import com.github.droidworksstudio.launcher.data.entities.AppInfo import com.github.droidworksstudio.launcher.databinding.FragmentDrawBinding import com.github.droidworksstudio.launcher.helper.AppHelper import com.github.droidworksstudio.launcher.helper.FingerprintHelper +import com.github.droidworksstudio.launcher.helper.PreferenceHelper import com.github.droidworksstudio.launcher.listener.OnItemClickedListener import com.github.droidworksstudio.launcher.ui.bottomsheetdialog.AppInfoBottomSheetFragment import com.github.droidworksstudio.launcher.viewmodel.AppViewModel @@ -50,6 +50,9 @@ class DrawFragment : Fragment(), OnItemClickedListener.OnAppsClickedListener, @Inject lateinit var fingerHelper: FingerprintHelper + @Inject + lateinit var preferenceHelper: PreferenceHelper + private lateinit var context: Context override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -67,7 +70,6 @@ class DrawFragment : Fragment(), OnItemClickedListener.OnAppsClickedListener, super.onViewCreated(view, savedInstanceState) context = requireContext() - setupRecyclerView() setupSearch() observeClickListener() @@ -111,15 +113,31 @@ class DrawFragment : Fragment(), OnItemClickedListener.OnAppsClickedListener, } private fun observeClickListener(){ - binding.drawSearchButton.setOnClickListener {appHelper.showSoftKeyboard(context, binding.searchViewText)} + binding.drawSearchButton.setOnClickListener { + appHelper.showSoftKeyboard(context, binding.searchViewText) + } } private fun searchApp(query: String?) { - val searchQuery = "%$query%" @Suppress("DEPRECATION") viewLifecycleOwner.lifecycle.coroutineScope.launchWhenCreated { - viewModel.searchAppInfo(searchQuery).collect { drawAdapter.submitList(it) } + viewModel.searchAppInfo(searchQuery).collect { searchResults -> + val numberOfItemsLeft = searchResults.size + val appResults = searchResults.firstOrNull() + when (numberOfItemsLeft) { + 1 -> { + appResults?.let { appInfo -> + if (preferenceHelper.automaticOpenApp) observeBioAuthCheck(appInfo) + } + drawAdapter.submitList(searchResults) + } + + else -> { + drawAdapter.submitList(searchResults) + } + } + } } } @@ -146,7 +164,7 @@ class DrawFragment : Fragment(), OnItemClickedListener.OnAppsClickedListener, super.onResume() observeDrawerApps() binding.drawAdapter.scrollToPosition(0) - appHelper.hideKeyboard(context, binding.searchView) + if (preferenceHelper.automaticKeyboard) appHelper.showSoftKeyboard(context, binding.searchViewText) } override fun onStop() { diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/ui/settings/SettingsFragment.kt b/app/src/main/java/com/github/droidworksstudio/launcher/ui/settings/SettingsFragment.kt index a429456..83c9309 100644 --- a/app/src/main/java/com/github/droidworksstudio/launcher/ui/settings/SettingsFragment.kt +++ b/app/src/main/java/com/github/droidworksstudio/launcher/ui/settings/SettingsFragment.kt @@ -77,6 +77,8 @@ class SettingsFragment : Fragment(), ScrollEventListener { binding.batterySwitchCompat.isChecked = preferenceHelper.showBattery binding.dailyWordSwitchCompat.isChecked = preferenceHelper.showDailyWord binding.appIconsSwitchCompat.isChecked = preferenceHelper.showAppIcon + binding.automaticKeyboardSwitchCompat.isChecked = preferenceHelper.automaticKeyboard + binding.automaticOpenAppSwitchCompat.isChecked = preferenceHelper.automaticOpenApp binding.gesturesLockSwitchCompat.isChecked = preferenceHelper.tapLockScreen binding.gesturesNotificationSwitchCompat.isChecked = preferenceHelper.swipeNotification binding.gesturesSearchSwitchCompat.isChecked = preferenceHelper.swipeSearch @@ -173,6 +175,16 @@ class SettingsFragment : Fragment(), ScrollEventListener { binding.gesturesSearchSwitchCompat.setOnCheckedChangeListener { _, isChecked -> preferenceViewModel.setSwipeSearch(isChecked) } + + binding.automaticKeyboardSwitchCompat.setOnCheckedChangeListener { _, isChecked -> + preferenceViewModel.setAutoKeyboard(isChecked) + } + + binding.automaticOpenAppSwitchCompat.setOnCheckedChangeListener { _, isChecked -> + preferenceViewModel.setAutoOpenApp(isChecked) + } + + } override fun onTopReached() { diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/viewmodel/PreferenceViewModel.kt b/app/src/main/java/com/github/droidworksstudio/launcher/viewmodel/PreferenceViewModel.kt index a91e48b..f7f5b75 100644 --- a/app/src/main/java/com/github/droidworksstudio/launcher/viewmodel/PreferenceViewModel.kt +++ b/app/src/main/java/com/github/droidworksstudio/launcher/viewmodel/PreferenceViewModel.kt @@ -34,6 +34,8 @@ class PreferenceViewModel @Inject constructor( val tapLockScreenLiveData: MutableLiveData = MutableLiveData() val swipeNotificationLiveData: MutableLiveData = MutableLiveData() val swipeSearchLiveData: MutableLiveData = MutableLiveData() + val autoOpenAppsLiveData: MutableLiveData = MutableLiveData() + val autoKeyboardLiveData: MutableLiveData = MutableLiveData() val appPaddingSizeLiveData: MutableLiveData = MutableLiveData() fun setFirstLaunch(firstLaunch: Boolean) { @@ -155,4 +157,14 @@ class PreferenceViewModel @Inject constructor( preferenceHelper.swipeSearch = swipeSearch swipeSearchLiveData.postValue((preferenceHelper.swipeSearch)) } + + fun setAutoKeyboard(autoKeyboard: Boolean){ + preferenceHelper.automaticKeyboard = autoKeyboard + autoKeyboardLiveData.postValue((preferenceHelper.automaticKeyboard)) + } + + fun setAutoOpenApp(autoOpenApp: Boolean){ + preferenceHelper.automaticOpenApp = autoOpenApp + autoOpenAppsLiveData.postValue((preferenceHelper.automaticOpenApp)) + } } \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml index d3c1781..499f712 100644 --- a/app/src/main/res/layout/fragment_settings.xml +++ b/app/src/main/res/layout/fragment_settings.xml @@ -81,7 +81,7 @@ android:layout_height="wrap_content" android:layout_weight="1" android:gravity="left|center" - android:text="@string/settings_appearance_status_bar" + android:text="@string/settings_display_status_bar" android:textSize="@dimen/text_large" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" @@ -113,7 +113,7 @@ android:layout_height="match_parent" android:layout_weight="1" android:gravity="left|center" - android:text="@string/settings_appearance_date" + android:text="@string/settings_display_date" android:textSize="@dimen/text_large" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" @@ -145,7 +145,7 @@ android:layout_height="wrap_content" android:layout_weight="1" android:gravity="left|center" - android:text="@string/settings_appearance_time" + android:text="@string/settings_display_time" android:textSize="@dimen/text_large" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" @@ -177,7 +177,7 @@ android:layout_height="wrap_content" android:layout_weight="1" android:gravity="left|center" - android:text="@string/settings_appearance_battery" + android:text="@string/settings_display_battery" android:textSize="@dimen/text_large" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" @@ -209,7 +209,7 @@ android:layout_height="wrap_content" android:layout_weight="1" android:gravity="left|center" - android:text="@string/settings_appearance_daily_word" + android:text="@string/settings_display_daily_word" android:textSize="@dimen/text_large" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" @@ -241,7 +241,7 @@ android:layout_height="wrap_content" android:layout_weight="1" android:gravity="left|center" - android:text="@string/settings_appearance_app_icons_word" + android:text="@string/settings_display_app_icons" android:textSize="@dimen/text_large" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" @@ -259,6 +259,70 @@ tools:ignore="TouchTargetSizeCheck" /> + + + + + + + + + + + + + + + + Gestures Others - Show Status Bar - Show Date - Show Time - Show Battery - Show Daily Word - Show App Icons + Show Status Bar + Show Date + Show Time + Show Battery + Show Daily Word + Show App Icons + Auto Show Keyboard + Auto Open Last App Size Color Alignment Padding - Select Date Color - Select Time Color - Select Battery Color - Select Daily Word Color - Select App Color Date Size : Time Size : App Size :