aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpacien2019-03-24 22:14:49 +0100
committerpacien2019-03-24 22:14:49 +0100
commitac694d006dbda068370a6e81105763d857e42aa1 (patch)
tree9d9a121e87ab462c5f8ee859b2c7b52acebe4d42
parente104556bd46822254afc85c67f01f8f3474cc009 (diff)
downloadtincapp-ac694d006dbda068370a6e81105763d857e42aa1.tar.gz
submit key unlock form on virtual keyboard DONE event
github ref: closes #81
-rw-r--r--app/src/main/java/org/pacien/tincapp/activities/start/ConnectionStarter.kt15
-rw-r--r--app/src/main/java/org/pacien/tincapp/extensions/View.kt35
-rw-r--r--app/src/main/res/layout/dialog_decrypt_keys.xml9
3 files changed, 52 insertions, 7 deletions
diff --git a/app/src/main/java/org/pacien/tincapp/activities/start/ConnectionStarter.kt b/app/src/main/java/org/pacien/tincapp/activities/start/ConnectionStarter.kt
index d1ccd3f..c0c6e02 100644
--- a/app/src/main/java/org/pacien/tincapp/activities/start/ConnectionStarter.kt
+++ b/app/src/main/java/org/pacien/tincapp/activities/start/ConnectionStarter.kt
@@ -1,6 +1,6 @@
1/* 1/*
2 * Tinc App, an Android binding and user interface for the tinc mesh VPN daemon 2 * Tinc App, an Android binding and user interface for the tinc mesh VPN daemon
3 * Copyright (C) 2017-2018 Pacien TRAN-GIRARD 3 * Copyright (C) 2017-2019 Pacien TRAN-GIRARD
4 * 4 *
5 * This program is free software: you can redistribute it and/or modify 5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by 6 * it under the terms of the GNU General Public License as published by
@@ -20,11 +20,13 @@ package org.pacien.tincapp.activities.start
20 20
21import android.net.VpnService 21import android.net.VpnService
22import android.support.v7.app.AlertDialog 22import android.support.v7.app.AlertDialog
23import android.view.inputmethod.EditorInfo
23import kotlinx.android.synthetic.main.base_activity.* 24import kotlinx.android.synthetic.main.base_activity.*
24import kotlinx.android.synthetic.main.dialog_decrypt_keys.view.* 25import kotlinx.android.synthetic.main.dialog_decrypt_keys.view.*
25import org.pacien.tincapp.R 26import org.pacien.tincapp.R
26import org.pacien.tincapp.service.TincVpnService 27import org.pacien.tincapp.service.TincVpnService
27import org.pacien.tincapp.utils.TincKeyring 28import org.pacien.tincapp.utils.TincKeyring
29import org.pacien.tincapp.extensions.View.on
28 30
29/** 31/**
30 * @author pacien 32 * @author pacien
@@ -54,12 +56,19 @@ class ConnectionStarter(private val parentActivity: StartActivity) {
54 private fun askForPassphrase() { 56 private fun askForPassphrase() {
55 val dialogView = parentActivity.layoutInflater.inflate(R.layout.dialog_decrypt_keys, parentActivity.base_activity_frame, false) 57 val dialogView = parentActivity.layoutInflater.inflate(R.layout.dialog_decrypt_keys, parentActivity.base_activity_frame, false)
56 58
57 AlertDialog.Builder(parentActivity) 59 val dialog = AlertDialog.Builder(parentActivity)
58 .setTitle(R.string.decrypt_key_modal_title) 60 .setTitle(R.string.decrypt_key_modal_title)
59 .setView(dialogView) 61 .setView(dialogView)
60 .setPositiveButton(R.string.decrypt_key_modal_action_unlock) { _, _ -> tryStart(passphrase = dialogView.passphrase.text.toString()) } 62 .setPositiveButton(R.string.decrypt_key_modal_action_unlock) { _, _ -> tryStart(passphrase = dialogView.passphrase.text.toString()) }
61 .setNegativeButton(R.string.decrypt_key_modal_action_cancel) { _, _ -> Unit } 63 .setNegativeButton(R.string.decrypt_key_modal_action_cancel) { _, _ -> Unit }
62 .show() 64 .create()
65
66 dialogView.passphrase.on(EditorInfo.IME_ACTION_DONE) {
67 dialog.dismiss()
68 tryStart(passphrase = dialogView.passphrase.text.toString())
69 }
70
71 dialog.show()
63 } 72 }
64 73
65 private fun startVpn(netName: String, passphrase: String? = null) { 74 private fun startVpn(netName: String, passphrase: String? = null) {
diff --git a/app/src/main/java/org/pacien/tincapp/extensions/View.kt b/app/src/main/java/org/pacien/tincapp/extensions/View.kt
new file mode 100644
index 0000000..19e33dc
--- /dev/null
+++ b/app/src/main/java/org/pacien/tincapp/extensions/View.kt
@@ -0,0 +1,35 @@
1/*
2 * Tinc App, an Android binding and user interface for the tinc mesh VPN daemon
3 * Copyright (C) 2017-2019 Pacien TRAN-GIRARD
4 *
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <https://www.gnu.org/licenses/>.
17 */
18
19package org.pacien.tincapp.extensions
20
21import android.widget.EditText
22
23/**
24 * @author pacien
25 */
26object View {
27
28 fun EditText.on(actionId: Int, func: () -> Unit) {
29 setOnEditorActionListener { _, receivedActionId, _ ->
30 if (actionId == receivedActionId) func()
31 true
32 }
33 }
34
35}
diff --git a/app/src/main/res/layout/dialog_decrypt_keys.xml b/app/src/main/res/layout/dialog_decrypt_keys.xml
index 8f49d87..a9b1e87 100644
--- a/app/src/main/res/layout/dialog_decrypt_keys.xml
+++ b/app/src/main/res/layout/dialog_decrypt_keys.xml
@@ -2,7 +2,7 @@
2 2
3<!-- 3<!--
4 * Tinc App, an Android binding and user interface for the tinc mesh VPN daemon 4 * Tinc App, an Android binding and user interface for the tinc mesh VPN daemon
5 * Copyright (C) 2017-2018 Pacien TRAN-GIRARD 5 * Copyright (C) 2017-2019 Pacien TRAN-GIRARD
6 * 6 *
7 * This program is free software: you can redistribute it and/or modify 7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by 8 * it under the terms of the GNU General Public License as published by
@@ -22,16 +22,17 @@
22 android:layout_width="match_parent" 22 android:layout_width="match_parent"
23 android:layout_height="wrap_content" 23 android:layout_height="wrap_content"
24 android:orientation="vertical" 24 android:orientation="vertical"
25 android:paddingBottom="@dimen/dialog_vertical_margin"
26 android:paddingLeft="@dimen/dialog_horizontal_margin" 25 android:paddingLeft="@dimen/dialog_horizontal_margin"
26 android:paddingTop="@dimen/dialog_vertical_margin"
27 android:paddingRight="@dimen/dialog_horizontal_margin" 27 android:paddingRight="@dimen/dialog_horizontal_margin"
28 android:paddingTop="@dimen/dialog_vertical_margin"> 28 android:paddingBottom="@dimen/dialog_vertical_margin">
29 29
30 <EditText 30 <EditText
31 android:id="@+id/passphrase" 31 android:id="@+id/passphrase"
32 android:layout_width="match_parent" 32 android:layout_width="match_parent"
33 android:layout_height="match_parent" 33 android:layout_height="match_parent"
34 android:hint="@string/decrypt_key_modal_field_passphrase" 34 android:hint="@string/decrypt_key_modal_field_passphrase"
35 android:inputType="textPassword"/> 35 android:inputType="textPassword"
36 android:singleLine="true"/>
36 37
37</LinearLayout> 38</LinearLayout>