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 a05b91fb43ab4e720bde13a48fad731fb564ae7b..ad335f07e0b63ff5d0d533a7c211c1919a240178 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 3c699be77915e783d2339fb7d6cca94fc4cb98a8..adeac03de97d29fc6439ad33bf6abf4c503f4bff 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 602cd42d50bfd59564126f6a8ec7e8c71dab01d3..4d39776cbeebf7e28ace92c47427dc6075d60f06 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 d27fb4107665d60f7938d301b2571a9d3aeb0ad7..095d4e4dbbe496e7f743329ba5640e69e4239cf7 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 e7ef5a4e0c60094d3ad171232f7ad49f1990b2ea..56d702b5e4b052d1efe513ec868b460e20a20ed9 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 63f4296d049e543be934152163fbe80865663fe6..b48d462b704d21f7b2f6b49000d0ce93f372d66e 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 2a2b52f5db451f8745ba99058b988c4afb51699a..7d4af7d05b7daec57f1042ecaa47df0003fd53e7 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 afa1e13f0d35ee1e4fe879ba858fc4894bcb0c54..88f2f5424b01ace72eab92debf11ad1b2cb3b242 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 121ca2bed059d5e4924872188ae6407beb28ee75..ec8bfd49c0cf21bd224ec7ded5209c58557cb257 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,