1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
package org.pacien.tincapp.activities
import android.annotation.SuppressLint
import android.app.Activity
import android.content.Intent
import android.net.VpnService
import android.os.Bundle
import android.support.v7.app.AlertDialog
import android.view.Menu
import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
import android.widget.EditText
import android.widget.FrameLayout
import kotlinx.android.synthetic.main.base.*
import org.pacien.tincapp.R
import org.pacien.tincapp.context.AppPaths
import org.pacien.tincapp.service.TincVpnService
/**
* @author pacien
*/
class StartActivity : BaseActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
layoutInflater.inflate(R.layout.page_start, main_content)
}
override fun onCreateOptionsMenu(m: Menu): Boolean {
menuInflater.inflate(R.menu.menu_start, m)
return super.onCreateOptionsMenu(m)
}
override fun onActivityResult(request: Int, result: Int, data: Intent?) {
notify(if (result == Activity.RESULT_OK) R.string.message_vpn_permissions_granted else R.string.message_vpn_permissions_denied)
}
fun requestVpnPermission(@Suppress("UNUSED_PARAMETER") v: View) {
val askPermIntent = VpnService.prepare(this)
if (askPermIntent != null)
startActivityForResult(askPermIntent, 0)
else
onActivityResult(0, Activity.RESULT_OK, null)
}
fun startVpnDialog(@Suppress("UNUSED_PARAMETER") v: View) {
val i = EditText(this)
i.layoutParams = FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT)
i.setHint(R.string.field_net_name)
@SuppressLint("InflateParams")
val vg = layoutInflater.inflate(R.layout.dialog_frame, main_content, false) as ViewGroup
vg.addView(i)
AlertDialog.Builder(this)
.setTitle(R.string.title_connect_to_network)
.setView(vg)
.setPositiveButton(R.string.action_connect) { _, _ -> startVpn(i.text.toString()) }
.setNegativeButton(R.string.action_close) { _, _ -> /* nop */ }
.show()
}
fun openConfigureActivity(@Suppress("UNUSED_PARAMETER") i: MenuItem) = startActivity(Intent(this, ConfigureActivity::class.java))
private fun startVpn(netName: String) {
startService(Intent(this, TincVpnService::class.java).putExtra(TincVpnService.INTENT_EXTRA_NET_CONF,
if (netName.startsWith("external/")) AppPaths.NetConf(AppPaths.Storage.EXTERNAL, netName.substringAfter("/"))
else AppPaths.NetConf(AppPaths.Storage.INTERNAL, netName)))
}
}
|