From f2a400e8979f19615a72b5e090e41108ed97fd30 Mon Sep 17 00:00:00 2001 From: Janne Mareike Koschinski <janne@kuschku.de> Date: Fri, 11 Jan 2019 19:16:30 +0100 Subject: [PATCH] Fixes #181 and #183 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Setup Network window should sort networks alphabetically - Setup Network window should rename "All Networks" -> "New Network…" --- .../coresettings/chatlist/ChatListBaseFragment.kt | 2 +- .../ui/coresettings/chatlist/NetworkAdapter.kt | 13 ++++++------- .../ui/setup/network/NetworkSetupNetworkSlide.kt | 10 +++++++--- app/src/main/res/values/strings_settings.xml | 1 + 4 files changed, 15 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatListBaseFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatListBaseFragment.kt index 63a3430ae..557b87499 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatListBaseFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatListBaseFragment.kt @@ -110,7 +110,7 @@ abstract class ChatListBaseFragment(private val initDefault: Boolean) : )) minimumActivity.adapter = minimumActivityAdapter - val networkAdapter = NetworkAdapter() + val networkAdapter = NetworkAdapter(R.string.settings_chatlist_network_all) networkId.adapter = networkAdapter viewModel.networks.switchMap { diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/NetworkAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/NetworkAdapter.kt index d37d27bb4..2c3a3b408 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/NetworkAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/NetworkAdapter.kt @@ -23,6 +23,7 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.TextView +import androidx.annotation.StringRes import androidx.appcompat.widget.ThemedSpinnerAdapter import androidx.recyclerview.widget.RecyclerView import butterknife.BindView @@ -33,8 +34,8 @@ import de.kuschku.quasseldroid.R import de.kuschku.quasseldroid.util.ui.ContextThemeWrapper import de.kuschku.quasseldroid.util.ui.RecyclerSpinnerAdapter -class NetworkAdapter : RecyclerSpinnerAdapter<NetworkAdapter.NetworkViewHolder>(), - ThemedSpinnerAdapter { +class NetworkAdapter(@StringRes private val fallbackName: Int) : RecyclerSpinnerAdapter<NetworkAdapter.NetworkViewHolder>(), + ThemedSpinnerAdapter { var data = listOf<INetwork.NetworkInfo?>(null) fun submitList(list: List<INetwork.NetworkInfo?>) { @@ -56,9 +57,7 @@ class NetworkAdapter : RecyclerSpinnerAdapter<NetworkAdapter.NetworkViewHolder>( parent.context ) val view = inflater.inflate(R.layout.widget_spinner_item_inline, parent, false) - return NetworkViewHolder( - view - ) + return NetworkViewHolder(fallbackName, view) } fun indexOf(id: NetworkId): Int? { @@ -74,7 +73,7 @@ class NetworkAdapter : RecyclerSpinnerAdapter<NetworkAdapter.NetworkViewHolder>( override fun getItemId(position: Int) = getItem(position)?.networkId?.toLong() ?: -1 override fun hasStableIds() = true override fun getCount() = data.size - class NetworkViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + class NetworkViewHolder(@StringRes private val fallbackName: Int, itemView: View) : RecyclerView.ViewHolder(itemView) { @BindView(android.R.id.text1) lateinit var text: TextView @@ -83,7 +82,7 @@ class NetworkAdapter : RecyclerSpinnerAdapter<NetworkAdapter.NetworkViewHolder>( } fun bind(network: INetwork.NetworkInfo?) { - text.text = network?.networkName ?: itemView.context.getString(R.string.settings_chatlist_network_all) + text.text = network?.networkName ?: itemView.context.getString(fallbackName) } } } diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/network/NetworkSetupNetworkSlide.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/network/NetworkSetupNetworkSlide.kt index 2a0d41763..8a4f50b8a 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/network/NetworkSetupNetworkSlide.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/network/NetworkSetupNetworkSlide.kt @@ -79,7 +79,7 @@ class NetworkSetupNetworkSlide : ServiceBoundSlideFragment() { lateinit var sslEnabled: SwitchCompat private val identityAdapter = IdentityAdapter() - private val networkAdapter = NetworkAdapter() + private val networkAdapter = NetworkAdapter(R.string.settings_chatlist_network_create) override fun isValid(): Boolean { return (this.network.selectedItemPosition != -1 && @@ -188,9 +188,13 @@ class NetworkSetupNetworkSlide : ServiceBoundSlideFragment() { } }) - viewModel.networks.toLiveData().observe(this, Observer { + viewModel.networks.switchMap { + combineLatest(it.values.map(Network::liveNetworkInfo)).map { + it.sortedWith(compareBy(String.CASE_INSENSITIVE_ORDER, INetwork.NetworkInfo::networkName)) + } + }.toLiveData().observe(this, Observer { if (it != null) { - this.networks = it.values.map(Network::networkInfo) + this.networks = it update() } }) diff --git a/app/src/main/res/values/strings_settings.xml b/app/src/main/res/values/strings_settings.xml index 7bd017251..dcbc6845a 100644 --- a/app/src/main/res/values/strings_settings.xml +++ b/app/src/main/res/values/strings_settings.xml @@ -84,6 +84,7 @@ <string name="settings_chatlist_add_new_buffers_automatically">Add new chats automatically</string> <string name="settings_chatlist_network">Network</string> <string name="settings_chatlist_network_all">All Networks</string> + <string name="settings_chatlist_network_create">Create Network…</string> <string name="settings_chatlist_show_status_buffer">Show Status Buffer</string> <string name="settings_chatlist_types">Chat Types</string> <string name="settings_chatlist_show_channels">Show Channels</string> -- GitLab