aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/app/src/main/java/com/wireguard/android/ConfigEditFragment.java
diff options
context:
space:
mode:
authorSamuel Holland <samuel@sholland.org>2017-08-13 07:24:03 -0500
committerSamuel Holland <samuel@sholland.org>2017-08-13 07:24:03 -0500
commit5e55d196be092f4a4dcb212cf09d7a1bdab70e00 (patch)
treeeb765a1b961fefdaa7ddc3cfae9cb83a09e0c031 /app/src/main/java/com/wireguard/android/ConfigEditFragment.java
parentProfile: Add function to copy config from another profile (diff)
downloadwireguard-android-5e55d196be092f4a4dcb212cf09d7a1bdab70e00.tar.xz
wireguard-android-5e55d196be092f4a4dcb212cf09d7a1bdab70e00.zip
Major renaming and refactoring in activity and service
Apparently "configuration" is the proper term, not "profile". Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'app/src/main/java/com/wireguard/android/ConfigEditFragment.java')
-rw-r--r--app/src/main/java/com/wireguard/android/ConfigEditFragment.java74
1 files changed, 74 insertions, 0 deletions
diff --git a/app/src/main/java/com/wireguard/android/ConfigEditFragment.java b/app/src/main/java/com/wireguard/android/ConfigEditFragment.java
new file mode 100644
index 00000000..395358f6
--- /dev/null
+++ b/app/src/main/java/com/wireguard/android/ConfigEditFragment.java
@@ -0,0 +1,74 @@
+package com.wireguard.android;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.inputmethod.InputMethodManager;
+
+import com.wireguard.android.databinding.ConfigEditFragmentBinding;
+import com.wireguard.config.Config;
+
+/**
+ * Fragment for editing a WireGuard configuration.
+ */
+
+public class ConfigEditFragment extends BaseConfigFragment {
+ private final Config localConfig = new Config();
+
+ @Override
+ protected void onCurrentConfigChanged(final Config config) {
+ localConfig.copyFrom(config);
+ }
+
+ @Override
+ public void onCreate(final Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setHasOptionsMenu(true);
+ }
+
+ @Override
+ public void onCreateOptionsMenu(final Menu menu, final MenuInflater inflater) {
+ inflater.inflate(R.menu.config_edit, menu);
+ }
+
+ @Override
+ public View onCreateView(final LayoutInflater inflater, final ViewGroup parent,
+ final Bundle savedInstanceState) {
+ final ConfigEditFragmentBinding binding =
+ ConfigEditFragmentBinding.inflate(inflater, parent, false);
+ binding.setConfig(localConfig);
+ return binding.getRoot();
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(final MenuItem item) {
+ switch (item.getItemId()) {
+ case R.id.menu_action_save:
+ saveConfig();
+ return true;
+ default:
+ return false;
+ }
+ }
+
+ private void saveConfig() {
+ // FIXME: validate input
+ VpnService.getInstance().update(getCurrentConfig().getName(), localConfig);
+ // Hide the keyboard; it rarely goes away on its own.
+ final BaseConfigActivity activity = (BaseConfigActivity) getActivity();
+ final View focusedView = activity.getCurrentFocus();
+ if (focusedView != null) {
+ final InputMethodManager inputManager =
+ (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
+ inputManager.hideSoftInputFromWindow(focusedView.getWindowToken(),
+ InputMethodManager.HIDE_NOT_ALWAYS);
+ }
+ // Tell the activity to go back to the detail view.
+ activity.setCurrentConfig(localConfig);
+ }
+}