From 00410a83188aa816e5eee0f92652b517aab42e38 Mon Sep 17 00:00:00 2001 From: Janne Koschinski <janne@kuschku.de> Date: Mon, 21 Jan 2019 17:39:20 +0100 Subject: [PATCH] Properly keep state in irc:// setup activity --- .../ui/setup/ServiceBoundSetupActivity.kt | 4 +++- .../quasseldroid/ui/setup/SetupActivity.kt | 4 +++- .../quasseldroid/ui/setup/SlidePagerAdapter.kt | 10 ++++++++-- .../setup/network/NetworkSetupNetworkSlide.kt | 18 ++++++++++++------ 4 files changed, 26 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/ServiceBoundSetupActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/ServiceBoundSetupActivity.kt index e101073fb..d07427e07 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/ServiceBoundSetupActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/ServiceBoundSetupActivity.kt @@ -248,8 +248,10 @@ abstract class ServiceBoundSetupActivity : override fun onRestoreInstanceState(savedInstanceState: Bundle?) { super.onRestoreInstanceState(savedInstanceState) if (savedInstanceState != null) { - if (savedInstanceState.containsKey(resultKey)) + if (savedInstanceState.containsKey(resultKey)) { adapter.result.putAll(savedInstanceState.getBundle(resultKey)) + adapter.allChanged() + } if (savedInstanceState.containsKey(lastValidItemKey)) adapter.lastValidItem = savedInstanceState.getInt(lastValidItemKey) if (savedInstanceState.containsKey(currentItemKey)) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/SetupActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/SetupActivity.kt index fcc7790be..0a028877c 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/SetupActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/SetupActivity.kt @@ -209,8 +209,10 @@ abstract class SetupActivity : DaggerAppCompatActivity() { override fun onRestoreInstanceState(savedInstanceState: Bundle?) { super.onRestoreInstanceState(savedInstanceState) if (savedInstanceState != null) { - if (savedInstanceState.containsKey(resultKey)) + if (savedInstanceState.containsKey(resultKey)) { adapter.result.putAll(savedInstanceState.getBundle(resultKey)) + adapter.allChanged() + } if (savedInstanceState.containsKey(lastValidItemKey)) adapter.lastValidItem = savedInstanceState.getInt(lastValidItemKey) if (savedInstanceState.containsKey(currentItemKey)) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/SlidePagerAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/SlidePagerAdapter.kt index 6db79e079..8f2365995 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/SlidePagerAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/SlidePagerAdapter.kt @@ -49,7 +49,7 @@ class SlidePagerAdapter(private val fragmentManager: FragmentManager) : return retainedFragments.get(position) ?: list[position] } - override fun getCount() = Math.min(list.size, lastValidItem + 2) + override fun getCount() = minOf(list.size, lastValidItem + 2) val totalCount get() = list.size fun addFragment(fragment: SlideFragment) { list.add(fragment) @@ -90,9 +90,15 @@ class SlidePagerAdapter(private val fragmentManager: FragmentManager) : retainedFragments.put(index, fragment) } + fun allChanged() { + for (index in 0 until totalCount) { + hasChanged(index, getItem(index)) + } + } + fun hasChanged(index: Int, fragment: SlideFragment) { fragment.getData(result) - if (index > -1 && index < totalCount) { + if (index > -1 && (index + 1) < totalCount) { getItem(index + 1).setData(result) } } 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 1acc33c17..09b135725 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 @@ -123,6 +123,7 @@ class NetworkSetupNetworkSlide : ServiceBoundSlideFragment() { ) ) ) + data.putInt("network_id", -1) } } @@ -225,16 +226,21 @@ class NetworkSetupNetworkSlide : ServiceBoundSlideFragment() { networkAdapter.submitList(listOf(null) + networks) val linkNetwork = data.getSerializable("network") as? LinkNetwork - val existingNetwork = networks.firstOrNull { - it.serverList.any { - it.host == linkNetwork?.server?.host + val selectedNetworkId = if (data.containsKey("network_id")) { + data.getInt("network_id") + } else { + val existingNetwork = networks.firstOrNull { + it.serverList.any { + it.host == linkNetwork?.server?.host + } } + existingNetwork?.networkId } + val selectedNetworkPosition = networkAdapter.indexOf(selectedNetworkId ?: -1) ?: -1 if (!hasSetNetwork) { - val networkPosition = networkAdapter.indexOf(existingNetwork?.networkId ?: -1) ?: -1 - if (networkPosition != -1) { - network.setSelection(networkPosition) + if (selectedNetworkPosition != -1 || selectedNetworkId == -1) { + network.setSelection(selectedNetworkPosition) hasSetNetwork = true } } -- GitLab