aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/com/zeapo/pwdstore/utils/FragmentExtensions.kt
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/com/zeapo/pwdstore/utils/FragmentExtensions.kt')
-rw-r--r--app/src/main/java/com/zeapo/pwdstore/utils/FragmentExtensions.kt52
1 files changed, 52 insertions, 0 deletions
diff --git a/app/src/main/java/com/zeapo/pwdstore/utils/FragmentExtensions.kt b/app/src/main/java/com/zeapo/pwdstore/utils/FragmentExtensions.kt
new file mode 100644
index 00000000..01103d19
--- /dev/null
+++ b/app/src/main/java/com/zeapo/pwdstore/utils/FragmentExtensions.kt
@@ -0,0 +1,52 @@
+package com.zeapo.pwdstore.utils
+
+import android.content.pm.PackageManager
+import android.view.View
+import androidx.annotation.IdRes
+import androidx.core.content.ContextCompat
+import androidx.fragment.app.Fragment
+import androidx.fragment.app.FragmentManager
+import androidx.fragment.app.commit
+import com.zeapo.pwdstore.R
+
+fun Fragment.isPermissionGranted(permission: String): Boolean {
+ return ContextCompat.checkSelfPermission(requireActivity(), permission) == PackageManager.PERMISSION_GRANTED
+}
+
+fun Fragment.finish() = requireActivity().finish()
+
+fun FragmentManager.performTransaction(destinationFragment: Fragment, @IdRes containerViewId: Int = android.R.id.content) {
+ this.commit {
+ beginTransaction()
+ setCustomAnimations(
+ R.animator.slide_in_left,
+ R.animator.slide_out_left,
+ R.animator.slide_in_right,
+ R.animator.slide_out_right)
+ replace(containerViewId, destinationFragment)
+ }
+}
+
+fun FragmentManager.performTransactionWithBackStack(destinationFragment: Fragment, @IdRes containerViewId: Int = android.R.id.content) {
+ this.commit {
+ beginTransaction()
+ addToBackStack(destinationFragment.tag)
+ setCustomAnimations(
+ R.animator.slide_in_left,
+ R.animator.slide_out_left,
+ R.animator.slide_in_right,
+ R.animator.slide_out_right)
+ replace(containerViewId, destinationFragment)
+ }
+}
+
+fun FragmentManager.performSharedElementTransaction(destinationFragment: Fragment, views: List<View>, @IdRes containerViewId: Int = android.R.id.content) {
+ this.commit {
+ beginTransaction()
+ for (view in views) {
+ addSharedElement(view, view.transitionName)
+ }
+ addToBackStack(destinationFragment.tag)
+ replace(containerViewId, destinationFragment)
+ }
+}