From 5b355d04687bcb0aecadbc182243771d492f30d0 Mon Sep 17 00:00:00 2001
From: Janne Koschinski <janne@kuschku.de>
Date: Thu, 7 Jun 2018 01:56:38 +0200
Subject: [PATCH] Improve fallback readability

---
 .../service/QuasselNotificationBackend.kt     | 23 +++++++------
 .../quasseldroid/ui/chat/ChatActivity.kt      |  3 ++
 .../chat/buffers/BufferViewConfigFragment.kt  | 24 +++++++------
 .../ui/chat/input/AutoCompleteHelper.kt       | 11 +++---
 .../chat/messages/QuasselMessageRenderer.kt   | 34 ++++++++++---------
 .../ui/chat/nicks/NickListFragment.kt         | 10 +++---
 .../libquassel/quassel/syncables/IrcUser.kt   |  1 +
 7 files changed, 59 insertions(+), 47 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 1c764cefa..7c1a93138 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/service/QuasselNotificationBackend.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/service/QuasselNotificationBackend.kt
@@ -20,6 +20,7 @@
 package de.kuschku.quasseldroid.service
 
 import android.content.Context
+import android.graphics.Typeface
 import android.graphics.drawable.Drawable
 import android.support.annotation.ColorInt
 import android.text.SpannableStringBuilder
@@ -272,22 +273,22 @@ class QuasselNotificationBackend @Inject constructor(
         val avatarResult = try {
           GlideApp.with(context).loadWithFallbacks(avatarList)
             ?.letIf(!messageSettings.squareAvatars, GlideRequest<Drawable>::optionalCircleCrop)
-            ?.placeholder(TextDrawable.builder().beginConfig().textColor(colorBackground).endConfig().let {
-              if (messageSettings.squareAvatars) it.buildRoundRect(initial, senderColor, radius)
-              else it.buildRound(initial, senderColor)
-            })
+            ?.placeholder(TextDrawable.builder().beginConfig()
+                            .textColor((colorBackground and 0xFFFFFF) or (0x8A shl 24)).useFont(
+                Typeface.DEFAULT_BOLD).endConfig().let {
+                if (messageSettings.squareAvatars) it.buildRoundRect(initial, senderColor, radius)
+                else it.buildRound(initial, senderColor)
+              })
             ?.submit(size, size)
             ?.get()
         } catch (_: Throwable) {
           null
         }
-        val avatar = avatarResult
-                     ?: TextDrawable.builder().beginConfig().textColor(colorBackground).endConfig().let {
-                       if (messageSettings.squareAvatars) it.buildRoundRect(initial,
-                                                                            senderColor,
-                                                                            radius)
-          else it.buildRound(initial, senderColor)
-        }
+        val avatar = avatarResult ?: TextDrawable.builder().beginConfig()
+          .textColor((colorBackground and 0xFFFFFF) or (0x8A shl 24)).useFont(Typeface.DEFAULT_BOLD).endConfig().let {
+            if (messageSettings.squareAvatars) it.buildRoundRect(initial, senderColor, radius)
+            else it.buildRound(initial, senderColor)
+          }
 
         NotificationMessage(
           messageId = it.messageId,
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatActivity.kt
index bd19969fc..bf52cee62 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatActivity.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatActivity.kt
@@ -740,6 +740,9 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
     if (!startedSelection) {
       startActivityForResult(AccountSelectionActivity.intent(this), REQUEST_SELECT_ACCOUNT)
       startedSelection = true
+      drawerLayout.closeDrawers()
+      connectedAccount = -1L
+      restoredDrawerState = false
       viewModel.resetAccount()
     }
   }
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferViewConfigFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferViewConfigFragment.kt
index 90eacded4..dc7649ad2 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferViewConfigFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferViewConfigFragment.kt
@@ -20,6 +20,7 @@
 package de.kuschku.quasseldroid.ui.chat.buffers
 
 import android.arch.lifecycle.Observer
+import android.graphics.Typeface
 import android.os.Bundle
 import android.os.Parcelable
 import android.support.v7.widget.*
@@ -334,22 +335,23 @@ class BufferViewConfigFragment : ServiceBoundFragment() {
                         MessageSettings.ColorizeNicknamesMode.NONE         -> selfColor
                       }
 
-                      TextDrawable.builder().beginConfig().textColor(colorBackground).endConfig().let {
-                        if (messageSettings.squareAvatars) it.buildRoundRect(initial,
-                                                                             senderColor,
-                                                                             radius)
-                        else it.buildRound(initial, senderColor)
-                      }
-                    }
-                    ?: TextDrawable.builder().beginConfig().textColor(colorBackground).endConfig().let {
-                      if (messageSettings.squareAvatars) it.buildRoundRect("", colorAway, radius)
-                      else it.buildRound("", colorAway)
+                      TextDrawable.builder().beginConfig()
+                        .textColor((colorBackground and 0xFFFFFF) or (0x8A shl 24)).useFont(Typeface.DEFAULT_BOLD).endConfig().let {
+                          if (messageSettings.squareAvatars)
+                            it.buildRoundRect(initial, senderColor, radius)
+                          else it.buildRound(initial, senderColor)
+                        }
                     }
+                    ?: TextDrawable.builder().beginConfig()
+                      .textColor((colorBackground and 0xFFFFFF) or (0x8A shl 24)).useFont(Typeface.DEFAULT_BOLD).endConfig().let {
+                        if (messageSettings.squareAvatars) it.buildRoundRect("", colorAway, radius)
+                        else it.buildRound("", colorAway)
+                      }
                   } else {
                     val color = if (props.bufferStatus == BufferStatus.ONLINE) colorAccent
                     else colorAway
 
-                    TextDrawable.builder().beginConfig().textColor(colorBackground).endConfig().let {
+                    TextDrawable.builder().beginConfig().useFont(Typeface.DEFAULT_BOLD).endConfig().let {
                       if (messageSettings.squareAvatars) it.buildRoundRect("#", color, radius)
                       else it.buildRound("#", color)
                     }
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 e27d148bb..9f6cd378e 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
@@ -135,10 +135,11 @@ class AutoCompleteHelper(
 
             it.copy(
               displayNick = formatNick(it.nick),
-              fallbackDrawable = TextDrawable.builder().beginConfig().textColor(colorBackground).endConfig().let {
-                if (messageSettings.squareAvatars) it.buildRoundRect(initial, senderColor, radius)
-                else it.buildRound(initial, senderColor)
-              },
+              fallbackDrawable = TextDrawable.builder().beginConfig()
+                .textColor((colorBackground and 0xFFFFFF) or (0x8A shl 24)).useFont(Typeface.DEFAULT_BOLD).endConfig().let {
+                  if (messageSettings.squareAvatars) it.buildRoundRect(initial, senderColor, radius)
+                  else it.buildRound(initial, senderColor)
+                },
               modes = when (messageSettings.showPrefix) {
                 MessageSettings.ShowPrefixMode.ALL ->
                   it.modes
@@ -156,7 +157,7 @@ class AutoCompleteHelper(
             else colorAway
 
             it.copy(
-              icon = TextDrawable.builder().beginConfig().textColor(colorBackground).endConfig().let {
+              icon = TextDrawable.builder().beginConfig().useFont(Typeface.DEFAULT_BOLD).endConfig().let {
                 if (messageSettings.squareAvatars) it.buildRoundRect("#", color, radius)
                 else it.buildRound("#", color)
               }
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 d3c49ab17..7f1edb839 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
@@ -222,7 +222,7 @@ class QuasselMessageRenderer @Inject constructor(
     val highlight__ = message.content.flag.hasFlag(Message_Flag.Highlight)
     val monochromeForeground = highlight__ && monochromeHighlights
     return when (message.content.type.enabledValues().firstOrNull()) {
-      Message_Type.Plain     -> {
+      Message_Type.Plain        -> {
         val realName = ircFormatDeserializer.formatString(message.content.realName,
                                                           !monochromeForeground)
         val nick = SpannableStringBuilder().apply {
@@ -261,17 +261,18 @@ class QuasselMessageRenderer @Inject constructor(
           },
           realName = realName,
           avatarUrls = AvatarHelper.avatar(messageSettings, message.content, avatarSize),
-          fallbackDrawable = TextDrawable.builder().beginConfig().textColor(colorBackground).endConfig().let {
-            if (messageSettings.squareAvatars) it.buildRoundRect(initial, senderColor, radius)
-            else it.buildRound(initial, senderColor)
-          },
+          fallbackDrawable = TextDrawable.builder().beginConfig()
+            .textColor((colorBackground and 0xFFFFFF) or (0x8A shl 24)).useFont(Typeface.DEFAULT_BOLD).endConfig().let {
+              if (messageSettings.squareAvatars) it.buildRoundRect(initial, senderColor, radius)
+              else it.buildRound(initial, senderColor)
+            },
           hasDayChange = message.hasDayChange,
           isMarkerLine = message.isMarkerLine,
           isExpanded = message.isExpanded,
           isSelected = message.isSelected
         )
       }
-      Message_Type.Action    -> {
+      Message_Type.Action       -> {
         val nickName = HostmaskHelper.nick(message.content.sender)
         val senderColorIndex = SenderColorUtil.senderColor(nickName)
         val rawInitial = nickName.trimStart('-', '_', '[', ']', '{', '}', '|', '`', '^', '.', '\\')
@@ -296,17 +297,18 @@ class QuasselMessageRenderer @Inject constructor(
             contentFormatter.formatContent(message.content.content, monochromeForeground)
           ),
           avatarUrls = AvatarHelper.avatar(messageSettings, message.content, avatarSize),
-          fallbackDrawable = TextDrawable.builder().beginConfig().textColor(colorBackground).endConfig().let {
-            if (messageSettings.squareAvatars) it.buildRoundRect(initial, senderColor, radius)
-            else it.buildRound(initial, senderColor)
-          },
+          fallbackDrawable = TextDrawable.builder().beginConfig()
+            .textColor((colorBackground and 0xFFFFFF) or (0x8A shl 24)).useFont(Typeface.DEFAULT_BOLD).endConfig().let {
+              if (messageSettings.squareAvatars) it.buildRoundRect(initial, senderColor, radius)
+              else it.buildRound(initial, senderColor)
+            },
           hasDayChange = message.hasDayChange,
           isMarkerLine = message.isMarkerLine,
           isExpanded = message.isExpanded,
           isSelected = message.isSelected
         )
       }
-      Message_Type.Notice    -> FormattedMessage(
+      Message_Type.Notice       -> FormattedMessage(
         id = message.content.messageId,
         time = timeFormatter.format(message.content.time.atZone(zoneId)),
         dayChange = formatDayChange(message),
@@ -576,7 +578,7 @@ class QuasselMessageRenderer @Inject constructor(
       }
       Message_Type.Server,
       Message_Type.Info,
-      Message_Type.Error     -> FormattedMessage(
+      Message_Type.Error        -> FormattedMessage(
         id = message.content.messageId,
         time = timeFormatter.format(message.content.time.atZone(zoneId)),
         dayChange = formatDayChange(message),
@@ -586,7 +588,7 @@ class QuasselMessageRenderer @Inject constructor(
         isExpanded = message.isExpanded,
         isSelected = message.isSelected
       )
-      Message_Type.Topic     -> FormattedMessage(
+      Message_Type.Topic        -> FormattedMessage(
         id = message.content.messageId,
         time = timeFormatter.format(message.content.time.atZone(zoneId)),
         dayChange = formatDayChange(message),
@@ -596,7 +598,7 @@ class QuasselMessageRenderer @Inject constructor(
         isExpanded = message.isExpanded,
         isSelected = message.isSelected
       )
-      Message_Type.DayChange -> FormattedMessage(
+      Message_Type.DayChange    -> FormattedMessage(
         id = message.content.messageId,
         time = "",
         dayChange = formatDayChange(message),
@@ -606,7 +608,7 @@ class QuasselMessageRenderer @Inject constructor(
         isExpanded = false,
         isSelected = false
       )
-      Message_Type.Invite    -> FormattedMessage(
+      Message_Type.Invite       -> FormattedMessage(
         id = message.content.messageId,
         time = timeFormatter.format(message.content.time.atZone(zoneId)),
         dayChange = formatDayChange(message),
@@ -616,7 +618,7 @@ class QuasselMessageRenderer @Inject constructor(
         isExpanded = message.isExpanded,
         isSelected = message.isSelected
       )
-      else                   -> FormattedMessage(
+      else                      -> FormattedMessage(
         id = message.content.messageId,
         time = timeFormatter.format(message.content.time.atZone(zoneId)),
         dayChange = formatDayChange(message),
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 ca74a5ce5..ab6f3703d 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
@@ -120,6 +120,7 @@ class NickListFragment : ServiceBoundFragment() {
               else senderColors[senderColorIndex]
             MessageSettings.ColorizeNicknamesMode.NONE         -> selfColor
           }
+
           fun formatNick(nick: CharSequence): CharSequence {
             val spannableString = SpannableString(nick)
             spannableString.setSpan(
@@ -138,10 +139,11 @@ class NickListFragment : ServiceBoundFragment() {
           }
           it.copy(
             displayNick = formatNick(it.nick),
-            fallbackDrawable = TextDrawable.builder().beginConfig().textColor(colorBackground).endConfig().let {
-              if (messageSettings.squareAvatars) it.buildRoundRect(initial, senderColor, radius)
-              else it.buildRound(initial, senderColor)
-            },
+            fallbackDrawable = TextDrawable.builder().beginConfig()
+              .textColor((colorBackground and 0xFFFFFF) or (0x8A shl 24)).useFont(Typeface.DEFAULT_BOLD).endConfig().let {
+                if (messageSettings.squareAvatars) it.buildRoundRect(initial, senderColor, radius)
+                else it.buildRound(initial, senderColor)
+              },
             initial = initial,
             modes = when (messageSettings.showPrefix) {
               MessageSettings.ShowPrefixMode.ALL ->
diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/IrcUser.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/IrcUser.kt
index c30946e5d..f57ba8861 100644
--- a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/IrcUser.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/IrcUser.kt
@@ -42,6 +42,7 @@ class IrcUser(
   fun fromVariantMap(properties: QVariantMap, index: Int? = null) {
     initSetProperties(properties, index)
   }
+
   override fun fromVariantMap(properties: QVariantMap) {
     initSetProperties(properties)
   }
-- 
GitLab