diff options
author | Samuel Holland <samuel@sholland.org> | 2017-08-13 07:24:03 -0500 |
---|---|---|
committer | Samuel Holland <samuel@sholland.org> | 2017-08-13 07:24:03 -0500 |
commit | 5e55d196be092f4a4dcb212cf09d7a1bdab70e00 (patch) | |
tree | eb765a1b961fefdaa7ddc3cfae9cb83a09e0c031 /app/src/main/java/com/wireguard/android/ConfigEditFragment.java | |
parent | Profile: Add function to copy config from another profile (diff) | |
download | wireguard-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.java | 74 |
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); + } +} |