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 5cdbe638ad0ca5f04186b7c9f6d29bd2ac93661c..0af0dc4077f2661af288ebf3fab4d2dfcce78f86 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 d7a59d77cb6999164a837a986259ce4332498ba1..3ae0304fbdd4f05b50c16183d18273a8965cc975 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 19d19b30e35b51ea14a529a22963558d9791c3ca..66898e472faa57fecdd859811b35cff2799dfc55 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 306a8207a4f184bd094e1409d00558fd84bdfbdb..530a75e664f9ced304d7d74ce9292f39f561039e 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 4e1fdf20376cc842fa8f2ee40b8e65e31ed4ea58..ec33b8f4f15b599ef16ada77e87de29ff796e700 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 77e591833ac0e5b06967992dc674748ab3181413..975c430fda0aa9531fdc24e5b3a03b501cbab8a4 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 9d37ce55f7f7dd4df86c8af022eecbf5c0d59f78..2bbe913cac78683217323c648474e53d4a1ce596 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"