summaryrefslogtreecommitdiffhomepage
path: root/ui/src/main/java/com/wireguard/android
diff options
context:
space:
mode:
Diffstat (limited to 'ui/src/main/java/com/wireguard/android')
-rw-r--r--ui/src/main/java/com/wireguard/android/Application.java20
-rw-r--r--ui/src/main/java/com/wireguard/android/activity/SettingsActivity.java3
2 files changed, 20 insertions, 3 deletions
diff --git a/ui/src/main/java/com/wireguard/android/Application.java b/ui/src/main/java/com/wireguard/android/Application.java
index 2ebeb69d..655c6b21 100644
--- a/ui/src/main/java/com/wireguard/android/Application.java
+++ b/ui/src/main/java/com/wireguard/android/Application.java
@@ -35,7 +35,7 @@ import java.util.Locale;
import java9.util.concurrent.CompletableFuture;
-public class Application extends android.app.Application {
+public class Application extends android.app.Application implements SharedPreferences.OnSharedPreferenceChangeListener {
private static final String TAG = "WireGuard/" + Application.class.getSimpleName();
public static final String USER_AGENT;
@@ -86,7 +86,9 @@ public class Application extends android.app.Application {
try {
if (!didStartRootShell)
app.rootShell.start();
- backend = new WgQuickBackend(app.getApplicationContext(), app.rootShell, app.toolsInstaller);
+ WgQuickBackend wgQuickBackend = new WgQuickBackend(app.getApplicationContext(), app.rootShell, app.toolsInstaller);
+ wgQuickBackend.setMultipleTunnels(app.sharedPreferences.getBoolean("multiple_tunnels", false));
+ backend = wgQuickBackend;
} catch (final Exception ignored) {
}
}
@@ -167,5 +169,19 @@ public class Application extends android.app.Application {
tunnelManager.onCreate();
asyncWorker.supplyAsync(Application::getBackend).thenAccept(futureBackend::complete);
+
+ sharedPreferences.registerOnSharedPreferenceChangeListener(this);
+ }
+
+ @Override
+ public void onTerminate() {
+ sharedPreferences.unregisterOnSharedPreferenceChangeListener(this);
+ super.onTerminate();
+ }
+
+ @Override
+ public void onSharedPreferenceChanged(final SharedPreferences sharedPreferences, final String key) {
+ if ("multiple_tunnels".equals(key) && backend != null && backend instanceof WgQuickBackend)
+ ((WgQuickBackend)backend).setMultipleTunnels(sharedPreferences.getBoolean(key, false));
}
}
diff --git a/ui/src/main/java/com/wireguard/android/activity/SettingsActivity.java b/ui/src/main/java/com/wireguard/android/activity/SettingsActivity.java
index f545c371..b597a9b1 100644
--- a/ui/src/main/java/com/wireguard/android/activity/SettingsActivity.java
+++ b/ui/src/main/java/com/wireguard/android/activity/SettingsActivity.java
@@ -99,7 +99,8 @@ public class SettingsActivity extends ThemeChangeAwareActivity {
final Preference wgQuickOnlyPrefs[] = {
getPreferenceManager().findPreference("tools_installer"),
- getPreferenceManager().findPreference("restore_on_boot")
+ getPreferenceManager().findPreference("restore_on_boot"),
+ getPreferenceManager().findPreference("multiple_tunnels")
};
for (final Preference pref : wgQuickOnlyPrefs)
pref.setVisible(false);