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 3312839..d9ad4f5 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 @@ -1,5 +1,6 @@ package com.github.droidworksstudio.launcher.ui.widgets +import android.annotation.SuppressLint import android.content.BroadcastReceiver import android.content.Context import android.content.Intent @@ -11,6 +12,8 @@ import android.graphics.drawable.GradientDrawable import android.os.BatteryManager import android.os.Build import android.os.Bundle +import android.os.Handler +import android.os.Looper import android.util.Log import android.view.LayoutInflater import android.view.View @@ -20,6 +23,7 @@ import androidx.core.content.res.ResourcesCompat import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope import androidx.navigation.NavController +import androidx.navigation.NavOptions import androidx.navigation.fragment.findNavController import com.github.droidworksstudio.common.capitalizeEachWord import com.github.droidworksstudio.common.hasInternetPermission @@ -29,6 +33,7 @@ import com.github.droidworksstudio.launcher.R import com.github.droidworksstudio.launcher.databinding.FragmentWidgetsBinding 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.utils.Constants import dagger.hilt.android.AndroidEntryPoint @@ -82,11 +87,12 @@ class WidgetFragment : Fragment(), setupWeatherWidget() setupBatteryWidget() observeClickListener() + observeSwipeTouchListener() } private fun initializeInjectedDependencies() { context = requireContext() - binding.touchArea.hideKeyboard() + binding.mainLayout.hideKeyboard() } private fun orderWidgetsBySettings() { @@ -377,6 +383,49 @@ class WidgetFragment : Fragment(), } } + @SuppressLint("ClickableViewAccessibility") + private fun observeSwipeTouchListener() { + binding.apply { + nestedScrollView.setOnTouchListener(getSwipeGestureListener(context)) + } + } + + private fun getSwipeGestureListener(context: Context): View.OnTouchListener { + return object : OnSwipeTouchListener(context, preferenceHelper) { + override fun onSwipeLeft() { + println("getSwipeGestureListener") + super.onSwipeLeft() + val actionTypeNavOptions: NavOptions? = + if (preferenceHelper.disableAnimations) null + else appHelper.getActionType(Constants.Swipe.Left) + + Handler(Looper.getMainLooper()).post { + findNavController().navigate( + R.id.HomeFragment, + null, + actionTypeNavOptions + ) + } + } + + override fun onSwipeRight() { + println("getSwipeGestureListener") + super.onSwipeRight() + val actionTypeNavOptions: NavOptions? = + if (preferenceHelper.disableAnimations) null + else appHelper.getActionType(Constants.Swipe.Right) + + Handler(Looper.getMainLooper()).post { + findNavController().navigate( + R.id.HomeFragment, + null, + actionTypeNavOptions + ) + } + } + } + } + override fun onResume() { super.onResume() context.registerReceiver(batteryReceiver, IntentFilter(Intent.ACTION_BATTERY_CHANGED))