11package com.github.droidworksstudio.launcher.ui.settings
22
3+ import android.annotation.SuppressLint
34import android.content.Context
45import android.os.Bundle
6+ import android.os.Handler
7+ import android.os.Looper
58import android.view.LayoutInflater
69import android.view.View
710import android.view.ViewGroup
811import androidx.fragment.app.Fragment
912import androidx.navigation.NavController
13+ import androidx.navigation.NavOptions
1014import androidx.navigation.fragment.findNavController
1115import com.github.droidworksstudio.launcher.R
1216import com.github.droidworksstudio.launcher.databinding.FragmentSettingsBinding
1317import com.github.droidworksstudio.launcher.helper.AppHelper
1418import com.github.droidworksstudio.launcher.helper.PreferenceHelper
19+ import com.github.droidworksstudio.launcher.listener.OnSwipeTouchListener
1520import com.github.droidworksstudio.launcher.listener.ScrollEventListener
1621import com.github.droidworksstudio.launcher.repository.AppInfoRepository
22+ import com.github.droidworksstudio.launcher.utils.Constants
1723import dagger.hilt.android.AndroidEntryPoint
1824import javax.inject.Inject
1925
@@ -58,6 +64,7 @@ class SettingsFragment : Fragment(),
5864 context = requireContext()
5965
6066 observeClickListener()
67+ observeSwipeTouchListener()
6168 }
6269
6370 private fun observeClickListener () {
@@ -70,10 +77,9 @@ class SettingsFragment : Fragment(),
7077 navController.navigate(R .id.SettingsLookFeelFragment )
7178 }
7279
73- widgetsSettings
74- .setOnClickListener {
75- navController.navigate(R .id.SettingsWidgetFragment )
76- }
80+ widgetsSettings.setOnClickListener {
81+ navController.navigate(R .id.SettingsWidgetFragment )
82+ }
7783
7884 favoriteApps.setOnClickListener {
7985 navController.navigate(R .id.FavoriteFragment )
@@ -89,4 +95,44 @@ class SettingsFragment : Fragment(),
8995 }
9096 }
9197
98+ @SuppressLint(" ClickableViewAccessibility" )
99+ private fun observeSwipeTouchListener () {
100+ binding.apply {
101+ nestedScrollView.setOnTouchListener(getSwipeGestureListener(context))
102+ }
103+ }
104+
105+ private fun getSwipeGestureListener (context : Context ): View .OnTouchListener {
106+ return object : OnSwipeTouchListener (context, preferenceHelper) {
107+ override fun onSwipeLeft () {
108+ super .onSwipeLeft()
109+ val actionTypeNavOptions: NavOptions ? =
110+ if (preferenceHelper.disableAnimations) null
111+ else appHelper.getActionType(Constants .Swipe .Left )
112+
113+ Handler (Looper .getMainLooper()).post {
114+ findNavController().navigate(
115+ R .id.HomeFragment ,
116+ null ,
117+ actionTypeNavOptions
118+ )
119+ }
120+ }
121+
122+ override fun onSwipeRight () {
123+ super .onSwipeRight()
124+ val actionTypeNavOptions: NavOptions ? =
125+ if (preferenceHelper.disableAnimations) null
126+ else appHelper.getActionType(Constants .Swipe .Right )
127+
128+ Handler (Looper .getMainLooper()).post {
129+ findNavController().navigate(
130+ R .id.HomeFragment ,
131+ null ,
132+ actionTypeNavOptions
133+ )
134+ }
135+ }
136+ }
137+ }
92138}
0 commit comments