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 d908e7d..717d857 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
@@ -20,6 +20,7 @@ import androidx.core.content.ContextCompat
import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
import androidx.lifecycle.lifecycleScope
+import androidx.navigation.NavOptions
import androidx.navigation.fragment.findNavController
import androidx.recyclerview.widget.StaggeredGridLayoutManager
import com.github.droidworksstudio.common.hideKeyboard
@@ -297,37 +298,37 @@ class HomeFragment : Fragment(),
@RequiresApi(Build.VERSION_CODES.P)
override fun onDoubleClick() {
super.onDoubleClick()
- handleOtherAction(preferenceHelper.doubleTapAction)
+ handleOtherAction(preferenceHelper.doubleTapAction, Constants.Swipe.DoubleTap)
}
@RequiresApi(Build.VERSION_CODES.P)
override fun onSwipeUp() {
super.onSwipeUp()
- handleOtherAction(preferenceHelper.swipeUpAction)
+ handleOtherAction(preferenceHelper.swipeUpAction, Constants.Swipe.Up)
}
@RequiresApi(Build.VERSION_CODES.P)
override fun onSwipeDown() {
super.onSwipeDown()
- handleOtherAction(preferenceHelper.swipeDownAction)
+ handleOtherAction(preferenceHelper.swipeDownAction, Constants.Swipe.Down)
}
@RequiresApi(Build.VERSION_CODES.P)
override fun onSwipeLeft() {
super.onSwipeLeft()
- handleOtherAction(preferenceHelper.swipeLeftAction)
+ handleOtherAction(preferenceHelper.swipeLeftAction, Constants.Swipe.Left)
}
@RequiresApi(Build.VERSION_CODES.P)
override fun onSwipeRight() {
super.onSwipeRight()
- handleOtherAction(preferenceHelper.swipeRightAction)
+ handleOtherAction(preferenceHelper.swipeRightAction, Constants.Swipe.Right)
}
}
}
@RequiresApi(Build.VERSION_CODES.P)
- private fun handleOtherAction(action: Constants.Action) {
+ private fun handleOtherAction(action: Constants.Action, actionType: Constants.Swipe) {
when (action) {
// Constants.Action.OpenApp -> {}
@@ -341,14 +342,25 @@ class HomeFragment : Fragment(),
}
Constants.Action.ShowAppList -> {
+ val actionTypeNavOptions: NavOptions = getActionType(actionType)
Handler(Looper.getMainLooper()).post {
- findNavController().navigate(R.id.action_HomeFragment_to_DrawFragment)
+ findNavController().navigate(
+ R.id.action_HomeFragment_to_DrawFragment,
+ null,
+ actionTypeNavOptions
+ )
}
}
+
Constants.Action.ShowFavoriteList -> {
+ val actionTypeNavOptions: NavOptions = getActionType(actionType)
Handler(Looper.getMainLooper()).post {
- findNavController().navigate(R.id.action_HomeFragment_to_FavoriteFragment)
+ findNavController().navigate(
+ R.id.action_HomeFragment_to_FavoriteFragment,
+ null,
+ actionTypeNavOptions
+ )
}
}
@@ -361,6 +373,17 @@ class HomeFragment : Fragment(),
ActionService.instance()?.showRecents()
}
+ Constants.Action.ShowWidgets -> {
+ val actionTypeNavOptions: NavOptions = getActionType(actionType)
+ Handler(Looper.getMainLooper()).post {
+ findNavController().navigate(
+ R.id.action_HomeFragment_to_WidgetsFragment,
+ null,
+ actionTypeNavOptions
+ )
+ }
+ }
+
Constants.Action.OpenPowerDialog -> {
ActionService.runAccessibilityMode(context)
ActionService.instance()?.openPowerDialog()
@@ -375,6 +398,55 @@ class HomeFragment : Fragment(),
}
}
+ private fun getActionType(actionType: Constants.Swipe): NavOptions {
+ return when (actionType) {
+ Constants.Swipe.DoubleTap -> {
+ NavOptions.Builder()
+ .setEnterAnim(R.anim.zoom_in)
+ .setExitAnim(R.anim.zoom_out)
+ .setPopEnterAnim(R.anim.zoom_in)
+ .setPopExitAnim(R.anim.zoom_out)
+ .build()
+ }
+
+ Constants.Swipe.Up -> {
+ NavOptions.Builder()
+ .setEnterAnim(R.anim.slide_in_top)
+ .setExitAnim(R.anim.slide_out_top)
+ .setPopEnterAnim(R.anim.slide_in_bottom)
+ .setPopExitAnim(R.anim.slide_out_bottom)
+ .build()
+ }
+
+ Constants.Swipe.Down -> {
+ NavOptions.Builder()
+ .setEnterAnim(R.anim.slide_in_bottom)
+ .setExitAnim(R.anim.slide_out_bottom)
+ .setPopEnterAnim(R.anim.slide_in_top)
+ .setPopExitAnim(R.anim.slide_out_top)
+ .build()
+ }
+
+ Constants.Swipe.Left -> {
+ NavOptions.Builder()
+ .setEnterAnim(R.anim.slide_in_right)
+ .setExitAnim(R.anim.slide_out_right)
+ .setPopEnterAnim(R.anim.slide_in_left)
+ .setPopExitAnim(R.anim.slide_out_left)
+ .build()
+ }
+
+ Constants.Swipe.Right -> {
+ NavOptions.Builder()
+ .setEnterAnim(R.anim.slide_in_left)
+ .setExitAnim(R.anim.slide_out_left)
+ .setPopEnterAnim(R.anim.slide_in_right)
+ .setPopExitAnim(R.anim.slide_out_right)
+ .build()
+ }
+ }
+ }
+
private fun trySettings() {
lifecycleScope.launch(Dispatchers.Main) {
biometricPrompt = BiometricPrompt(this@HomeFragment,
diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/ui/widgetmanager/WidgetManagerFragment.kt b/app/src/main/java/com/github/droidworksstudio/launcher/ui/widgetmanager/WidgetManagerFragment.kt
index 4cbb23e..47562f3 100644
--- a/app/src/main/java/com/github/droidworksstudio/launcher/ui/widgetmanager/WidgetManagerFragment.kt
+++ b/app/src/main/java/com/github/droidworksstudio/launcher/ui/widgetmanager/WidgetManagerFragment.kt
@@ -1,5 +1,6 @@
package com.github.droidworksstudio.launcher.ui.widgetmanager
+import android.annotation.SuppressLint
import android.app.Activity
import android.appwidget.AppWidgetHost
import android.appwidget.AppWidgetManager
@@ -13,10 +14,12 @@ import android.view.ViewGroup
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts
import androidx.fragment.app.Fragment
+import androidx.navigation.fragment.findNavController
import androidx.recyclerview.widget.LinearLayoutManager
import com.github.droidworksstudio.launcher.utils.Constants
import com.github.droidworksstudio.launcher.databinding.FragmentWidgetManagerBinding
import com.github.droidworksstudio.launcher.helper.AppHelper
+import com.github.droidworksstudio.launcher.listener.OnSwipeTouchListener
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject
@@ -54,6 +57,7 @@ class WidgetManagerFragment : Fragment(),
}
+ @SuppressLint("ClickableViewAccessibility")
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
appHelper.dayNightMod(requireContext(), binding.drawBackground)
super.onViewCreated(view, savedInstanceState)
@@ -125,10 +129,25 @@ class WidgetManagerFragment : Fragment(),
}
}
- // Set long-click listener on the root view
- binding.widgetParent.setOnLongClickListener {
- selectWidget()
- true // Indicate that the long-click event has been handled
+ binding.widgetParent.setOnTouchListener(getSwipeGestureListener(context))
+ }
+
+ private fun getSwipeGestureListener(context: Context): View.OnTouchListener {
+ return object : OnSwipeTouchListener(context) {
+ override fun onLongClick() {
+ super.onLongClick()
+ selectWidget()
+ }
+
+ override fun onSwipeLeft() {
+ super.onSwipeLeft()
+ findNavController().popBackStack()
+ }
+
+ override fun onSwipeRight() {
+ super.onSwipeRight()
+ findNavController().popBackStack()
+ }
}
}
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 ab84dd5..3eda27a 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
@@ -101,6 +101,7 @@ object Constants {
ShowFavoriteList,
OpenQuickSettings,
ShowRecents,
+ ShowWidgets,
OpenPowerDialog,
TakeScreenShot,
Disabled;
@@ -114,6 +115,7 @@ object Constants {
ShowFavoriteList -> context.getString(R.string.settings_actions_show_favorite_list)
OpenQuickSettings -> context.getString(R.string.settings_actions_open_quick_settings)
ShowRecents -> context.getString(R.string.settings_actions_show_recents)
+ ShowWidgets -> context.getString(R.string.settings_actions_show_widgets)
OpenPowerDialog -> context.getString(R.string.settings_actions_open_power_dialog)
TakeScreenShot -> context.getString(R.string.settings_actions_take_a_screenshot)
Disabled -> context.getString(R.string.settings_actions_disabled)
diff --git a/app/src/main/res/anim/slide_in_left.xml b/app/src/main/res/anim/slide_in_left.xml
index 78f694f..3f34ff3 100644
--- a/app/src/main/res/anim/slide_in_left.xml
+++ b/app/src/main/res/anim/slide_in_left.xml
@@ -1,7 +1,7 @@
diff --git a/app/src/main/res/anim/slide_in_right.xml b/app/src/main/res/anim/slide_in_right.xml
index 435f791..b6ba51c 100644
--- a/app/src/main/res/anim/slide_in_right.xml
+++ b/app/src/main/res/anim/slide_in_right.xml
@@ -1,7 +1,7 @@
diff --git a/app/src/main/res/anim/slide_out_left.xml b/app/src/main/res/anim/slide_out_left.xml
index f25cd8a..e607680 100644
--- a/app/src/main/res/anim/slide_out_left.xml
+++ b/app/src/main/res/anim/slide_out_left.xml
@@ -1,7 +1,7 @@
diff --git a/app/src/main/res/anim/slide_out_right.xml b/app/src/main/res/anim/slide_out_right.xml
index e61c683..5b500a8 100644
--- a/app/src/main/res/anim/slide_out_right.xml
+++ b/app/src/main/res/anim/slide_out_right.xml
@@ -1,7 +1,7 @@
diff --git a/app/src/main/res/anim/zoom_in.xml b/app/src/main/res/anim/zoom_in.xml
new file mode 100644
index 0000000..7a6d65d
--- /dev/null
+++ b/app/src/main/res/anim/zoom_in.xml
@@ -0,0 +1,10 @@
+
+
diff --git a/app/src/main/res/anim/zoom_out.xml b/app/src/main/res/anim/zoom_out.xml
new file mode 100644
index 0000000..596d5d4
--- /dev/null
+++ b/app/src/main/res/anim/zoom_out.xml
@@ -0,0 +1,10 @@
+
+
diff --git a/app/src/main/res/layout/fragment_widget_manager.xml b/app/src/main/res/layout/fragment_widget_manager.xml
index bfa97f3..b4ba0f4 100644
--- a/app/src/main/res/layout/fragment_widget_manager.xml
+++ b/app/src/main/res/layout/fragment_widget_manager.xml
@@ -6,13 +6,6 @@
android:id="@+id/draw_background"
tools:context=".ui.widgetmanager.WidgetManagerFragment">
-
-
+ app:destination="@id/DrawFragment" />
+ app:destination="@id/SettingsFragment" />
-
+ app:destination="@id/FavoriteFragment" />
+ app:destination="@id/WidgetsFragment" />
+ app:destination="@id/FavoriteFragment" />
+ app:destination="@id/HiddenFragment" />
Show Favorites List
Open Quick Settings
Show Recents
+ Show Widgets
Open Power Dialog
Take a ScreenShot
Disabled