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 83a422ae5f49936e3eaa97d2ce1e78017d47c311..26c968fe7bc1bcad090de32435e206e49520cb29 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 a98e6d9d72f3ff8247d4b1975585824333e7949f..f0a7d9e591b00c7f60af271a34dee8be9525d333 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 976cd8600179bef5982dc715527f39ac60ac596c..2348e01c3960d66e021d3ee02b60dcbdda932aa2 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 3eecd053a008e7d3809c1642be202cd2a196cfa9..9682b2c7bdee79ad816c0da28e4e945bccf77197 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 1cbcd793cc37c5ee7c90ebfa49474079d0e9cf76..19742d018e487d80b1835bc61202d58649f495cc 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 555cca87d893e98b10a7fa4bb225dcc4e75c5197..aa738ae01bb80ed3348a690ad7906edcd727d0b6 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 efad8589c4d729e73c2ee8d0f72b66bf4cd5e76e..037c618298d5ddcd54fb6e4b6a6940522cbb9606 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