From 97f5130a614847f1e1822dd985d4d28073880551 Mon Sep 17 00:00:00 2001
From: Janne Koschinski <janne@kuschku.de>
Date: Wed, 18 Apr 2018 14:13:43 +0200
Subject: [PATCH] Fix avatar settings

---
 .../quasseldroid/ui/chat/ChatActivity.kt      |  9 ++++---
 .../ui/chat/input/AutoCompleteAdapter.kt      | 11 +++++---
 .../ui/chat/input/ChatlineFragment.kt         |  9 ++++---
 .../chat/messages/QuasselMessageRenderer.kt   |  4 +--
 .../ui/chat/topic/TopicFragment.kt            |  9 ++++---
 .../util/irc/format/IrcFormatSerializer.kt    |  6 ++---
 app/src/main/res/xml/preferences.xml          | 25 +++++++++----------
 7 files changed, 42 insertions(+), 31 deletions(-)

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 5cdbe638a..0af0dc407 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
@@ -77,6 +77,9 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
   @Inject
   lateinit var ircFormatDeserializer: IrcFormatDeserializer
 
+  @Inject
+  lateinit var autoCompleteAdapter: AutoCompleteAdapter
+
   private lateinit var drawerToggle: ActionBarDrawerToggle
 
   private var chatlineFragment: ChatlineFragment? = null
@@ -141,12 +144,12 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
 
     if (autoCompleteSettings.prefix || autoCompleteSettings.auto) {
       chatlineFragment?.let {
-        val autocompleteAdapter = AutoCompleteAdapter(messageSettings, it.chatline::autoComplete)
+        autoCompleteAdapter.setOnClickListener(it.chatline::autoComplete)
         autoCompleteList.layoutManager = LinearLayoutManager(it.activity)
         autoCompleteList.itemAnimator = DefaultItemAnimator()
-        autoCompleteList.adapter = autocompleteAdapter
+        autoCompleteList.adapter = autoCompleteAdapter
         it.autoCompleteHelper.setDataListener {
-          autocompleteAdapter.submitList(it)
+          autoCompleteAdapter.submitList(it)
         }
       }
     }
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/AutoCompleteAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/AutoCompleteAdapter.kt
index d7a59d77c..3ae0304fb 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/AutoCompleteAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/AutoCompleteAdapter.kt
@@ -18,10 +18,10 @@ import de.kuschku.quasseldroid.util.helper.*
 import de.kuschku.quasseldroid.util.ui.SpanFormatter
 import de.kuschku.quasseldroid.viewmodel.data.AutoCompleteItem
 import de.kuschku.quasseldroid.viewmodel.data.BufferStatus
+import javax.inject.Inject
 
-class AutoCompleteAdapter(
-  private val messageSettings: MessageSettings,
-  private val clickListener: ((String) -> Unit)? = null
+class AutoCompleteAdapter @Inject constructor(
+  private val messageSettings: MessageSettings
 ) : ListAdapter<AutoCompleteItem, AutoCompleteAdapter.AutoCompleteViewHolder>(
   object : DiffUtil.ItemCallback<AutoCompleteItem>() {
     override fun areItemsTheSame(oldItem: AutoCompleteItem, newItem: AutoCompleteItem) =
@@ -30,6 +30,11 @@ class AutoCompleteAdapter(
     override fun areContentsTheSame(oldItem: AutoCompleteItem, newItem: AutoCompleteItem) =
       oldItem == newItem
   }) {
+  private var clickListener: ((String) -> Unit)? = null
+
+  fun setOnClickListener(listener: ((String) -> Unit)?) {
+    this.clickListener = listener
+  }
 
   override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = when (viewType) {
     VIEWTYPE_CHANNEL                         -> AutoCompleteViewHolder.ChannelViewHolder(
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/ChatlineFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/ChatlineFragment.kt
index 19d19b30e..66898e472 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/ChatlineFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/ChatlineFragment.kt
@@ -63,6 +63,9 @@ class ChatlineFragment : ServiceBoundFragment() {
   @Inject
   lateinit var ircFormatSerializer: IrcFormatSerializer
 
+  @Inject
+  lateinit var autoCompleteAdapter: AutoCompleteAdapter
+
   lateinit var editorHelper: EditorHelper
 
   lateinit var autoCompleteHelper: AutoCompleteHelper
@@ -145,12 +148,12 @@ class ChatlineFragment : ServiceBoundFragment() {
     editorViewModel.lastWord.onNext(editorHelper.lastWord)
 
     if (autoCompleteSettings.prefix || autoCompleteSettings.auto) {
-      val autocompleteAdapter = AutoCompleteAdapter(messageSettings, chatline::autoComplete)
+      autoCompleteAdapter.setOnClickListener(chatline::autoComplete)
       autoCompleteList.layoutManager = LinearLayoutManager(activity)
       autoCompleteList.itemAnimator = DefaultItemAnimator()
-      autoCompleteList.adapter = autocompleteAdapter
+      autoCompleteList.adapter = autoCompleteAdapter
       autoCompleteHelper.setDataListener {
-        autocompleteAdapter.submitList(it)
+        autoCompleteAdapter.submitList(it)
       }
     }
 
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 306a8207a..530a75e66 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
@@ -110,8 +110,8 @@ class QuasselMessageRenderer @Inject constructor(
     }
 
     viewHolder.avatar?.visibleIf(!isFollowUp)
-    avatarContainer?.visibleIf(messageSettings.showAvatars)
-    avatarPlaceholder?.visibleIf(messageSettings.showAvatars)
+    avatarContainer?.visibleIf(messageSettings.showAvatars && messageSettings.nicksOnNewLine)
+    avatarPlaceholder?.visibleIf(messageSettings.showAvatars && messageSettings.nicksOnNewLine)
     val separateLine = viewHolder.content != null && viewHolder.name != null && messageSettings.nicksOnNewLine
     viewHolder.name?.visibleIf(separateLine && !isFollowUp)
     viewHolder.content?.visibleIf(separateLine)
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/topic/TopicFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/topic/TopicFragment.kt
index 4e1fdf203..ec33b8f4f 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/topic/TopicFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/topic/TopicFragment.kt
@@ -50,6 +50,9 @@ class TopicFragment : SettingsFragment(), SettingsFragment.Savable {
   @Inject
   lateinit var formatSerializer: IrcFormatSerializer
 
+  @Inject
+  lateinit var autoCompleteAdapter: AutoCompleteAdapter
+
   private lateinit var editorHelper: EditorHelper
 
   private lateinit var mircColorMap: Map<Int, Int>
@@ -124,12 +127,12 @@ class TopicFragment : SettingsFragment(), SettingsFragment.Savable {
     editorViewModel.lastWord.onNext(editorHelper.lastWord)
 
     if (autoCompleteSettings.prefix || autoCompleteSettings.auto) {
-      val autocompleteAdapter = AutoCompleteAdapter(messageSettings, chatline::autoComplete)
+      autoCompleteAdapter.setOnClickListener(chatline::autoComplete)
       autoCompleteList.layoutManager = LinearLayoutManager(activity)
       autoCompleteList.itemAnimator = DefaultItemAnimator()
-      autoCompleteList.adapter = autocompleteAdapter
+      autoCompleteList.adapter = autoCompleteAdapter
       autoCompleteHelper.setDataListener {
-        autocompleteAdapter.submitList(it)
+        autoCompleteAdapter.submitList(it)
       }
     }
 
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/IrcFormatSerializer.kt b/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/IrcFormatSerializer.kt
index 77e591833..975c430fd 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/IrcFormatSerializer.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/IrcFormatSerializer.kt
@@ -1,21 +1,19 @@
 package de.kuschku.quasseldroid.util.irc.format
 
 import android.graphics.Typeface
-import android.support.annotation.ColorInt
 import android.text.Spanned
 import android.text.style.*
 import java.util.*
 import javax.inject.Inject
 
 class IrcFormatSerializer @Inject constructor() {
-  fun toEscapeCodes(@ColorInt colorForegroundMirc: Int, mircColorMap: Map<Int, Int>,
-                    text: Spanned): String {
+  fun toEscapeCodes(colorForegroundMirc: Int, mircColorMap: Map<Int, Int>, text: Spanned): String {
     val out = StringBuilder()
     withinParagraph(colorForegroundMirc, mircColorMap, out, text, 0, text.length)
     return out.toString()
   }
 
-  private fun withinParagraph(@ColorInt colorForegroundMirc: Int, mircColorMap: Map<Int, Int>,
+  private fun withinParagraph(colorForegroundMirc: Int, mircColorMap: Map<Int, Int>,
                               out: StringBuilder, text: Spanned, start: Int, end: Int) {
     fun writeBold() {
       out.append(CODE_BOLD)
diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml
index 9d37ce55f..2bbe913ca 100644
--- a/app/src/main/res/xml/preferences.xml
+++ b/app/src/main/res/xml/preferences.xml
@@ -70,19 +70,6 @@
 
     <SwitchPreference
       android:defaultValue="true"
-      android:key="@string/preference_nicks_on_new_line_key"
-      android:summary="@string/preference_nicks_on_new_line_summary"
-      android:title="@string/preference_nicks_on_new_line_title" />
-
-    <SwitchPreference
-      android:defaultValue="true"
-      android:dependency="@string/preference_nicks_on_new_line_key"
-      android:key="@string/preference_show_realnames_key"
-      android:title="@string/preference_show_realnames_title" />
-
-    <SwitchPreference
-      android:defaultValue="true"
-      android:dependency="@string/preference_nicks_on_new_line_key"
       android:key="@string/preference_show_avatars_key"
       android:title="@string/preference_show_avatars_title" />
 
@@ -98,6 +85,18 @@
       android:key="@string/preference_show_gravatar_avatars_key"
       android:title="@string/preference_show_gravatar_avatars_title" />
 
+    <SwitchPreference
+      android:defaultValue="true"
+      android:key="@string/preference_nicks_on_new_line_key"
+      android:summary="@string/preference_nicks_on_new_line_summary"
+      android:title="@string/preference_nicks_on_new_line_title" />
+
+    <SwitchPreference
+      android:defaultValue="true"
+      android:dependency="@string/preference_nicks_on_new_line_key"
+      android:key="@string/preference_show_realnames_key"
+      android:title="@string/preference_show_realnames_title" />
+
     <SwitchPreference
       android:defaultValue="false"
       android:key="@string/preference_hostmask_actions_key"
-- 
GitLab