From 7678abff5848d346d700665c65de0450c7e88aa1 Mon Sep 17 00:00:00 2001 From: Janne Koschinski <janne@kuschku.de> Date: Mon, 19 Feb 2018 01:04:51 +0100 Subject: [PATCH] Properly handle mIRC colors in topics and realnames --- .../ui/chat/BufferListAdapter.kt | 2 +- .../ui/chat/BufferViewConfigFragment.kt | 18 +++++++++++++-- .../ui/chat/NickListAdapter.kt | 2 +- .../ui/chat/NickListFragment.kt | 12 +++++++++- .../ui/chat/ToolbarFragment.kt | 22 +++++++++++++++---- 5 files changed, 47 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferListAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferListAdapter.kt index eb30ab38c..86133ccac 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferListAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferListAdapter.kt @@ -142,7 +142,7 @@ class BufferListAdapter( val info: BufferInfo, val network: INetwork.NetworkInfo, val bufferStatus: BufferStatus, - val description: String, + val description: CharSequence, val activity: Buffer_Activity, val highlights: Int = 0 ) diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferViewConfigFragment.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferViewConfigFragment.kt index f35587207..026c7b1da 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferViewConfigFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferViewConfigFragment.kt @@ -19,11 +19,13 @@ import de.kuschku.libquassel.session.SessionManager import de.kuschku.libquassel.util.and import de.kuschku.libquassel.util.hasFlag import de.kuschku.quasseldroid_ng.R +import de.kuschku.quasseldroid_ng.ui.settings.data.RenderingSettings import de.kuschku.quasseldroid_ng.util.AndroidHandlerThread import de.kuschku.quasseldroid_ng.util.helper.map import de.kuschku.quasseldroid_ng.util.helper.or import de.kuschku.quasseldroid_ng.util.helper.switchMap import de.kuschku.quasseldroid_ng.util.helper.switchMapRx +import de.kuschku.quasseldroid_ng.util.irc.format.IrcFormatDeserializer import de.kuschku.quasseldroid_ng.util.service.ServiceBoundFragment import io.reactivex.Observable import java.util.concurrent.TimeUnit @@ -72,6 +74,14 @@ class BufferViewConfigFragment : ServiceBoundFragment() { } } + val ircFormatDeserializer = IrcFormatDeserializer(context!!) + val renderingSettings = RenderingSettings( + showPrefix = RenderingSettings.ShowPrefixMode.FIRST, + colorizeNicknames = RenderingSettings.ColorizeNicknamesMode.ALL_BUT_MINE, + colorizeMirc = true, + timeFormat = "" + ) + private val adapter = BufferViewConfigAdapter(this, bufferViewConfigs) private val bufferIdList = selectedBufferViewConfig.switchMapRx(BufferViewConfig::live_buffers) @@ -124,7 +134,9 @@ class BufferViewConfigFragment : ServiceBoundFragment() { away -> BufferListAdapter.BufferStatus.AWAY else -> BufferListAdapter.BufferStatus.ONLINE }, - description = realName, + description = ircFormatDeserializer.formatString( + realName, renderingSettings.colorizeMirc + ), activity = activity ) } @@ -143,7 +155,9 @@ class BufferViewConfigFragment : ServiceBoundFragment() { IrcChannel.NULL -> BufferListAdapter.BufferStatus.OFFLINE else -> BufferListAdapter.BufferStatus.ONLINE }, - description = topic, + description = ircFormatDeserializer.formatString( + topic, renderingSettings.colorizeMirc + ), activity = activity ) } diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/NickListAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/NickListAdapter.kt index 9b17073fb..d0cbd6982 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/NickListAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/NickListAdapter.kt @@ -81,7 +81,7 @@ class NickListAdapter( val nick: String, val modes: String, val lowestMode: Int, - val realname: String, + val realname: CharSequence, val away: Boolean, val networkCasemapping: String ) diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/NickListFragment.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/NickListFragment.kt index acbecda60..5ada6fa5b 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/NickListFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/NickListFragment.kt @@ -17,10 +17,12 @@ import de.kuschku.libquassel.session.Backend import de.kuschku.libquassel.session.SessionManager import de.kuschku.libquassel.util.hasFlag import de.kuschku.quasseldroid_ng.R +import de.kuschku.quasseldroid_ng.ui.settings.data.RenderingSettings import de.kuschku.quasseldroid_ng.util.AndroidHandlerThread import de.kuschku.quasseldroid_ng.util.helper.map import de.kuschku.quasseldroid_ng.util.helper.switchMap import de.kuschku.quasseldroid_ng.util.helper.switchMapRx +import de.kuschku.quasseldroid_ng.util.irc.format.IrcFormatDeserializer import de.kuschku.quasseldroid_ng.util.service.ServiceBoundFragment import io.reactivex.Observable import io.reactivex.Observable.zip @@ -32,6 +34,14 @@ class NickListFragment : ServiceBoundFragment() { @BindView(R.id.nickList) lateinit var nickList: RecyclerView + val ircFormatDeserializer = IrcFormatDeserializer(context!!) + val renderingSettings = RenderingSettings( + showPrefix = RenderingSettings.ShowPrefixMode.FIRST, + colorizeNicknames = RenderingSettings.ColorizeNicknamesMode.ALL_BUT_MINE, + colorizeMirc = true, + timeFormat = "" + ) + val currentBuffer: MutableLiveData<LiveData<BufferId?>?> = MutableLiveData() val buffer = currentBuffer.switchMap { it } @@ -64,7 +74,7 @@ class NickListFragment : ServiceBoundFragment() { user.nick(), network.modesToPrefixes(userModes), lowestMode, - realName, + ircFormatDeserializer.formatString(realName, renderingSettings.colorizeMirc), away, network.support("CASEMAPPING") ) diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ToolbarFragment.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ToolbarFragment.kt index 61b8f123b..235822264 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ToolbarFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ToolbarFragment.kt @@ -19,7 +19,9 @@ import de.kuschku.libquassel.session.SessionManager import de.kuschku.libquassel.util.hasFlag import de.kuschku.quasseldroid_ng.R import de.kuschku.quasseldroid_ng.ui.settings.data.DisplaySettings +import de.kuschku.quasseldroid_ng.ui.settings.data.RenderingSettings import de.kuschku.quasseldroid_ng.util.helper.* +import de.kuschku.quasseldroid_ng.util.irc.format.IrcFormatDeserializer import de.kuschku.quasseldroid_ng.util.service.ServiceBoundFragment import io.reactivex.Observable @@ -43,6 +45,14 @@ class ToolbarFragment : ServiceBoundFragment() { showLag = true ) + val ircFormatDeserializer = IrcFormatDeserializer(context!!) + val renderingSettings = RenderingSettings( + showPrefix = RenderingSettings.ShowPrefixMode.FIRST, + colorizeNicknames = RenderingSettings.ColorizeNicknamesMode.ALL_BUT_MINE, + colorizeMirc = true, + timeFormat = "" + ) + private val bufferData: LiveData<BufferData?> = sessionManager.switchMap { manager -> buffer.switchMapRx { id -> manager.session.switchMap { @@ -71,7 +81,9 @@ class ToolbarFragment : ServiceBoundFragment() { BufferData( info = info, network = network.networkInfo(), - description = realName + description = ircFormatDeserializer.formatString( + realName, renderingSettings.colorizeMirc + ) ) } } @@ -84,7 +96,9 @@ class ToolbarFragment : ServiceBoundFragment() { BufferData( info = info, network = network.networkInfo(), - description = topic + description = ircFormatDeserializer.formatString( + topic, renderingSettings.colorizeMirc + ) ) } } @@ -163,7 +177,7 @@ class ToolbarFragment : ServiceBoundFragment() { if (description.isNullOrBlank()) { this.subtitle = "Lag: ${lag}ms" } else { - this.subtitle = "Lag: ${lag}ms ${description}" + this.subtitle = "Lag: ${lag}ms | $description" } } } @@ -176,7 +190,7 @@ class ToolbarFragment : ServiceBoundFragment() { data class BufferData( val info: BufferInfo? = null, val network: INetwork.NetworkInfo? = null, - val description: String? = null + val description: CharSequence? = null ) } \ No newline at end of file -- GitLab