diff options
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.java | 82 |
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 @@ | |||
1 | package org.pacien.tincapp.activities; | ||
2 | |||
3 | import android.annotation.SuppressLint; | ||
4 | import android.content.Intent; | ||
5 | import android.os.Bundle; | ||
6 | import android.support.v7.app.AlertDialog; | ||
7 | import android.view.View; | ||
8 | import android.view.ViewGroup; | ||
9 | import android.widget.EditText; | ||
10 | import android.widget.FrameLayout; | ||
11 | |||
12 | import org.pacien.tincapp.R; | ||
13 | import org.pacien.tincapp.commands.PermissionFixer; | ||
14 | import org.pacien.tincapp.context.AppPaths; | ||
15 | import org.pacien.tincapp.service.TincVpnService; | ||
16 | |||
17 | /** | ||
18 | * @author pacien | ||
19 | */ | ||
20 | public 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 | } | ||