From d877b4ac20ef23f8e45c506bbf6345a8952c9ae7 Mon Sep 17 00:00:00 2001 From: Janne Koschinski <janne@kuschku.de> Date: Mon, 7 May 2018 21:40:13 +0200 Subject: [PATCH] =?UTF-8?q?Fixes=20issue=20where=20nick=20coloring=20setti?= =?UTF-8?q?ng=20wasn=E2=80=99t=20correctly=20applied?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Janne Koschinski <janne@kuschku.de> --- .../service/QuasselNotificationBackend.kt | 11 +++++++---- .../ui/chat/info/user/UserInfoFragment.kt | 12 +++++++++++- .../ui/chat/input/AutoCompleteHelper.kt | 13 ++++++++++++- .../ui/chat/messages/QuasselMessageRenderer.kt | 11 +++++++---- .../quasseldroid/ui/chat/nicks/NickListFragment.kt | 12 +++++++++++- .../quasseldroid/viewmodel/EditorViewModel.kt | 1 + .../quasseldroid/viewmodel/QuasselViewModel.kt | 1 + .../quasseldroid/viewmodel/data/AutoCompleteItem.kt | 1 + .../quasseldroid/viewmodel/data/IrcUserItem.kt | 1 + 9 files changed, 52 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/de/kuschku/quasseldroid/service/QuasselNotificationBackend.kt b/app/src/main/java/de/kuschku/quasseldroid/service/QuasselNotificationBackend.kt index a05b91fb4..ad335f07e 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/service/QuasselNotificationBackend.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/service/QuasselNotificationBackend.kt @@ -243,10 +243,13 @@ class QuasselNotificationBackend @Inject constructor( '\\') .firstOrNull() ?: nickName.firstOrNull() val initial = rawInitial?.toUpperCase().toString() - val senderColor = if (it.flag.hasFlag(Message_Flag.Self)) - selfColor - else - senderColors[senderColorIndex] + val senderColor = when (messageSettings.colorizeNicknames) { + MessageSettings.ColorizeNicknamesMode.ALL -> senderColors[senderColorIndex] + MessageSettings.ColorizeNicknamesMode.ALL_BUT_MINE -> + if (it.flag.hasFlag(Message_Flag.Self)) selfColor + else senderColors[senderColorIndex] + MessageSettings.ColorizeNicknamesMode.NONE -> selfColor + } val size = context.resources.getDimensionPixelSize(R.dimen.notification_avatar_width) val avatarList = AvatarHelper.avatar(messageSettings, it) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/user/UserInfoFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/user/UserInfoFragment.kt index 3c699be77..adeac03de 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/user/UserInfoFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/user/UserInfoFragment.kt @@ -126,6 +126,10 @@ class UserInfoFragment : ServiceBoundFragment() { } } + val selfColor = requireContext().theme.styledAttributes(R.attr.colorForegroundSecondary) { + getColor(0, 0) + } + val networkId = arguments?.getInt("networkId") val nickName = arguments?.getString("nick") combineLatest(viewModel.session, viewModel.networks).switchMap { (sessionOptional, networks) -> @@ -147,7 +151,13 @@ class UserInfoFragment : ServiceBoundFragment() { val rawInitial = user.nick().trimStart(*IGNORED_CHARS).firstOrNull() ?: user.nick().firstOrNull() val initial = rawInitial?.toUpperCase().toString() - val senderColor = senderColors[senderColorIndex] + val senderColor = when (messageSettings.colorizeNicknames) { + MessageSettings.ColorizeNicknamesMode.ALL -> senderColors[senderColorIndex] + MessageSettings.ColorizeNicknamesMode.ALL_BUT_MINE -> + if (user.network().isMyNick(user.nick())) selfColor + else senderColors[senderColorIndex] + MessageSettings.ColorizeNicknamesMode.NONE -> selfColor + } avatar.loadAvatars( AvatarHelper.avatar(messageSettings, user, maxOf(avatar.width, avatar.height)), diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/AutoCompleteHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/AutoCompleteHelper.kt index 602cd42d5..4d39776cb 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/AutoCompleteHelper.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/AutoCompleteHelper.kt @@ -64,6 +64,10 @@ class AutoCompleteHelper( IntArray(length()) { getColor(it, 0) } } + private val selfColor = activity.theme.styledAttributes(R.attr.colorForegroundSecondary) { + getColor(0, 0) + } + private val avatarSize = activity.resources.getDimensionPixelSize(R.dimen.avatar_size) init { @@ -80,7 +84,13 @@ class AutoCompleteHelper( val rawInitial = nickName.trimStart(*IGNORED_CHARS).firstOrNull() ?: nickName.firstOrNull() val initial = rawInitial?.toUpperCase().toString() - val senderColor = senderColors[senderColorIndex] + val senderColor = when (messageSettings.colorizeNicknames) { + MessageSettings.ColorizeNicknamesMode.ALL -> senderColors[senderColorIndex] + MessageSettings.ColorizeNicknamesMode.ALL_BUT_MINE -> + if (it.self) selfColor + else senderColors[senderColorIndex] + MessageSettings.ColorizeNicknamesMode.NONE -> selfColor + } fun formatNick(nick: CharSequence): CharSequence { val spannableString = SpannableString(nick) @@ -177,6 +187,7 @@ class AutoCompleteHelper( lowestMode, user.realName(), user.isAway(), + user.network().isMyNick(user.nick()), network.support("CASEMAPPING"), AvatarHelper.avatar(messageSettings, user, avatarSize) ) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/QuasselMessageRenderer.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/QuasselMessageRenderer.kt index d27fb4107..095d4e4db 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/QuasselMessageRenderer.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/QuasselMessageRenderer.kt @@ -214,10 +214,13 @@ class QuasselMessageRenderer @Inject constructor( val rawInitial = nickName.trimStart('-', '_', '[', ']', '{', '}', '|', '`', '^', '.', '\\') .firstOrNull() ?: nickName.firstOrNull() val initial = rawInitial?.toUpperCase().toString() - val senderColor = if (message.content.flag.hasFlag(Message_Flag.Self)) - selfColor - else - senderColors[senderColorIndex] + val senderColor = when (messageSettings.colorizeNicknames) { + MessageSettings.ColorizeNicknamesMode.ALL -> senderColors[senderColorIndex] + MessageSettings.ColorizeNicknamesMode.ALL_BUT_MINE -> + if (message.content.flag.hasFlag(Message_Flag.Self)) selfColor + else senderColors[senderColorIndex] + MessageSettings.ColorizeNicknamesMode.NONE -> selfColor + } FormattedMessage( id = message.content.messageId, diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListFragment.kt index e7ef5a4e0..56d702b5e 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListFragment.kt @@ -94,6 +94,10 @@ class NickListFragment : ServiceBoundFragment() { } } + val selfColor = requireContext().theme.styledAttributes(R.attr.colorForegroundSecondary) { + getColor(0, 0) + } + val avatarSize = resources.getDimensionPixelSize(R.dimen.avatar_size) viewModel.nickData.toLiveData().observe(this, Observer { runInBackground { @@ -113,7 +117,13 @@ class NickListFragment : ServiceBoundFragment() { '\\') .firstOrNull() ?: nickName.firstOrNull() val initial = rawInitial?.toUpperCase().toString() - val senderColor = senderColors[senderColorIndex] + val senderColor = when (messageSettings.colorizeNicknames) { + MessageSettings.ColorizeNicknamesMode.ALL -> senderColors[senderColorIndex] + MessageSettings.ColorizeNicknamesMode.ALL_BUT_MINE -> + if (it.self) selfColor + else senderColors[senderColorIndex] + MessageSettings.ColorizeNicknamesMode.NONE -> selfColor + } fun formatNick(nick: CharSequence): CharSequence { val spannableString = SpannableString(nick) spannableString.setSpan( diff --git a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/EditorViewModel.kt b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/EditorViewModel.kt index 63f4296d0..b48d462b7 100644 --- a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/EditorViewModel.kt +++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/EditorViewModel.kt @@ -104,6 +104,7 @@ class EditorViewModel : ViewModel() { lowestMode, user.realName(), user.isAway(), + user.network().isMyNick(user.nick()), network.support("CASEMAPPING") ) } 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 2a2b52f5d..7d4af7d05 100644 --- a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/QuasselViewModel.kt +++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/QuasselViewModel.kt @@ -220,6 +220,7 @@ class QuasselViewModel : ViewModel() { user.realName(), user.hostMask(), user.isAway(), + user.network().isMyNick(user.nick()), network.support("CASEMAPPING") ) } diff --git a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/AutoCompleteItem.kt b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/AutoCompleteItem.kt index afa1e13f0..88f2f5424 100644 --- a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/AutoCompleteItem.kt +++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/AutoCompleteItem.kt @@ -40,6 +40,7 @@ sealed class AutoCompleteItem(open val name: String) : Comparable<AutoCompleteIt val lowestMode: Int, val realname: CharSequence, val away: Boolean, + val self: Boolean, val networkCasemapping: String?, val avatarUrls: List<Avatar> = emptyList(), val fallbackDrawable: Drawable? = null, diff --git a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/IrcUserItem.kt b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/IrcUserItem.kt index 121ca2bed..ec8bfd49c 100644 --- a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/IrcUserItem.kt +++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/IrcUserItem.kt @@ -28,6 +28,7 @@ data class IrcUserItem( val realname: CharSequence, val hostmask: String, val away: Boolean, + val self: Boolean, val networkCasemapping: String?, val avatarUrls: List<Avatar> = emptyList(), val fallbackDrawable: Drawable? = null, -- GitLab