aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/org/pacien/tincapp/activities/StartActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/org/pacien/tincapp/activities/StartActivity.java')
-rw-r--r--app/src/main/java/org/pacien/tincapp/activities/StartActivity.java82
1 files changed, 82 insertions, 0 deletions
diff --git a/app/src/main/java/org/pacien/tincapp/activities/StartActivity.java b/app/src/main/java/org/pacien/tincapp/activities/StartActivity.java
new file mode 100644
index 0000000..e469fa0
--- /dev/null
+++ b/app/src/main/java/org/pacien/tincapp/activities/StartActivity.java
@@ -0,0 +1,82 @@
1package org.pacien.tincapp.activities;
2
3import android.annotation.SuppressLint;
4import android.content.Intent;
5import android.os.Bundle;
6import android.support.v7.app.AlertDialog;
7import android.view.View;
8import android.view.ViewGroup;
9import android.widget.EditText;
10import android.widget.FrameLayout;
11
12import org.pacien.tincapp.R;
13import org.pacien.tincapp.commands.PermissionFixer;
14import org.pacien.tincapp.context.AppPaths;
15import org.pacien.tincapp.service.TincVpnService;
16
17/**
18 * @author pacien
19 */
20public class StartActivity extends BaseActivity {
21
22 @Override
23 protected void onCreate(Bundle savedInstanceState) {
24 super.onCreate(savedInstanceState);
25 getLayoutInflater().inflate(R.layout.page_start, getContentView());
26 }
27
28 @Override
29 protected void onActivityResult(int request, int result, Intent data) {
30 notify(result == RESULT_OK ? R.string.message_vpn_permissions_granted : R.string.message_vpn_permissions_denied);
31 }
32
33 public void requestVpnPermission(View v) {
34 Intent askPermIntent = TincVpnService.prepare(this);
35
36 if (askPermIntent != null)
37 startActivityForResult(askPermIntent, 0);
38 else
39 onActivityResult(0, RESULT_OK, null);
40 }
41
42 public void startVpnDialog(View v) {
43 final EditText i = new EditText(this);
44 i.setLayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT));
45 i.setHint(R.string.field_net_name);
46
47 @SuppressLint("InflateParams")
48 ViewGroup vg = (ViewGroup) getLayoutInflater().inflate(R.layout.dialog_frame, null);
49 vg.addView(i);
50
51 new AlertDialog.Builder(this)
52 .setTitle(R.string.title_connect_to_network)
53 .setView(vg)
54 .setPositiveButton(R.string.action_connect, (dialog, which) -> startVpn(i.getText().toString()))
55 .setNegativeButton(R.string.action_close, (dialog, which) -> { /* nop */ })
56 .show();
57 }
58
59 public void confDirDialog(View v) {
60 String confDir = AppPaths.confDir(this).getPath();
61
62 new AlertDialog.Builder(this)
63 .setTitle(R.string.title_tinc_config_dir)
64 .setMessage(confDir)
65 .setNeutralButton(R.string.action_fix_perms, (dialog, which) -> fixPerms())
66 .setNegativeButton(R.string.action_copy,
67 (dialog, which) -> copyIntoClipboard(getResources().getString(R.string.title_tinc_config_dir), confDir))
68 .setPositiveButton(R.string.action_close, (dialog, which) -> { /* nop */ })
69 .show();
70 }
71
72 private void startVpn(String netName) {
73 startService(new Intent(this, TincVpnService.class)
74 .putExtra(TincVpnService.INTENT_EXTRA_NET_NAME, netName));
75 }
76
77 private void fixPerms() {
78 boolean ok = PermissionFixer.makePrivateDirsPublic(getApplicationContext());
79 notify(ok ? R.string.message_perms_fixed : R.string.message_perms_fix_failure);
80 }
81
82}