mirror of
https://github.com/topjohnwu/Magisk.git
synced 2025-04-22 12:41:33 +00:00
Moar refactoring
This commit is contained in:
parent
1fcf35ebeb
commit
7c319f5fc3
@ -15,11 +15,7 @@ import com.topjohnwu.magisk.BR
|
|||||||
import com.topjohnwu.magisk.R
|
import com.topjohnwu.magisk.R
|
||||||
import com.topjohnwu.magisk.core.Info
|
import com.topjohnwu.magisk.core.Info
|
||||||
import com.topjohnwu.magisk.core.base.BaseActivity
|
import com.topjohnwu.magisk.core.base.BaseActivity
|
||||||
import com.topjohnwu.magisk.events.BackPressEvent
|
import com.topjohnwu.magisk.events.*
|
||||||
import com.topjohnwu.magisk.events.PermissionEvent
|
|
||||||
import com.topjohnwu.magisk.events.SnackbarEvent
|
|
||||||
import com.topjohnwu.magisk.events.ViewActionEvent
|
|
||||||
import com.topjohnwu.magisk.model.navigation.NavigationWrapper
|
|
||||||
import com.topjohnwu.magisk.utils.ObservableHost
|
import com.topjohnwu.magisk.utils.ObservableHost
|
||||||
import com.topjohnwu.magisk.utils.set
|
import com.topjohnwu.magisk.utils.set
|
||||||
import kotlinx.coroutines.Job
|
import kotlinx.coroutines.Job
|
||||||
@ -111,7 +107,7 @@ abstract class BaseViewModel(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun NavDirections.publish() {
|
fun NavDirections.publish() {
|
||||||
_viewEvents.postValue(NavigationWrapper(this))
|
_viewEvents.postValue(NavigationEvent(this))
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -82,4 +82,10 @@ object Const {
|
|||||||
const val UNINSTALL = "uninstall"
|
const val UNINSTALL = "uninstall"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
object Nav {
|
||||||
|
const val SETTINGS = "settings"
|
||||||
|
const val HIDE = "hide"
|
||||||
|
const val MODULES = "modules"
|
||||||
|
const val SUPERUSER = "superuser"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,13 +3,13 @@ package com.topjohnwu.magisk.core
|
|||||||
import android.content.ContextWrapper
|
import android.content.ContextWrapper
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import com.topjohnwu.magisk.core.base.BaseReceiver
|
import com.topjohnwu.magisk.core.base.BaseReceiver
|
||||||
|
import com.topjohnwu.magisk.core.download.Configuration
|
||||||
import com.topjohnwu.magisk.core.download.DownloadService
|
import com.topjohnwu.magisk.core.download.DownloadService
|
||||||
|
import com.topjohnwu.magisk.core.download.DownloadSubject
|
||||||
import com.topjohnwu.magisk.core.magiskdb.PolicyDao
|
import com.topjohnwu.magisk.core.magiskdb.PolicyDao
|
||||||
import com.topjohnwu.magisk.core.model.ManagerJson
|
import com.topjohnwu.magisk.core.model.ManagerJson
|
||||||
import com.topjohnwu.magisk.core.su.SuCallbackHandler
|
import com.topjohnwu.magisk.core.su.SuCallbackHandler
|
||||||
import com.topjohnwu.magisk.ktx.reboot
|
import com.topjohnwu.magisk.ktx.reboot
|
||||||
import com.topjohnwu.magisk.model.internal.Configuration
|
|
||||||
import com.topjohnwu.magisk.model.internal.DownloadSubject
|
|
||||||
import com.topjohnwu.magisk.view.Shortcuts
|
import com.topjohnwu.magisk.view.Shortcuts
|
||||||
import com.topjohnwu.superuser.Shell
|
import com.topjohnwu.superuser.Shell
|
||||||
import kotlinx.coroutines.GlobalScope
|
import kotlinx.coroutines.GlobalScope
|
||||||
|
@ -2,12 +2,14 @@ package com.topjohnwu.magisk.core
|
|||||||
|
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.content.Intent
|
||||||
|
import android.os.Build
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import com.topjohnwu.magisk.BuildConfig
|
import com.topjohnwu.magisk.BuildConfig
|
||||||
import com.topjohnwu.magisk.R
|
import com.topjohnwu.magisk.R
|
||||||
import com.topjohnwu.magisk.data.network.GithubRawServices
|
import com.topjohnwu.magisk.data.network.GithubRawServices
|
||||||
import com.topjohnwu.magisk.ktx.get
|
import com.topjohnwu.magisk.ktx.get
|
||||||
import com.topjohnwu.magisk.model.navigation.Navigation
|
import com.topjohnwu.magisk.ui.MainActivity
|
||||||
import com.topjohnwu.magisk.view.Notifications
|
import com.topjohnwu.magisk.view.Notifications
|
||||||
import com.topjohnwu.magisk.view.Shortcuts
|
import com.topjohnwu.magisk.view.Shortcuts
|
||||||
import com.topjohnwu.superuser.Shell
|
import com.topjohnwu.superuser.Shell
|
||||||
@ -58,11 +60,21 @@ open class SplashActivity : Activity() {
|
|||||||
get<GithubRawServices>()
|
get<GithubRawServices>()
|
||||||
|
|
||||||
DONE = true
|
DONE = true
|
||||||
Navigation.start(intent, this)
|
|
||||||
|
val section = if (intent.action == ACTION_APPLICATION_PREFERENCES) Const.Nav.SETTINGS
|
||||||
|
else intent.getStringExtra(Const.Key.OPEN_SECTION)
|
||||||
|
|
||||||
|
intent<MainActivity>()
|
||||||
|
.putExtra(Const.Key.OPEN_SECTION, section)
|
||||||
|
.also { startActivity(it) }
|
||||||
|
|
||||||
finish()
|
finish()
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
private val ACTION_APPLICATION_PREFERENCES get() =
|
||||||
|
if (Build.VERSION.SDK_INT >= 24) Intent.ACTION_APPLICATION_PREFERENCES
|
||||||
|
else "???"
|
||||||
|
|
||||||
var DONE = false
|
var DONE = false
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package com.topjohnwu.magisk.model.internal
|
package com.topjohnwu.magisk.core.download
|
||||||
|
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Parcelable
|
import android.os.Parcelable
|
@ -8,15 +8,14 @@ import android.content.Intent
|
|||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.webkit.MimeTypeMap
|
import android.webkit.MimeTypeMap
|
||||||
import com.topjohnwu.magisk.R
|
import com.topjohnwu.magisk.R
|
||||||
|
import com.topjohnwu.magisk.core.download.Configuration.*
|
||||||
|
import com.topjohnwu.magisk.core.download.Configuration.Flash.Secondary
|
||||||
|
import com.topjohnwu.magisk.core.download.DownloadSubject.*
|
||||||
import com.topjohnwu.magisk.core.intent
|
import com.topjohnwu.magisk.core.intent
|
||||||
import com.topjohnwu.magisk.core.tasks.EnvFixTask
|
import com.topjohnwu.magisk.core.tasks.EnvFixTask
|
||||||
import com.topjohnwu.magisk.ktx.chooser
|
import com.topjohnwu.magisk.ktx.chooser
|
||||||
import com.topjohnwu.magisk.ktx.exists
|
import com.topjohnwu.magisk.ktx.exists
|
||||||
import com.topjohnwu.magisk.ktx.provide
|
import com.topjohnwu.magisk.ktx.provide
|
||||||
import com.topjohnwu.magisk.model.internal.Configuration.*
|
|
||||||
import com.topjohnwu.magisk.model.internal.Configuration.Flash.Secondary
|
|
||||||
import com.topjohnwu.magisk.model.internal.DownloadSubject
|
|
||||||
import com.topjohnwu.magisk.model.internal.DownloadSubject.*
|
|
||||||
import com.topjohnwu.magisk.ui.flash.FlashFragment
|
import com.topjohnwu.magisk.ui.flash.FlashFragment
|
||||||
import com.topjohnwu.magisk.utils.APKInstall
|
import com.topjohnwu.magisk.utils.APKInstall
|
||||||
import org.koin.core.get
|
import org.koin.core.get
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package com.topjohnwu.magisk.model.internal
|
package com.topjohnwu.magisk.core.download
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.os.Parcelable
|
import android.os.Parcelable
|
@ -6,13 +6,12 @@ import com.topjohnwu.magisk.ProcessPhoenix
|
|||||||
import com.topjohnwu.magisk.R
|
import com.topjohnwu.magisk.R
|
||||||
import com.topjohnwu.magisk.core.Config
|
import com.topjohnwu.magisk.core.Config
|
||||||
import com.topjohnwu.magisk.core.Info
|
import com.topjohnwu.magisk.core.Info
|
||||||
|
import com.topjohnwu.magisk.core.download.Configuration.APK.Restore
|
||||||
|
import com.topjohnwu.magisk.core.download.Configuration.APK.Upgrade
|
||||||
import com.topjohnwu.magisk.core.intent
|
import com.topjohnwu.magisk.core.intent
|
||||||
import com.topjohnwu.magisk.core.isRunningAsStub
|
import com.topjohnwu.magisk.core.isRunningAsStub
|
||||||
import com.topjohnwu.magisk.core.utils.PatchAPK
|
import com.topjohnwu.magisk.core.utils.PatchAPK
|
||||||
import com.topjohnwu.magisk.ktx.writeTo
|
import com.topjohnwu.magisk.ktx.writeTo
|
||||||
import com.topjohnwu.magisk.model.internal.Configuration.APK.Restore
|
|
||||||
import com.topjohnwu.magisk.model.internal.Configuration.APK.Upgrade
|
|
||||||
import com.topjohnwu.magisk.model.internal.DownloadSubject
|
|
||||||
import com.topjohnwu.superuser.Shell
|
import com.topjohnwu.superuser.Shell
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
|
@ -6,13 +6,12 @@ import androidx.lifecycle.LiveData
|
|||||||
import androidx.lifecycle.MutableLiveData
|
import androidx.lifecycle.MutableLiveData
|
||||||
import com.topjohnwu.magisk.R
|
import com.topjohnwu.magisk.R
|
||||||
import com.topjohnwu.magisk.core.ForegroundTracker
|
import com.topjohnwu.magisk.core.ForegroundTracker
|
||||||
|
import com.topjohnwu.magisk.core.download.DownloadSubject.Magisk
|
||||||
|
import com.topjohnwu.magisk.core.download.DownloadSubject.Module
|
||||||
import com.topjohnwu.magisk.core.utils.ProgressInputStream
|
import com.topjohnwu.magisk.core.utils.ProgressInputStream
|
||||||
import com.topjohnwu.magisk.data.network.GithubRawServices
|
import com.topjohnwu.magisk.data.network.GithubRawServices
|
||||||
import com.topjohnwu.magisk.ktx.checkSum
|
import com.topjohnwu.magisk.ktx.checkSum
|
||||||
import com.topjohnwu.magisk.ktx.writeTo
|
import com.topjohnwu.magisk.ktx.writeTo
|
||||||
import com.topjohnwu.magisk.model.internal.DownloadSubject
|
|
||||||
import com.topjohnwu.magisk.model.internal.DownloadSubject.Magisk
|
|
||||||
import com.topjohnwu.magisk.model.internal.DownloadSubject.Module
|
|
||||||
import com.topjohnwu.magisk.view.Notifications
|
import com.topjohnwu.magisk.view.Notifications
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import okhttp3.ResponseBody
|
import okhttp3.ResponseBody
|
||||||
|
@ -3,10 +3,8 @@ package com.topjohnwu.magisk.events
|
|||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import com.topjohnwu.magisk.arch.ActivityExecutor
|
import androidx.navigation.NavDirections
|
||||||
import com.topjohnwu.magisk.arch.ContextExecutor
|
import com.topjohnwu.magisk.arch.*
|
||||||
import com.topjohnwu.magisk.arch.ViewEvent
|
|
||||||
import com.topjohnwu.magisk.arch.ViewEventWithScope
|
|
||||||
import com.topjohnwu.magisk.core.base.BaseActivity
|
import com.topjohnwu.magisk.core.base.BaseActivity
|
||||||
import com.topjohnwu.magisk.core.model.module.Repo
|
import com.topjohnwu.magisk.core.model.module.Repo
|
||||||
import com.topjohnwu.magisk.view.MarkDownWindow
|
import com.topjohnwu.magisk.view.MarkDownWindow
|
||||||
@ -74,3 +72,13 @@ class RequestFileEvent : ViewEvent(), ActivityExecutor {
|
|||||||
?.data
|
?.data
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class NavigationEvent(
|
||||||
|
private val directions: NavDirections
|
||||||
|
) : ViewEvent(), ActivityExecutor {
|
||||||
|
override fun invoke(activity: BaseActivity) {
|
||||||
|
(activity as? BaseUIActivity<*, *>)?.apply {
|
||||||
|
directions.navigate()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -6,9 +6,9 @@ import android.content.Intent
|
|||||||
import android.content.IntentFilter
|
import android.content.IntentFilter
|
||||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager
|
import androidx.localbroadcastmanager.content.LocalBroadcastManager
|
||||||
import com.topjohnwu.magisk.R
|
import com.topjohnwu.magisk.R
|
||||||
|
import com.topjohnwu.magisk.core.download.Configuration.EnvFix
|
||||||
import com.topjohnwu.magisk.core.download.DownloadService
|
import com.topjohnwu.magisk.core.download.DownloadService
|
||||||
import com.topjohnwu.magisk.model.internal.Configuration.EnvFix
|
import com.topjohnwu.magisk.core.download.DownloadSubject.Magisk
|
||||||
import com.topjohnwu.magisk.model.internal.DownloadSubject.Magisk
|
|
||||||
import com.topjohnwu.magisk.view.MagiskDialog
|
import com.topjohnwu.magisk.view.MagiskDialog
|
||||||
|
|
||||||
class EnvFixDialog : DialogEvent() {
|
class EnvFixDialog : DialogEvent() {
|
||||||
|
@ -2,10 +2,10 @@ package com.topjohnwu.magisk.events.dialog
|
|||||||
|
|
||||||
import com.topjohnwu.magisk.R
|
import com.topjohnwu.magisk.R
|
||||||
import com.topjohnwu.magisk.core.Info
|
import com.topjohnwu.magisk.core.Info
|
||||||
|
import com.topjohnwu.magisk.core.download.Configuration
|
||||||
import com.topjohnwu.magisk.core.download.DownloadService
|
import com.topjohnwu.magisk.core.download.DownloadService
|
||||||
|
import com.topjohnwu.magisk.core.download.DownloadSubject
|
||||||
import com.topjohnwu.magisk.ktx.res
|
import com.topjohnwu.magisk.ktx.res
|
||||||
import com.topjohnwu.magisk.model.internal.Configuration
|
|
||||||
import com.topjohnwu.magisk.model.internal.DownloadSubject
|
|
||||||
import com.topjohnwu.magisk.view.MagiskDialog
|
import com.topjohnwu.magisk.view.MagiskDialog
|
||||||
import com.topjohnwu.magisk.view.MarkDownWindow
|
import com.topjohnwu.magisk.view.MarkDownWindow
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
package com.topjohnwu.magisk.events.dialog
|
package com.topjohnwu.magisk.events.dialog
|
||||||
|
|
||||||
import com.topjohnwu.magisk.R
|
import com.topjohnwu.magisk.R
|
||||||
|
import com.topjohnwu.magisk.core.download.Configuration
|
||||||
import com.topjohnwu.magisk.core.download.DownloadService
|
import com.topjohnwu.magisk.core.download.DownloadService
|
||||||
|
import com.topjohnwu.magisk.core.download.DownloadSubject
|
||||||
import com.topjohnwu.magisk.core.model.module.Repo
|
import com.topjohnwu.magisk.core.model.module.Repo
|
||||||
import com.topjohnwu.magisk.model.internal.Configuration
|
|
||||||
import com.topjohnwu.magisk.model.internal.DownloadSubject
|
|
||||||
import com.topjohnwu.magisk.view.MagiskDialog
|
import com.topjohnwu.magisk.view.MagiskDialog
|
||||||
|
|
||||||
class ModuleInstallDialog(private val item: Repo) : DialogEvent() {
|
class ModuleInstallDialog(private val item: Repo) : DialogEvent() {
|
||||||
|
@ -3,9 +3,9 @@ package com.topjohnwu.magisk.events.dialog
|
|||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import com.topjohnwu.magisk.R
|
import com.topjohnwu.magisk.R
|
||||||
import com.topjohnwu.magisk.core.Info
|
import com.topjohnwu.magisk.core.Info
|
||||||
|
import com.topjohnwu.magisk.core.download.Configuration
|
||||||
import com.topjohnwu.magisk.core.download.DownloadService
|
import com.topjohnwu.magisk.core.download.DownloadService
|
||||||
import com.topjohnwu.magisk.model.internal.Configuration
|
import com.topjohnwu.magisk.core.download.DownloadSubject
|
||||||
import com.topjohnwu.magisk.model.internal.DownloadSubject
|
|
||||||
import com.topjohnwu.magisk.utils.Utils
|
import com.topjohnwu.magisk.utils.Utils
|
||||||
import com.topjohnwu.magisk.view.MagiskDialog
|
import com.topjohnwu.magisk.view.MagiskDialog
|
||||||
import com.topjohnwu.superuser.Shell
|
import com.topjohnwu.superuser.Shell
|
||||||
|
@ -1,30 +0,0 @@
|
|||||||
package com.topjohnwu.magisk.model.navigation
|
|
||||||
|
|
||||||
import android.content.Context
|
|
||||||
import android.content.Intent
|
|
||||||
import android.os.Build
|
|
||||||
import com.topjohnwu.magisk.core.Const
|
|
||||||
import com.topjohnwu.magisk.core.intent
|
|
||||||
import com.topjohnwu.magisk.ui.MainActivity
|
|
||||||
|
|
||||||
object Navigation {
|
|
||||||
|
|
||||||
fun start(launchIntent: Intent, context: Context) {
|
|
||||||
context.intent<MainActivity>()
|
|
||||||
.putExtra(
|
|
||||||
Const.Key.OPEN_SECTION, launchIntent.getStringExtra(
|
|
||||||
Const.Key.OPEN_SECTION))
|
|
||||||
.putExtra(
|
|
||||||
Const.Key.OPEN_SETTINGS,
|
|
||||||
launchIntent.action == ACTION_APPLICATION_PREFERENCES
|
|
||||||
)
|
|
||||||
.also { context.startActivity(it) }
|
|
||||||
}
|
|
||||||
|
|
||||||
private val ACTION_APPLICATION_PREFERENCES
|
|
||||||
get() = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
|
||||||
Intent.ACTION_APPLICATION_PREFERENCES
|
|
||||||
} else {
|
|
||||||
"cannot be null, cannot be empty"
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,18 +0,0 @@
|
|||||||
package com.topjohnwu.magisk.model.navigation
|
|
||||||
|
|
||||||
import androidx.navigation.NavDirections
|
|
||||||
import com.topjohnwu.magisk.arch.ActivityExecutor
|
|
||||||
import com.topjohnwu.magisk.arch.BaseUIActivity
|
|
||||||
import com.topjohnwu.magisk.arch.ViewEvent
|
|
||||||
import com.topjohnwu.magisk.core.base.BaseActivity
|
|
||||||
|
|
||||||
class NavigationWrapper(
|
|
||||||
private val directions: NavDirections
|
|
||||||
) : ViewEvent(), ActivityExecutor {
|
|
||||||
override fun invoke(activity: BaseActivity) {
|
|
||||||
if (activity !is BaseUIActivity<*, *>) return
|
|
||||||
activity.apply {
|
|
||||||
directions.navigate()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -44,8 +44,7 @@ open class MainActivity : BaseUIActivity<MainViewModel, ActivityMainMd2Binding>(
|
|||||||
binding.mainNavigation.setPadding(0)
|
binding.mainNavigation.setPadding(0)
|
||||||
}
|
}
|
||||||
|
|
||||||
protected var isRoot = true
|
private var isRootFragment = true
|
||||||
private set
|
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
@ -61,8 +60,8 @@ open class MainActivity : BaseUIActivity<MainViewModel, ActivityMainMd2Binding>(
|
|||||||
|
|
||||||
window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE)
|
window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE)
|
||||||
|
|
||||||
navigation?.addOnDestinationChangedListener { controller, destination, arguments ->
|
navigation?.addOnDestinationChangedListener { _, destination, _ ->
|
||||||
isRoot = when (destination.id) {
|
isRootFragment = when (destination.id) {
|
||||||
R.id.homeFragment,
|
R.id.homeFragment,
|
||||||
R.id.modulesFragment,
|
R.id.modulesFragment,
|
||||||
R.id.superuserFragment,
|
R.id.superuserFragment,
|
||||||
@ -70,8 +69,8 @@ open class MainActivity : BaseUIActivity<MainViewModel, ActivityMainMd2Binding>(
|
|||||||
else -> false
|
else -> false
|
||||||
}
|
}
|
||||||
|
|
||||||
setDisplayHomeAsUpEnabled(!isRoot)
|
setDisplayHomeAsUpEnabled(!isRootFragment)
|
||||||
requestNavigationHidden(!isRoot)
|
requestNavigationHidden(!isRootFragment)
|
||||||
|
|
||||||
binding.mainNavigation.menu.forEach {
|
binding.mainNavigation.menu.forEach {
|
||||||
if (it.itemId == destination.id) {
|
if (it.itemId == destination.id) {
|
||||||
@ -89,13 +88,7 @@ open class MainActivity : BaseUIActivity<MainViewModel, ActivityMainMd2Binding>(
|
|||||||
behavior = HideBottomViewOnScrollBehavior<MaterialCardView>()
|
behavior = HideBottomViewOnScrollBehavior<MaterialCardView>()
|
||||||
}
|
}
|
||||||
binding.mainNavigation.setOnNavigationItemSelectedListener {
|
binding.mainNavigation.setOnNavigationItemSelectedListener {
|
||||||
when (it.itemId) {
|
getScreen(it.itemId)?.navigate()
|
||||||
R.id.homeFragment -> MainDirections.actionHomeFragment()
|
|
||||||
R.id.modulesFragment -> MainDirections.actionModuleFragment()
|
|
||||||
R.id.superuserFragment -> MainDirections.actionSuperuserFragment()
|
|
||||||
R.id.logFragment -> MainDirections.actionLogFragment()
|
|
||||||
else -> throw NotImplementedError("Id ${it.itemId} is not defined as selectable")
|
|
||||||
}.navigate()
|
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
binding.mainNavigation.setOnNavigationItemReselectedListener {
|
binding.mainNavigation.setOnNavigationItemReselectedListener {
|
||||||
@ -104,16 +97,11 @@ open class MainActivity : BaseUIActivity<MainViewModel, ActivityMainMd2Binding>(
|
|||||||
|
|
||||||
binding.mainNavigation.viewTreeObserver.addOnGlobalLayoutListener(navObserver)
|
binding.mainNavigation.viewTreeObserver.addOnGlobalLayoutListener(navObserver)
|
||||||
|
|
||||||
when {
|
if (intent.hasExtra(Const.Key.OPEN_SECTION))
|
||||||
intent.hasExtra(Const.Key.OPEN_SECTION) ->
|
|
||||||
getScreen(intent.getStringExtra(Const.Key.OPEN_SECTION))?.navigate()
|
getScreen(intent.getStringExtra(Const.Key.OPEN_SECTION))?.navigate()
|
||||||
intent.getBooleanExtra(Const.Key.OPEN_SETTINGS, false) ->
|
|
||||||
HomeFragmentDirections.actionHomeFragmentToSettingsFragment().navigate()
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (savedInstanceState != null) {
|
if (savedInstanceState != null) {
|
||||||
if (!isRoot) {
|
if (!isRootFragment) {
|
||||||
requestNavigationHidden()
|
requestNavigationHidden()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -171,11 +159,21 @@ open class MainActivity : BaseUIActivity<MainViewModel, ActivityMainMd2Binding>(
|
|||||||
|
|
||||||
private fun getScreen(name: String?): NavDirections? {
|
private fun getScreen(name: String?): NavDirections? {
|
||||||
return when (name) {
|
return when (name) {
|
||||||
"superuser" -> HomeFragmentDirections.actionSuperuserFragment()
|
Const.Nav.SUPERUSER -> HomeFragmentDirections.actionSuperuserFragment()
|
||||||
"magiskhide" -> HomeFragmentDirections.actionHideFragment()
|
Const.Nav.HIDE -> HomeFragmentDirections.actionHideFragment()
|
||||||
"modules" -> HomeFragmentDirections.actionModuleFragment()
|
Const.Nav.MODULES -> HomeFragmentDirections.actionModuleFragment()
|
||||||
null -> null
|
Const.Nav.SETTINGS -> HomeFragmentDirections.actionHomeFragmentToSettingsFragment()
|
||||||
else -> TODO("Implement screen shortcut \"$name\"")
|
else -> null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun getScreen(id: Int): NavDirections? {
|
||||||
|
return when (id) {
|
||||||
|
R.id.homeFragment -> MainDirections.actionHomeFragment()
|
||||||
|
R.id.modulesFragment -> MainDirections.actionModuleFragment()
|
||||||
|
R.id.superuserFragment -> MainDirections.actionSuperuserFragment()
|
||||||
|
R.id.logFragment -> MainDirections.actionLogFragment()
|
||||||
|
else -> null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,6 +12,7 @@ import com.topjohnwu.magisk.arch.itemBindingOf
|
|||||||
import com.topjohnwu.magisk.core.Config
|
import com.topjohnwu.magisk.core.Config
|
||||||
import com.topjohnwu.magisk.core.Info
|
import com.topjohnwu.magisk.core.Info
|
||||||
import com.topjohnwu.magisk.core.base.BaseActivity
|
import com.topjohnwu.magisk.core.base.BaseActivity
|
||||||
|
import com.topjohnwu.magisk.core.download.DownloadSubject.Manager
|
||||||
import com.topjohnwu.magisk.core.download.RemoteFileService
|
import com.topjohnwu.magisk.core.download.RemoteFileService
|
||||||
import com.topjohnwu.magisk.core.model.MagiskJson
|
import com.topjohnwu.magisk.core.model.MagiskJson
|
||||||
import com.topjohnwu.magisk.core.model.ManagerJson
|
import com.topjohnwu.magisk.core.model.ManagerJson
|
||||||
@ -23,7 +24,6 @@ import com.topjohnwu.magisk.events.dialog.UninstallDialog
|
|||||||
import com.topjohnwu.magisk.ktx.await
|
import com.topjohnwu.magisk.ktx.await
|
||||||
import com.topjohnwu.magisk.ktx.packageName
|
import com.topjohnwu.magisk.ktx.packageName
|
||||||
import com.topjohnwu.magisk.ktx.res
|
import com.topjohnwu.magisk.ktx.res
|
||||||
import com.topjohnwu.magisk.model.internal.DownloadSubject.Manager
|
|
||||||
import com.topjohnwu.magisk.utils.set
|
import com.topjohnwu.magisk.utils.set
|
||||||
import com.topjohnwu.superuser.Shell
|
import com.topjohnwu.superuser.Shell
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
@ -8,13 +8,13 @@ import com.topjohnwu.magisk.BR
|
|||||||
import com.topjohnwu.magisk.R
|
import com.topjohnwu.magisk.R
|
||||||
import com.topjohnwu.magisk.arch.BaseViewModel
|
import com.topjohnwu.magisk.arch.BaseViewModel
|
||||||
import com.topjohnwu.magisk.core.Info
|
import com.topjohnwu.magisk.core.Info
|
||||||
|
import com.topjohnwu.magisk.core.download.Configuration
|
||||||
import com.topjohnwu.magisk.core.download.DownloadService
|
import com.topjohnwu.magisk.core.download.DownloadService
|
||||||
|
import com.topjohnwu.magisk.core.download.DownloadSubject
|
||||||
import com.topjohnwu.magisk.core.download.RemoteFileService
|
import com.topjohnwu.magisk.core.download.RemoteFileService
|
||||||
import com.topjohnwu.magisk.data.repository.StringRepository
|
import com.topjohnwu.magisk.data.repository.StringRepository
|
||||||
import com.topjohnwu.magisk.events.RequestFileEvent
|
import com.topjohnwu.magisk.events.RequestFileEvent
|
||||||
import com.topjohnwu.magisk.events.dialog.SecondSlotWarningDialog
|
import com.topjohnwu.magisk.events.dialog.SecondSlotWarningDialog
|
||||||
import com.topjohnwu.magisk.model.internal.Configuration
|
|
||||||
import com.topjohnwu.magisk.model.internal.DownloadSubject
|
|
||||||
import com.topjohnwu.magisk.utils.Utils
|
import com.topjohnwu.magisk.utils.Utils
|
||||||
import com.topjohnwu.magisk.utils.set
|
import com.topjohnwu.magisk.utils.set
|
||||||
import com.topjohnwu.superuser.Shell
|
import com.topjohnwu.superuser.Shell
|
||||||
|
@ -8,6 +8,7 @@ import com.topjohnwu.magisk.BR
|
|||||||
import com.topjohnwu.magisk.R
|
import com.topjohnwu.magisk.R
|
||||||
import com.topjohnwu.magisk.arch.*
|
import com.topjohnwu.magisk.arch.*
|
||||||
import com.topjohnwu.magisk.core.Config
|
import com.topjohnwu.magisk.core.Config
|
||||||
|
import com.topjohnwu.magisk.core.download.DownloadSubject
|
||||||
import com.topjohnwu.magisk.core.download.RemoteFileService
|
import com.topjohnwu.magisk.core.download.RemoteFileService
|
||||||
import com.topjohnwu.magisk.core.model.module.Module
|
import com.topjohnwu.magisk.core.model.module.Module
|
||||||
import com.topjohnwu.magisk.core.tasks.RepoUpdater
|
import com.topjohnwu.magisk.core.tasks.RepoUpdater
|
||||||
@ -19,7 +20,6 @@ import com.topjohnwu.magisk.events.OpenChangelogEvent
|
|||||||
import com.topjohnwu.magisk.events.dialog.ModuleInstallDialog
|
import com.topjohnwu.magisk.events.dialog.ModuleInstallDialog
|
||||||
import com.topjohnwu.magisk.ktx.addOnListChangedCallback
|
import com.topjohnwu.magisk.ktx.addOnListChangedCallback
|
||||||
import com.topjohnwu.magisk.ktx.reboot
|
import com.topjohnwu.magisk.ktx.reboot
|
||||||
import com.topjohnwu.magisk.model.internal.DownloadSubject
|
|
||||||
import com.topjohnwu.magisk.utils.EndlessRecyclerScrollListener
|
import com.topjohnwu.magisk.utils.EndlessRecyclerScrollListener
|
||||||
import com.topjohnwu.magisk.utils.set
|
import com.topjohnwu.magisk.utils.set
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
@ -12,13 +12,13 @@ import com.topjohnwu.magisk.arch.diffListOf
|
|||||||
import com.topjohnwu.magisk.arch.itemBindingOf
|
import com.topjohnwu.magisk.arch.itemBindingOf
|
||||||
import com.topjohnwu.magisk.core.Const
|
import com.topjohnwu.magisk.core.Const
|
||||||
import com.topjohnwu.magisk.core.Info
|
import com.topjohnwu.magisk.core.Info
|
||||||
|
import com.topjohnwu.magisk.core.download.Configuration
|
||||||
import com.topjohnwu.magisk.core.download.DownloadService
|
import com.topjohnwu.magisk.core.download.DownloadService
|
||||||
|
import com.topjohnwu.magisk.core.download.DownloadSubject
|
||||||
import com.topjohnwu.magisk.core.utils.PatchAPK
|
import com.topjohnwu.magisk.core.utils.PatchAPK
|
||||||
import com.topjohnwu.magisk.data.database.RepoDao
|
import com.topjohnwu.magisk.data.database.RepoDao
|
||||||
import com.topjohnwu.magisk.events.RecreateEvent
|
import com.topjohnwu.magisk.events.RecreateEvent
|
||||||
import com.topjohnwu.magisk.events.dialog.BiometricDialog
|
import com.topjohnwu.magisk.events.dialog.BiometricDialog
|
||||||
import com.topjohnwu.magisk.model.internal.Configuration
|
|
||||||
import com.topjohnwu.magisk.model.internal.DownloadSubject
|
|
||||||
import com.topjohnwu.magisk.utils.Utils
|
import com.topjohnwu.magisk.utils.Utils
|
||||||
import com.topjohnwu.superuser.Shell
|
import com.topjohnwu.superuser.Shell
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
@ -42,11 +42,11 @@ object Shortcuts {
|
|||||||
|
|
||||||
if (Utils.showSuperUser()) {
|
if (Utils.showSuperUser()) {
|
||||||
shortCuts.add(
|
shortCuts.add(
|
||||||
ShortcutInfo.Builder(context, "superuser")
|
ShortcutInfo.Builder(context, Const.Nav.SUPERUSER)
|
||||||
.setShortLabel(context.getString(R.string.superuser))
|
.setShortLabel(context.getString(R.string.superuser))
|
||||||
.setIntent(
|
.setIntent(
|
||||||
Intent(intent)
|
Intent(intent)
|
||||||
.putExtra(Const.Key.OPEN_SECTION, "superuser")
|
.putExtra(Const.Key.OPEN_SECTION, Const.Nav.SUPERUSER)
|
||||||
.setAction(Intent.ACTION_VIEW)
|
.setAction(Intent.ACTION_VIEW)
|
||||||
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
|
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
|
||||||
)
|
)
|
||||||
@ -57,11 +57,11 @@ object Shortcuts {
|
|||||||
}
|
}
|
||||||
if (Info.env.magiskHide) {
|
if (Info.env.magiskHide) {
|
||||||
shortCuts.add(
|
shortCuts.add(
|
||||||
ShortcutInfo.Builder(context, "magiskhide")
|
ShortcutInfo.Builder(context, Const.Nav.HIDE)
|
||||||
.setShortLabel(context.getString(R.string.magiskhide))
|
.setShortLabel(context.getString(R.string.magiskhide))
|
||||||
.setIntent(
|
.setIntent(
|
||||||
Intent(intent)
|
Intent(intent)
|
||||||
.putExtra(Const.Key.OPEN_SECTION, "magiskhide")
|
.putExtra(Const.Key.OPEN_SECTION, Const.Nav.HIDE)
|
||||||
.setAction(Intent.ACTION_VIEW)
|
.setAction(Intent.ACTION_VIEW)
|
||||||
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
|
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
|
||||||
)
|
)
|
||||||
@ -72,11 +72,11 @@ object Shortcuts {
|
|||||||
}
|
}
|
||||||
if (Info.env.isActive) {
|
if (Info.env.isActive) {
|
||||||
shortCuts.add(
|
shortCuts.add(
|
||||||
ShortcutInfo.Builder(context, "modules")
|
ShortcutInfo.Builder(context, Const.Nav.MODULES)
|
||||||
.setShortLabel(context.getString(R.string.modules))
|
.setShortLabel(context.getString(R.string.modules))
|
||||||
.setIntent(
|
.setIntent(
|
||||||
Intent(intent)
|
Intent(intent)
|
||||||
.putExtra(Const.Key.OPEN_SECTION, "modules")
|
.putExtra(Const.Key.OPEN_SECTION, Const.Nav.MODULES)
|
||||||
.setAction(Intent.ACTION_VIEW)
|
.setAction(Intent.ACTION_VIEW)
|
||||||
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
|
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
|
||||||
)
|
)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user