From fd9be20aa8c280e0e5c79a3c005c808a419df600 Mon Sep 17 00:00:00 2001 From: Janne Koschinski <janne@kuschku.de> Date: Tue, 10 Apr 2018 16:31:24 +0200 Subject: [PATCH] Improve channel and user info, fix a casemapping bug --- app/build.gradle.kts | 2 + .../chat/info/channel/ChannelInfoFragment.kt | 10 ++- .../ui/chat/info/user/UserInfoFragment.kt | 44 +++++++++---- .../ui/chat/input/AutoCompleteHelper.kt | 5 +- .../quasseldroid/ui/chat/input/RichToolbar.kt | 18 +++--- .../ui/chat/messages/DisplayMessage.kt | 8 +-- .../kuschku/quasseldroid/util/AvatarHelper.kt | 18 ++++++ .../quasseldroid/util/helper/ViewHelper.kt | 6 +- .../main/res/layout/fragment_info_channel.xml | 19 +++++- .../main/res/layout/fragment_info_user.xml | 61 +++++++++++++------ app/src/main/res/values-de/strings.xml | 9 ++- .../main/res/values-v17/styles_widgets.xml | 18 ------ app/src/main/res/values/strings.xml | 7 +++ app/src/main/res/values/styles_widgets.xml | 12 ++-- 14 files changed, 161 insertions(+), 76 deletions(-) create mode 100644 app/src/main/java/de/kuschku/quasseldroid/util/AvatarHelper.kt diff --git a/app/build.gradle.kts b/app/build.gradle.kts index a24943e43..a53f267fc 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -71,6 +71,7 @@ android { getByName("debug") { applicationIdSuffix = "debug" + /* isZipAlignEnabled = true isMinifyEnabled = true @@ -80,6 +81,7 @@ android { getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" ) + */ } } diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/channel/ChannelInfoFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/channel/ChannelInfoFragment.kt index bb52a1a08..83a422ae5 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/channel/ChannelInfoFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/channel/ChannelInfoFragment.kt @@ -17,6 +17,7 @@ import de.kuschku.quasseldroid.R import de.kuschku.quasseldroid.ui.chat.topic.TopicActivity import de.kuschku.quasseldroid.util.helper.combineLatest import de.kuschku.quasseldroid.util.helper.retint +import de.kuschku.quasseldroid.util.helper.setTooltip import de.kuschku.quasseldroid.util.helper.toLiveData import de.kuschku.quasseldroid.util.irc.format.ContentFormatter import de.kuschku.quasseldroid.util.service.ServiceBoundFragment @@ -61,7 +62,7 @@ class ChannelInfoFragment : ServiceBoundFragment() { } ?: IrcChannel.NULL }.filter { it != IrcChannel.NULL - }.switchMap(IrcChannel::updates).firstElement().toLiveData().observe(this, Observer { channel -> + }.switchMap(IrcChannel::updates).toLiveData().observe(this, Observer { channel -> if (channel != null) { name.text = channel.name() topic.text = contentFormatter.format(requireContext(), channel.topic()) @@ -71,7 +72,6 @@ class ChannelInfoFragment : ServiceBoundFragment() { intent.putExtra("buffer", arguments?.getInt("bufferId") ?: -1) startActivity(intent) } - actionEditTopic.retint() actionPart.setOnClickListener { viewModel.session.value?.orNull()?.let { session -> @@ -84,7 +84,6 @@ class ChannelInfoFragment : ServiceBoundFragment() { } } } - actionPart.retint() } }) @@ -92,6 +91,11 @@ class ChannelInfoFragment : ServiceBoundFragment() { movementMethod.setOnLinkLongClickListener(LinkLongClickMenuHelper()) topic.movementMethod = movementMethod + actionEditTopic.setTooltip() + actionEditTopic.retint() + actionPart.setTooltip() + actionPart.retint() + return view } } 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 62be6e45f..58f5aec05 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 @@ -19,11 +19,13 @@ import de.kuschku.quasseldroid.GlideApp import de.kuschku.quasseldroid.R import de.kuschku.quasseldroid.ui.chat.ChatActivity import de.kuschku.quasseldroid.ui.chat.input.AutoCompleteHelper.Companion.IGNORED_CHARS +import de.kuschku.quasseldroid.util.AvatarHelper import de.kuschku.quasseldroid.util.helper.* import de.kuschku.quasseldroid.util.irc.format.ContentFormatter import de.kuschku.quasseldroid.util.service.ServiceBoundFragment import de.kuschku.quasseldroid.util.ui.LinkLongClickMenuHelper import de.kuschku.quasseldroid.util.ui.TextDrawable +import io.reactivex.Observable import me.saket.bettermovementmethod.BetterLinkMovementMethod import javax.inject.Inject @@ -43,6 +45,9 @@ class UserInfoFragment : ServiceBoundFragment() { @BindView(R.id.action_ignore) lateinit var actionIgnore: Button + @BindView(R.id.action_whois) + lateinit var actionWhois: Button + @BindView(R.id.action_mention) lateinit var actionMention: Button @@ -99,20 +104,20 @@ class UserInfoFragment : ServiceBoundFragment() { val networkId = arguments?.getInt("networkId") val nickName = arguments?.getString("nick") - combineLatest(viewModel.session, viewModel.networks).map { (sessionOptional, networks) -> + combineLatest(viewModel.session, viewModel.networks).switchMap { (sessionOptional, networks) -> if (openBuffer == true) { val session = sessionOptional?.orNull() val bufferSyncer = session?.bufferSyncer val bufferInfo = bufferSyncer?.bufferInfo(arguments?.getInt("bufferId") ?: -1) bufferInfo?.let { - networks[it.networkId]?.ircUser(it.bufferName) + networks[it.networkId]?.liveIrcUser(it.bufferName) } } else { - networks[networkId]?.ircUser(nickName) - } ?: IrcUser.NULL + networks[networkId]?.liveIrcUser(nickName) + } ?: Observable.just(IrcUser.NULL) }.filter { it != IrcUser.NULL - }.switchMap(IrcUser::updates).firstElement().toLiveData().observe(this, Observer { user -> + }.switchMap(IrcUser::updates).toLiveData().observe(this, Observer { user -> if (user != null) { val senderColorIndex = IrcUserUtils.senderColor(user.nick()) val rawInitial = user.nick().trimStart(*IGNORED_CHARS).firstOrNull() @@ -122,9 +127,7 @@ class UserInfoFragment : ServiceBoundFragment() { val fallbackDrawable = TextDrawable.builder().buildRect(initial, senderColor) - val avatarUrl = Regex("[us]id(\\d+)").matchEntire(user.user())?.groupValues?.lastOrNull()?.let { - "https://www.irccloud.com/avatar-redirect/$it" - } + val avatarUrl = AvatarHelper.avatar(user = user) if (avatarUrl != null) { GlideApp.with(avatar) .load(avatarUrl) @@ -190,12 +193,23 @@ class UserInfoFragment : ServiceBoundFragment() { } } } - actionQuery.retint() actionIgnore.setOnClickListener { Toast.makeText(requireContext(), "Not Implemented", Toast.LENGTH_SHORT).show() } - actionIgnore.retint() + + actionWhois.setOnClickListener { + viewModel.session { + it.orNull()?.let { session -> + session.bufferSyncer?.find( + networkId = networkId, + type = Buffer_Type.of(Buffer_Type.StatusBuffer) + )?.let { statusInfo -> + session.rpcHandler?.sendInput(statusInfo, "/whois ${user.nick()}") + } + } + } + } actionMention.setOnClickListener { val intent = Intent(requireContext(), ChatActivity::class.java) @@ -204,7 +218,6 @@ class UserInfoFragment : ServiceBoundFragment() { startActivity(intent) } actionMention.visibleIf(arguments?.getBoolean("openBuffer") == false) - actionMention.retint() } }) @@ -212,6 +225,15 @@ class UserInfoFragment : ServiceBoundFragment() { movementMethod.setOnLinkLongClickListener(LinkLongClickMenuHelper()) realName.movementMethod = movementMethod + actionQuery.setTooltip() + actionQuery.retint() + actionIgnore.setTooltip() + actionIgnore.retint() + actionWhois.setTooltip() + actionWhois.retint() + actionMention.setTooltip() + actionMention.retint() + return view } } 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 c0046653e..1894073dc 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 @@ -14,6 +14,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.AvatarHelper import de.kuschku.quasseldroid.util.helper.styledAttributes import de.kuschku.quasseldroid.util.helper.toLiveData import de.kuschku.quasseldroid.util.irc.format.IrcFormatDeserializer @@ -147,9 +148,7 @@ class AutoCompleteHelper( user.realName(), user.isAway(), network.support("CASEMAPPING"), - Regex("[us]id(\\d+)").matchEntire(user.user())?.groupValues?.lastOrNull()?.let { - "https://www.irccloud.com/avatar-redirect/$it" - } + AvatarHelper.avatar(user = user) ) } diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/RichToolbar.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/RichToolbar.kt index a952197a1..a193c6b82 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/RichToolbar.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/RichToolbar.kt @@ -3,13 +3,13 @@ package de.kuschku.quasseldroid.ui.chat.input import android.content.Context import android.support.annotation.ColorInt import android.support.v7.widget.Toolbar -import android.support.v7.widget.TooltipCompat import android.util.AttributeSet import android.view.LayoutInflater import android.view.View import butterknife.BindView import butterknife.ButterKnife import de.kuschku.quasseldroid.R +import de.kuschku.quasseldroid.util.helper.setTooltip class RichToolbar : Toolbar { @BindView(R.id.action_format_bold) @@ -53,14 +53,14 @@ class RichToolbar : Toolbar { LayoutInflater.from(context).inflate(R.layout.widget_formatting, this, true) ButterKnife.bind(this) - TooltipCompat.setTooltipText(boldButton, boldButton.contentDescription) - TooltipCompat.setTooltipText(italicButton, italicButton.contentDescription) - TooltipCompat.setTooltipText(underlineButton, underlineButton.contentDescription) - TooltipCompat.setTooltipText(strikethroughButton, strikethroughButton.contentDescription) - TooltipCompat.setTooltipText(monospaceButton, monospaceButton.contentDescription) - TooltipCompat.setTooltipText(foregroundButton, foregroundButton.contentDescription) - TooltipCompat.setTooltipText(backgroundButton, backgroundButton.contentDescription) - TooltipCompat.setTooltipText(clearButton, clearButton.contentDescription) + boldButton.setTooltip() + italicButton.setTooltip() + underlineButton.setTooltip() + strikethroughButton.setTooltip() + monospaceButton.setTooltip() + foregroundButton.setTooltip() + backgroundButton.setTooltip() + clearButton.setTooltip() boldButton.setOnClickListener { listener?.onBold() } italicButton.setOnClickListener { listener?.onItalic() } diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/DisplayMessage.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/DisplayMessage.kt index 444f3c054..0a1872ead 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/DisplayMessage.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/DisplayMessage.kt @@ -1,8 +1,8 @@ package de.kuschku.quasseldroid.ui.chat.messages import de.kuschku.libquassel.protocol.MsgId -import de.kuschku.libquassel.util.irc.HostmaskHelper import de.kuschku.quasseldroid.persistence.QuasselDatabase +import de.kuschku.quasseldroid.util.AvatarHelper data class DisplayMessage( val content: QuasselDatabase.DatabaseMessage, @@ -32,9 +32,5 @@ data class DisplayMessage( isMarkerLine, isEmoji ) - val avatarUrl = content.sender.let { - Regex("[us]id(\\d+)").matchEntire(HostmaskHelper.user(it))?.groupValues?.lastOrNull()?.let { - "https://www.irccloud.com/avatar-redirect/$it" - } - } + val avatarUrl = AvatarHelper.avatar(message = content) } diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/AvatarHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/AvatarHelper.kt new file mode 100644 index 000000000..60a5af730 --- /dev/null +++ b/app/src/main/java/de/kuschku/quasseldroid/util/AvatarHelper.kt @@ -0,0 +1,18 @@ +package de.kuschku.quasseldroid.util + +import de.kuschku.libquassel.quassel.syncables.IrcUser +import de.kuschku.libquassel.util.irc.HostmaskHelper +import de.kuschku.quasseldroid.persistence.QuasselDatabase + +object AvatarHelper { + fun avatar(message: QuasselDatabase.DatabaseMessage? = null, user: IrcUser? = null): String? { + val ident = message?.sender?.let(HostmaskHelper::user) + ?: user?.user() + ?: return null + + val userId = Regex("[us]id(\\d+)").matchEntire(ident)?.groupValues?.lastOrNull() + ?: return null + + return "https://static.irccloud-cdn.com/avatar-redirect/$userId" + } +} diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/helper/ViewHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/helper/ViewHelper.kt index 61fb6f48d..7d77efc6c 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/helper/ViewHelper.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/helper/ViewHelper.kt @@ -1,9 +1,13 @@ package de.kuschku.quasseldroid.util.helper +import android.support.v7.widget.TooltipCompat import android.view.View fun View.visibleIf(check: Boolean) = if (check) { this.visibility = View.VISIBLE } else { this.visibility = View.GONE -} \ No newline at end of file +} + +fun View.setTooltip(tooltipText: CharSequence? = this.contentDescription) = + TooltipCompat.setTooltipText(this, tooltipText) diff --git a/app/src/main/res/layout/fragment_info_channel.xml b/app/src/main/res/layout/fragment_info_channel.xml index 31421a93c..a98e6d9d7 100644 --- a/app/src/main/res/layout/fragment_info_channel.xml +++ b/app/src/main/res/layout/fragment_info_channel.xml @@ -8,6 +8,7 @@ <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" + android:animateLayoutChanges="true" android:orientation="vertical"> <LinearLayout style="@style/Widget.Info.Header"> @@ -43,14 +44,28 @@ <android.support.v7.widget.AppCompatButton android:id="@+id/action_edit_topic" style="@style/Widget.Info.ActionButton" + android:contentDescription="@string/label_edit_topic_long" android:drawableTop="@drawable/ic_pencil" - android:text="@string/label_edit_topic" /> + android:text="@string/label_edit_topic" + tools:drawableTint="?colorTextSecondary" /> <android.support.v7.widget.AppCompatButton android:id="@+id/action_part" style="@style/Widget.Info.ActionButton" + android:contentDescription="@string/label_part_long" android:drawableTop="@drawable/ic_account_minus" - android:text="@string/label_part" /> + android:text="@string/label_part" + tools:drawableTint="?colorTextSecondary" /> + + <android.support.v7.widget.AppCompatButton + android:id="@+id/action_join" + style="@style/Widget.Info.ActionButton" + android:contentDescription="@string/label_join_long" + android:drawableTop="@drawable/ic_account_plus" + android:text="@string/label_join" + android:visibility="gone" + tools:drawableTint="?colorTextSecondary" + tools:visibility="visible" /> </LinearLayout> </HorizontalScrollView> diff --git a/app/src/main/res/layout/fragment_info_user.xml b/app/src/main/res/layout/fragment_info_user.xml index 17879dfc8..dc3ea1234 100644 --- a/app/src/main/res/layout/fragment_info_user.xml +++ b/app/src/main/res/layout/fragment_info_user.xml @@ -9,6 +9,7 @@ <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" + android:animateLayoutChanges="true" android:orientation="vertical"> <android.support.constraint.ConstraintLayout @@ -59,33 +60,49 @@ <android.support.v7.widget.AppCompatButton android:id="@+id/action_query" style="@style/Widget.Info.ActionButton" + android:contentDescription="@string/label_query_long" android:drawableTop="@drawable/ic_message_bulleted" - android:text="@string/label_query" /> + android:text="@string/label_query" + tools:drawableTint="?colorTextSecondary" /> <android.support.v7.widget.AppCompatButton android:id="@+id/action_ignore" style="@style/Widget.Info.ActionButton" + android:contentDescription="@string/label_ignore_long" android:drawableTop="@drawable/ic_eye_off" - android:text="@string/label_ignore" /> + android:text="@string/label_ignore" + tools:drawableTint="?colorTextSecondary" /> + + <android.support.v7.widget.AppCompatButton + android:id="@+id/action_whois" + style="@style/Widget.Info.ActionButton" + android:contentDescription="@string/label_whois_long" + android:drawableTop="@drawable/ic_info" + android:text="@string/label_whois" + tools:drawableTint="?colorTextSecondary" /> <android.support.v7.widget.AppCompatButton android:id="@+id/action_mention" style="@style/Widget.Info.ActionButton" + android:contentDescription="@string/label_mention_long" android:drawableTop="@drawable/ic_share_alternative" - android:text="@string/label_mention" /> + android:text="@string/label_mention" + tools:drawableTint="?colorTextSecondary" /> </LinearLayout> </HorizontalScrollView> + <View + android:layout_width="match_parent" + android:layout_height="1dp" + android:background="?colorDivider" /> + <LinearLayout android:id="@+id/away_container" android:layout_width="match_parent" android:layout_height="wrap_content" - android:orientation="vertical"> - - <View - android:layout_width="match_parent" - android:layout_height="1dp" - android:background="?colorDivider" /> + android:orientation="vertical" + android:visibility="gone" + tools:visibility="visible"> <TextView style="@style/Widget.Info.Section" @@ -102,12 +119,12 @@ style="@style/Widget.Info.Item.Description" android:text="@string/label_user_away_reason" /> </LinearLayout> - </LinearLayout> - <View - android:layout_width="match_parent" - android:layout_height="1dp" - android:background="?colorDivider" /> + <View + android:layout_width="match_parent" + android:layout_height="1dp" + android:background="?colorDivider" /> + </LinearLayout> <TextView style="@style/Widget.Info.Section" @@ -115,7 +132,9 @@ <LinearLayout android:id="@+id/account_container" - style="@style/Widget.Info.Item"> + style="@style/Widget.Info.Item" + android:visibility="gone" + tools:visibility="visible"> <TextView android:id="@+id/account" @@ -129,7 +148,9 @@ <LinearLayout android:id="@+id/ident_container" - style="@style/Widget.Info.Item"> + style="@style/Widget.Info.Item" + android:visibility="gone" + tools:visibility="visible"> <TextView android:id="@+id/ident" @@ -143,7 +164,9 @@ <LinearLayout android:id="@+id/host_container" - style="@style/Widget.Info.Item"> + style="@style/Widget.Info.Item" + android:visibility="gone" + tools:visibility="visible"> <TextView android:id="@+id/host" @@ -157,7 +180,9 @@ <LinearLayout android:id="@+id/server_container" - style="@style/Widget.Info.Item"> + style="@style/Widget.Info.Item" + android:visibility="gone" + tools:visibility="visible"> <TextView android:id="@+id/server" diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index d854daeb2..976cd8600 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -24,18 +24,22 @@ <string name="label_disconnect">Verbindung trennen</string> <string name="label_edit_nick">Spitznamen bearbeiten</string> <string name="label_edit_topic">Thema ändern</string> + <string name="label_edit_topic_long">Open dialog to change the channel topic</string> <string name="label_filter_messages">Nachrichten filtern</string> <string name="label_github">GitHub</string> <string name="label_hide_perm">Permanent ausblenden</string> <string name="label_hide_temp">Temporär ausblenden</string> <string name="label_ignore">Ignorieren</string> + <string name="label_ignore_long">Add/remove user to/from ignore list</string> <string name="label_info_channel">Kanalinformationen</string> <string name="label_info_user">Benutzerinformationen</string> <string name="label_input_history">Eingabeverlauf</string> - <string name="label_join">Verbinden</string> + <string name="label_join">Betreten</string> + <string name="label_join_long">Kanal Betreten</string> <string name="label_libraries">Bibliotheken</string> <string name="label_license">Lizenz</string> <string name="label_mention">Erwähnen</string> + <string name="label_mention_long">Kopiert den Nutzernamen in die Eingabezeile</string> <string name="label_new_account">Account hinzufügen</string> <string name="label_new_chatlist">Chatliste hinzufügen</string> <string name="label_new_identity">Identität hinzufügen</string> @@ -46,9 +50,11 @@ <string name="label_reset">Zurücksetzen</string> <string name="label_open">Öffnen</string> <string name="label_part">Verlassen</string> + <string name="label_part_long">Kanal verlassen</string> <string name="label_placeholder_message">Nachricht schreiben…</string> <string name="label_placeholder_topic">Beschreib das Thema des Kanals…</string> <string name="label_query">Dialog</string> + <string name="label_query_long">Öffnet einen privaten Chat</string> <string name="label_rename">Umbenennen</string> <string name="label_save">Speichern</string> <string name="label_select">Auswählen</string> @@ -62,6 +68,7 @@ <string name="label_unhide">Nicht mehr ausblenden</string> <string name="label_website">Webseite</string> <string name="label_whois">Whois</string> + <string name="label_whois_long">Nutzerinformationen aktualisieren</string> <string name="label_yes">Ja</string> <string name="notification_channel_connection_title">Verbindung</string> diff --git a/app/src/main/res/values-v17/styles_widgets.xml b/app/src/main/res/values-v17/styles_widgets.xml index 1f6cb50f4..b4027250e 100644 --- a/app/src/main/res/values-v17/styles_widgets.xml +++ b/app/src/main/res/values-v17/styles_widgets.xml @@ -60,24 +60,6 @@ <item name="android:paddingTop">8dp</item> </style> - <style name="Widget.Info.ActionButton" parent=""> - <item name="android:layout_width">wrap_content</item> - <item name="android:layout_height">wrap_content</item> - <item name="android:background">?backgroundMenuItem</item> - <item name="android:drawablePadding">4dp</item> - <item name="android:fontFamily">sans-serif</item> - <item name="android:minWidth">96dp</item> - <item name="android:paddingBottom">12dp</item> - <item name="android:paddingEnd">?android:attr/listPreferredItemPaddingRight</item> - <item name="android:paddingLeft">?android:attr/listPreferredItemPaddingLeft</item> - <item name="android:paddingRight">?android:attr/listPreferredItemPaddingRight</item> - <item name="android:paddingStart">?android:attr/listPreferredItemPaddingLeft</item> - <item name="android:paddingTop">12dp</item> - <item name="android:textAllCaps">false</item> - <item name="android:textColor">?colorTextPrimary</item> - <item name="android:textStyle">normal</item> - </style> - <style name="Widget.Info.Section" parent=""> <item name="android:layout_width">match_parent</item> <item name="android:layout_height">wrap_content</item> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c5e98cd75..3eecd053a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -24,18 +24,22 @@ <string name="label_disconnect">Disconnect</string> <string name="label_edit_nick">Edit nickname</string> <string name="label_edit_topic">Edit Topic</string> + <string name="label_edit_topic_long">Open dialog to change the channel topic</string> <string name="label_filter_messages">Filter Messages</string> <string name="label_github">GitHub</string> <string name="label_hide_perm">Hide Permanently</string> <string name="label_hide_temp">Hide Temporarily</string> <string name="label_ignore">Ignore</string> + <string name="label_ignore_long">Add/remove user to/from ignore list</string> <string name="label_info_channel">Channel Details</string> <string name="label_info_user">User Details</string> <string name="label_input_history">Input History</string> <string name="label_join">Join</string> + <string name="label_join_long">Join Channel</string> <string name="label_libraries">Libraries</string> <string name="label_license">License</string> <string name="label_mention">Mention</string> + <string name="label_mention_long">Copy username into input line</string> <string name="label_new_account">New Account</string> <string name="label_new_chatlist">New Chatlist</string> <string name="label_new_identity">New Identity</string> @@ -46,9 +50,11 @@ <string name="label_reset">Reset</string> <string name="label_open">Open</string> <string name="label_part">Leave</string> + <string name="label_part_long">Leave Channel</string> <string name="label_placeholder_message">Write a message…</string> <string name="label_placeholder_topic">Describe the channel topic…</string> <string name="label_query">Query</string> + <string name="label_query_long">Open private chat with user</string> <string name="label_rename">Rename</string> <string name="label_save">Save</string> <string name="label_select">Select</string> @@ -62,6 +68,7 @@ <string name="label_unhide">Make Visible</string> <string name="label_website">Website</string> <string name="label_whois">Whois</string> + <string name="label_whois_long">Update user information</string> <string name="label_yes">Yes</string> <string name="notification_channel_background" translatable="false">background</string> diff --git a/app/src/main/res/values/styles_widgets.xml b/app/src/main/res/values/styles_widgets.xml index 7014054a3..c162deec9 100644 --- a/app/src/main/res/values/styles_widgets.xml +++ b/app/src/main/res/values/styles_widgets.xml @@ -145,18 +145,21 @@ <item name="android:paddingLeft">?android:attr/listPreferredItemPaddingLeft</item> <item name="android:paddingRight">?android:attr/listPreferredItemPaddingRight</item> <item name="android:paddingTop">8dp</item> + <item name="android:animateLayoutChanges">true</item> </style> <style name="Widget.Info.Header.Name" parent=""> <item name="android:layout_width">match_parent</item> <item name="android:layout_height">wrap_content</item> <item name="android:textAppearance">@style/TextAppearance.AppCompat.Headline</item> + <item name="android:animateLayoutChanges">true</item> </style> <style name="Widget.Info.Header.Description" parent=""> <item name="android:layout_width">match_parent</item> <item name="android:layout_height">wrap_content</item> <item name="android:textAppearance">@style/TextAppearance.AppCompat.Medium</item> + <item name="android:animateLayoutChanges">true</item> </style> <style name="Widget.Info.ActionButton" parent=""> @@ -165,13 +168,13 @@ <item name="android:background">?backgroundMenuItem</item> <item name="android:drawablePadding">4dp</item> <item name="android:fontFamily">sans-serif</item> - <item name="android:minWidth">96dp</item> + <item name="android:minWidth">80dp</item> <item name="android:paddingBottom">12dp</item> - <item name="android:paddingLeft">?android:attr/listPreferredItemPaddingLeft</item> - <item name="android:paddingRight">?android:attr/listPreferredItemPaddingRight</item> + <item name="android:paddingLeft">10dp</item> + <item name="android:paddingRight">10dp</item> <item name="android:paddingTop">12dp</item> <item name="android:textAllCaps">false</item> - <item name="android:textColor">?colorTextPrimary</item> + <item name="android:textColor">?colorTextSecondary</item> <item name="android:textStyle">normal</item> </style> @@ -198,6 +201,7 @@ <item name="android:paddingLeft">?android:attr/listPreferredItemPaddingLeft</item> <item name="android:paddingRight">?android:attr/listPreferredItemPaddingRight</item> <item name="android:paddingTop">16dp</item> + <item name="android:animateLayoutChanges">true</item> </style> <style name="Widget.Info.Item.Content" parent=""> -- GitLab