aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/app/src/main/java/com/wireguard/android/ConfigListFragment.java
diff options
context:
space:
mode:
authorSamuel Holland <samuel@sholland.org>2018-01-01 02:06:37 -0600
committerSamuel Holland <samuel@sholland.org>2018-01-06 04:09:29 -0600
commit609194fae2332e6f2ccd7a4464bfa492ad661a6f (patch)
tree96a7cd9846a093dfcdacfef285b0a4d77000edf0 /app/src/main/java/com/wireguard/android/ConfigListFragment.java
parentRename package widgets -> widget (diff)
downloadwireguard-android-609194fae2332e6f2ccd7a4464bfa492ad661a6f.tar.xz
wireguard-android-609194fae2332e6f2ccd7a4464bfa492ad661a6f.zip
Serviceless rewrite, part 1
Signed-off-by: Samuel Holland <samuel@sholland.org>
Diffstat (limited to 'app/src/main/java/com/wireguard/android/ConfigListFragment.java')
-rw-r--r--app/src/main/java/com/wireguard/android/ConfigListFragment.java198
1 files changed, 0 insertions, 198 deletions
diff --git a/app/src/main/java/com/wireguard/android/ConfigListFragment.java b/app/src/main/java/com/wireguard/android/ConfigListFragment.java
deleted file mode 100644
index b7460134..00000000
--- a/app/src/main/java/com/wireguard/android/ConfigListFragment.java
+++ /dev/null
@@ -1,198 +0,0 @@
-package com.wireguard.android;
-
-import android.annotation.SuppressLint;
-import android.app.Activity;
-import android.content.Intent;
-import android.content.res.Resources;
-import android.os.Bundle;
-import android.view.ActionMode;
-import android.view.LayoutInflater;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.AbsListView;
-import android.widget.AdapterView;
-
-import com.wireguard.android.backends.VpnService;
-import com.wireguard.android.databinding.ObservableMapAdapter;
-import com.wireguard.android.databinding.ConfigListFragmentBinding;
-import com.wireguard.config.Config;
-
-import java.util.LinkedList;
-import java.util.List;
-
-/**
- * Fragment containing the list of known WireGuard configurations.
- */
-
-public class ConfigListFragment extends BaseConfigFragment {
- private static final int REQUEST_IMPORT = 1;
-
- private ConfigListFragmentBinding binding;
-
- @Override
- public void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
- if (requestCode == REQUEST_IMPORT) {
- if (resultCode == Activity.RESULT_OK)
- VpnService.getInstance().importFrom(data.getData());
- } else {
- super.onActivityResult(requestCode, resultCode, data);
- }
- }
-
- @Override
- public void onCreate(final Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- }
-
- @Override
- public View onCreateView(final LayoutInflater inflater, final ViewGroup parent,
- final Bundle savedInstanceState) {
- binding = ConfigListFragmentBinding.inflate(inflater, parent, false);
- binding.setConfigs(VpnService.getInstance().getConfigs());
- binding.addFromFile.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(final View view) {
- final Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
- intent.addCategory(Intent.CATEGORY_OPENABLE);
- intent.setType("*/*");
- startActivityForResult(intent, REQUEST_IMPORT);
- binding.addMenu.collapse();
- }
- });
- binding.addFromScratch.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(final View view) {
- startActivity(new Intent(getActivity(), AddActivity.class));
- binding.addMenu.collapse();
- }
- });
- binding.configList.setMultiChoiceModeListener(new ConfigListModeListener());
- binding.configList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
- @Override
- public void onItemClick(final AdapterView<?> parent, final View view,
- final int position, final long id) {
- final Config config = (Config) parent.getItemAtPosition(position);
- setCurrentConfig(config);
- }
- });
- binding.configList.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
- @Override
- public boolean onItemLongClick(final AdapterView<?> parent, final View view,
- final int position, final long id) {
- setConfigChecked(null);
- binding.configList.setChoiceMode(AbsListView.CHOICE_MODE_MULTIPLE_MODAL);
- binding.configList.setItemChecked(position, true);
- return true;
- }
- });
- binding.configList.setOnTouchListener(new View.OnTouchListener() {
- @Override
- @SuppressLint("ClickableViewAccessibility")
- public boolean onTouch(final View view, final MotionEvent event) {
- binding.addMenu.collapse();
- return false;
- }
- });
- binding.executePendingBindings();
- setConfigChecked(getCurrentConfig());
- return binding.getRoot();
- }
-
- @Override
- protected void onCurrentConfigChanged(final Config config) {
- final BaseConfigActivity activity = ((BaseConfigActivity) getActivity());
- if (activity != null)
- activity.setCurrentConfig(config);
- if (binding != null)
- setConfigChecked(config);
- }
-
- @Override
- public void onDestroyView() {
- super.onDestroyView();
- binding = null;
- }
-
- private void setConfigChecked(final Config config) {
- if (config != null) {
- @SuppressWarnings("unchecked") final ObservableMapAdapter<String, Config> adapter =
- (ObservableMapAdapter<String, Config>) binding.configList.getAdapter();
- final int position = adapter.getPosition(config.getName());
- if (position >= 0)
- binding.configList.setItemChecked(position, true);
- } else {
- final int position = binding.configList.getCheckedItemPosition();
- if (position >= 0)
- binding.configList.setItemChecked(position, false);
- }
- }
-
- public boolean tryCollapseMenu() {
- if (binding != null && binding.addMenu.isExpanded()) {
- binding.addMenu.collapse();
- return true;
- }
- return false;
- }
-
- private class ConfigListModeListener implements AbsListView.MultiChoiceModeListener {
- private final List<Config> configsToRemove = new LinkedList<>();
-
- @Override
- public boolean onActionItemClicked(final ActionMode mode, final MenuItem item) {
- switch (item.getItemId()) {
- case R.id.menu_action_delete:
- // Ensure an unmanaged config is never the current config.
- if (configsToRemove.contains(getCurrentConfig()))
- setCurrentConfig(null);
- for (final Config config : configsToRemove)
- VpnService.getInstance().remove(config.getName());
- configsToRemove.clear();
- mode.finish();
- return true;
- default:
- return false;
- }
- }
-
- @Override
- public void onItemCheckedStateChanged(final ActionMode mode, final int position,
- final long id, final boolean checked) {
- if (checked)
- configsToRemove.add((Config) binding.configList.getItemAtPosition(position));
- else
- configsToRemove.remove(binding.configList.getItemAtPosition(position));
- final int count = configsToRemove.size();
- final Resources resources = binding.getRoot().getContext().getResources();
- mode.setTitle(resources.getQuantityString(R.plurals.list_delete_title, count, count));
- }
-
- @Override
- public boolean onCreateActionMode(final ActionMode mode, final Menu menu) {
- mode.getMenuInflater().inflate(R.menu.config_list_delete, menu);
- return true;
- }
-
- @Override
- public void onDestroyActionMode(final ActionMode mode) {
- configsToRemove.clear();
- binding.configList.post(new Runnable() {
- @Override
- public void run() {
- binding.configList.setChoiceMode(AbsListView.CHOICE_MODE_SINGLE);
- // Restore the previous selection (before entering the action mode).
- setConfigChecked(getCurrentConfig());
- }
- });
- }
-
- @Override
- public boolean onPrepareActionMode(final ActionMode mode, final Menu menu) {
- configsToRemove.clear();
- return false;
- }
- }
-}