mirror of
https://github.com/topjohnwu/Magisk.git
synced 2025-04-19 02:11:28 +00:00
Update home fragment
This commit is contained in:
parent
5113f6d375
commit
658d74e026
@ -6,7 +6,6 @@ import com.topjohnwu.magisk.core.model.UpdateInfo
|
|||||||
import com.topjohnwu.magisk.core.utils.net.NetworkObserver
|
import com.topjohnwu.magisk.core.utils.net.NetworkObserver
|
||||||
import com.topjohnwu.magisk.ktx.get
|
import com.topjohnwu.magisk.ktx.get
|
||||||
import com.topjohnwu.magisk.ktx.getProperty
|
import com.topjohnwu.magisk.ktx.getProperty
|
||||||
import com.topjohnwu.magisk.utils.CachedValue
|
|
||||||
import com.topjohnwu.superuser.Shell
|
import com.topjohnwu.superuser.Shell
|
||||||
import com.topjohnwu.superuser.ShellUtils.fastCmd
|
import com.topjohnwu.superuser.ShellUtils.fastCmd
|
||||||
import com.topjohnwu.superuser.internal.UiThreadHandler
|
import com.topjohnwu.superuser.internal.UiThreadHandler
|
||||||
@ -18,10 +17,6 @@ val isRunningAsStub get() = Info.stub != null
|
|||||||
|
|
||||||
object Info {
|
object Info {
|
||||||
|
|
||||||
val envRef = CachedValue { loadState() }
|
|
||||||
|
|
||||||
@JvmStatic val env by envRef
|
|
||||||
|
|
||||||
var stub: DynAPK.Data? = null
|
var stub: DynAPK.Data? = null
|
||||||
val stubChk: DynAPK.Data
|
val stubChk: DynAPK.Data
|
||||||
get() = stub as DynAPK.Data
|
get() = stub as DynAPK.Data
|
||||||
@ -29,15 +24,16 @@ object Info {
|
|||||||
var remote = UpdateInfo()
|
var remote = UpdateInfo()
|
||||||
|
|
||||||
// Device state
|
// Device state
|
||||||
var crypto = ""
|
@JvmStatic val env by lazy { loadState() }
|
||||||
@JvmField var isSAR = false
|
@JvmField var isSAR = false
|
||||||
@JvmField var isAB = false
|
@JvmField var isAB = false
|
||||||
@JvmStatic val isFDE get() = crypto == "block"
|
@JvmStatic val isFDE get() = crypto == "block"
|
||||||
@JvmField var ramdisk = false
|
@JvmField var ramdisk = false
|
||||||
@JvmField var hasGMS = true
|
@JvmField var hasGMS = true
|
||||||
@JvmField var isPixel = false
|
@JvmField var isPixel = false
|
||||||
@JvmStatic val cryptoText get()= crypto.capitalize(Locale.US)
|
@JvmStatic val cryptoText get() = crypto.capitalize(Locale.US)
|
||||||
@JvmField val isEmulator = getProperty("ro.kernel.qemu", "0") == "1"
|
@JvmField val isEmulator = getProperty("ro.kernel.qemu", "0") == "1"
|
||||||
|
var crypto = ""
|
||||||
|
|
||||||
val isConnected by lazy {
|
val isConnected by lazy {
|
||||||
ObservableBoolean(false).also { field ->
|
ObservableBoolean(false).also { field ->
|
||||||
|
@ -26,14 +26,14 @@ class HomeFragment : BaseUIFragment<HomeViewModel, FragmentHomeMd2Binding>() {
|
|||||||
inflater: LayoutInflater,
|
inflater: LayoutInflater,
|
||||||
container: ViewGroup?,
|
container: ViewGroup?,
|
||||||
savedInstanceState: Bundle?
|
savedInstanceState: Bundle?
|
||||||
): View? {
|
): View {
|
||||||
super.onCreateView(inflater, container, savedInstanceState)
|
super.onCreateView(inflater, container, savedInstanceState)
|
||||||
|
|
||||||
// Set barrier reference IDs in code, since resource IDs will be stripped in release mode
|
// Set barrier reference IDs in code, since resource IDs will be stripped in release mode
|
||||||
binding.homeMagiskWrapper.homeMagiskTitleBarrier.referencedIds =
|
binding.homeMagiskWrapper.homeMagiskTitleBarrier.referencedIds =
|
||||||
intArrayOf(R.id.home_magisk_button, R.id.home_magisk_title, R.id.home_magisk_icon)
|
intArrayOf(R.id.home_magisk_button, R.id.home_magisk_title, R.id.home_magisk_icon)
|
||||||
binding.homeMagiskWrapper.homeMagiskBarrier.referencedIds =
|
binding.homeMagiskWrapper.homeMagiskBarrier.referencedIds =
|
||||||
intArrayOf(R.id.home_magisk_latest_version, R.id.home_magisk_installed_version)
|
intArrayOf(R.id.home_magisk_installed_version, R.id.home_device_details_ramdisk)
|
||||||
binding.homeManagerWrapper.homeManagerTitleBarrier.referencedIds =
|
binding.homeManagerWrapper.homeManagerTitleBarrier.referencedIds =
|
||||||
intArrayOf(R.id.home_manager_button, R.id.home_manager_title, R.id.home_manager_icon)
|
intArrayOf(R.id.home_manager_button, R.id.home_manager_title, R.id.home_manager_icon)
|
||||||
|
|
||||||
@ -46,11 +46,14 @@ class HomeFragment : BaseUIFragment<HomeViewModel, FragmentHomeMd2Binding>() {
|
|||||||
menu.removeItem(R.id.action_reboot)
|
menu.removeItem(R.id.action_reboot)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onOptionsItemSelected(item: MenuItem) = when (item.itemId) {
|
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||||
R.id.action_settings -> HomeFragmentDirections.actionHomeFragmentToSettingsFragment()
|
when (item.itemId) {
|
||||||
.navigate()
|
R.id.action_settings ->
|
||||||
R.id.action_reboot -> RebootEvent.inflateMenu(activity).show()
|
HomeFragmentDirections.actionHomeFragmentToSettingsFragment().navigate()
|
||||||
else -> null
|
R.id.action_reboot -> RebootEvent.inflateMenu(activity).show()
|
||||||
}?.let { true } ?: super.onOptionsItemSelected(item)
|
else -> return super.onOptionsItemSelected(item)
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -9,8 +9,6 @@ import com.topjohnwu.magisk.core.Config
|
|||||||
import com.topjohnwu.magisk.core.Info
|
import com.topjohnwu.magisk.core.Info
|
||||||
import com.topjohnwu.magisk.core.download.Subject
|
import com.topjohnwu.magisk.core.download.Subject
|
||||||
import com.topjohnwu.magisk.core.download.Subject.Manager
|
import com.topjohnwu.magisk.core.download.Subject.Manager
|
||||||
import com.topjohnwu.magisk.core.model.MagiskJson
|
|
||||||
import com.topjohnwu.magisk.core.model.ManagerJson
|
|
||||||
import com.topjohnwu.magisk.data.repository.NetworkService
|
import com.topjohnwu.magisk.data.repository.NetworkService
|
||||||
import com.topjohnwu.magisk.events.OpenInappLinkEvent
|
import com.topjohnwu.magisk.events.OpenInappLinkEvent
|
||||||
import com.topjohnwu.magisk.events.SnackbarEvent
|
import com.topjohnwu.magisk.events.SnackbarEvent
|
||||||
@ -18,8 +16,7 @@ import com.topjohnwu.magisk.events.dialog.EnvFixDialog
|
|||||||
import com.topjohnwu.magisk.events.dialog.ManagerInstallDialog
|
import com.topjohnwu.magisk.events.dialog.ManagerInstallDialog
|
||||||
import com.topjohnwu.magisk.events.dialog.UninstallDialog
|
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.utils.asTransitive
|
||||||
import com.topjohnwu.magisk.ktx.res
|
|
||||||
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
|
||||||
@ -38,37 +35,35 @@ class HomeViewModel(
|
|||||||
var isNoticeVisible = Config.safetyNotice
|
var isNoticeVisible = Config.safetyNotice
|
||||||
set(value) = set(value, field, { field = it }, BR.noticeVisible)
|
set(value) = set(value, field, { field = it }, BR.noticeVisible)
|
||||||
|
|
||||||
@get:Bindable
|
val stateMagisk = when {
|
||||||
var stateMagisk = MagiskState.LOADING
|
!Info.env.isActive -> MagiskState.NOT_INSTALLED
|
||||||
set(value) = set(value, field, { field = it }, BR.stateMagisk, BR.showUninstall)
|
Info.env.magiskVersionCode < BuildConfig.VERSION_CODE -> MagiskState.OBSOLETE
|
||||||
|
else -> MagiskState.UP_TO_DATE
|
||||||
|
}
|
||||||
|
|
||||||
@get:Bindable
|
@get:Bindable
|
||||||
var stateManager = MagiskState.LOADING
|
var stateManager = MagiskState.LOADING
|
||||||
set(value) = set(value, field, { field = it }, BR.stateManager)
|
set(value) = set(value, field, { field = it }, BR.stateManager)
|
||||||
|
|
||||||
@get:Bindable
|
val magiskInstalledVersion get() = Info.env.run {
|
||||||
var magiskRemoteVersion = R.string.loading.res()
|
if (isActive)
|
||||||
set(value) = set(value, field, { field = it }, BR.magiskRemoteVersion)
|
"$magiskVersionString ($magiskVersionCode)".asTransitive()
|
||||||
|
else
|
||||||
val magiskInstalledVersion get() =
|
R.string.not_available.asTransitive()
|
||||||
"${Info.env.magiskVersionString} (${Info.env.magiskVersionCode})"
|
}
|
||||||
|
|
||||||
@get:Bindable
|
@get:Bindable
|
||||||
var managerRemoteVersion = R.string.loading.res()
|
var managerRemoteVersion = R.string.loading.asTransitive()
|
||||||
set(value) = set(value, field, { field = it }, BR.managerRemoteVersion)
|
set(value) = set(value, field, { field = it }, BR.managerRemoteVersion)
|
||||||
|
|
||||||
val managerInstalledVersion = Info.stub?.let {
|
val managerInstalledVersion = Info.stub?.let {
|
||||||
"${BuildConfig.VERSION_NAME} (${BuildConfig.VERSION_CODE}) (${it.version})"
|
"${BuildConfig.VERSION_NAME} (${BuildConfig.VERSION_CODE}) (${it.version})"
|
||||||
} ?: "${BuildConfig.VERSION_NAME} (${BuildConfig.VERSION_CODE})"
|
} ?: "${BuildConfig.VERSION_NAME} (${BuildConfig.VERSION_CODE})"
|
||||||
val statePackageName = packageName
|
|
||||||
|
|
||||||
@get:Bindable
|
@get:Bindable
|
||||||
var stateManagerProgress = 0
|
var stateManagerProgress = 0
|
||||||
set(value) = set(value, field, { field = it }, BR.stateManagerProgress)
|
set(value) = set(value, field, { field = it }, BR.stateManagerProgress)
|
||||||
|
|
||||||
@get:Bindable
|
|
||||||
val showUninstall get() = Info.env.isActive && state != State.LOADING
|
|
||||||
|
|
||||||
@get:Bindable
|
@get:Bindable
|
||||||
val showSafetyNet get() = Info.hasGMS && isConnected.get()
|
val showSafetyNet get() = Info.hasGMS && isConnected.get()
|
||||||
|
|
||||||
@ -80,30 +75,25 @@ class HomeViewModel(
|
|||||||
|
|
||||||
override fun refresh() = viewModelScope.launch {
|
override fun refresh() = viewModelScope.launch {
|
||||||
state = State.LOADING
|
state = State.LOADING
|
||||||
|
notifyPropertyChanged(BR.showSafetyNet)
|
||||||
svc.fetchUpdate()?.apply {
|
svc.fetchUpdate()?.apply {
|
||||||
state = State.LOADED
|
state = State.LOADED
|
||||||
stateMagisk = when {
|
|
||||||
!Info.env.isActive -> MagiskState.NOT_INSTALLED
|
|
||||||
magisk.isObsolete -> MagiskState.OBSOLETE
|
|
||||||
else -> MagiskState.UP_TO_DATE
|
|
||||||
}
|
|
||||||
|
|
||||||
stateManager = when {
|
stateManager = when {
|
||||||
app.isObsolete -> MagiskState.OBSOLETE
|
BuildConfig.VERSION_CODE < magisk.versionCode -> MagiskState.OBSOLETE
|
||||||
else -> MagiskState.UP_TO_DATE
|
else -> MagiskState.UP_TO_DATE
|
||||||
}
|
}
|
||||||
|
|
||||||
magiskRemoteVersion =
|
|
||||||
"${magisk.version} (${magisk.versionCode})"
|
|
||||||
managerRemoteVersion =
|
managerRemoteVersion =
|
||||||
"${app.version} (${app.versionCode}) (${stub.versionCode})"
|
"${magisk.version} (${magisk.versionCode}) (${stub.versionCode})".asTransitive()
|
||||||
|
|
||||||
launch {
|
launch {
|
||||||
ensureEnv()
|
ensureEnv()
|
||||||
}
|
}
|
||||||
} ?: apply { state = State.LOADING_FAILED }
|
} ?: {
|
||||||
notifyPropertyChanged(BR.showUninstall)
|
state = State.LOADING_FAILED
|
||||||
notifyPropertyChanged(BR.showSafetyNet)
|
managerRemoteVersion = R.string.not_available.asTransitive()
|
||||||
|
}()
|
||||||
}
|
}
|
||||||
|
|
||||||
val showTest = false
|
val showTest = false
|
||||||
@ -115,9 +105,8 @@ class HomeViewModel(
|
|||||||
}.publish()
|
}.publish()
|
||||||
|
|
||||||
fun onProgressUpdate(progress: Float, subject: Subject) {
|
fun onProgressUpdate(progress: Float, subject: Subject) {
|
||||||
when (subject) {
|
if (subject is Manager)
|
||||||
is Manager -> stateManagerProgress = progress.times(100f).roundToInt()
|
stateManagerProgress = progress.times(100f).roundToInt()
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onLinkPressed(link: String) = OpenInappLinkEvent(link).publish()
|
fun onLinkPressed(link: String) = OpenInappLinkEvent(link).publish()
|
||||||
@ -130,13 +119,8 @@ class HomeViewModel(
|
|||||||
else -> SnackbarEvent(R.string.no_connection).publish()
|
else -> SnackbarEvent(R.string.no_connection).publish()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onMagiskPressed() = when (state) {
|
fun onMagiskPressed() =
|
||||||
State.LOADED -> withExternalRW {
|
HomeFragmentDirections.actionHomeFragmentToInstallFragment().publish()
|
||||||
HomeFragmentDirections.actionHomeFragmentToInstallFragment().publish()
|
|
||||||
}
|
|
||||||
State.LOADING -> SnackbarEvent(R.string.loading).publish()
|
|
||||||
else -> SnackbarEvent(R.string.no_connection).publish()
|
|
||||||
}
|
|
||||||
|
|
||||||
fun onSafetyNetPressed() =
|
fun onSafetyNetPressed() =
|
||||||
HomeFragmentDirections.actionHomeFragmentToSafetynetFragment().publish()
|
HomeFragmentDirections.actionHomeFragmentToSafetynetFragment().publish()
|
||||||
@ -160,9 +144,4 @@ class HomeViewModel(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private val MagiskJson.isObsolete
|
|
||||||
get() = Info.env.isActive && Info.env.magiskVersionCode < versionCode
|
|
||||||
private val ManagerJson.isObsolete
|
|
||||||
get() = BuildConfig.VERSION_CODE < versionCode
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,6 @@ import android.content.res.Resources
|
|||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import androidx.databinding.BindingAdapter
|
import androidx.databinding.BindingAdapter
|
||||||
import androidx.databinding.InverseBindingAdapter
|
import androidx.databinding.InverseBindingAdapter
|
||||||
import com.topjohnwu.magisk.ktx.get
|
|
||||||
|
|
||||||
sealed class TransitiveText {
|
sealed class TransitiveText {
|
||||||
|
|
||||||
@ -42,13 +41,13 @@ sealed class TransitiveText {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
fun Int.asTransitive(vararg params: Any) = TransitiveText.Res(this, *params)
|
fun Int.asTransitive(vararg params: Any): TransitiveText = TransitiveText.Res(this, *params)
|
||||||
fun CharSequence.asTransitive() = TransitiveText.String(this)
|
fun CharSequence.asTransitive(): TransitiveText = TransitiveText.String(this)
|
||||||
|
|
||||||
|
|
||||||
@BindingAdapter("android:text")
|
@BindingAdapter("android:text")
|
||||||
fun TextView.setText(text: TransitiveText) {
|
fun TextView.setText(text: TransitiveText) {
|
||||||
this.text = text.getText(get())
|
this.text = text.getText(context.resources)
|
||||||
}
|
}
|
||||||
|
|
||||||
@InverseBindingAdapter(attribute = "android:text", event = "android:textAttrChanged")
|
@InverseBindingAdapter(attribute = "android:text", event = "android:textAttrChanged")
|
||||||
|
@ -108,7 +108,7 @@
|
|||||||
app:layout_constraintTop_toBottomOf="@+id/home_magisk_wrapper" />
|
app:layout_constraintTop_toBottomOf="@+id/home_magisk_wrapper" />
|
||||||
|
|
||||||
<Space
|
<Space
|
||||||
gone="@{!viewModel.showSafetyNet && !viewModel.showUninstall}"
|
gone="@{!viewModel.showSafetyNet && !Info.env.isActive}"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="@dimen/l1" />
|
android:layout_height="@dimen/l1" />
|
||||||
|
|
||||||
@ -128,7 +128,7 @@
|
|||||||
|
|
||||||
<Button
|
<Button
|
||||||
style="@style/WidgetFoundation.Button.Outlined.Error"
|
style="@style/WidgetFoundation.Button.Outlined.Error"
|
||||||
gone="@{!viewModel.showUninstall}"
|
goneUnless="@{Info.env.isActive}"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="@dimen/l1"
|
android:layout_marginStart="@dimen/l1"
|
||||||
|
@ -55,7 +55,6 @@
|
|||||||
android:id="@+id/home_magisk_button"
|
android:id="@+id/home_magisk_button"
|
||||||
style="@style/WidgetFoundation.Button"
|
style="@style/WidgetFoundation.Button"
|
||||||
invisible="@{viewModel.stateMagisk != MagiskState.OBSOLETE}"
|
invisible="@{viewModel.stateMagisk != MagiskState.OBSOLETE}"
|
||||||
android:enabled="@{viewModel.stateManager != MagiskState.OBSOLETE}"
|
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:onClick="@{() -> viewModel.onMagiskPressed()}"
|
android:onClick="@{() -> viewModel.onMagiskPressed()}"
|
||||||
@ -69,7 +68,6 @@
|
|||||||
<Button
|
<Button
|
||||||
style="@style/WidgetFoundation.Button.Text"
|
style="@style/WidgetFoundation.Button.Text"
|
||||||
invisible="@{viewModel.stateMagisk == MagiskState.OBSOLETE}"
|
invisible="@{viewModel.stateMagisk == MagiskState.OBSOLETE}"
|
||||||
android:enabled="@{viewModel.stateManager != MagiskState.OBSOLETE}"
|
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:onClick="@{() -> viewModel.onMagiskPressed()}"
|
android:onClick="@{() -> viewModel.onMagiskPressed()}"
|
||||||
@ -105,41 +103,24 @@
|
|||||||
android:layout_height="wrap_content">
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/home_magisk_latest_version"
|
android:id="@+id/home_magisk_installed_version"
|
||||||
style="@style/W.Home.Item.Top"
|
style="@style/W.Home.Item.Top"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent">
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
|
|
||||||
<TextView
|
|
||||||
style="@style/W.Home.ItemContent"
|
|
||||||
android:text="@string/home_latest_version" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
style="@style/W.Home.ItemContent.Right"
|
|
||||||
android:text="@{viewModel.loadFailed ? @string/not_available : viewModel.magiskRemoteVersion }"
|
|
||||||
tools:text="20.1 (12345)" />
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:id="@+id/home_magisk_installed_version"
|
|
||||||
style="@style/W.Home.Item"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toBottomOf="@+id/home_magisk_latest_version">
|
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
style="@style/W.Home.ItemContent"
|
style="@style/W.Home.ItemContent"
|
||||||
android:text="@string/home_installed_version" />
|
android:text="@string/home_installed_version" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
style="@style/W.Home.ItemContent.Right"
|
style="@style/W.Home.ItemContent.Right"
|
||||||
android:text="@{Info.env.isActive ? viewModel.magiskInstalledVersion : @string/not_available}"
|
android:text="@{viewModel.magiskInstalledVersion}"
|
||||||
tools:text="20.1 (12345)" />
|
tools:text="22.0 (22000)" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/home_device_details_recovery"
|
android:id="@+id/home_device_details_ramdisk"
|
||||||
style="@style/W.Home.Item.Bottom"
|
style="@style/W.Home.Item.Bottom"
|
||||||
app:layout_constraintStart_toStartOf="@+id/home_magisk_installed_version"
|
app:layout_constraintStart_toStartOf="@+id/home_magisk_installed_version"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/home_magisk_installed_version">
|
app:layout_constraintTop_toBottomOf="@+id/home_magisk_installed_version">
|
||||||
@ -160,7 +141,7 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
app:barrierDirection="end"
|
app:barrierDirection="end"
|
||||||
tools:constraint_referenced_ids="home_magisk_latest_version,home_magisk_installed_version"/>
|
tools:constraint_referenced_ids="home_magisk_installed_version,home_device_details_ramdisk"/>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/home_device_details_ab"
|
android:id="@+id/home_device_details_ab"
|
||||||
@ -181,7 +162,7 @@
|
|||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/home_device_details_sar"
|
android:id="@+id/home_device_details_sar"
|
||||||
style="@style/W.Home.Item"
|
style="@style/W.Home.Item.Bottom"
|
||||||
app:layout_constraintStart_toStartOf="@+id/home_device_details_ab"
|
app:layout_constraintStart_toStartOf="@+id/home_device_details_ab"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/home_device_details_ab">
|
app:layout_constraintTop_toBottomOf="@+id/home_device_details_ab">
|
||||||
|
|
||||||
@ -196,23 +177,6 @@
|
|||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:id="@+id/home_device_details_crypto"
|
|
||||||
style="@style/W.Home.Item.Bottom"
|
|
||||||
app:layout_constraintStart_toStartOf="@+id/home_device_details_sar"
|
|
||||||
app:layout_constraintTop_toBottomOf="@+id/home_device_details_sar">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
style="@style/W.Home.ItemContent"
|
|
||||||
android:text="Crypto" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
style="@style/W.Home.ItemContent.Right"
|
|
||||||
android:text="@{Info.cryptoText}"
|
|
||||||
tools:text="N/A" />
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
@ -115,8 +115,8 @@
|
|||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
style="@style/W.Home.ItemContent.Right"
|
style="@style/W.Home.ItemContent.Right"
|
||||||
android:text="@{viewModel.loadFailed ? @string/not_available : viewModel.managerRemoteVersion}"
|
android:text="@{viewModel.managerRemoteVersion}"
|
||||||
tools:text="8.0.0 (123) (10)" />
|
tools:text="22.0 (22000) (16)" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
@ -133,7 +133,7 @@
|
|||||||
<TextView
|
<TextView
|
||||||
style="@style/W.Home.ItemContent.Right"
|
style="@style/W.Home.ItemContent.Right"
|
||||||
android:text="@{viewModel.managerInstalledVersion}"
|
android:text="@{viewModel.managerInstalledVersion}"
|
||||||
tools:text="8.0.0 (123) (10)" />
|
tools:text="22.0 (22000) (16)" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
@ -150,7 +150,7 @@
|
|||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/home_manager_extra_connection_value"
|
android:id="@+id/home_manager_extra_connection_value"
|
||||||
style="@style/W.Home.ItemContent.Right"
|
style="@style/W.Home.ItemContent.Right"
|
||||||
android:text="@{viewModel.statePackageName}"
|
android:text="@{context.packageName}"
|
||||||
tools:text="com.topjohnwu.magisk" />
|
tools:text="com.topjohnwu.magisk" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user