From 14fada61c6329d94c538826721cd28781b90e102 Mon Sep 17 00:00:00 2001 From: Mygod Date: Wed, 24 Jun 2020 07:25:11 +0800 Subject: [PATCH] Copy more stuff on paste Wi-Fi configuration --- .../net/wifi/SoftApConfigurationCompat.kt | 2 +- .../net/wifi/WifiApDialogFragment.kt | 34 ++++++++++++------- 2 files changed, 22 insertions(+), 14 deletions(-) diff --git a/mobile/src/main/java/be/mygod/vpnhotspot/net/wifi/SoftApConfigurationCompat.kt b/mobile/src/main/java/be/mygod/vpnhotspot/net/wifi/SoftApConfigurationCompat.kt index b2058519..8f6b2862 100644 --- a/mobile/src/main/java/be/mygod/vpnhotspot/net/wifi/SoftApConfigurationCompat.kt +++ b/mobile/src/main/java/be/mygod/vpnhotspot/net/wifi/SoftApConfigurationCompat.kt @@ -33,7 +33,7 @@ data class SoftApConfigurationCompat( // TODO: WifiClient? nullable? var allowedClientList: List?, var blockedClientList: List?, - val underlying: Parcelable? = null) : Parcelable { + var underlying: Parcelable? = null) : Parcelable { companion object { /** * TODO diff --git a/mobile/src/main/java/be/mygod/vpnhotspot/net/wifi/WifiApDialogFragment.kt b/mobile/src/main/java/be/mygod/vpnhotspot/net/wifi/WifiApDialogFragment.kt index aab24036..6228121b 100644 --- a/mobile/src/main/java/be/mygod/vpnhotspot/net/wifi/WifiApDialogFragment.kt +++ b/mobile/src/main/java/be/mygod/vpnhotspot/net/wifi/WifiApDialogFragment.kt @@ -80,8 +80,9 @@ class WifiApDialogFragment : AlertDialogFragment + private lateinit var base: SoftApConfigurationCompat private var started = false - override val ret get() = Arg(arg.configuration.copy( + override val ret get() = Arg(base.copy( ssid = dialogView.ssid.text.toString(), passphrase = if (dialogView.password.length() != 0) dialogView.password.text.toString() else null, bssidAddr = if (dialogView.bssid.length() != 0) { @@ -141,20 +142,21 @@ class WifiApDialogFragment : AlertDialogFragment= 23 || arg.p2pMode) { - dialogView.band.setSelection(if (configuration.channel in 1..165) { - bandOptions.indexOfFirst { it.channel == configuration.channel } - } else bandOptions.indexOfFirst { it.band == configuration.band }) + dialogView.band.setSelection(if (base.channel in 1..165) { + bandOptions.indexOfFirst { it.channel == base.channel } + } else bandOptions.indexOfFirst { it.band == base.band }) } - dialogView.bssid.setText(configuration.bssid?.toString()) - dialogView.hiddenSsid.isChecked = configuration.isHiddenSsid + dialogView.bssid.setText(base.bssid?.toString()) + dialogView.hiddenSsid.isChecked = base.isHiddenSsid // TODO support more fields from SACC } @@ -209,8 +211,14 @@ class WifiApDialogFragment : AlertDialogFragment try { app.clipboard.primaryClip?.getItemAt(0)?.text?.apply { - Base64.decode(toString(), BASE64_FLAGS).toParcelable() - ?.let { populateFromConfiguration(it) } + Base64.decode(toString(), BASE64_FLAGS).toParcelable()?.let { config -> + val newUnderlying = config.underlying + if (newUnderlying != null) { + arg.configuration.underlying?.let { check(it.javaClass == newUnderlying.javaClass) } + } else config.underlying = arg.configuration.underlying + base = config + populateFromConfiguration() + } } true } catch (e: IllegalArgumentException) {