diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/helper/AppHelper.kt b/app/src/main/java/com/github/droidworksstudio/launcher/helper/AppHelper.kt index b75d9a9..fa95ecd 100644 --- a/app/src/main/java/com/github/droidworksstudio/launcher/helper/AppHelper.kt +++ b/app/src/main/java/com/github/droidworksstudio/launcher/helper/AppHelper.kt @@ -16,6 +16,7 @@ import android.view.Window import android.view.WindowInsets import android.widget.TextView import androidx.appcompat.widget.LinearLayoutCompat +import androidx.navigation.NavOptions import com.github.droidworksstudio.common.backupSharedPreferences import com.github.droidworksstudio.common.restoreSharedPreferences import com.github.droidworksstudio.common.showLongToast @@ -192,4 +193,53 @@ class AppHelper @Inject constructor() { fun restoreSharedPreferences(context: Context) { context.restoreSharedPreferences(context.getString(R.string.settings_backups_file)) } + + 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() + } + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/helper/FingerprintHelper.kt b/app/src/main/java/com/github/droidworksstudio/launcher/helper/FingerprintHelper.kt index ae16d95..4999d23 100644 --- a/app/src/main/java/com/github/droidworksstudio/launcher/helper/FingerprintHelper.kt +++ b/app/src/main/java/com/github/droidworksstudio/launcher/helper/FingerprintHelper.kt @@ -4,10 +4,12 @@ import androidx.biometric.BiometricManager import androidx.biometric.BiometricPrompt import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment +import androidx.navigation.NavOptions import androidx.navigation.fragment.findNavController import com.github.droidworksstudio.common.showLongToast import com.github.droidworksstudio.launcher.R import com.github.droidworksstudio.launcher.data.entities.AppInfo +import com.github.droidworksstudio.launcher.utils.Constants import javax.inject.Inject class FingerprintHelper @Inject constructor(private val fragment: Fragment) { @@ -62,7 +64,9 @@ class FingerprintHelper @Inject constructor(private val fragment: Fragment) { val biometricPrompt = BiometricPrompt(fragment, executor, object : BiometricPrompt.AuthenticationCallback() { override fun onAuthenticationSucceeded(result: BiometricPrompt.AuthenticationResult) { - fragment.findNavController().navigate(runNavigation) + val actionTypeNavOptions: NavOptions = + appHelper.getActionType(Constants.Swipe.DoubleTap) + fragment.findNavController().navigate(runNavigation, null, actionTypeNavOptions) } override fun onAuthenticationFailed() { 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 717d857..5e734ae 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 @@ -342,7 +342,7 @@ class HomeFragment : Fragment(), } Constants.Action.ShowAppList -> { - val actionTypeNavOptions: NavOptions = getActionType(actionType) + val actionTypeNavOptions: NavOptions = appHelper.getActionType(actionType) Handler(Looper.getMainLooper()).post { findNavController().navigate( R.id.action_HomeFragment_to_DrawFragment, @@ -354,7 +354,7 @@ class HomeFragment : Fragment(), Constants.Action.ShowFavoriteList -> { - val actionTypeNavOptions: NavOptions = getActionType(actionType) + val actionTypeNavOptions: NavOptions = appHelper.getActionType(actionType) Handler(Looper.getMainLooper()).post { findNavController().navigate( R.id.action_HomeFragment_to_FavoriteFragment, @@ -374,7 +374,7 @@ class HomeFragment : Fragment(), } Constants.Action.ShowWidgets -> { - val actionTypeNavOptions: NavOptions = getActionType(actionType) + val actionTypeNavOptions: NavOptions = appHelper.getActionType(actionType) Handler(Looper.getMainLooper()).post { findNavController().navigate( R.id.action_HomeFragment_to_WidgetsFragment, @@ -398,55 +398,6 @@ 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, @@ -471,7 +422,13 @@ class HomeFragment : Fragment(), } override fun onAuthenticationSucceeded(result: BiometricPrompt.AuthenticationResult) { - findNavController().navigate(R.id.action_HomeFragment_to_SettingsFragment) + val actionTypeNavOptions: NavOptions = + appHelper.getActionType(Constants.Swipe.DoubleTap) + findNavController().navigate( + R.id.action_HomeFragment_to_SettingsFragment, + null, + actionTypeNavOptions + ) } override fun onAuthenticationFailed() { @@ -482,7 +439,13 @@ class HomeFragment : Fragment(), if (preferenceHelper.settingsLock) { fingerHelper.startFingerprintSettingsAuth(R.id.action_HomeFragment_to_SettingsFragment) } else { - findNavController().navigate(R.id.action_HomeFragment_to_SettingsFragment) + val actionTypeNavOptions: NavOptions = + appHelper.getActionType(Constants.Swipe.DoubleTap) + findNavController().navigate( + R.id.action_HomeFragment_to_SettingsFragment, + null, + actionTypeNavOptions + ) } } }