diff --git a/app/build.gradle b/app/build.gradle index e522687cc..4934b8ba9 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -127,7 +127,7 @@ dependencies { implementation 'androidx.recyclerview:recyclerview:1.1.0-rc01' implementation 'androidx.fragment:fragment-ktx:1.2.0-rc01' implementation 'androidx.work:work-runtime:2.2.0' - implementation 'androidx.transition:transition:1.3.0-rc01' + implementation 'androidx.transition:transition:1.2.0' implementation 'androidx.multidex:multidex:2.0.1' implementation 'androidx.core:core-ktx:1.1.0' implementation 'com.google.android.material:material:1.1.0-beta01' diff --git a/app/src/main/java/com/topjohnwu/magisk/Hacks.kt b/app/src/main/java/com/topjohnwu/magisk/Hacks.kt index 0245f9591..c71e79eae 100644 --- a/app/src/main/java/com/topjohnwu/magisk/Hacks.kt +++ b/app/src/main/java/com/topjohnwu/magisk/Hacks.kt @@ -26,13 +26,14 @@ import com.topjohnwu.magisk.ui.surequest.SuRequestActivity import com.topjohnwu.magisk.utils.currentLocale import com.topjohnwu.magisk.utils.defaultLocale import java.util.* +import com.topjohnwu.magisk.redesign.MainActivity as RedesignActivity fun AssetManager.addAssetPath(path: String) { DynAPK.addAssetPath(this, path) } -fun Context.wrap(global: Boolean = true): Context - = if (global) GlobalResContext(this) else ResContext(this) +fun Context.wrap(global: Boolean = true): Context = + if (global) GlobalResContext(this) else ResContext(this) fun Context.wrapJob(): Context = object : GlobalResContext(this) { @@ -74,7 +75,7 @@ fun Context.intent(c: Class<*>): Intent { } fun resolveRes(idx: Int): Int { - return Info.stub?.resourceMap?.get(idx) ?: when(idx) { + return Info.stub?.resourceMap?.get(idx) ?: when (idx) { DynAPK.NOTIFICATION -> R.drawable.ic_magisk_outline DynAPK.DOWNLOAD -> R.drawable.sc_cloud_download DynAPK.SUPERUSER -> R.drawable.sc_superuser @@ -167,7 +168,8 @@ private class JobSchedulerWrapper(private val base: JobScheduler) : JobScheduler val name = service.className val component = ComponentName( service.packageName, - Info.stub!!.componentMap[name] ?: name) + Info.stub!!.componentMap[name] ?: name + ) // Clone the JobInfo except component val builder = JobInfo.Builder(id, component) @@ -217,7 +219,8 @@ object ClassMap { UpdateCheckService::class.java to a.g::class.java, GeneralReceiver::class.java to a.h::class.java, DownloadService::class.java to a.j::class.java, - SuRequestActivity::class.java to a.m::class.java + SuRequestActivity::class.java to a.m::class.java, + RedesignActivity::class.java to a.i::class.java ) operator fun get(c: Class<*>) = map.getOrElse(c) { throw IllegalArgumentException() } diff --git a/app/src/main/java/com/topjohnwu/magisk/extensions/XView.kt b/app/src/main/java/com/topjohnwu/magisk/extensions/XView.kt index dc7773f4a..16183dd61 100644 --- a/app/src/main/java/com/topjohnwu/magisk/extensions/XView.kt +++ b/app/src/main/java/com/topjohnwu/magisk/extensions/XView.kt @@ -18,6 +18,6 @@ fun View.addOnGlobalLayoutListener(oneShot: Boolean = false, callback: () -> Uni }) fun ViewGroup.startAnimations() { - val transition = AutoTransition().setInterpolator(FastOutSlowInInterpolator()) + val transition = AutoTransition().setInterpolator(FastOutSlowInInterpolator()).setDuration(400) TransitionManager.beginDelayedTransition(this, transition) } \ No newline at end of file diff --git a/app/src/main/java/com/topjohnwu/magisk/model/events/ViewEvents.kt b/app/src/main/java/com/topjohnwu/magisk/model/events/ViewEvents.kt index ef5eeb494..2d3342a64 100644 --- a/app/src/main/java/com/topjohnwu/magisk/model/events/ViewEvents.kt +++ b/app/src/main/java/com/topjohnwu/magisk/model/events/ViewEvents.kt @@ -123,7 +123,7 @@ class UpdateSafetyNetEvent : ViewEvent(), ContextExecutor, KoinComponent, Safety onClick { downloadInternal() } } .applyButton(MagiskDialog.ButtonType.NEGATIVE) { - titleRes = R.string.no_thanks + titleRes = android.R.string.no onClick { rxBus.post(SafetyNetResult(-2)) } } .reveal() diff --git a/app/src/main/java/com/topjohnwu/magisk/model/events/dialog/EnvFixDialog.kt b/app/src/main/java/com/topjohnwu/magisk/model/events/dialog/EnvFixDialog.kt index 660d9c9b3..6ea2b5aaf 100644 --- a/app/src/main/java/com/topjohnwu/magisk/model/events/dialog/EnvFixDialog.kt +++ b/app/src/main/java/com/topjohnwu/magisk/model/events/dialog/EnvFixDialog.kt @@ -42,7 +42,7 @@ class EnvFixDialog : DialogEvent() { } } .applyButton(MagiskDialog.ButtonType.NEGATIVE) { - titleRes = R.string.no_thanks + titleRes = android.R.string.no } .let { Unit } diff --git a/app/src/main/java/com/topjohnwu/magisk/model/events/dialog/MagiskInstallDialog.kt b/app/src/main/java/com/topjohnwu/magisk/model/events/dialog/MagiskInstallDialog.kt index fff996862..87522ee98 100644 --- a/app/src/main/java/com/topjohnwu/magisk/model/events/dialog/MagiskInstallDialog.kt +++ b/app/src/main/java/com/topjohnwu/magisk/model/events/dialog/MagiskInstallDialog.kt @@ -95,7 +95,7 @@ class MagiskInstallDialog : DialogEvent() { } } .applyButton(MagiskDialog.ButtonType.NEGATIVE) { - titleRes = R.string.no_thanks + titleRes = android.R.string.no } } diff --git a/app/src/main/java/com/topjohnwu/magisk/model/events/dialog/SuperuserRevokeDialog.kt b/app/src/main/java/com/topjohnwu/magisk/model/events/dialog/SuperuserRevokeDialog.kt index b5121d9f8..39e24d36a 100644 --- a/app/src/main/java/com/topjohnwu/magisk/model/events/dialog/SuperuserRevokeDialog.kt +++ b/app/src/main/java/com/topjohnwu/magisk/model/events/dialog/SuperuserRevokeDialog.kt @@ -17,7 +17,7 @@ class SuperuserRevokeDialog( onClick { callbacks.listenerOnSuccess() } } .applyButton(MagiskDialog.ButtonType.NEGATIVE) { - titleRes = R.string.no_thanks + titleRes = android.R.string.no } } diff --git a/app/src/main/java/com/topjohnwu/magisk/model/navigation/Navigation.kt b/app/src/main/java/com/topjohnwu/magisk/model/navigation/Navigation.kt index bf7b3c0ed..a41c58f79 100644 --- a/app/src/main/java/com/topjohnwu/magisk/model/navigation/Navigation.kt +++ b/app/src/main/java/com/topjohnwu/magisk/model/navigation/Navigation.kt @@ -3,9 +3,9 @@ package com.topjohnwu.magisk.model.navigation import android.content.Context import android.content.Intent import android.os.Build -import com.topjohnwu.magisk.ClassMap import com.topjohnwu.magisk.Config import com.topjohnwu.magisk.Const +import com.topjohnwu.magisk.intent import com.topjohnwu.magisk.redesign.install.InstallFragment import com.topjohnwu.magisk.redesign.safetynet.SafetynetFragment import com.topjohnwu.magisk.ui.MainActivity @@ -115,7 +115,7 @@ object Navigation { Config.redesign -> RedesignActivity::class.java else -> MainActivity::class.java } - Intent(context, ClassMap[destination]) + context.intent(destination) .putExtra(Const.Key.OPEN_SECTION, launchIntent.getStringExtra(Const.Key.OPEN_SECTION)) .putExtra( Const.Key.OPEN_SETTINGS, diff --git a/app/src/main/java/com/topjohnwu/magisk/redesign/compat/CompatActivity.kt b/app/src/main/java/com/topjohnwu/magisk/redesign/compat/CompatActivity.kt index f0cb17d5d..c0b58d567 100644 --- a/app/src/main/java/com/topjohnwu/magisk/redesign/compat/CompatActivity.kt +++ b/app/src/main/java/com/topjohnwu/magisk/redesign/compat/CompatActivity.kt @@ -7,10 +7,10 @@ import android.view.ViewGroup import androidx.databinding.OnRebindCallback import androidx.databinding.ViewDataBinding import androidx.fragment.app.Fragment -import androidx.transition.TransitionManager import com.topjohnwu.magisk.R import com.topjohnwu.magisk.base.BaseActivity import com.topjohnwu.magisk.extensions.snackbar +import com.topjohnwu.magisk.extensions.startAnimations import com.topjohnwu.magisk.model.events.SnackbarEvent import com.topjohnwu.magisk.model.events.ViewEvent import com.topjohnwu.magisk.model.navigation.MagiskNavigationEvent @@ -40,7 +40,7 @@ abstract class CompatActivity() { override fun onPreBind(binding: Binding): Boolean { - TransitionManager.beginDelayedTransition(binding.root as ViewGroup) + (binding.root as? ViewGroup)?.startAnimations() return super.onPreBind(binding) } }) diff --git a/app/src/main/java/com/topjohnwu/magisk/redesign/compat/CompatFragment.kt b/app/src/main/java/com/topjohnwu/magisk/redesign/compat/CompatFragment.kt index af70a6f91..b25d324d5 100644 --- a/app/src/main/java/com/topjohnwu/magisk/redesign/compat/CompatFragment.kt +++ b/app/src/main/java/com/topjohnwu/magisk/redesign/compat/CompatFragment.kt @@ -5,8 +5,8 @@ import android.view.View import android.view.ViewGroup import androidx.databinding.OnRebindCallback import androidx.databinding.ViewDataBinding -import androidx.transition.TransitionManager import com.topjohnwu.magisk.base.BaseFragment +import com.topjohnwu.magisk.extensions.startAnimations import com.topjohnwu.magisk.model.events.ViewEvent abstract class CompatFragment @@ -24,7 +24,7 @@ abstract class CompatFragment() { override fun onPreBind(binding: Binding): Boolean { - TransitionManager.beginDelayedTransition(binding.root as ViewGroup) + (binding.root as? ViewGroup)?.startAnimations() return super.onPreBind(binding) } }) diff --git a/app/src/main/java/com/topjohnwu/magisk/redesign/compat/CompatNavigationDelegate.kt b/app/src/main/java/com/topjohnwu/magisk/redesign/compat/CompatNavigationDelegate.kt index fba81411e..6a7054960 100644 --- a/app/src/main/java/com/topjohnwu/magisk/redesign/compat/CompatNavigationDelegate.kt +++ b/app/src/main/java/com/topjohnwu/magisk/redesign/compat/CompatNavigationDelegate.kt @@ -2,9 +2,9 @@ package com.topjohnwu.magisk.redesign.compat import android.content.Intent import android.os.Bundle -import androidx.fragment.app.FragmentTransaction import com.ncapdevi.fragnav.FragNavController import com.ncapdevi.fragnav.FragNavTransactionOptions +import com.topjohnwu.magisk.R import com.topjohnwu.magisk.model.navigation.MagiskAnimBuilder import com.topjohnwu.magisk.model.navigation.MagiskNavigationEvent import com.topjohnwu.magisk.model.navigation.Navigator @@ -106,10 +106,18 @@ class CompatNavigationDelegate( } private fun FragNavTransactionOptions.Builder.customAnimations(options: MagiskAnimBuilder) = - customAnimations(options.enter, options.exit, options.popEnter, options.popExit).apply { - if (!options.anySet) { - transition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN) - } + apply { + if (!options.anySet) customAnimations( + R.anim.fragment_enter, + R.anim.fragment_exit, + R.anim.fragment_enter_pop, + R.anim.fragment_exit_pop + ) else customAnimations( + options.enter, + options.exit, + options.popEnter, + options.popExit + ) } } \ No newline at end of file diff --git a/app/src/main/java/com/topjohnwu/magisk/redesign/home/HomeViewModel.kt b/app/src/main/java/com/topjohnwu/magisk/redesign/home/HomeViewModel.kt index 37cec4cb0..72496892e 100644 --- a/app/src/main/java/com/topjohnwu/magisk/redesign/home/HomeViewModel.kt +++ b/app/src/main/java/com/topjohnwu/magisk/redesign/home/HomeViewModel.kt @@ -111,7 +111,7 @@ class HomeViewModel( stateVersionUpdateMagisk.value = when { info.magisk.isObsolete -> "%s > %s".format( - Info.magiskVersionString.clipVersion(), + Info.env.magiskVersionString.clipVersion(), info.magisk.version.clipVersion() ) else -> "" @@ -168,9 +168,9 @@ class HomeViewModel( @Suppress("unused") val MagiskJson.isInstalled - get() = Info.magiskVersionCode > 0 + get() = Info.env.magiskVersionCode > 0 val MagiskJson.isObsolete - get() = Info.magiskVersionCode < versionCode && isInstalled + get() = Info.env.magiskVersionCode < versionCode && isInstalled val ManagerJson.isUpdateChannelCorrect get() = versionCode > 0 val ManagerJson.isObsolete diff --git a/app/src/main/res/anim/fragment_enter.xml b/app/src/main/res/anim/fragment_enter.xml new file mode 100644 index 000000000..affbb54b9 --- /dev/null +++ b/app/src/main/res/anim/fragment_enter.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/fragment_enter_pop.xml b/app/src/main/res/anim/fragment_enter_pop.xml new file mode 100644 index 000000000..6a1d9f37c --- /dev/null +++ b/app/src/main/res/anim/fragment_enter_pop.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/fragment_exit.xml b/app/src/main/res/anim/fragment_exit.xml new file mode 100644 index 000000000..59ca28476 --- /dev/null +++ b/app/src/main/res/anim/fragment_exit.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/fragment_exit_pop.xml b/app/src/main/res/anim/fragment_exit_pop.xml new file mode 100644 index 000000000..c39aaf6fb --- /dev/null +++ b/app/src/main/res/anim/fragment_exit_pop.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main_md2.xml b/app/src/main/res/layout/activity_main_md2.xml index e299f10e3..64bfeba23 100644 --- a/app/src/main/res/layout/activity_main_md2.xml +++ b/app/src/main/res/layout/activity_main_md2.xml @@ -42,24 +42,6 @@ - - @@ -613,7 +613,7 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/home_manager_extra_code_title" /> - + Manager - Magisk System Yes