Skip to content
Snippets Groups Projects
Commit 023ec958 authored by Janne Mareike Koschinski's avatar Janne Mareike Koschinski
Browse files

Correctly handle highlights set via the core

parent 69e07d54
No related branches found
No related tags found
No related merge requests found
...@@ -99,14 +99,17 @@ class BufferViewConfigFragment : ServiceBoundFragment() { ...@@ -99,14 +99,17 @@ class BufferViewConfigFragment : ServiceBoundFragment() {
it to network it to network
} }
}.map { (info, network) -> }.map { (info, network) ->
bufferSyncer.liveActivity(info.bufferId).map { activity -> bufferSyncer.liveActivity(info.bufferId).switchMap { activity ->
bufferSyncer.liveHighlightCount(info.bufferId).map { highlights ->
when { when {
highlights > 0 -> Buffer_Activity.Highlight
activity.hasFlag(Message.MessageType.Plain) || activity.hasFlag(Message.MessageType.Plain) ||
activity.hasFlag(Message.MessageType.Notice) || activity.hasFlag(Message.MessageType.Notice) ||
activity.hasFlag(Message.MessageType.Action) -> Buffer_Activity.NewMessage activity.hasFlag(Message.MessageType.Action) -> Buffer_Activity.NewMessage
activity.isNotEmpty() -> Buffer_Activity.OtherActivity activity.isNotEmpty() -> Buffer_Activity.OtherActivity
else -> Buffer_Activity.NoActivity else -> Buffer_Activity.NoActivity
} }
}
}.switchMap { activity -> }.switchMap { activity ->
when (info.type.toInt()) { when (info.type.toInt()) {
BufferInfo.Type.QueryBuffer.toInt() -> { BufferInfo.Type.QueryBuffer.toInt() -> {
......
...@@ -17,14 +17,20 @@ class BufferSyncer constructor( ...@@ -17,14 +17,20 @@ class BufferSyncer constructor(
fun liveActivity(buffer: BufferId): Observable<Message_Types> fun liveActivity(buffer: BufferId): Observable<Message_Types>
= live_bufferActivities.map { activity(buffer) }.distinctUntilChanged() = live_bufferActivities.map { activity(buffer) }.distinctUntilChanged()
fun highlightCount(buffer: BufferId): Int = _highlightCounts[buffer] ?: 0
fun liveHighlightCount(buffer: BufferId): Observable<Int>
= live_highlightCounts.map { highlightCount(buffer) }.distinctUntilChanged()
override fun toVariantMap(): QVariantMap = mapOf( override fun toVariantMap(): QVariantMap = mapOf(
"Activities" to QVariant_(initActivities(), Type.QVariantList), "Activities" to QVariant_(initActivities(), Type.QVariantList),
"HighlightCounts" to QVariant_(initHighlightCounts(), Type.QVariantList),
"LastSeenMsg" to QVariant_(initLastSeenMsg(), Type.QVariantList), "LastSeenMsg" to QVariant_(initLastSeenMsg(), Type.QVariantList),
"MarkerLines" to QVariant_(initMarkerLines(), Type.QVariantList) "MarkerLines" to QVariant_(initMarkerLines(), Type.QVariantList)
) )
override fun fromVariantMap(properties: QVariantMap) { override fun fromVariantMap(properties: QVariantMap) {
initSetActivities(properties["Activities"].valueOr(::emptyList)) initSetActivities(properties["Activities"].valueOr(::emptyList))
initSetHighlightCounts(properties["HighlightCounts"].valueOr(::emptyList))
initSetLastSeenMsg(properties["LastSeenMsg"].valueOr(::emptyList)) initSetLastSeenMsg(properties["LastSeenMsg"].valueOr(::emptyList))
initSetMarkerLines(properties["MarkerLines"].valueOr(::emptyList)) initSetMarkerLines(properties["MarkerLines"].valueOr(::emptyList))
} }
...@@ -38,6 +44,15 @@ class BufferSyncer constructor( ...@@ -38,6 +44,15 @@ class BufferSyncer constructor(
return list return list
} }
override fun initHighlightCounts(): QVariantList {
val list: MutableList<QVariant_> = mutableListOf()
for ((key, value) in _highlightCounts) {
list.add(QVariant_(key, QType.BufferId))
list.add(QVariant_(value, Type.Int))
}
return list
}
override fun initLastSeenMsg(): QVariantList { override fun initLastSeenMsg(): QVariantList {
val list: MutableList<QVariant_> = mutableListOf() val list: MutableList<QVariant_> = mutableListOf()
for ((key, value) in _bufferActivities) { for ((key, value) in _bufferActivities) {
...@@ -64,6 +79,14 @@ class BufferSyncer constructor( ...@@ -64,6 +79,14 @@ class BufferSyncer constructor(
} }
} }
override fun initSetHighlightCounts(data: QVariantList) {
(0 until data.size step 2).map {
data[it].value(0) to data[it + 1].value(0)
}.forEach { (buffer, count) ->
setHighlightCount(buffer, count)
}
}
override fun initSetLastSeenMsg(data: QVariantList) { override fun initSetLastSeenMsg(data: QVariantList) {
(0 until data.size step 2).map { (0 until data.size step 2).map {
data[it].value(0) to data[it + 1].value(0) data[it].value(0) to data[it + 1].value(0)
...@@ -90,6 +113,7 @@ class BufferSyncer constructor( ...@@ -90,6 +113,7 @@ class BufferSyncer constructor(
_lastSeenMsg.remove(buffer2) _lastSeenMsg.remove(buffer2)
_markerLines.remove(buffer2) _markerLines.remove(buffer2)
_bufferActivities.remove(buffer2) _bufferActivities.remove(buffer2)
_highlightCounts.remove(buffer2)
live_bufferInfos.onNext(_bufferInfos) live_bufferInfos.onNext(_bufferInfos)
} }
...@@ -97,6 +121,7 @@ class BufferSyncer constructor( ...@@ -97,6 +121,7 @@ class BufferSyncer constructor(
_lastSeenMsg.remove(buffer) _lastSeenMsg.remove(buffer)
_markerLines.remove(buffer) _markerLines.remove(buffer)
_bufferActivities.remove(buffer) _bufferActivities.remove(buffer)
_highlightCounts.remove(buffer)
_bufferInfos.remove(buffer) _bufferInfos.remove(buffer)
live_bufferInfos.onNext(_bufferInfos) live_bufferInfos.onNext(_bufferInfos)
} }
...@@ -147,12 +172,22 @@ class BufferSyncer constructor( ...@@ -147,12 +172,22 @@ class BufferSyncer constructor(
live_bufferActivities.onNext(_bufferActivities) live_bufferActivities.onNext(_bufferActivities)
} }
override fun setHighlightCount(buffer: BufferId, count: Int) {
super.setHighlightCount(buffer, count)
_highlightCounts[buffer] = count
live_highlightCounts.onNext(_highlightCounts)
}
private val _lastSeenMsg: MutableMap<BufferId, MsgId> = mutableMapOf() private val _lastSeenMsg: MutableMap<BufferId, MsgId> = mutableMapOf()
private val _markerLines: MutableMap<BufferId, MsgId> = mutableMapOf() private val _markerLines: MutableMap<BufferId, MsgId> = mutableMapOf()
private val _bufferActivities: MutableMap<BufferId, Message_Types> = mutableMapOf() private val _bufferActivities: MutableMap<BufferId, Message_Types> = mutableMapOf()
private val live_bufferActivities = BehaviorSubject.createDefault( private val live_bufferActivities = BehaviorSubject.createDefault(
mutableMapOf<BufferId, Message_Types>() mutableMapOf<BufferId, Message_Types>()
) )
private val _highlightCounts: MutableMap<BufferId, Int> = mutableMapOf()
private val live_highlightCounts = BehaviorSubject.createDefault(
mutableMapOf<BufferId, Int>()
)
private val _bufferInfos = mutableMapOf<BufferId, BufferInfo>() private val _bufferInfos = mutableMapOf<BufferId, BufferInfo>()
val live_bufferInfos = BehaviorSubject.createDefault(mutableMapOf<BufferId, BufferInfo>()) val live_bufferInfos = BehaviorSubject.createDefault(mutableMapOf<BufferId, BufferInfo>())
} }
...@@ -8,9 +8,11 @@ import de.kuschku.libquassel.protocol.Type ...@@ -8,9 +8,11 @@ import de.kuschku.libquassel.protocol.Type
@Syncable(name = "BufferSyncer") @Syncable(name = "BufferSyncer")
interface IBufferSyncer : ISyncableObject { interface IBufferSyncer : ISyncableObject {
fun initActivities(): QVariantList fun initActivities(): QVariantList
fun initHighlightCounts(): QVariantList
fun initLastSeenMsg(): QVariantList fun initLastSeenMsg(): QVariantList
fun initMarkerLines(): QVariantList fun initMarkerLines(): QVariantList
fun initSetActivities(data: QVariantList) fun initSetActivities(data: QVariantList)
fun initSetHighlightCounts(data: QVariantList)
fun initSetLastSeenMsg(data: QVariantList) fun initSetLastSeenMsg(data: QVariantList)
fun initSetMarkerLines(data: QVariantList) fun initSetMarkerLines(data: QVariantList)
...@@ -71,6 +73,11 @@ interface IBufferSyncer : ISyncableObject { ...@@ -71,6 +73,11 @@ interface IBufferSyncer : ISyncableObject {
SYNC("setBufferActivity", ARG(buffer, QType.BufferId), ARG(activity, Type.Int)) SYNC("setBufferActivity", ARG(buffer, QType.BufferId), ARG(activity, Type.Int))
} }
@Slot
fun setHighlightCount(buffer: BufferId, count: Int) {
SYNC("setHighlightCount", ARG(buffer, QType.BufferId), ARG(count, Type.Int))
}
@Slot @Slot
fun setLastSeenMsg(buffer: BufferId, msgId: MsgId) { fun setLastSeenMsg(buffer: BufferId, msgId: MsgId) {
SYNC("setLastSeenMsg", ARG(buffer, QType.BufferId), ARG(msgId, QType.MsgId)) SYNC("setLastSeenMsg", ARG(buffer, QType.BufferId), ARG(msgId, QType.MsgId))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment