Added basic preferences to settings

This commit is contained in:
Viktor De Pasquale
2019-10-17 19:26:35 +02:00
parent 0f4326151f
commit 28fcbbcf7b
4 changed files with 131 additions and 5 deletions

View File

@@ -85,4 +85,14 @@ class BackPressEvent : ViewEvent(), ActivityExecutor {
}
}
class DieEvent : ViewEvent()
class DieEvent : ViewEvent(), ActivityExecutor {
override fun invoke(activity: AppCompatActivity) {
activity.finish()
}
}
class RecreateEvent : ViewEvent(), ActivityExecutor {
override fun invoke(activity: AppCompatActivity) {
activity.recreate()
}
}

View File

@@ -1,5 +1,6 @@
package com.topjohnwu.magisk.redesign.settings
import android.graphics.Insets
import com.topjohnwu.magisk.R
import com.topjohnwu.magisk.databinding.FragmentSettingsMd2Binding
import com.topjohnwu.magisk.redesign.compat.CompatFragment
@@ -10,4 +11,12 @@ class SettingsFragment : CompatFragment<SettingsViewModel, FragmentSettingsMd2Bi
override val layoutRes = R.layout.fragment_settings_md2
override val viewModel by viewModel<SettingsViewModel>()
override fun consumeSystemWindowInsets(insets: Insets) = insets
override fun onStart() {
super.onStart()
activity.title = resources.getString(R.string.section_settings)
}
}

View File

@@ -1,5 +1,30 @@
package com.topjohnwu.magisk.redesign.settings
import com.topjohnwu.magisk.Config
import com.topjohnwu.magisk.extensions.addOnPropertyChangedCallback
import com.topjohnwu.magisk.extensions.toggle
import com.topjohnwu.magisk.model.events.DieEvent
import com.topjohnwu.magisk.model.events.RecreateEvent
import com.topjohnwu.magisk.redesign.compat.CompatViewModel
import com.topjohnwu.magisk.utils.KObservableField
class SettingsViewModel : CompatViewModel()
class SettingsViewModel : CompatViewModel() {
val redesign = KObservableField(Config.redesign)
val darkTheme = KObservableField(Config.darkTheme)
init {
//todo make observable preference
redesign.addOnPropertyChangedCallback {
Config.redesign = redesign.value
DieEvent().publish()
}
darkTheme.addOnPropertyChangedCallback {
Config.darkTheme = darkTheme.value
RecreateEvent().publish()
}
}
fun toggle(item: KObservableField<Boolean>) = item.toggle()
}