mirror of
https://github.com/fcitx5-android/fcitx5-android.git
synced 2026-08-02 20:16:06 +08:00
Fix state restore in QuickPhrase{List,Edit}Fragment
This commit is contained in:
parent
60b63cd9fb
commit
adadaa802e
@ -4,12 +4,15 @@
|
||||
*/
|
||||
package org.fcitx.fcitx5.android.data.quickphrase
|
||||
|
||||
import kotlinx.parcelize.Parcelize
|
||||
import java.io.File
|
||||
|
||||
@Parcelize
|
||||
class BuiltinQuickPhrase(
|
||||
override val file: File,
|
||||
// always be .mb (not disabled)
|
||||
private val overrideFile: File
|
||||
private val overrideFile: File,
|
||||
private var _override: CustomQuickPhrase? = null
|
||||
) : QuickPhrase() {
|
||||
|
||||
init {
|
||||
@ -20,8 +23,11 @@ class BuiltinQuickPhrase(
|
||||
val overrideFilePath: String
|
||||
get() = overrideFile.absolutePath
|
||||
|
||||
var override: CustomQuickPhrase? = null
|
||||
private set
|
||||
var override: CustomQuickPhrase?
|
||||
get() = _override
|
||||
private set(value) {
|
||||
_override = value
|
||||
}
|
||||
|
||||
override val isEnabled: Boolean
|
||||
get() = override?.isEnabled ?: true
|
||||
|
||||
@ -4,17 +4,28 @@
|
||||
*/
|
||||
package org.fcitx.fcitx5.android.data.quickphrase
|
||||
|
||||
import kotlinx.parcelize.Parcelize
|
||||
import org.fcitx.fcitx5.android.R
|
||||
import org.fcitx.fcitx5.android.utils.errorArg
|
||||
import java.io.File
|
||||
|
||||
class CustomQuickPhrase(file: File) : QuickPhrase() {
|
||||
@Parcelize
|
||||
class CustomQuickPhrase(
|
||||
private var _file: File,
|
||||
private var _enabled: Boolean = false
|
||||
) : QuickPhrase() {
|
||||
|
||||
override var isEnabled = false
|
||||
private set
|
||||
override var isEnabled: Boolean
|
||||
get() = _enabled
|
||||
private set(value) {
|
||||
_enabled = value
|
||||
}
|
||||
|
||||
override var file: File = file
|
||||
private set
|
||||
override var file: File
|
||||
get() = _file
|
||||
private set(value) {
|
||||
_file = value
|
||||
}
|
||||
|
||||
override val name: String
|
||||
get() = if (isEnabled) super.name
|
||||
|
||||
@ -29,7 +29,6 @@ import splitties.views.dsl.core.lParams
|
||||
import splitties.views.dsl.core.matchParent
|
||||
import splitties.views.dsl.core.verticalLayout
|
||||
import splitties.views.setPaddingDp
|
||||
import timber.log.Timber
|
||||
|
||||
class QuickPhraseEditFragment : ProgressFragment(), OnItemChangedListener<QuickPhraseEntry> {
|
||||
private val args by lazyRoute<SettingsRoute.QuickPhraseEdit>()
|
||||
@ -152,7 +151,7 @@ class QuickPhraseEditFragment : ProgressFragment(), OnItemChangedListener<QuickP
|
||||
quickPhrase.saveData(QuickPhraseData(ui.entries))
|
||||
launch(Dispatchers.Main) {
|
||||
// tell parent that we need to reload
|
||||
parentFragmentManager.setFragmentResult(RESULT, bundleOf(RESULT to true))
|
||||
parentFragmentManager.setFragmentResult(RESULT, bundleOf(RESULT to quickPhrase))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -40,6 +40,7 @@ import org.fcitx.fcitx5.android.utils.materialTextInput
|
||||
import org.fcitx.fcitx5.android.utils.navigateWithAnim
|
||||
import org.fcitx.fcitx5.android.utils.notificationManager
|
||||
import org.fcitx.fcitx5.android.utils.onPositiveButtonClick
|
||||
import org.fcitx.fcitx5.android.utils.parcelable
|
||||
import org.fcitx.fcitx5.android.utils.queryFileName
|
||||
import org.fcitx.fcitx5.android.utils.str
|
||||
import splitties.resources.drawable
|
||||
@ -85,10 +86,9 @@ class QuickPhraseListFragment : Fragment(), OnItemChangedListener<QuickPhrase> {
|
||||
parentFragmentManager.setFragmentResultListener(
|
||||
QuickPhraseEditFragment.RESULT,
|
||||
this@QuickPhraseListFragment
|
||||
) { _, _ ->
|
||||
if (entry is BuiltinQuickPhrase)
|
||||
entry.evaluateOverride()
|
||||
ui.updateItem(ui.indexItem(entry), entry)
|
||||
) listener@{ requestKey, result ->
|
||||
val newItem = result.parcelable<QuickPhrase>(requestKey) ?: return@listener
|
||||
ui.updateItem(ui.indexItem(entry), newItem)
|
||||
// editor changed file content
|
||||
dustman.forceDirty()
|
||||
}
|
||||
|
||||
@ -151,9 +151,7 @@ sealed class SettingsRoute : Parcelable {
|
||||
|
||||
@Serializable
|
||||
@Parcelize
|
||||
data class Param(
|
||||
val quickPhrase: QuickPhrase
|
||||
) : Parcelable {
|
||||
data class Param(val quickPhrase: QuickPhrase) : Parcelable {
|
||||
companion object {
|
||||
val NavType = object : NavType<Param>(isNullableAllowed = false) {
|
||||
override fun put(bundle: SavedState, key: String, value: Param) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user