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 e08f4c2e6fb54cf3e0cc2a9ffbc743b78094dae1..c50b66fc74d98d2a413b8e80cea165f61b21478e 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.drawable.Drawable import android.support.annotation.ColorInt import android.text.SpannableStringBuilder import de.kuschku.libquassel.protocol.* @@ -32,6 +33,7 @@ import de.kuschku.libquassel.util.IrcUserUtils import de.kuschku.libquassel.util.flag.hasFlag import de.kuschku.libquassel.util.irc.HostmaskHelper import de.kuschku.quasseldroid.GlideApp +import de.kuschku.quasseldroid.GlideRequest import de.kuschku.quasseldroid.R import de.kuschku.quasseldroid.persistence.QuasselDatabase import de.kuschku.quasseldroid.settings.AppearanceSettings @@ -41,6 +43,7 @@ import de.kuschku.quasseldroid.settings.Settings import de.kuschku.quasseldroid.util.NotificationMessage import de.kuschku.quasseldroid.util.avatars.AvatarHelper import de.kuschku.quasseldroid.util.helper.getColorCompat +import de.kuschku.quasseldroid.util.helper.letIf import de.kuschku.quasseldroid.util.helper.loadWithFallbacks import de.kuschku.quasseldroid.util.helper.styledAttributes import de.kuschku.quasseldroid.util.irc.format.ContentFormatter @@ -257,14 +260,20 @@ class QuasselNotificationBackend @Inject constructor( val avatarList = AvatarHelper.avatar(messageSettings, it) val avatarResult = try { GlideApp.with(context).loadWithFallbacks(avatarList) - ?.optionalCircleCrop() - ?.placeholder(TextDrawable.builder().buildRound(initial, senderColor)) + ?.letIf(!messageSettings.squareAvatars, GlideRequest<Drawable>::optionalCircleCrop) + ?.placeholder(TextDrawable.builder()?.let { + if (messageSettings.squareAvatars) it.buildRect(initial, senderColor) + else it.buildRound(initial, senderColor) + }) ?.submit(size, size) ?.get() } catch (_: Throwable) { null } - val avatar = avatarResult ?: TextDrawable.builder().buildRound(initial, senderColor) + val avatar = avatarResult ?: TextDrawable.builder().let { + if (messageSettings.squareAvatars) it.buildRect(initial, senderColor) + else it.buildRound(initial, senderColor) + } NotificationMessage( messageId = it.messageId, diff --git a/app/src/main/java/de/kuschku/quasseldroid/settings/MessageSettings.kt b/app/src/main/java/de/kuschku/quasseldroid/settings/MessageSettings.kt index 459dc2ea0222555fff894b1cd788c3712c20f754..ff9dada98931912fcaebb8d8ae294e31961eedb9 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/settings/MessageSettings.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/settings/MessageSettings.kt @@ -32,6 +32,7 @@ data class MessageSettings( val timeAtEnd: Boolean = false, val showRealNames: Boolean = false, val showAvatars: Boolean = true, + val squareAvatars: Boolean = false, val showIRCCloudAvatars: Boolean = false, val showGravatarAvatars: Boolean = false, val showMatrixAvatars: Boolean = false, diff --git a/app/src/main/java/de/kuschku/quasseldroid/settings/Settings.kt b/app/src/main/java/de/kuschku/quasseldroid/settings/Settings.kt index fc6e0773edddfa14271fab0aec3aa55f7e0542ff..76528994920ee379642237879181b4613f0dfa8e 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/settings/Settings.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/settings/Settings.kt @@ -109,6 +109,10 @@ object Settings { context.getString(R.string.preference_show_avatars_key), MessageSettings.DEFAULT.showAvatars ), + squareAvatars = getBoolean( + context.getString(R.string.preference_square_avatars_key), + MessageSettings.DEFAULT.squareAvatars + ), showIRCCloudAvatars = getBoolean( context.getString(R.string.preference_show_irccloud_avatars_key), MessageSettings.DEFAULT.showIRCCloudAvatars 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 943ff633a5dfe2c7b577ef1d5a56432a77831e1f..cf5466771fb20dd9823a8bb99fa262208bbdd904 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 @@ -87,7 +87,7 @@ class AutoCompleteAdapter @Inject constructor( } override fun onBindViewHolder(holder: AutoCompleteViewHolder, position: Int) = - holder.bind(getItem(position)) + holder.bind(getItem(position), messageSettings) override fun getItemViewType(position: Int) = getItem(position).let { when { @@ -99,13 +99,15 @@ class AutoCompleteAdapter @Inject constructor( } sealed class AutoCompleteViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - fun bind(data: AutoCompleteItem) = when { - data is AutoCompleteItem.UserItem && this is NickViewHolder -> this.bindImpl(data) - data is AutoCompleteItem.ChannelItem && this is ChannelViewHolder -> this.bindImpl(data) - data is AutoCompleteItem.AliasItem && this is AliasViewHolder -> this.bindImpl(data) - else -> throw IllegalArgumentException( - "Invoked with wrong item type" - ) + fun bind(data: AutoCompleteItem, messageSettings: MessageSettings) = when { + data is AutoCompleteItem.UserItem && this is NickViewHolder -> + this.bindImpl(data, messageSettings) + data is AutoCompleteItem.ChannelItem && this is ChannelViewHolder -> + this.bindImpl(data, messageSettings) + data is AutoCompleteItem.AliasItem && this is AliasViewHolder -> + this.bindImpl(data, messageSettings) + else -> + throw IllegalArgumentException("Invoked with wrong item type") } class NickViewHolder( @@ -132,13 +134,15 @@ class AutoCompleteAdapter @Inject constructor( } } - fun bindImpl(data: AutoCompleteItem.UserItem) { + fun bindImpl(data: AutoCompleteItem.UserItem, messageSettings: MessageSettings) { value = data nick.text = SpanFormatter.format("%s%s", data.modes, data.displayNick ?: data.nick) realname.text = data.realname - avatar.loadAvatars(data.avatarUrls, data.fallbackDrawable) + avatar.loadAvatars(data.avatarUrls, + data.fallbackDrawable, + crop = !messageSettings.squareAvatars) } } @@ -179,7 +183,7 @@ class AutoCompleteAdapter @Inject constructor( } } - fun bindImpl(data: AutoCompleteItem.ChannelItem) { + fun bindImpl(data: AutoCompleteItem.ChannelItem, messageSettings: MessageSettings) { value = data name.text = data.info.bufferName @@ -217,7 +221,7 @@ class AutoCompleteAdapter @Inject constructor( } } - fun bindImpl(data: AutoCompleteItem.AliasItem) { + fun bindImpl(data: AutoCompleteItem.AliasItem, messageSettings: MessageSettings) { value = data alias.text = data.alias 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 c789de64c2a4d98ad160d2deb416d04e9c7371cc..fb2597064ba66e7aac4c95309bf22910d63e7150 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 @@ -38,6 +38,7 @@ import de.kuschku.libquassel.util.helpers.value import de.kuschku.quasseldroid.R import de.kuschku.quasseldroid.settings.AutoCompleteSettings import de.kuschku.quasseldroid.settings.MessageSettings +import de.kuschku.quasseldroid.util.avatars.AvatarHelper import de.kuschku.quasseldroid.util.helper.styledAttributes import de.kuschku.quasseldroid.util.helper.toLiveData import de.kuschku.quasseldroid.util.irc.format.IrcFormatDeserializer @@ -119,7 +120,10 @@ class AutoCompleteHelper( it.copy( displayNick = formatNick(it.nick), - fallbackDrawable = TextDrawable.builder().buildRound(initial, senderColor), + fallbackDrawable = TextDrawable.builder().let { + if (messageSettings.squareAvatars) it.buildRect(initial, senderColor) + else it.buildRound(initial, senderColor) + }, modes = when (messageSettings.showPrefix) { MessageSettings.ShowPrefixMode.ALL -> it.modes @@ -128,7 +132,8 @@ class AutoCompleteHelper( }, realname = ircFormatDeserializer.formatString( it.realname.toString(), messageSettings.colorizeMirc - ) + ), + avatarUrls = AvatarHelper.avatar(messageSettings, it) ) } else { it @@ -221,6 +226,7 @@ class AutoCompleteHelper( AutoCompleteItem.UserItem( user.nick(), + user.hostMask(), network.modesToPrefixes(userModes), lowestMode, user.realName(), diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt index c53fe7d02ad93bd39533d54a2585b53d04a4fb37..7e5716d4fd46d10d549f78092fb12d7ced180650 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt @@ -35,6 +35,7 @@ import de.kuschku.libquassel.protocol.Message_Type import de.kuschku.libquassel.util.flag.hasFlag import de.kuschku.quasseldroid.R import de.kuschku.quasseldroid.persistence.QuasselDatabase +import de.kuschku.quasseldroid.settings.MessageSettings import de.kuschku.quasseldroid.util.helper.getOrPut import de.kuschku.quasseldroid.util.helper.loadAvatars import de.kuschku.quasseldroid.util.ui.BetterLinkMovementMethod @@ -239,7 +240,8 @@ class MessageAdapter @Inject constructor( } fun bind(message: FormattedMessage, original: QuasselDatabase.MessageData, - selectable: Boolean = true, clickable: Boolean = true) { + selectable: Boolean = true, clickable: Boolean = true, + messageSettings: MessageSettings) { this.message = message this.original = original this.selectable = selectable @@ -254,7 +256,9 @@ class MessageAdapter @Inject constructor( this.itemView.isSelected = message.isSelected - avatar?.loadAvatars(message.avatarUrls, message.fallbackDrawable) + avatar?.loadAvatars(message.avatarUrls, + message.fallbackDrawable, + crop = !messageSettings.squareAvatars) } } } 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 6abef2550ed16ea09f72d4c354287285a2f35bc7..4b80ab9b43376aa2516591749bdb810122f94b3b 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 @@ -184,7 +184,7 @@ class QuasselMessageRenderer @Inject constructor( override fun bind(holder: MessageAdapter.QuasselMessageViewHolder, message: FormattedMessage, original: QuasselDatabase.MessageData) = original.type.hasFlag(DayChange).let { isDayChange -> - holder.bind(message, original, !isDayChange, !isDayChange) + holder.bind(message, original, !isDayChange, !isDayChange, messageSettings) } override fun render(context: Context, message: DisplayMessage): FormattedMessage { @@ -234,7 +234,10 @@ class QuasselMessageRenderer @Inject constructor( }, realName = realName, avatarUrls = AvatarHelper.avatar(messageSettings, message.content, avatarSize), - fallbackDrawable = TextDrawable.builder().buildRound(initial, senderColor), + fallbackDrawable = TextDrawable.builder().let { + if (messageSettings.squareAvatars) it.buildRect(initial, senderColor) + else it.buildRound(initial, senderColor) + }, isMarkerLine = message.isMarkerLine, isExpanded = message.isExpanded, isSelected = message.isSelected @@ -337,9 +340,9 @@ class QuasselMessageRenderer @Inject constructor( context.getString(R.string.message_format_part_2), contentFormatter.formatPrefix(message.content.senderPrefixes), contentFormatter.formatNick(message.content.sender, - self, - highlight, - messageSettings.showHostmaskActions), + self, + highlight, + messageSettings.showHostmaskActions), contentFormatter.formatContent(message.content.content, highlight) ) }, @@ -364,9 +367,9 @@ class QuasselMessageRenderer @Inject constructor( context.getString(R.string.message_format_quit_2), contentFormatter.formatPrefix(message.content.senderPrefixes), contentFormatter.formatNick(message.content.sender, - self, - highlight, - messageSettings.showHostmaskActions), + self, + highlight, + messageSettings.showHostmaskActions), contentFormatter.formatContent(message.content.content, highlight) ) }, @@ -385,9 +388,9 @@ class QuasselMessageRenderer @Inject constructor( contentFormatter.formatNick(user, false, highlight, false), contentFormatter.formatPrefix(message.content.senderPrefixes), contentFormatter.formatNick(message.content.sender, - self, - highlight, - messageSettings.showHostmaskActions) + self, + highlight, + messageSettings.showHostmaskActions) ) } else { SpanFormatter.format( @@ -395,9 +398,9 @@ class QuasselMessageRenderer @Inject constructor( contentFormatter.formatNick(user, false, highlight, false), contentFormatter.formatPrefix(message.content.senderPrefixes), contentFormatter.formatNick(message.content.sender, - self, - highlight, - messageSettings.showHostmaskActions), + self, + highlight, + messageSettings.showHostmaskActions), contentFormatter.formatContent(reason, highlight) ) }, @@ -417,9 +420,9 @@ class QuasselMessageRenderer @Inject constructor( contentFormatter.formatNick(user, false, highlight, false), contentFormatter.formatPrefix(message.content.senderPrefixes), contentFormatter.formatNick(message.content.sender, - self, - highlight, - messageSettings.showHostmaskActions) + self, + highlight, + messageSettings.showHostmaskActions) ) } else { SpanFormatter.format( @@ -427,9 +430,9 @@ class QuasselMessageRenderer @Inject constructor( contentFormatter.formatNick(user, false, highlight, false), contentFormatter.formatPrefix(message.content.senderPrefixes), contentFormatter.formatNick(message.content.sender, - self, - highlight, - messageSettings.showHostmaskActions), + self, + highlight, + messageSettings.showHostmaskActions), contentFormatter.formatContent(reason, highlight) ) }, diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListAdapter.kt index 5d76ecf4180ec17cbb11d69947a7d269abfeb4be..024db116d0b1a52f4e4012c8ed9d53e5ecb9114b 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListAdapter.kt @@ -66,7 +66,7 @@ class NickListAdapter( operator fun get(position: Int): IrcUserItem? = super.getItem(position) override fun onBindViewHolder(holder: NickViewHolder, position: Int) = - holder.bind(getItem(position)) + holder.bind(getItem(position), messageSettings) override fun getItemViewType(position: Int) = if (getItem(position).away) { VIEWTYPE_AWAY @@ -98,13 +98,15 @@ class NickListAdapter( } } - fun bind(data: IrcUserItem) { + fun bind(data: IrcUserItem, messageSettings: MessageSettings) { user = data.nick nick.text = SpanFormatter.format("%s%s", data.modes, data.displayNick ?: data.nick) realname.text = data.realname - avatar.loadAvatars(data.avatarUrls, data.fallbackDrawable) + avatar.loadAvatars(data.avatarUrls, + data.fallbackDrawable, + crop = !messageSettings.squareAvatars) } } 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 6f97dc42c46cb72119853c6e3f78c7a43da1a572..6f7e0ba2af69cb13bef7c94a3ad025ad05ac3252 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 @@ -142,7 +142,10 @@ class NickListFragment : ServiceBoundFragment() { } it.copy( displayNick = formatNick(it.nick), - fallbackDrawable = TextDrawable.builder().buildRound(initial, senderColor), + fallbackDrawable = TextDrawable.builder().let { + if (messageSettings.squareAvatars) it.buildRect(initial, senderColor) + else it.buildRound(initial, senderColor) + }, modes = when (messageSettings.showPrefix) { MessageSettings.ShowPrefixMode.ALL -> it.modes diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/avatars/AvatarHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/avatars/AvatarHelper.kt index 78d0b6c87c736b9100633c17467323b5e6d279c8..e218c141a9fb3ff6e83d4b201b4cdadddf219494 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/avatars/AvatarHelper.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/avatars/AvatarHelper.kt @@ -29,74 +29,45 @@ import de.kuschku.quasseldroid.util.Patterns import de.kuschku.quasseldroid.util.backport.codec.Hex import de.kuschku.quasseldroid.util.helper.letIf import de.kuschku.quasseldroid.util.helper.notBlank +import de.kuschku.quasseldroid.viewmodel.data.AutoCompleteItem import de.kuschku.quasseldroid.viewmodel.data.Avatar import de.kuschku.quasseldroid.viewmodel.data.IrcUserItem import org.apache.commons.codec.digest.DigestUtils object AvatarHelper { + private fun avatar(settings: MessageSettings, ident: String, realName: String, + avatarUrl: String?, size: Int?) = + listOfNotNull( + avatarUrl.notBlank()?.let { listOf(Avatar.NativeAvatar(it)) }, + settings.showIRCCloudAvatars.letIf { + ircCloudFallback(ident, size) + }, + settings.showGravatarAvatars.letIf { + gravatarFallback(realName, size) + }, + settings.showMatrixAvatars.letIf { + matrixFallback(realName, size) + } + ).flatten() + fun avatar(settings: MessageSettings, message: QuasselDatabase.NotificationData, - size: Int? = null) = listOfNotNull( - message.avatarUrl.notBlank()?.let { listOf(Avatar.NativeAvatar(it)) }, - settings.showIRCCloudAvatars.letIf { - ircCloudFallback(HostmaskHelper.user(message.sender), size) - }, - settings.showGravatarAvatars.letIf { - gravatarFallback(message.realName, size) - }, - settings.showMatrixAvatars.letIf { - matrixFallback(message.realName, size) - } - ).flatten() + size: Int? = null) = + avatar(settings, HostmaskHelper.user(message.sender), message.realName, message.avatarUrl, size) - fun avatar(settings: MessageSettings, message: QuasselDatabase.MessageData, - size: Int? = null) = listOfNotNull( - message.avatarUrl.notBlank()?.let { listOf(Avatar.NativeAvatar(it)) }, - settings.showIRCCloudAvatars.letIf { - ircCloudFallback(HostmaskHelper.user(message.sender), size) - }, - settings.showGravatarAvatars.letIf { - gravatarFallback(message.realName, size) - }, - settings.showMatrixAvatars.letIf { - matrixFallback(message.realName, size) - } - ).flatten() + fun avatar(settings: MessageSettings, message: QuasselDatabase.MessageData, size: Int? = null) = + avatar(settings, HostmaskHelper.user(message.sender), message.realName, message.avatarUrl, size) - fun avatar(settings: MessageSettings, user: IrcUserItem, size: Int? = null) = listOfNotNull( - settings.showIRCCloudAvatars.letIf { - ircCloudFallback(HostmaskHelper.user(user.hostmask), size) - }, - settings.showGravatarAvatars.letIf { - gravatarFallback(user.realname.toString(), size) - }, - settings.showMatrixAvatars.letIf { - matrixFallback(user.realname.toString(), size) - } - ).flatten() + fun avatar(settings: MessageSettings, user: IrcUserItem, size: Int? = null) = + avatar(settings, HostmaskHelper.user(user.hostmask), user.realname.toString(), null, size) - fun avatar(settings: MessageSettings, user: IrcUserInfo, size: Int? = null) = listOfNotNull( - settings.showIRCCloudAvatars.letIf { - ircCloudFallback(user.user ?: "", size) - }, - settings.showGravatarAvatars.letIf { - gravatarFallback(user.realName ?: "", size) - }, - settings.showMatrixAvatars.letIf { - matrixFallback(user.realName ?: "", size) - } - ).flatten() + fun avatar(settings: MessageSettings, user: IrcUserInfo, size: Int? = null) = + avatar(settings, user.user ?: "", user.realName ?: "", null, size) - fun avatar(settings: MessageSettings, user: IrcUser, size: Int? = null) = listOfNotNull( - settings.showIRCCloudAvatars.letIf { - ircCloudFallback(user.user(), size) - }, - settings.showGravatarAvatars.letIf { - gravatarFallback(user.realName(), size) - }, - settings.showMatrixAvatars.letIf { - matrixFallback(user.realName(), size) - } - ).flatten() + fun avatar(settings: MessageSettings, user: IrcUser, size: Int? = null) = + avatar(settings, user.user(), user.realName(), null, size) + + fun avatar(settings: MessageSettings, user: AutoCompleteItem.UserItem, size: Int? = null) = + avatar(settings, HostmaskHelper.user(user.hostMask), user.realname.toString(), null, size) private fun ircCloudFallback(ident: String, size: Int?): List<Avatar> { val userId = Patterns.IRCCLOUD_IDENT.matchEntire(ident)?.groupValues?.lastOrNull() diff --git a/app/src/main/res/values-de/strings_preferences.xml b/app/src/main/res/values-de/strings_preferences.xml index 5686fb940d778b9830c321dea25a7af1d4c22ceb..3b48dfe1b705c9e529f26d6b2c43c5b49ad5046b 100644 --- a/app/src/main/res/values-de/strings_preferences.xml +++ b/app/src/main/res/values-de/strings_preferences.xml @@ -93,6 +93,8 @@ <string name="preference_show_avatars_title">Avatare anzeigen</string> + <string name="preference_square_avatars_title">Quadratische Avatare</string> + <string name="preference_show_irccloud_avatars_title">IRCCloud Avatare anzeigen</string> <string name="preference_show_irccloud_avatars_summary">Zeigt für Nutzer ohne Avatare den IRCCloud-Avatar an, falls verfügbar</string> diff --git a/app/src/main/res/values/strings_preferences.xml b/app/src/main/res/values/strings_preferences.xml index c2de68aca73f912dc3f770776e879f82b5726a5c..a4f188f130eea188028bc17dffc50851b92712f4 100644 --- a/app/src/main/res/values/strings_preferences.xml +++ b/app/src/main/res/values/strings_preferences.xml @@ -204,6 +204,9 @@ <string name="preference_show_avatars_key" translatable="false">show_avatars</string> <string name="preference_show_avatars_title">Show Avatars</string> + <string name="preference_square_avatars_key" translatable="false">square_avatars</string> + <string name="preference_square_avatars_title">Square Avatars</string> + <string name="preference_show_irccloud_avatars_key" translatable="false">show_irccloud_avatars</string> <string name="preference_show_irccloud_avatars_title">Show IRCCloud Avatars</string> <string name="preference_show_irccloud_avatars_summary">Shows for users without avatar their IRCCloud fallback, if available</string> diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index f350beadd5423521d1555d68f5c63006008d067d..02cd642d4891647485845ec96e7918ee6e504943 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -161,6 +161,11 @@ android:key="@string/preference_show_avatars_key" android:title="@string/preference_show_avatars_title" /> + <SwitchPreference + android:defaultValue="false" + android:key="@string/preference_square_avatars_key" + android:title="@string/preference_square_avatars_title" /> + <SwitchPreference android:defaultValue="false" android:dependency="@string/preference_show_avatars_key" 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 92d8566b5638e261dfb773507dc9dc2fa0932e4f..a6941fedfb02dc97c87d1a99ef7fbe0321b0c10a 100644 --- a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/EditorViewModel.kt +++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/EditorViewModel.kt @@ -138,6 +138,7 @@ class EditorViewModel : ViewModel() { AutoCompleteItem.UserItem( user.nick(), + user.hostMask(), network.modesToPrefixes(userModes), lowestMode, user.realName(), 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 d2943ed4bc667822853409805160aa276c68e380..c9e4d2f97d4b073d5c87224f04add4e8093cb175 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 @@ -32,6 +32,7 @@ sealed class AutoCompleteItem(open val name: String, val suffix: String, private data class UserItem( val nick: String, + val hostMask: String, val modes: String, val lowestMode: Int, val realname: CharSequence,