diff options
Diffstat (limited to 'app/src/main/java/com/wireguard/android/BaseConfigActivity.java')
-rw-r--r-- | app/src/main/java/com/wireguard/android/BaseConfigActivity.java | 103 |
1 files changed, 0 insertions, 103 deletions
diff --git a/app/src/main/java/com/wireguard/android/BaseConfigActivity.java b/app/src/main/java/com/wireguard/android/BaseConfigActivity.java deleted file mode 100644 index 1bd5c70d..00000000 --- a/app/src/main/java/com/wireguard/android/BaseConfigActivity.java +++ /dev/null @@ -1,103 +0,0 @@ -package com.wireguard.android; - -import android.app.Activity; -import android.content.ComponentName; -import android.content.Context; -import android.content.Intent; -import android.content.ServiceConnection; -import android.os.Bundle; -import android.os.IBinder; - -import com.wireguard.android.backends.VpnService; -import com.wireguard.config.Config; - -/** - * Base class for activities that need to remember the current configuration and wait for a service. - */ - -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) { - initialConfig = savedInstanceState.getString(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(); - else - bindService(new Intent(this, VpnService.class), new ServiceConnectionCallbacks(), - Context.BIND_AUTO_CREATE); - } - - protected abstract void onCurrentConfigChanged(Config oldCconfig, Config newConfig); - - 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; - final Config oldConfig = currentConfig; - currentConfig = config; - onCurrentConfigChanged(oldConfig, config); - } - - public void setIsEditing(final boolean isEditing) { - if (this.isEditing == isEditing) - return; - this.isEditing = isEditing; - onEditingStateChanged(isEditing); - } - - private class ServiceConnectionCallbacks implements ServiceConnection { - @Override - public void onServiceConnected(final ComponentName component, final IBinder binder) { - // We don't actually need a binding, only notification that the service is started. - unbindService(this); - onServiceAvailable(); - } - - @Override - public void onServiceDisconnected(final ComponentName component) { - // This can never happen; the service runs in the same thread as the activity. - throw new IllegalStateException(); - } - } -} |