aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/app/src/main/java/com/wireguard/android/fragment/TunnelListFragment.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/com/wireguard/android/fragment/TunnelListFragment.java')
-rw-r--r--app/src/main/java/com/wireguard/android/fragment/TunnelListFragment.java35
1 files changed, 35 insertions, 0 deletions
diff --git a/app/src/main/java/com/wireguard/android/fragment/TunnelListFragment.java b/app/src/main/java/com/wireguard/android/fragment/TunnelListFragment.java
index d0019c91..23e449b6 100644
--- a/app/src/main/java/com/wireguard/android/fragment/TunnelListFragment.java
+++ b/app/src/main/java/com/wireguard/android/fragment/TunnelListFragment.java
@@ -18,6 +18,7 @@ import android.provider.OpenableColumns;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.design.widget.Snackbar;
+import android.support.v4.app.FragmentManager;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.view.ActionMode;
import android.util.Log;
@@ -27,6 +28,8 @@ import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
+import com.google.zxing.integration.android.IntentIntegrator;
+import com.google.zxing.integration.android.IntentResult;
import com.wireguard.android.Application;
import com.wireguard.android.R;
import com.wireguard.android.activity.TunnelCreatorActivity;
@@ -39,6 +42,7 @@ import com.wireguard.android.widget.fab.FloatingActionsMenuRecyclerViewScrollLis
import com.wireguard.config.Config;
import java.io.BufferedReader;
+import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
@@ -72,6 +76,22 @@ public class TunnelListFragment extends BaseFragment {
return false;
}
+ private void importTunnel(@NonNull final String configText) {
+ try {
+ // Ensure the config text is parseable before proceeding…
+ Config.from(configText);
+
+ // Config text is valid, now create the tunnel…
+ final FragmentManager fragmentManager = getFragmentManager();
+ if (fragmentManager != null) {
+ final ConfigNamingDialogFragment fragment = ConfigNamingDialogFragment.newInstance(configText);
+ fragment.show(fragmentManager, null);
+ }
+ } catch (final IllegalArgumentException|IOException exception) {
+ onTunnelImportFinished(Collections.emptyList(), Collections.singletonList(exception));
+ }
+ }
+
private void importTunnel(@Nullable final Uri uri) {
final Activity activity = getActivity();
if (activity == null || uri == null)
@@ -172,6 +192,12 @@ public class TunnelListFragment extends BaseFragment {
if (resultCode == Activity.RESULT_OK && data != null)
importTunnel(data.getData());
return;
+ case IntentIntegrator.REQUEST_CODE:
+ final IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
+ if (result != null && result.getContents() != null) {
+ importTunnel(result.getContents());
+ }
+ return;
default:
super.onActivityResult(requestCode, resultCode, data);
}
@@ -217,6 +243,15 @@ public class TunnelListFragment extends BaseFragment {
binding.createMenu.collapse();
}
+ public void onRequestScanQRCode(@SuppressWarnings("unused") final View view) {
+ final IntentIntegrator intentIntegrator = IntentIntegrator.forSupportFragment(this);
+ intentIntegrator.setOrientationLocked(false);
+ intentIntegrator.initiateScan(Collections.singletonList(IntentIntegrator.QR_CODE));
+
+ if (binding != null)
+ binding.createMenu.collapse();
+ }
+
@Override
public void onPause() {
if (binding != null) {