From 8bcec489e9c2dfce52f6c6069d8f9aeaf9c54559 Mon Sep 17 00:00:00 2001 From: HeCodes2Much Date: Fri, 29 Nov 2024 20:18:29 +0000 Subject: [PATCH] Feature: Added the ability to change swipeThreshold. --- .../launcher/helper/PreferenceHelper.kt | 4 + .../launcher/listener/OnSwipeTouchListener.kt | 29 +++--- .../launcher/ui/drawer/DrawFragment.kt | 4 +- .../launcher/ui/favorite/FavoriteFragment.kt | 10 +-- .../launcher/ui/hidden/HiddenFragment.kt | 4 +- .../launcher/ui/home/HomeFragment.kt | 9 +- .../ui/settings/SettingsFeaturesFragment.kt | 89 +++++++++++++++++-- .../launcher/ui/widgets/WidgetFragment.kt | 4 +- .../ui/widgets/settings/SettingsFragment.kt | 14 +-- .../launcher/utils/Constants.kt | 5 +- .../launcher/viewmodel/PreferenceViewModel.kt | 8 +- .../res/layout/fragment_settings_features.xml | 32 +++++++ app/src/main/res/values/strings.xml | 5 ++ 13 files changed, 172 insertions(+), 45 deletions(-) diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/helper/PreferenceHelper.kt b/app/src/main/java/com/github/droidworksstudio/launcher/helper/PreferenceHelper.kt index f38c48f..fc02d4e 100644 --- a/app/src/main/java/com/github/droidworksstudio/launcher/helper/PreferenceHelper.kt +++ b/app/src/main/java/com/github/droidworksstudio/launcher/helper/PreferenceHelper.kt @@ -115,6 +115,10 @@ class PreferenceHelper @Inject constructor(@ApplicationContext context: Context) get() = prefs.getInt(Constants.FILTER_STRENGTH, 25) set(value) = prefs.edit().putInt(Constants.FILTER_STRENGTH, value).apply() + var swipeThreshold: Int + get() = prefs.getInt(Constants.SWIPE_THRESHOLD, 100) + set(value) = prefs.edit().putInt(Constants.SWIPE_THRESHOLD, value).apply() + var homeAppAlignment: Int get() = prefs.getInt(Constants.HOME_APP_ALIGNMENT, Gravity.START) set(value) = prefs.edit().putInt(Constants.HOME_APP_ALIGNMENT, value).apply() diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/listener/OnSwipeTouchListener.kt b/app/src/main/java/com/github/droidworksstudio/launcher/listener/OnSwipeTouchListener.kt index 8ab69a4..199df5a 100644 --- a/app/src/main/java/com/github/droidworksstudio/launcher/listener/OnSwipeTouchListener.kt +++ b/app/src/main/java/com/github/droidworksstudio/launcher/listener/OnSwipeTouchListener.kt @@ -7,6 +7,7 @@ import android.view.GestureDetector.SimpleOnGestureListener import android.view.MotionEvent import android.view.View import android.view.View.OnTouchListener +import com.github.droidworksstudio.launcher.helper.PreferenceHelper import com.github.droidworksstudio.launcher.utils.Constants import java.util.* import kotlin.concurrent.schedule @@ -20,7 +21,7 @@ import kotlin.math.abs * The original code has been modified to fit the specific requirements of this project. */ -internal open class OnSwipeTouchListener(c: Context?) : OnTouchListener { +internal open class OnSwipeTouchListener(context: Context?, private val preferenceHelper: PreferenceHelper) : OnTouchListener { private var longPressOn = false private var doubleTapOn = false private val gestureDetector: GestureDetector @@ -33,23 +34,23 @@ internal open class OnSwipeTouchListener(c: Context?) : OnTouchListener { } private inner class GestureListener : SimpleOnGestureListener() { - private val swipeThreshold: Int = 100 - private val swipeVelocityThreshold: Int = 100 - private val swipeScrollThreshold: Int = 100 + private val swipeThreshold: Int = preferenceHelper.swipeThreshold + private val swipeVelocityThreshold: Int = (preferenceHelper.swipeThreshold / 2) + private val swipeScrollThreshold: Int = (preferenceHelper.swipeThreshold / 2) - override fun onDown(e: MotionEvent): Boolean { + override fun onDown(event: MotionEvent): Boolean { return true } - override fun onSingleTapUp(e: MotionEvent): Boolean { + override fun onSingleTapUp(event: MotionEvent): Boolean { if (doubleTapOn) { doubleTapOn = false onTripleClick() } - return super.onSingleTapUp(e) + return super.onSingleTapUp(event) } - override fun onDoubleTap(e: MotionEvent): Boolean { + override fun onDoubleTap(event: MotionEvent): Boolean { doubleTapOn = true Timer().schedule(Constants.TRIPLE_TAP_DELAY_MS.toLong()) { if (doubleTapOn) { @@ -57,15 +58,15 @@ internal open class OnSwipeTouchListener(c: Context?) : OnTouchListener { onDoubleClick() } } - return super.onDoubleTap(e) + return super.onDoubleTap(event) } - override fun onLongPress(e: MotionEvent) { + override fun onLongPress(event: MotionEvent) { longPressOn = true Timer().schedule(Constants.LONG_PRESS_DELAY_MS.toLong()) { if (longPressOn) onLongClick() } - super.onLongPress(e) + super.onLongPress(event) } // Detecting swipe or drag movement @@ -73,7 +74,7 @@ internal open class OnSwipeTouchListener(c: Context?) : OnTouchListener { event1: MotionEvent?, event2: MotionEvent, distanceX: Float, - distanceY: Float + distanceY: Float, ): Boolean { try { if (event1 == null) return false @@ -103,7 +104,7 @@ internal open class OnSwipeTouchListener(c: Context?) : OnTouchListener { event1: MotionEvent?, event2: MotionEvent, velocityX: Float, - velocityY: Float + velocityY: Float, ): Boolean { try { val diffY = event2.y - event1!!.y @@ -133,6 +134,6 @@ internal open class OnSwipeTouchListener(c: Context?) : OnTouchListener { open fun onTripleClick() {} init { - gestureDetector = GestureDetector(c, GestureListener()) + gestureDetector = GestureDetector(context, GestureListener()) } } \ No newline at end of file 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 c5933b2..f0190e8 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 @@ -81,7 +81,7 @@ class DrawFragment : Fragment(), private lateinit var context: Context override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? + savedInstanceState: Bundle?, ): View { _binding = FragmentDrawBinding.inflate(inflater, container, false) @@ -235,7 +235,7 @@ class DrawFragment : Fragment(), private fun getSwipeGestureListener(context: Context): View.OnTouchListener { - return object : OnSwipeTouchListener(context) { + return object : OnSwipeTouchListener(context, preferenceHelper) { override fun onSwipeLeft() { super.onSwipeLeft() val actionTypeNavOptions: NavOptions? = diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/ui/favorite/FavoriteFragment.kt b/app/src/main/java/com/github/droidworksstudio/launcher/ui/favorite/FavoriteFragment.kt index 44a4ec9..5665684 100644 --- a/app/src/main/java/com/github/droidworksstudio/launcher/ui/favorite/FavoriteFragment.kt +++ b/app/src/main/java/com/github/droidworksstudio/launcher/ui/favorite/FavoriteFragment.kt @@ -62,7 +62,7 @@ class FavoriteFragment : Fragment(), override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? + savedInstanceState: Bundle?, ): View { _binding = FragmentFavoriteBinding.inflate(inflater, container, false) @@ -136,7 +136,7 @@ class FavoriteFragment : Fragment(), override fun onChildDraw( canvas: Canvas, recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, dX: Float, - dY: Float, actionState: Int, isCurrentlyActive: Boolean + dY: Float, actionState: Int, isCurrentlyActive: Boolean, ) { if (isCurrentlyActive) { viewHolder.itemView.alpha = 0.5f @@ -152,7 +152,7 @@ class FavoriteFragment : Fragment(), override fun getMovementFlags( recyclerView: RecyclerView, - viewHolder: RecyclerView.ViewHolder + viewHolder: RecyclerView.ViewHolder, ): Int { val dragFlags = ItemTouchHelper.UP or ItemTouchHelper.DOWN val swipeFlags = 0 @@ -161,7 +161,7 @@ class FavoriteFragment : Fragment(), override fun onMove( recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, - target: RecyclerView.ViewHolder + target: RecyclerView.ViewHolder, ): Boolean { val oldPosition = viewHolder.bindingAdapterPosition @@ -199,7 +199,7 @@ class FavoriteFragment : Fragment(), } private fun getSwipeGestureListener(context: Context): View.OnTouchListener { - return object : OnSwipeTouchListener(context) { + return object : OnSwipeTouchListener(context, preferenceHelper) { override fun onSwipeLeft() { super.onSwipeLeft() findNavController().navigateUp() diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/ui/hidden/HiddenFragment.kt b/app/src/main/java/com/github/droidworksstudio/launcher/ui/hidden/HiddenFragment.kt index 25890b8..a3757d0 100644 --- a/app/src/main/java/com/github/droidworksstudio/launcher/ui/hidden/HiddenFragment.kt +++ b/app/src/main/java/com/github/droidworksstudio/launcher/ui/hidden/HiddenFragment.kt @@ -56,7 +56,7 @@ class HiddenFragment : Fragment(), override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? + savedInstanceState: Bundle?, ): View { _binding = FragmentHiddenBinding.inflate(inflater, container, false) @@ -116,7 +116,7 @@ class HiddenFragment : Fragment(), } private fun getSwipeGestureListener(context: Context): View.OnTouchListener { - return object : OnSwipeTouchListener(context) { + return object : OnSwipeTouchListener(context, preferenceHelper) { override fun onSwipeLeft() { super.onSwipeLeft() findNavController().navigateUp() diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/ui/home/HomeFragment.kt b/app/src/main/java/com/github/droidworksstudio/launcher/ui/home/HomeFragment.kt index bf53282..0cb3bb4 100644 --- a/app/src/main/java/com/github/droidworksstudio/launcher/ui/home/HomeFragment.kt +++ b/app/src/main/java/com/github/droidworksstudio/launcher/ui/home/HomeFragment.kt @@ -92,7 +92,7 @@ class HomeFragment : Fragment(), override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? + savedInstanceState: Bundle?, ): View { _binding = FragmentHomeBinding.inflate(inflater, container, false) @@ -344,7 +344,7 @@ class HomeFragment : Fragment(), } private fun getSwipeGestureListener(context: Context): View.OnTouchListener { - return object : OnSwipeTouchListener(context) { + return object : OnSwipeTouchListener(context, preferenceHelper) { override fun onLongClick() { super.onLongClick() trySettings() @@ -403,7 +403,8 @@ class HomeFragment : Fragment(), Constants.Swipe.Up, Constants.Swipe.Down, Constants.Swipe.Left, - Constants.Swipe.Right -> { + Constants.Swipe.Right, + -> { val packageName = when (actionType) { Constants.Swipe.DoubleTap -> preferenceHelper.doubleTapApp Constants.Swipe.Up -> preferenceHelper.swipeUpApp @@ -526,7 +527,7 @@ class HomeFragment : Fragment(), object : BiometricPrompt.AuthenticationCallback() { override fun onAuthenticationError( errorCode: Int, - errString: CharSequence + errString: CharSequence, ) { when (errorCode) { BiometricPrompt.ERROR_USER_CANCELED -> requireContext().showLongToast( diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/ui/settings/SettingsFeaturesFragment.kt b/app/src/main/java/com/github/droidworksstudio/launcher/ui/settings/SettingsFeaturesFragment.kt index 307a709..be21a50 100644 --- a/app/src/main/java/com/github/droidworksstudio/launcher/ui/settings/SettingsFeaturesFragment.kt +++ b/app/src/main/java/com/github/droidworksstudio/launcher/ui/settings/SettingsFeaturesFragment.kt @@ -56,7 +56,7 @@ class SettingsFeaturesFragment : Fragment(), override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? + savedInstanceState: Bundle?, ): View { // Inflate the layout for this fragment _binding = FragmentSettingsFeaturesBinding.inflate(inflater, container, false) @@ -82,6 +82,7 @@ class SettingsFeaturesFragment : Fragment(), miscellaneousSearchEngineControl.text = preferenceHelper.searchEngines.getString(context) miscellaneousAppLanguageControl.text = preferenceHelper.appLanguage.name miscellaneousFilterStrengthControl.text = "${preferenceHelper.filterStrength}" + miscellaneousSwipeThresholdControl.text = "${preferenceHelper.swipeThreshold}" } val actions = listOf( @@ -102,7 +103,7 @@ class SettingsFeaturesFragment : Fragment(), context: Context, action: Constants.Action, appPackageName: String?, - textView: TextView + textView: TextView, ) { val actionText = if (action == Constants.Action.OpenApp) { val appName = appPackageName?.let { context.getAppNameFromPackageName(it) } @@ -161,12 +162,16 @@ class SettingsFeaturesFragment : Fragment(), showSearchEngineDialog() } + miscellaneousAppLanguageControl.setOnClickListener { + showAppLanguageDialog() + } + miscellaneousFilterStrengthControl.setOnClickListener { showFilterStrengthDialog() } - miscellaneousAppLanguageControl.setOnClickListener { - showAppLanguageDialog() + miscellaneousSwipeThresholdControl.setOnClickListener { + showSwipeThresholdDialog() } } } @@ -282,7 +287,7 @@ class SettingsFeaturesFragment : Fragment(), val dialogBuilder = MaterialAlertDialogBuilder(context).apply { setTitle(getString(R.string.settings_select_filter_strength)) setView(seekBarLayout) // Add the slider directly to the dialog - setPositiveButton("ok") { _, _ -> + setPositiveButton(getString(R.string.settings_ok)) { _, _ -> // Save the slider value when OK is pressed preferenceViewModel.setFilterStrength(currentValue) binding.miscellaneousFilterStrengthControl.text = "$currentValue" @@ -290,7 +295,7 @@ class SettingsFeaturesFragment : Fragment(), val feedbackType = "select" appHelper.triggerHapticFeedback(context, feedbackType) } - setNegativeButton("cancel", null) + setNegativeButton(getString(R.string.settings_cancel), null) } // Assign the created dialog to launcherFontDialog @@ -298,6 +303,74 @@ class SettingsFeaturesFragment : Fragment(), filterStrengthDialog?.show() } + private var swipeThresholdDialog: AlertDialog? = null + + @RequiresApi(Build.VERSION_CODES.Q) + private fun showSwipeThresholdDialog() { + // Dismiss any existing dialog to prevent multiple dialogs open simultaneously + swipeThresholdDialog?.dismiss() + + var currentValue = preferenceHelper.swipeThreshold + + // Create a layout to hold the SeekBar and the value display + val seekBarLayout = LinearLayout(context).apply { + orientation = LinearLayout.VERTICAL + gravity = Gravity.CENTER + setPadding(16, 16, 16, 16) + + // TextView to display the current value + val valueText = TextView(context).apply { + text = "$currentValue" + textSize = 16f + gravity = Gravity.CENTER + } + + // SeekBar for horizontal number selection + val seekBar = SeekBar(context).apply { + min = Constants.SWIPE_THRESHOLD_MIN // Maximum value + max = Constants.SWIPE_THRESHOLD_MAX // Maximum value + progress = currentValue // Default value + setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener { + override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) { + currentValue = progress + valueText.text = "$currentValue" + } + + override fun onStartTrackingTouch(seekBar: SeekBar) { + // Not used + } + + override fun onStopTrackingTouch(seekBar: SeekBar) { + // Not used + } + }) + } + + // Add TextView and SeekBar to the layout + addView(valueText) + addView(seekBar) + } + + // Create the dialog + val dialogBuilder = MaterialAlertDialogBuilder(context).apply { + setTitle(getString(R.string.settings_select_swipe_threshold)) + setView(seekBarLayout) // Add the slider directly to the dialog + setPositiveButton(getString(R.string.settings_ok)) { _, _ -> + // Save the slider value when OK is pressed + preferenceViewModel.setSwipeThreshold(currentValue) + binding.miscellaneousSwipeThresholdControl.text = "$currentValue" + + val feedbackType = "select" + appHelper.triggerHapticFeedback(context, feedbackType) + } + setNegativeButton(getString(R.string.settings_cancel), null) + } + + // Assign the created dialog to launcherFontDialog + swipeThresholdDialog = dialogBuilder.create() + swipeThresholdDialog?.show() + } + private var appSelectionDialog: AlertDialog? = null @RequiresApi(Build.VERSION_CODES.Q) @@ -323,7 +396,8 @@ class SettingsFeaturesFragment : Fragment(), Constants.Swipe.Up, Constants.Swipe.Down, Constants.Swipe.Left, - Constants.Swipe.Right -> handleSwipeAction(swipeType, selectedPackageName) + Constants.Swipe.Right, + -> handleSwipeAction(swipeType, selectedPackageName) } val feedbackType = "select" appHelper.triggerHapticFeedback(context, feedbackType) @@ -497,6 +571,7 @@ class SettingsFeaturesFragment : Fragment(), swipeActionDialog?.dismiss() searchEngineDialog?.dismiss() filterStrengthDialog?.dismiss() + swipeThresholdDialog?.dismiss() appSelectionDialog?.dismiss() } } \ No newline at end of file diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/ui/widgets/WidgetFragment.kt b/app/src/main/java/com/github/droidworksstudio/launcher/ui/widgets/WidgetFragment.kt index 2931814..e86bee2 100644 --- a/app/src/main/java/com/github/droidworksstudio/launcher/ui/widgets/WidgetFragment.kt +++ b/app/src/main/java/com/github/droidworksstudio/launcher/ui/widgets/WidgetFragment.kt @@ -68,7 +68,7 @@ class WidgetFragment : Fragment(), override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? + savedInstanceState: Bundle?, ): View { // Inflate the layout for this fragment _binding = FragmentWidgetsBinding.inflate(inflater, container, false) @@ -386,7 +386,7 @@ class WidgetFragment : Fragment(), } private fun getSwipeGestureListener(context: Context): View.OnTouchListener { - return object : OnSwipeTouchListener(context) { + return object : OnSwipeTouchListener(context, preferenceHelper) { override fun onLongClick() { super.onLongClick() val actionTypeNavOptions: NavOptions? = diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/ui/widgets/settings/SettingsFragment.kt b/app/src/main/java/com/github/droidworksstudio/launcher/ui/widgets/settings/SettingsFragment.kt index b2dd350..8f4d8de 100644 --- a/app/src/main/java/com/github/droidworksstudio/launcher/ui/widgets/settings/SettingsFragment.kt +++ b/app/src/main/java/com/github/droidworksstudio/launcher/ui/widgets/settings/SettingsFragment.kt @@ -16,13 +16,13 @@ import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.github.droidworksstudio.common.hasInternetPermission import com.github.droidworksstudio.launcher.R +import com.github.droidworksstudio.launcher.adapter.numberpicker.NumberPickerAdapter import com.github.droidworksstudio.launcher.databinding.FragmentSettingsWidgetsBinding import com.github.droidworksstudio.launcher.helper.AppHelper import com.github.droidworksstudio.launcher.helper.PreferenceHelper import com.github.droidworksstudio.launcher.listener.OnSwipeTouchListener import com.github.droidworksstudio.launcher.listener.ScrollEventListener import com.github.droidworksstudio.launcher.ui.bottomsheetdialog.ColorBottomSheetDialogFragment -import com.github.droidworksstudio.launcher.adapter.numberpicker.NumberPickerAdapter import com.github.droidworksstudio.launcher.utils.Constants import com.github.droidworksstudio.launcher.viewmodel.PreferenceViewModel import com.google.android.material.dialog.MaterialAlertDialogBuilder @@ -50,7 +50,7 @@ class SettingsFragment : Fragment(), override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? + savedInstanceState: Bundle?, ): View { // Inflate the layout for this fragment _binding = FragmentSettingsWidgetsBinding.inflate(inflater, container, false) @@ -80,7 +80,7 @@ class SettingsFragment : Fragment(), weatherSwitchCompat.isChecked = preferenceHelper.showWeatherWidget weatherSunsetSunriseSwitchCompat.isChecked = preferenceHelper.showWeatherWidgetSunSetRise - weatherOrderControl.text = preferenceHelper.weatherOrderNumber.toString() + weatherOrderControl.text = "${preferenceHelper.weatherOrderNumber}" if (!context.hasInternetPermission()) { weatherSettings.visibility = View.GONE @@ -94,7 +94,7 @@ class SettingsFragment : Fragment(), // Battery stuff here batterySwitchCompat.isChecked = preferenceHelper.showBatteryWidget - batteryOrderControl.text = preferenceHelper.batteryOrderNumber.toString() + batteryOrderControl.text = "${preferenceHelper.batteryOrderNumber}" val batteryVisibility = if (batterySwitchCompat.isChecked) View.VISIBLE else View.GONE batteryOrderMenu.visibility = batteryVisibility @@ -158,7 +158,7 @@ class SettingsFragment : Fragment(), } private fun getSwipeGestureListener(context: Context): View.OnTouchListener { - return object : OnSwipeTouchListener(context) { + return object : OnSwipeTouchListener(context, preferenceHelper) { override fun onSwipeLeft() { super.onSwipeLeft() findNavController().navigateUp() @@ -187,7 +187,7 @@ class SettingsFragment : Fragment(), val adapter = NumberPickerAdapter(numbers) { selectedNumber -> // Save the order number to SharedPreferences or ViewModel preferenceViewModel.setWeatherOrderNumber(selectedNumber) - binding.weatherOrderControl.text = preferenceHelper.weatherOrderNumber.toString() + binding.weatherOrderControl.text = "${preferenceHelper.weatherOrderNumber}" numberPickerDialog.dismiss() } @@ -198,7 +198,7 @@ class SettingsFragment : Fragment(), val adapter = NumberPickerAdapter(numbers) { selectedNumber -> // Save the order number to SharedPreferences or ViewModel preferenceViewModel.setBatteryOrderNumber(selectedNumber) - binding.batteryOrderControl.text = preferenceHelper.batteryOrderNumber.toString() + binding.batteryOrderControl.text = "${preferenceHelper.batteryOrderNumber}" numberPickerDialog.dismiss() } diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/utils/Constants.kt b/app/src/main/java/com/github/droidworksstudio/launcher/utils/Constants.kt index e7bbbd2..37b6c15 100644 --- a/app/src/main/java/com/github/droidworksstudio/launcher/utils/Constants.kt +++ b/app/src/main/java/com/github/droidworksstudio/launcher/utils/Constants.kt @@ -57,12 +57,12 @@ object Constants { const val APP_TEXT_PADDING = "APP_TEXT_PADDING" const val SHOW_APP_ICON = "SHOW_APP_ICON" - const val SHOW_APP_ICON_DOTS = "SHOW_APP_ICON_DOTS" const val AUTOMATIC_KEYBOARD = "AUTOMATIC_KEYBOARD" const val AUTOMATIC_OPEN_APP = "AUTOMATIC_OPEN_APP" const val SEARCH_FROM_START = "SEARCH_FROM_START" const val FILTER_STRENGTH = "FILTER_STRENGTH" + const val SWIPE_THRESHOLD = "SWIPE_THRESHOLD" const val HOME_ALLIGNMENT_BOTTOM = "HOME_ALLIGNMENT_BOTTOM" const val TOGGLE_SETTING_LOCK = "TOGGLE_SETTING_LOCK" const val DISABLE_ANIMATIONS = "DISABLE_ANIMATIONS" @@ -100,6 +100,9 @@ object Constants { const val FILTER_STRENGTH_MIN = 0 const val FILTER_STRENGTH_MAX = 100 + const val SWIPE_THRESHOLD_MIN = 10 + const val SWIPE_THRESHOLD_MAX = 255 + const val APP_GROUP_PADDING_MIN = 0.0 const val APP_GROUP_PADDING_MAX = 1000.0 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 214be64..1c21edc 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 @@ -9,7 +9,7 @@ import javax.inject.Inject @HiltViewModel class PreferenceViewModel @Inject constructor( - private val preferenceHelper: PreferenceHelper + private val preferenceHelper: PreferenceHelper, ) : ViewModel() { private val firstLaunchLiveData: MutableLiveData = MutableLiveData() @@ -54,6 +54,7 @@ class PreferenceViewModel @Inject constructor( private val weatherOrderNumberLiveData: MutableLiveData = MutableLiveData() private val batteryOrderNumberLiveData: MutableLiveData = MutableLiveData() private val filterStrengthLiveData: MutableLiveData = MutableLiveData() + private val swipeThresholdLiveData: MutableLiveData = MutableLiveData() private val appLanguageLiveData: MutableLiveData = MutableLiveData() private val searchEngineLiveData: MutableLiveData = MutableLiveData() @@ -310,6 +311,11 @@ class PreferenceViewModel @Inject constructor( filterStrengthLiveData.postValue((preferenceHelper.filterStrength)) } + fun setSwipeThreshold(swipeThreshold: Int) { + preferenceHelper.swipeThreshold = swipeThreshold + swipeThresholdLiveData.postValue((preferenceHelper.swipeThreshold)) + } + fun setLauncherFont(launcherFont: Constants.Fonts) { preferenceHelper.launcherFont = launcherFont launcherFontLiveData.postValue((preferenceHelper.launcherFont)) diff --git a/app/src/main/res/layout/fragment_settings_features.xml b/app/src/main/res/layout/fragment_settings_features.xml index 5a1f1ad..0ffd528 100644 --- a/app/src/main/res/layout/fragment_settings_features.xml +++ b/app/src/main/res/layout/fragment_settings_features.xml @@ -536,6 +536,38 @@ + + + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 83b5623..9d0255c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -140,6 +140,9 @@ Select a Filter Strength Filter Strength + Select a Swipe Threshold + Swipe Threshold + Select a Font Family Font Family @@ -172,6 +175,8 @@ Imperial System + Ok + Cancel Authentication Log in using your biometric credentials.