Browse Source

ConfigAddActivity: Add an standalone config-creating activity

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
master
Samuel Holland 7 years ago
parent
commit
61d6b89bbe
5 changed files with 57 additions and 2 deletions
  1. +3
    -0
      app/src/main/AndroidManifest.xml
  2. +37
    -0
      app/src/main/java/com/wireguard/android/ConfigAddActivity.java
  3. +11
    -2
      app/src/main/java/com/wireguard/android/ConfigEditFragment.java
  4. +5
    -0
      app/src/main/res/layout/config_add_activity.xml
  5. +1
    -0
      app/src/main/res/values/strings.xml

+ 3
- 0
app/src/main/AndroidManifest.xml View File

@@ -19,6 +19,9 @@
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".ConfigAddActivity"
android:label="@string/edit_activity_title" />
<activity
android:name=".SettingsActivity"
android:label="@string/settings" />


+ 37
- 0
app/src/main/java/com/wireguard/android/ConfigAddActivity.java View File

@@ -0,0 +1,37 @@
package com.wireguard.android;

import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.os.Bundle;

import com.wireguard.config.Config;

/**
* Standalone activity for creating configurations.
*/

public class ConfigAddActivity extends BaseConfigActivity {
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.config_add_activity);
}

@Override
protected void onCurrentConfigChanged(final Config config) {
// This is the result of ConfigEditFragment signalling that a configuration was created.
if (config != null)
finish();
}

@Override
protected void onServiceAvailable() {
super.onServiceAvailable();
final FragmentManager fm = getFragmentManager();
if (fm.findFragmentById(R.id.master_fragment) == null) {
final FragmentTransaction transaction = fm.beginTransaction();
transaction.add(R.id.master_fragment, new ConfigEditFragment());
transaction.commit();
}
}
}

+ 11
- 2
app/src/main/java/com/wireguard/android/ConfigEditFragment.java View File

@@ -12,6 +12,7 @@ import android.view.View;
import android.view.ViewGroup;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.Toast;

import com.wireguard.android.databinding.ConfigEditFragmentBinding;
import com.wireguard.config.Config;
@@ -73,7 +74,15 @@ public class ConfigEditFragment extends BaseConfigFragment {

private void saveConfig() {
// FIXME: validate input
VpnService.getInstance().update(getCurrentConfig().getName(), localConfig);
try {
if (getCurrentConfig() != null)
VpnService.getInstance().update(getCurrentConfig().getName(), localConfig);
else
VpnService.getInstance().add(localConfig);
} catch (final IllegalStateException e) {
Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_SHORT).show();
return;
}
// Hide the keyboard; it rarely goes away on its own.
final BaseConfigActivity activity = (BaseConfigActivity) getActivity();
final View focusedView = activity.getCurrentFocus();
@@ -83,7 +92,7 @@ public class ConfigEditFragment extends BaseConfigFragment {
inputManager.hideSoftInputFromWindow(focusedView.getWindowToken(),
InputMethodManager.HIDE_NOT_ALWAYS);
}
// Tell the activity to go back to the detail view.
// Tell the activity to finish itself or go back to the detail view.
activity.setCurrentConfig(localConfig);
}
}

+ 5
- 0
app/src/main/res/layout/config_add_activity.xml View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/master_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />

+ 1
- 0
app/src/main/res/values/strings.xml View File

@@ -6,6 +6,7 @@
<string name="disconnected">Disconnected</string>
<string name="dns_servers">DNS servers</string>
<string name="edit">Edit</string>
<string name="edit_activity_title">Add WireGuard Configuration</string>
<string name="generate">Generate</string>
<string name="hint_automatic">(auto)</string>
<string name="hint_generated">(generated)</string>


Loading…
Cancel
Save