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 e101073fb94fbb067933ca681b5b5054a12eb8c3..d07427e076c5706f3c31fcaadaca02148050899f 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 fcc7790be186b44bf5485c7436b52f408d21d41d..0a028877c5b20b413dc90071239968b337497643 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 6db79e0793ea60a95b91290e2673b0fbceb923da..8f2365995bdbc557f23f4077c4ba7911e2c57e6e 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 1acc33c1737bed14cd096309313824114633bb4a..09b135725e57219567294b108126cd1db0035ca5 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 } }