aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/app/src/main/java/com/wireguard/android/ConfigEditFragment.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/com/wireguard/android/ConfigEditFragment.java')
-rw-r--r--app/src/main/java/com/wireguard/android/ConfigEditFragment.java139
1 files changed, 0 insertions, 139 deletions
diff --git a/app/src/main/java/com/wireguard/android/ConfigEditFragment.java b/app/src/main/java/com/wireguard/android/ConfigEditFragment.java
deleted file mode 100644
index f29f20fe..00000000
--- a/app/src/main/java/com/wireguard/android/ConfigEditFragment.java
+++ /dev/null
@@ -1,139 +0,0 @@
-package com.wireguard.android;
-
-import android.app.Activity;
-import android.content.ClipData;
-import android.content.ClipboardManager;
-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 android.widget.Toast;
-
-import com.wireguard.android.backends.VpnService;
-import com.wireguard.android.databinding.ConfigEditFragmentBinding;
-import com.wireguard.config.Config;
-
-/**
- * Fragment for editing a WireGuard configuration.
- */
-
-public class ConfigEditFragment extends BaseConfigFragment {
- private static final String KEY_MODIFIED_CONFIG = "modifiedConfig";
- private static final String KEY_ORIGINAL_NAME = "originalName";
-
- public static void copyPublicKey(final Context context, final String publicKey) {
- if (publicKey == null || publicKey.isEmpty())
- return;
- final ClipboardManager clipboard =
- (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
- final String description =
- context.getResources().getString(R.string.public_key_description);
- clipboard.setPrimaryClip(ClipData.newPlainText(description, publicKey));
- final String message = context.getResources().getString(R.string.public_key_copied_message);
- Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
- }
-
- private Config localConfig;
- private String originalName;
-
- @Override
- protected void onCurrentConfigChanged(final Config config) {
- // Only discard modifications when the config *they are based on* changes.
- if (config == null || config.getName().equals(originalName) || localConfig == null)
- return;
- localConfig.copyFrom(config);
- originalName = config.getName();
- }
-
- @Override
- public void onCreate(final Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- // Restore more saved information.
- if (savedInstanceState != null) {
- localConfig = savedInstanceState.getParcelable(KEY_MODIFIED_CONFIG);
- originalName = savedInstanceState.getString(KEY_ORIGINAL_NAME);
- } else if (getArguments() != null) {
- final Bundle arguments = getArguments();
- localConfig = arguments.getParcelable(KEY_MODIFIED_CONFIG);
- originalName = arguments.getString(KEY_ORIGINAL_NAME);
- }
- if (localConfig == null) {
- localConfig = new Config();
- originalName = null;
- }
- onCurrentConfigChanged(getCurrentConfig());
- 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 void onDestroy() {
- super.onDestroy();
- // Reset changes to the config when the user cancels editing. See also the comment below.
- if (isRemoving())
- localConfig.copyFrom(getCurrentConfig());
- }
-
- @Override
- public boolean onOptionsItemSelected(final MenuItem item) {
- switch (item.getItemId()) {
- case R.id.menu_action_save:
- saveConfig();
- return true;
- default:
- return super.onOptionsItemSelected(item);
- }
- }
-
- @Override
- public void onSaveInstanceState(final Bundle outState) {
- super.onSaveInstanceState(outState);
- // When ConfigActivity unwinds the back stack, isRemoving() is true, so localConfig will be
- // reset. Since outState is not serialized yet, it resets the saved config too. Avoid this
- // by copying the local config. originalName is fine because it is replaced, not modified.
- outState.putParcelable(KEY_MODIFIED_CONFIG, localConfig.copy());
- outState.putString(KEY_ORIGINAL_NAME, originalName);
- }
-
- private void saveConfig() {
- final VpnService service = VpnService.getInstance();
- try {
- if (getCurrentConfig() != null)
- service.update(getCurrentConfig().getName(), localConfig);
- else
- service.add(localConfig);
- } catch (final IllegalArgumentException | IllegalStateException e) {
- Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_SHORT).show();
- return;
- }
- // Hide the keyboard; it rarely goes away on its own.
- final Activity activity = 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 finish itself or go back to the detail view.
- ((BaseConfigActivity) activity).setIsEditing(false);
- }
-}