From cb59cc92a3ad9871eaa799656d92b69db575cd73 Mon Sep 17 00:00:00 2001 From: Viktor De Pasquale Date: Mon, 25 Nov 2019 16:58:57 +0100 Subject: [PATCH] Updated action cards to be more colorful --- .../com/topjohnwu/magisk/di/RedesignModule.kt | 2 +- .../entity/recycler/TappableHeadlineItem.kt | 39 ++++ .../redesign/superuser/SuperuserViewModel.kt | 33 +-- .../res/color/color_secondary_transient.xml | 5 + .../main/res/layout/fragment_settings_md2.xml | 12 +- .../res/layout/fragment_superuser_md2.xml | 197 ++++-------------- .../main/res/layout/fragment_theme_md2.xml | 8 +- .../res/layout/item_tappable_headline.xml | 67 ++++++ .../main/res/values/styles_md2_appearance.xml | 8 + app/src/main/res/values/styles_md2_impl.xml | 12 ++ 10 files changed, 199 insertions(+), 184 deletions(-) create mode 100644 app/src/main/java/com/topjohnwu/magisk/model/entity/recycler/TappableHeadlineItem.kt create mode 100644 app/src/main/res/color/color_secondary_transient.xml create mode 100644 app/src/main/res/layout/item_tappable_headline.xml diff --git a/app/src/main/java/com/topjohnwu/magisk/di/RedesignModule.kt b/app/src/main/java/com/topjohnwu/magisk/di/RedesignModule.kt index f01dcb4e3..ff274352d 100644 --- a/app/src/main/java/com/topjohnwu/magisk/di/RedesignModule.kt +++ b/app/src/main/java/com/topjohnwu/magisk/di/RedesignModule.kt @@ -24,7 +24,7 @@ val redesignModule = module { viewModel { RequestViewModel() } viewModel { SafetynetViewModel(get()) } viewModel { SettingsViewModel() } - viewModel { SuperuserViewModel(get(), get(), get(), get()) } + viewModel { SuperuserViewModel(get(), get(), get()) } viewModel { ThemeViewModel() } viewModel { InstallViewModel() } diff --git a/app/src/main/java/com/topjohnwu/magisk/model/entity/recycler/TappableHeadlineItem.kt b/app/src/main/java/com/topjohnwu/magisk/model/entity/recycler/TappableHeadlineItem.kt new file mode 100644 index 000000000..c24bec54a --- /dev/null +++ b/app/src/main/java/com/topjohnwu/magisk/model/entity/recycler/TappableHeadlineItem.kt @@ -0,0 +1,39 @@ +package com.topjohnwu.magisk.model.entity.recycler + +import com.topjohnwu.magisk.R +import com.topjohnwu.magisk.databinding.ComparableRvItem + +sealed class TappableHeadlineItem : ComparableRvItem() { + + abstract val title: Int + abstract val icon: Int + + override val layoutRes = R.layout.item_tappable_headline + + override fun itemSameAs(other: TappableHeadlineItem) = + this === other + + override fun contentSameAs(other: TappableHeadlineItem) = + title == other.title && icon == other.icon + + // --- listener + + interface Listener { + + fun onItemPressed(item: TappableHeadlineItem) + + } + + // --- objects + + object Hide : TappableHeadlineItem() { + override val title = R.string.magisk_hide_md2 + override val icon = R.drawable.ic_hide_md2 + } + + object Safetynet : TappableHeadlineItem() { + override val title = R.string.safetyNet + override val icon = R.drawable.ic_safetynet_md2 + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/topjohnwu/magisk/redesign/superuser/SuperuserViewModel.kt b/app/src/main/java/com/topjohnwu/magisk/redesign/superuser/SuperuserViewModel.kt index 184489b75..2ad85f284 100644 --- a/app/src/main/java/com/topjohnwu/magisk/redesign/superuser/SuperuserViewModel.kt +++ b/app/src/main/java/com/topjohnwu/magisk/redesign/superuser/SuperuserViewModel.kt @@ -11,6 +11,7 @@ import com.topjohnwu.magisk.extensions.subscribeK import com.topjohnwu.magisk.extensions.toggle import com.topjohnwu.magisk.model.entity.MagiskPolicy import com.topjohnwu.magisk.model.entity.recycler.PolicyItem +import com.topjohnwu.magisk.model.entity.recycler.TappableHeadlineItem import com.topjohnwu.magisk.model.events.PolicyUpdateEvent import com.topjohnwu.magisk.model.events.SnackbarEvent import com.topjohnwu.magisk.model.events.dialog.BiometricDialog @@ -20,26 +21,26 @@ import com.topjohnwu.magisk.redesign.compat.CompatViewModel import com.topjohnwu.magisk.redesign.home.itemBindingOf import com.topjohnwu.magisk.utils.BiometricHelper import com.topjohnwu.magisk.utils.DiffObservableList -import com.topjohnwu.magisk.utils.RxBus import com.topjohnwu.magisk.utils.currentLocale import io.reactivex.Single class SuperuserViewModel( - private val rxBus: RxBus, private val db: PolicyDao, private val packageManager: PackageManager, private val resources: Resources -) : CompatViewModel() { +) : CompatViewModel(), TappableHeadlineItem.Listener { - val items = diffListOf() - val itemBinding = itemBindingOf { + val items = diffListOf>() + val itemBinding = itemBindingOf> { it.bindExtra(BR.viewModel, this) + it.bindExtra(BR.listener, this) } - init { - rxBus.register() - .subscribeK { updatePolicy(it) } - .add() + companion object { + private val menuOptions = listOf( + TappableHeadlineItem.Hide, + TappableHeadlineItem.Safetynet + ) } // --- @@ -56,6 +57,7 @@ class SuperuserViewModel( ).compare(o1, o2) } .toList() + .map { menuOptions + it } .map { it to items.calculateDiff(it) } .applySchedulers() .applyViewModel(this) @@ -63,12 +65,19 @@ class SuperuserViewModel( // --- - fun safetynetPressed() = Navigation.safetynet().publish() - fun hidePressed() = Navigation.hide().publish() + @Suppress("REDUNDANT_ELSE_IN_WHEN") + override fun onItemPressed(item: TappableHeadlineItem) = when (item) { + TappableHeadlineItem.Hide -> hidePressed() + TappableHeadlineItem.Safetynet -> safetynetPressed() + else -> Unit + } + + private fun safetynetPressed() = Navigation.safetynet().publish() + private fun hidePressed() = Navigation.hide().publish() fun deletePressed(item: PolicyItem) { fun updateState() = deletePolicy(item.item) - .subscribeK { items.removeAll { it.itemSameAs(item) } } + .subscribeK { items.removeAll { it.genericItemSameAs(item) } } .add() if (BiometricHelper.isEnabled) { diff --git a/app/src/main/res/color/color_secondary_transient.xml b/app/src/main/res/color/color_secondary_transient.xml new file mode 100644 index 000000000..e6ed58c86 --- /dev/null +++ b/app/src/main/res/color/color_secondary_transient.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_settings_md2.xml b/app/src/main/res/layout/fragment_settings_md2.xml index 896106d30..4eb129974 100644 --- a/app/src/main/res/layout/fragment_settings_md2.xml +++ b/app/src/main/res/layout/fragment_settings_md2.xml @@ -28,7 +28,7 @@ - + android:layout_height="match_parent"> - + + + android:layout_gravity="center" + android:gravity="center" + android:orientation="vertical"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:text="@string/safetynet_attest_loading" + android:textAppearance="@style/AppearanceFoundation.Title" + android:textStyle="bold" /> - + - + - - - - - - - - - + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_theme_md2.xml b/app/src/main/res/layout/fragment_theme_md2.xml index ace460cd3..23d0f3ef5 100644 --- a/app/src/main/res/layout/fragment_theme_md2.xml +++ b/app/src/main/res/layout/fragment_theme_md2.xml @@ -31,7 +31,7 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/styles_md2_appearance.xml b/app/src/main/res/values/styles_md2_appearance.xml index dff90120a..416e2711e 100644 --- a/app/src/main/res/values/styles_md2_appearance.xml +++ b/app/src/main/res/values/styles_md2_appearance.xml @@ -48,6 +48,14 @@ ?attr/colorOnSurfaceVariant + + + + diff --git a/app/src/main/res/values/styles_md2_impl.xml b/app/src/main/res/values/styles_md2_impl.xml index ab3780e96..12930369f 100644 --- a/app/src/main/res/values/styles_md2_impl.xml +++ b/app/src/main/res/values/styles_md2_impl.xml @@ -30,6 +30,14 @@ 1.5dp + + + + + +