Feat: Added Auto keyboard & Auto Open last app toggle settings.

This commit is contained in:
HeCodes2Much
2024-05-11 21:29:10 +01:00
parent 14a220593f
commit f91bd777b2
5 changed files with 126 additions and 23 deletions

View File

@@ -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() {

View File

@@ -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() {

View File

@@ -34,6 +34,8 @@ class PreferenceViewModel @Inject constructor(
val tapLockScreenLiveData: MutableLiveData<Boolean> = MutableLiveData()
val swipeNotificationLiveData: MutableLiveData<Boolean> = MutableLiveData()
val swipeSearchLiveData: MutableLiveData<Boolean> = MutableLiveData()
val autoOpenAppsLiveData: MutableLiveData<Boolean> = MutableLiveData()
val autoKeyboardLiveData: MutableLiveData<Boolean> = MutableLiveData()
val appPaddingSizeLiveData: MutableLiveData<Float> = 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))
}
}

View File

@@ -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" />
</androidx.appcompat.widget.LinearLayoutCompat>
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="20dp"
android:orientation="horizontal"
tools:ignore="MissingConstraints">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/automaticKeyboard_text"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="left|center"
android:text="@string/settings_display_automatic_keyboard"
android:textSize="@dimen/text_large"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="RtlHardcoded"
style="@style/TextDefaultStyle"/>
<androidx.appcompat.widget.SwitchCompat
android:id="@+id/automaticKeyboard_switchCompat"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleX="0.7"
android:scaleY="0.8"
android:thumb="@drawable/shape_switch_thumb"
app:track="@drawable/selector_switch"
tools:ignore="TouchTargetSizeCheck" />
</androidx.appcompat.widget.LinearLayoutCompat>
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="20dp"
android:orientation="horizontal"
tools:ignore="MissingConstraints">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/automaticOpenApp_text"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="left|center"
android:text="@string/settings_display_auto_open_apps"
android:textSize="@dimen/text_large"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="RtlHardcoded"
style="@style/TextDefaultStyle"/>
<androidx.appcompat.widget.SwitchCompat
android:id="@+id/automaticOpenApp_switchCompat"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleX="0.7"
android:scaleY="0.8"
android:thumb="@drawable/shape_switch_thumb"
app:track="@drawable/selector_switch"
tools:ignore="TouchTargetSizeCheck" />
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.appcompat.widget.LinearLayoutCompat>
<androidx.appcompat.widget.LinearLayoutCompat

View File

@@ -31,23 +31,20 @@
<string name="settings_title_gestures">Gestures</string>
<string name="settings_title_others">Others</string>
<string name="settings_appearance_status_bar">Show Status Bar</string>
<string name="settings_appearance_date">Show Date</string>
<string name="settings_appearance_time">Show Time</string>
<string name="settings_appearance_battery">Show Battery</string>
<string name="settings_appearance_daily_word">Show Daily Word</string>
<string name="settings_appearance_app_icons_word">Show App Icons</string>
<string name="settings_display_status_bar">Show Status Bar</string>
<string name="settings_display_date">Show Date</string>
<string name="settings_display_time">Show Time</string>
<string name="settings_display_battery">Show Battery</string>
<string name="settings_display_daily_word">Show Daily Word</string>
<string name="settings_display_app_icons">Show App Icons</string>
<string name="settings_display_automatic_keyboard">Auto Show Keyboard</string>
<string name="settings_display_auto_open_apps">Auto Open Last App</string>
<string name="settings_appearance_text_size_title">Size</string>
<string name="settings_appearance_color_title">Color</string>
<string name="settings_appearance_alignment_title">Alignment</string>
<string name="settings_appearance_padding_title">Padding</string>
<string name="settings_appearance_date_color">Select Date Color</string>
<string name="settings_appearance_time_color">Select Time Color</string>
<string name="settings_appearance_battery_color">Select Battery Color</string>
<string name="settings_appearance_daily_word_color">Select Daily Word Color</string>
<string name="settings_appearance_app_display_color">Select App Color</string>
<string name="settings_appearance_date_size_title">Date Size : </string>
<string name="settings_appearance_time_size_title">Time Size : </string>
<string name="settings_appearance_app_size_title">App Size : </string>