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