Added versions to home screen

To overview (when updatable)
  - It is very hard to spot a difference in versions so versions are now regarded as commit messages (after dash [-]) when applicable
      - This will result in more clear, understandable text
      - Bleeding edge (canary) user would see:

        ffed229 > ffe02ed or 19.4 > ffe02ed

        as opposed to:

        19.4-ffed229 (19404)
        19.5-ffe02ed (19501)
      - Regular beta+ user would see:

        19.4 > 19.5
To bottom of the screen
  - This change is with respect to regular user. They don't care which version they run as long as they know that "up-to-date" is a gold standard
  - It takes tons of real-estate on the screen which takes away the glance-ability from the overview.
This commit is contained in:
Viktor De Pasquale 2019-10-07 20:09:12 +02:00
parent 72eb584e65
commit e595937740
3 changed files with 68 additions and 11 deletions

View File

@ -6,8 +6,10 @@ import com.topjohnwu.superuser.ShellUtils
object Info { object Info {
@JvmStatic
var magiskVersionCode = -1 var magiskVersionCode = -1
@JvmStatic
var magiskVersionString = "" var magiskVersionString = ""
var remote = UpdateInfo() var remote = UpdateInfo()

View File

@ -44,6 +44,10 @@ class HomeViewModel(
MagiskState.OBSOLETE -> R.string.obsolete_md2.res() MagiskState.OBSOLETE -> R.string.obsolete_md2.res()
} }
} }
val stateVersionMagisk = Info.magiskVersionString
val stateVersionManager = BuildConfig.VERSION_NAME
val stateVersionUpdateMagisk = KObservableField("")
val stateVersionUpdateManager = KObservableField("")
val stateHideManagerName = R.string.manager.res().let { val stateHideManagerName = R.string.manager.res().let {
val result = R.string.manager.res() val result = R.string.manager.res()
@ -80,6 +84,22 @@ class HomeViewModel(
info.app.isObsolete -> MagiskState.OBSOLETE info.app.isObsolete -> MagiskState.OBSOLETE
else -> MagiskState.UP_TO_DATE else -> MagiskState.UP_TO_DATE
} }
stateVersionUpdateMagisk.value = when {
info.magisk.isObsolete -> "%s > %s".format(
Info.magiskVersionString.clipVersion(),
info.magisk.version.clipVersion()
)
else -> ""
}
stateVersionUpdateManager.value = when {
info.app.isObsolete -> "%s > %s".format(
BuildConfig.VERSION_NAME.clipVersion(),
info.app.version.clipVersion()
)
else -> ""
}
} }
fun onDeletePressed() {} fun onDeletePressed() {}
@ -97,6 +117,8 @@ val ManagerJson.isUpdateChannelCorrect
val ManagerJson.isObsolete val ManagerJson.isObsolete
get() = BuildConfig.VERSION_CODE < versionCode get() = BuildConfig.VERSION_CODE < versionCode
fun String.clipVersion() = substringAfter('-')
inline fun <T : ComparableRvItem<T>> itemBindingOf( inline fun <T : ComparableRvItem<T>> itemBindingOf(
crossinline body: (ItemBinding<*>) -> Unit = {} crossinline body: (ItemBinding<*>) -> Unit = {}
) = OnItemBind<T> { itemBinding, _, item -> ) = OnItemBind<T> { itemBinding, _, item ->

View File

@ -5,6 +5,10 @@
<data> <data>
<import type="com.topjohnwu.magisk.Info" />
<import type="com.topjohnwu.magisk.BuildConfig" />
<import type="com.topjohnwu.magisk.ui.home.MagiskState" /> <import type="com.topjohnwu.magisk.ui.home.MagiskState" />
<variable <variable
@ -20,7 +24,7 @@
android:paddingStart="@dimen/l1" android:paddingStart="@dimen/l1"
android:paddingTop="@{viewModel.insets.top + (int) @dimen/internal_action_bar_size + (int) @dimen/l1}" android:paddingTop="@{viewModel.insets.top + (int) @dimen/internal_action_bar_size + (int) @dimen/l1}"
android:paddingEnd="@dimen/l1" android:paddingEnd="@dimen/l1"
android:paddingBottom="@{viewModel.insets.bottom + (int) @dimen/margin_fab}" android:paddingBottom="@{viewModel.insets.bottom + (int) @dimen/margin_fab + (int) @dimen/l1}"
tools:layout_marginTop="24dp"> tools:layout_marginTop="24dp">
<LinearLayout <LinearLayout
@ -78,6 +82,15 @@
app:layout_constraintStart_toStartOf="@+id/home_magisk_title" app:layout_constraintStart_toStartOf="@+id/home_magisk_title"
app:layout_constraintTop_toBottomOf="@+id/home_magisk_title" /> app:layout_constraintTop_toBottomOf="@+id/home_magisk_title" />
<TextSwitcher
android:id="@+id/home_magisk_version"
textCaptionVariant="@{viewModel.stateVersionUpdateMagisk}"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="@+id/home_magisk_title"
app:layout_constraintStart_toStartOf="@+id/home_magisk_title"
app:layout_constraintTop_toBottomOf="@+id/home_magisk_status" />
<FrameLayout <FrameLayout
gone="@{viewModel.stateMagisk == MagiskState.LOADING || !viewModel.isConnected}" gone="@{viewModel.stateMagisk == MagiskState.LOADING || !viewModel.isConnected}"
android:layout_width="0dp" android:layout_width="0dp"
@ -86,7 +99,7 @@
android:animateLayoutChanges="true" android:animateLayoutChanges="true"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/home_magisk_status"> app:layout_constraintTop_toBottomOf="@+id/home_magisk_version">
<com.google.android.material.button.MaterialButton <com.google.android.material.button.MaterialButton
style="?styleButtonDefault" style="?styleButtonDefault"
@ -170,12 +183,21 @@
app:layout_constraintStart_toStartOf="@+id/home_manager_title" app:layout_constraintStart_toStartOf="@+id/home_manager_title"
app:layout_constraintTop_toBottomOf="@+id/home_manager_title" /> app:layout_constraintTop_toBottomOf="@+id/home_manager_title" />
<TextSwitcher
android:id="@+id/home_manager_version"
textCaptionVariant="@{viewModel.stateVersionUpdateManager}"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="@+id/home_manager_title"
app:layout_constraintStart_toStartOf="@+id/home_manager_title"
app:layout_constraintTop_toBottomOf="@+id/home_manager_status" />
<FrameLayout <FrameLayout
gone="@{viewModel.stateManager == MagiskState.LOADING || !viewModel.isConnected}" gone="@{viewModel.stateManager == MagiskState.LOADING || !viewModel.isConnected}"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/l1" android:layout_marginTop="@dimen/l1"
app:layout_constraintTop_toBottomOf="@+id/home_manager_status"> app:layout_constraintTop_toBottomOf="@+id/home_manager_version">
<com.google.android.material.button.MaterialButton <com.google.android.material.button.MaterialButton
style="?styleButtonDefault" style="?styleButtonDefault"
@ -338,16 +360,10 @@
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginTop="@dimen/l1"
android:layout_marginBottom="@dimen/l1"
android:background="?colorSurfaceVariant" />
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content"
android:layout_marginTop="@dimen/l1">
<androidx.appcompat.widget.AppCompatImageView <androidx.appcompat.widget.AppCompatImageView
android:id="@+id/support_icon_common" android:id="@+id/support_icon_common"
@ -403,6 +419,23 @@
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/l2"
android:gravity="center"
android:text="@{String.format(`%s (%s)`, BuildConfig.VERSION_NAME, BuildConfig.VERSION_CODE)}"
android:textAppearance="?appearanceTextCaptionVariant"
tools:text="7.3.4 (12345)" />
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@{String.format(`%s (%s)`, Info.magiskVersionString, Info.magiskVersionCode)}"
android:textAppearance="?appearanceTextCaptionVariant"
tools:text="19.5 (12345)" />
</LinearLayout> </LinearLayout>
</androidx.core.widget.NestedScrollView> </androidx.core.widget.NestedScrollView>