diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/HighlightRuleManager.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/HighlightRuleManager.kt index 8176eec97277ab36c15c22874129e038477f4eb2..1814b07b30ab1a819d5c3e5d70de670e650ba8f2 100644 --- a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/HighlightRuleManager.kt +++ b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/HighlightRuleManager.kt @@ -19,26 +19,20 @@ class HighlightRuleManager( ) : Serializable override fun toVariantMap(): QVariantMap = mapOf( - "HighlightRuleList" to QVariant.of(initHighlightRuleList(), Type.QVariantMap), - "HighlightNick" to QVariant.of(_highlightNick.value, Type.Int), - "NicksCaseSensitive" to QVariant.of(_nicksCaseSensitive, Type.Bool) + "HighlightRuleList" to QVariant.of(initHighlightRuleList(), Type.QVariantMap) ) override fun fromVariantMap(properties: QVariantMap) { initSetHighlightRuleList(properties["HighlightRuleList"].valueOr(::emptyMap)) - _highlightNick = properties["HighlightNick"].value<Int>()?.let { - IHighlightRuleManager.HighlightNickType.of(it) - } ?: _highlightNick - _nicksCaseSensitive = properties["NicksCaseSensitive"].value(_nicksCaseSensitive) } override fun initHighlightRuleList(): QVariantMap = mapOf( "name" to QVariant.of(_highlightRuleList.map { - QVariant.of(it.name, Type.QString) - }, Type.QVariantList), + it.name + }, Type.QStringList), "isRegEx" to QVariant.of(_highlightRuleList.map { QVariant.of(it.isRegEx, Type.Bool) - }, Type.QStringList), + }, Type.QVariantList), "isCaseSensitive" to QVariant.of(_highlightRuleList.map { QVariant.of(it.isCaseSensitive, Type.Bool) }, Type.QVariantList), @@ -49,11 +43,13 @@ class HighlightRuleManager( QVariant.of(it.isInverse, Type.Bool) }, Type.QVariantList), "sender" to QVariant.of(_highlightRuleList.map { - QVariant.of(it.sender, Type.QString) + it.sender }, Type.QStringList), "channel" to QVariant.of(_highlightRuleList.map { - QVariant.of(it.channel, Type.QString) - }, Type.QVariantList) + it.channel + }, Type.QStringList), + "highlightNick" to QVariant.of(_highlightNick.value, Type.Int), + "nicksCaseSensitive" to QVariant.of(_nicksCaseSensitive, Type.Bool) ) override fun initSetHighlightRuleList(highlightRuleList: QVariantMap) { @@ -81,6 +77,10 @@ class HighlightRuleManager( channel = channelList[it] ?: "" ) }) + _highlightNick = highlightRuleList["highlightNick"].value<Int>()?.let { + IHighlightRuleManager.HighlightNickType.of(it) + } ?: _highlightNick + _nicksCaseSensitive = highlightRuleList["nicksCaseSensitive"].value(_nicksCaseSensitive) } override fun removeHighlightRule(highlightRule: String) = removeAt(indexOf(highlightRule)) @@ -101,10 +101,13 @@ class HighlightRuleManager( ) } + + fun highlightNick() = _highlightNick override fun setHighlightNick(highlightNick: Int) { _highlightNick = IHighlightRuleManager.HighlightNickType.of(highlightNick) ?: _highlightNick } + fun nicksCaseSensitive() = _nicksCaseSensitive override fun setNicksCaseSensitive(nicksCaseSensitive: Boolean) { _nicksCaseSensitive = nicksCaseSensitive } @@ -124,6 +127,10 @@ class HighlightRuleManager( _highlightRuleList = list } + fun copy() = HighlightRuleManager(proxy).also { + it.fromVariantMap(toVariantMap()) + } + private var _highlightRuleList = emptyList<HighlightRule>() private var _highlightNick = IHighlightRuleManager.HighlightNickType.CurrentNick private var _nicksCaseSensitive = false diff --git a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/QuasselViewModel.kt b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/QuasselViewModel.kt index d0434bd8f62862a248e4b2a99675160e294a024b..8e8e54401aa8408f4c55d2db367f5bdea573977f 100644 --- a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/QuasselViewModel.kt +++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/QuasselViewModel.kt @@ -74,6 +74,8 @@ class QuasselViewModel : ViewModel() { val ignoreListManager = session.mapMapNullable(ISession::ignoreListManager) + val highlightRuleManager = session.mapMapNullable(ISession::highlightRuleManager) + val networks = session.switchMap { it.map(ISession::liveNetworks).orElse(Observable.just(emptyMap())) }