aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/app/src/main/java/com/wireguard/android/BaseConfigActivity.java
diff options
context:
space:
mode:
authorSamuel Holland <samuel@sholland.org>2017-08-23 18:02:16 -0500
committerSamuel Holland <samuel@sholland.org>2017-08-23 18:02:16 -0500
commitd3e6b311cafc13c627201220d183d07ef748f2bb (patch)
treeb62cc2d08a8e505b5a27b59ff5f7bab32584c508 /app/src/main/java/com/wireguard/android/BaseConfigActivity.java
parentmanifest: ConfigActivity is parent to AddActivity (diff)
downloadwireguard-android-d3e6b311cafc13c627201220d183d07ef748f2bb.tar.xz
wireguard-android-d3e6b311cafc13c627201220d183d07ef748f2bb.zip
BaseConfigActivity: Remember editing state
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'app/src/main/java/com/wireguard/android/BaseConfigActivity.java')
-rw-r--r--app/src/main/java/com/wireguard/android/BaseConfigActivity.java30
1 files changed, 26 insertions, 4 deletions
diff --git a/app/src/main/java/com/wireguard/android/BaseConfigActivity.java b/app/src/main/java/com/wireguard/android/BaseConfigActivity.java
index 0051d6bf..17ca3b6a 100644
--- a/app/src/main/java/com/wireguard/android/BaseConfigActivity.java
+++ b/app/src/main/java/com/wireguard/android/BaseConfigActivity.java
@@ -16,22 +16,33 @@ import com.wireguard.config.Config;
abstract class BaseConfigActivity extends Activity {
protected static final String KEY_CURRENT_CONFIG = "currentConfig";
+ protected static final String KEY_IS_EDITING = "isEditing";
private Config currentConfig;
private String initialConfig;
+ private boolean isEditing;
+ private boolean wasEditing;
protected Config getCurrentConfig() {
return currentConfig;
}
+ protected boolean isEditing() {
+ return isEditing;
+ }
+
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Restore the saved configuration if there is one; otherwise grab it from the intent.
- if (savedInstanceState != null)
+ if (savedInstanceState != null) {
initialConfig = savedInstanceState.getString(KEY_CURRENT_CONFIG);
- else
- initialConfig = getIntent().getStringExtra(KEY_CURRENT_CONFIG);
+ wasEditing = savedInstanceState.getBoolean(KEY_IS_EDITING, false);
+ } else {
+ final Intent intent = getIntent();
+ initialConfig = intent.getStringExtra(KEY_CURRENT_CONFIG);
+ wasEditing = intent.getBooleanExtra(KEY_IS_EDITING, false);
+ }
// Trigger starting the service as early as possible
if (VpnService.getInstance() != null)
onServiceAvailable();
@@ -42,24 +53,35 @@ abstract class BaseConfigActivity extends Activity {
protected abstract void onCurrentConfigChanged(Config config);
+ protected abstract void onEditingStateChanged(boolean isEditing);
+
@Override
public void onSaveInstanceState(final Bundle outState) {
super.onSaveInstanceState(outState);
if (currentConfig != null)
outState.putString(KEY_CURRENT_CONFIG, currentConfig.getName());
+ outState.putBoolean(KEY_IS_EDITING, isEditing);
}
protected void onServiceAvailable() {
// Make sure the subclass activity is initialized before setting its config.
if (initialConfig != null && currentConfig == null)
setCurrentConfig(VpnService.getInstance().get(initialConfig));
+ setIsEditing(wasEditing);
}
public void setCurrentConfig(final Config config) {
if (currentConfig == config)
return;
currentConfig = config;
- onCurrentConfigChanged(currentConfig);
+ onCurrentConfigChanged(config);
+ }
+
+ public void setIsEditing(final boolean isEditing) {
+ if (this.isEditing == isEditing)
+ return;
+ this.isEditing = isEditing;
+ onEditingStateChanged(isEditing);
}
private class ServiceConnectionCallbacks implements ServiceConnection {