From 79e26fe2be7b9fc58f972b467fc92e167f817387 Mon Sep 17 00:00:00 2001 From: Janne Koschinski <janne@kuschku.de> Date: Tue, 10 Apr 2018 16:57:20 +0200 Subject: [PATCH] Improve channel and user info, fix a casemapping bug --- .../chat/info/channel/ChannelInfoFragment.kt | 22 +++++++++++++++++++ .../main/res/layout/fragment_info_channel.xml | 8 +++++++ app/src/main/res/values-de/strings.xml | 2 ++ app/src/main/res/values/strings.xml | 2 ++ build.gradle.kts | 2 +- .../libquassel/quassel/syncables/Network.kt | 6 ++--- .../libquassel/util/irc/IrcCaseMappers.kt | 4 ++-- 7 files changed, 39 insertions(+), 7 deletions(-) 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 83a422ae5..26c968fe7 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 @@ -36,9 +36,15 @@ class ChannelInfoFragment : ServiceBoundFragment() { @BindView(R.id.action_edit_topic) lateinit var actionEditTopic: Button + @BindView(R.id.action_who) + lateinit var actionWho: Button + @BindView(R.id.action_part) lateinit var actionPart: Button + @BindView(R.id.action_join) + lateinit var actionJoin: Button + @Inject lateinit var contentFormatter: ContentFormatter @@ -84,6 +90,18 @@ class ChannelInfoFragment : ServiceBoundFragment() { } } } + + actionWho.setOnClickListener { + viewModel.session.value?.orNull()?.let { session -> + session.bufferSyncer?.find( + networkId = channel.network().networkId(), + type = Buffer_Type.of(Buffer_Type.StatusBuffer) + )?.let { statusInfo -> + session.rpcHandler?.sendInput(statusInfo, "/who ${channel.name()}") + requireActivity().finish() + } + } + } } }) @@ -93,6 +111,10 @@ class ChannelInfoFragment : ServiceBoundFragment() { actionEditTopic.setTooltip() actionEditTopic.retint() + actionWho.setTooltip() + actionWho.retint() + actionJoin.setTooltip() + actionJoin.retint() actionPart.setTooltip() actionPart.retint() diff --git a/app/src/main/res/layout/fragment_info_channel.xml b/app/src/main/res/layout/fragment_info_channel.xml index a98e6d9d7..f0a7d9e59 100644 --- a/app/src/main/res/layout/fragment_info_channel.xml +++ b/app/src/main/res/layout/fragment_info_channel.xml @@ -49,6 +49,14 @@ android:text="@string/label_edit_topic" tools:drawableTint="?colorTextSecondary" /> + <android.support.v7.widget.AppCompatButton + android:id="@+id/action_who" + style="@style/Widget.Info.ActionButton" + android:contentDescription="@string/label_who_long" + android:drawableTop="@drawable/ic_info" + android:text="@string/label_who" + tools:drawableTint="?colorTextSecondary" /> + <android.support.v7.widget.AppCompatButton android:id="@+id/action_part" style="@style/Widget.Info.ActionButton" diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 976cd8600..2348e01c3 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -67,6 +67,8 @@ <string name="label_topic">Kanal-Thema</string> <string name="label_unhide">Nicht mehr ausblenden</string> <string name="label_website">Webseite</string> + <string name="label_who">Who</string> + <string name="label_who_long">Informationen aller Nutzer aktualisieren</string> <string name="label_whois">Whois</string> <string name="label_whois_long">Nutzerinformationen aktualisieren</string> <string name="label_yes">Ja</string> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3eecd053a..9682b2c7b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -67,6 +67,8 @@ <string name="label_topic">Channel Topic</string> <string name="label_unhide">Make Visible</string> <string name="label_website">Website</string> + <string name="label_who">Who</string> + <string name="label_who_long">Update user information of all users</string> <string name="label_whois">Whois</string> <string name="label_whois_long">Update user information</string> <string name="label_yes">Yes</string> diff --git a/build.gradle.kts b/build.gradle.kts index 1cbcd793c..19742d018 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -4,7 +4,7 @@ buildscript { jcenter() } dependencies { - classpath("com.android.tools.build:gradle:3.1.0") + classpath("com.android.tools.build:gradle:3.1.1") withVersion("1.2.31") { classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$version") classpath("org.jetbrains.kotlin:kotlin-android-extensions:$version") diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/Network.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/Network.kt index 555cca87d..aa738ae01 100644 --- a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/Network.kt +++ b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/Network.kt @@ -346,11 +346,9 @@ class Network constructor( } } - fun ircUser(nickName: String?) = _ircUsers[nickName?.let(caseMapper::toLowerCase)] + fun ircUser(nickName: String?) = _ircUsers[caseMapper.toLowerCaseNullable(nickName)] fun liveIrcUser(nickName: String?) = live_ircUsers.map { - ircUser( - nickName - ) ?: IrcUser.NULL + ircUser(nickName) ?: IrcUser.NULL }.distinctUntilChanged() fun ircUsers() = _ircUsers.values.toList() diff --git a/lib/src/main/java/de/kuschku/libquassel/util/irc/IrcCaseMappers.kt b/lib/src/main/java/de/kuschku/libquassel/util/irc/IrcCaseMappers.kt index efad8589c..037c61829 100644 --- a/lib/src/main/java/de/kuschku/libquassel/util/irc/IrcCaseMappers.kt +++ b/lib/src/main/java/de/kuschku/libquassel/util/irc/IrcCaseMappers.kt @@ -3,8 +3,8 @@ package de.kuschku.libquassel.util.irc import java.util.* object IrcCaseMappers { - var irc: IrcCaseMapper = UnicodeCaseMapper() - var unicode: IrcCaseMapper = ClassicalIrcCaseMapper() + var irc: IrcCaseMapper = ClassicalIrcCaseMapper() + var unicode: IrcCaseMapper = UnicodeCaseMapper() interface IrcCaseMapper { fun equalsIgnoreCase(a: String, b: String): Boolean -- GitLab