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 9745c4d..6b2f7f9 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 @@ -179,6 +179,10 @@ class PreferenceHelper @Inject constructor(@ApplicationContext context: Context) get() = prefs.getBoolean(Constants.TOGGLE_SETTING_LOCK, false) set(value) = prefs.edit().putBoolean(Constants.TOGGLE_SETTING_LOCK, value).apply() + var disableAnimations: Boolean + get() = prefs.getBoolean(Constants.DISABLE_ANIMATIONS, false) + set(value) = prefs.edit().putBoolean(Constants.DISABLE_ANIMATIONS, value).apply() + var searchEngines: Constants.SearchEngines get() { return try { 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 e8234d6..6caba6f 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 @@ -4,6 +4,8 @@ import android.annotation.SuppressLint import android.content.Context import android.os.Build import android.os.Bundle +import android.os.Handler +import android.os.Looper import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -14,6 +16,7 @@ import androidx.fragment.app.viewModels import androidx.lifecycle.Lifecycle import androidx.lifecycle.lifecycleScope import androidx.lifecycle.repeatOnLifecycle +import androidx.navigation.NavOptions import androidx.navigation.fragment.findNavController import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.StaggeredGridLayoutManager @@ -191,16 +194,38 @@ class DrawFragment : Fragment(), RecyclerView.SCROLL_STATE_DRAGGING -> { onTop = !recyclerView.canScrollVertically(-1) if (onTop) binding.searchViewText.hideKeyboard() - if (onTop && !recyclerView.canScrollVertically(1)) - findNavController().popBackStack() + if (onTop && !recyclerView.canScrollVertically(1)) { + val actionTypeNavOptions: NavOptions? = + if (preferenceHelper.disableAnimations) null + else appHelper.getActionType(Constants.Swipe.Up) + + Handler(Looper.getMainLooper()).post { + findNavController().navigate( + R.id.action_DrawFragment_to_HomeFragment, + null, + actionTypeNavOptions + ) + } + } } RecyclerView.SCROLL_STATE_IDLE -> { if (!recyclerView.canScrollVertically(1)) { binding.searchViewText.hideKeyboard() } else if (!recyclerView.canScrollVertically(-1)) { - if (onTop) findNavController().popBackStack() - else binding.searchViewText.showKeyboard() + if (onTop) { + val actionTypeNavOptions: NavOptions? = + if (preferenceHelper.disableAnimations) null + else appHelper.getActionType(Constants.Swipe.Up) + + Handler(Looper.getMainLooper()).post { + findNavController().navigate( + R.id.action_DrawFragment_to_HomeFragment, + null, + actionTypeNavOptions + ) + } + } else binding.searchViewText.showKeyboard() } } } @@ -213,12 +238,32 @@ class DrawFragment : Fragment(), return object : OnSwipeTouchListener(context) { override fun onSwipeLeft() { super.onSwipeLeft() - findNavController().navigateUp() + val actionTypeNavOptions: NavOptions? = + if (preferenceHelper.disableAnimations) null + else appHelper.getActionType(Constants.Swipe.Left) + + Handler(Looper.getMainLooper()).post { + findNavController().navigate( + R.id.action_DrawFragment_to_HomeFragment, + null, + actionTypeNavOptions + ) + } } override fun onSwipeRight() { super.onSwipeRight() - findNavController().navigateUp() + val actionTypeNavOptions: NavOptions? = + if (preferenceHelper.disableAnimations) null + else appHelper.getActionType(Constants.Swipe.Right) + + Handler(Looper.getMainLooper()).post { + findNavController().navigate( + R.id.action_DrawFragment_to_HomeFragment, + null, + actionTypeNavOptions + ) + } } } } 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 86f4be8..fd9ef75 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 @@ -418,7 +418,9 @@ class HomeFragment : Fragment(), } Constants.Action.ShowAppList -> { - val actionTypeNavOptions: NavOptions = appHelper.getActionType(actionType) + val actionTypeNavOptions: NavOptions? = + if (preferenceHelper.disableAnimations) null + else appHelper.getActionType(actionType) Handler(Looper.getMainLooper()).post { findNavController().navigate( R.id.action_HomeFragment_to_DrawFragment, @@ -430,7 +432,9 @@ class HomeFragment : Fragment(), Constants.Action.ShowFavoriteList -> { - val actionTypeNavOptions: NavOptions = appHelper.getActionType(actionType) + val actionTypeNavOptions: NavOptions? = + if (preferenceHelper.disableAnimations) null + else appHelper.getActionType(actionType) Handler(Looper.getMainLooper()).post { findNavController().navigate( R.id.action_HomeFragment_to_FavoriteFragment, @@ -441,7 +445,9 @@ class HomeFragment : Fragment(), } Constants.Action.ShowHiddenList -> { - val actionTypeNavOptions: NavOptions = appHelper.getActionType(actionType) + val actionTypeNavOptions: NavOptions? = + if (preferenceHelper.disableAnimations) null + else appHelper.getActionType(actionType) Handler(Looper.getMainLooper()).post { findNavController().navigate( R.id.action_HomeFragment_to_HiddenFragment, @@ -465,7 +471,9 @@ class HomeFragment : Fragment(), } Constants.Action.ShowWidgets -> { - val actionTypeNavOptions: NavOptions = appHelper.getActionType(actionType) + val actionTypeNavOptions: NavOptions? = + if (preferenceHelper.disableAnimations) null + else appHelper.getActionType(actionType) Handler(Looper.getMainLooper()).post { findNavController().navigate( R.id.action_HomeFragment_to_WidgetsFragment, 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 fdf56a9..9026fa8 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 @@ -127,6 +127,7 @@ class SettingsFeaturesFragment : Fragment(), automaticOpenAppSwitchCompat.isChecked = preferenceHelper.automaticOpenApp searchFromStartSwitchCompat.isChecked = preferenceHelper.searchFromStart lockSettingsSwitchCompat.isChecked = preferenceHelper.settingsLock + disableAnimationsSwitchCompat.isChecked = preferenceHelper.disableAnimations } } @@ -361,6 +362,12 @@ class SettingsFeaturesFragment : Fragment(), val feedbackType = if (isChecked) "on" else "off" appHelper.triggerHapticFeedback(context, feedbackType) } + + disableAnimationsSwitchCompat.setOnCheckedChangeListener { _, isChecked -> + preferenceViewModel.setDisableAnimations(isChecked) + val feedbackType = if (isChecked) "on" else "off" + appHelper.triggerHapticFeedback(context, feedbackType) + } } } 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 ab1c513..4dc8172 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 @@ -389,8 +389,10 @@ class WidgetFragment : Fragment(), return object : OnSwipeTouchListener(context) { override fun onLongClick() { super.onLongClick() - val actionTypeNavOptions: NavOptions = - appHelper.getActionType(Constants.Swipe.DoubleTap) + val actionTypeNavOptions: NavOptions? = + if (preferenceHelper.disableAnimations) null + else appHelper.getActionType(Constants.Swipe.DoubleTap) + Handler(Looper.getMainLooper()).post { findNavController().navigate( R.id.action_WidgetsFragment_to_WidgetsSettingsFragment, @@ -398,17 +400,36 @@ class WidgetFragment : Fragment(), actionTypeNavOptions ) } - return } override fun onSwipeLeft() { super.onSwipeLeft() - findNavController().navigateUp() + val actionTypeNavOptions: NavOptions? = + if (preferenceHelper.disableAnimations) null + else appHelper.getActionType(Constants.Swipe.Left) + + Handler(Looper.getMainLooper()).post { + findNavController().navigate( + R.id.action_WidgetsFragment_to_HomeFragment, + null, + actionTypeNavOptions + ) + } } override fun onSwipeRight() { super.onSwipeRight() - findNavController().navigateUp() + val actionTypeNavOptions: NavOptions? = + if (preferenceHelper.disableAnimations) null + else appHelper.getActionType(Constants.Swipe.Right) + + Handler(Looper.getMainLooper()).post { + findNavController().navigate( + R.id.action_WidgetsFragment_to_HomeFragment, + null, + actionTypeNavOptions + ) + } } } } 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 3ddce82..4b45d5c 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 @@ -64,6 +64,7 @@ object Constants { const val SEARCH_FROM_START = "SEARCH_FROM_START" const val FILTER_STRENGTH = "FILTER_STRENGTH" const val TOGGLE_SETTING_LOCK = "TOGGLE_SETTING_LOCK" + const val DISABLE_ANIMATIONS = "DISABLE_ANIMATIONS" const val HOME_DATE_ALIGNMENT = "HOME_DATE_ALIGNMENT" const val HOME_TIME_ALIGNMENT = "HOME_TIME_ALIGNMENT" 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 86dc690..aef3830 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 @@ -46,6 +46,7 @@ class PreferenceViewModel @Inject constructor( private val searchFromStartLiveData: MutableLiveData = MutableLiveData() private val autoKeyboardLiveData: MutableLiveData = MutableLiveData() private val lockSettingsLiveData: MutableLiveData = MutableLiveData() + private val disableAnimationsLiveData: MutableLiveData = MutableLiveData() private val appGroupPaddingSizeLiveData: MutableLiveData = MutableLiveData() private val appPaddingSizeLiveData: MutableLiveData = MutableLiveData() @@ -278,6 +279,11 @@ class PreferenceViewModel @Inject constructor( lockSettingsLiveData.postValue((preferenceHelper.settingsLock)) } + fun setDisableAnimations(disableAnimations: Boolean) { + preferenceHelper.disableAnimations = disableAnimations + disableAnimationsLiveData.postValue((preferenceHelper.disableAnimations)) + } + fun setAppLanguage(appLanguage: Constants.Language) { preferenceHelper.appLanguage = appLanguage appLanguageLiveData.postValue((preferenceHelper.appLanguage)) diff --git a/app/src/main/res/layout/fragment_settings_features.xml b/app/src/main/res/layout/fragment_settings_features.xml index d8d2d49..da2bbf2 100644 --- a/app/src/main/res/layout/fragment_settings_features.xml +++ b/app/src/main/res/layout/fragment_settings_features.xml @@ -183,6 +183,37 @@ tools:ignore="TouchTargetSizeCheck" /> + + + + + + + + + + + tools:layout="@layout/fragment_draw"> + + + + Auto Open Last App Search From Start Lock Settings + Disable Animations Size Color