aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/org/pacien/tincapp/activities/StartActivity.kt
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/org/pacien/tincapp/activities/StartActivity.kt')
-rw-r--r--app/src/main/java/org/pacien/tincapp/activities/StartActivity.kt64
1 files changed, 48 insertions, 16 deletions
diff --git a/app/src/main/java/org/pacien/tincapp/activities/StartActivity.kt b/app/src/main/java/org/pacien/tincapp/activities/StartActivity.kt
index 19d01e6..cecd474 100644
--- a/app/src/main/java/org/pacien/tincapp/activities/StartActivity.kt
+++ b/app/src/main/java/org/pacien/tincapp/activities/StartActivity.kt
@@ -2,6 +2,7 @@ package org.pacien.tincapp.activities
2 2
3import android.content.Intent 3import android.content.Intent
4import android.os.Bundle 4import android.os.Bundle
5import android.support.v4.widget.SwipeRefreshLayout
5import android.view.Menu 6import android.view.Menu
6import android.view.MenuItem 7import android.view.MenuItem
7import android.view.View 8import android.view.View
@@ -13,16 +14,30 @@ import kotlinx.android.synthetic.main.page_start.*
13import org.pacien.tincapp.R 14import org.pacien.tincapp.R
14import org.pacien.tincapp.context.AppPaths 15import org.pacien.tincapp.context.AppPaths
15import org.pacien.tincapp.service.TincVpnService 16import org.pacien.tincapp.service.TincVpnService
17import org.pacien.tincapp.utils.FileObserver
18import org.pacien.tincapp.utils.setElements
16 19
17/** 20/**
18 * @author pacien 21 * @author pacien
19 */ 22 */
20class StartActivity : BaseActivity(), AdapterView.OnItemClickListener { 23class StartActivity : BaseActivity(), AdapterView.OnItemClickListener, SwipeRefreshLayout.OnRefreshListener {
24
25 private var networkListAdapter: ArrayAdapter<String>? = null
26 private var confChangeObserver: FileObserver? = null
21 27
22 override fun onCreate(savedInstanceState: Bundle?) { 28 override fun onCreate(savedInstanceState: Bundle?) {
23 super.onCreate(savedInstanceState) 29 super.onCreate(savedInstanceState)
30
31 networkListAdapter = ArrayAdapter<String>(this, R.layout.fragment_list_item)
32 confChangeObserver = FileObserver(AppPaths.confDir().absolutePath, FileObserver.CHANGE, { _, _ -> onRefresh() })
33
24 layoutInflater.inflate(R.layout.page_start, main_content) 34 layoutInflater.inflate(R.layout.page_start, main_content)
25 writeContent() 35 network_list_wrapper.setOnRefreshListener(this)
36 network_list.addHeaderView(layoutInflater.inflate(R.layout.fragment_network_list_header, network_list, false), null, false)
37 network_list.addFooterView(View(this), null, false)
38 network_list.emptyView = network_list_empty
39 network_list.adapter = networkListAdapter
40 network_list.onItemClickListener = this
26 } 41 }
27 42
28 override fun onCreateOptionsMenu(m: Menu): Boolean { 43 override fun onCreateOptionsMenu(m: Menu): Boolean {
@@ -30,27 +45,44 @@ class StartActivity : BaseActivity(), AdapterView.OnItemClickListener {
30 return super.onCreateOptionsMenu(m) 45 return super.onCreateOptionsMenu(m)
31 } 46 }
32 47
33 override fun onResume() { 48 override fun onDestroy() {
34 super.onResume() 49 confChangeObserver = null
50 networkListAdapter = null
51 super.onDestroy()
52 }
35 53
36 if (TincVpnService.isConnected()) startActivity(Intent(this, StatusActivity::class.java) 54 override fun onStart() {
37 .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK)) 55 super.onRestart()
56 onRefresh()
57 confChangeObserver?.startWatching()
38 } 58 }
39 59
40 override fun onItemClick(parent: AdapterView<*>?, view: View?, position: Int, id: Long) { 60 override fun onStop() {
41 PromptActivity.requestVpnPermission((view as TextView).text.toString()) 61 super.onStop()
62 confChangeObserver?.stopWatching()
42 } 63 }
43 64
44 fun openConfigureActivity(@Suppress("UNUSED_PARAMETER") i: MenuItem) { 65 override fun onResume() {
45 startActivity(Intent(this, ConfigureActivity::class.java)) 66 super.onResume()
67 if (TincVpnService.isConnected()) openStatusActivity()
46 } 68 }
47 69
48 private fun writeContent() { 70 override fun onRefresh() {
49 network_list.addHeaderView(layoutInflater.inflate(R.layout.fragment_network_list_header, network_list, false), null, false) 71 val networks = AppPaths.confDir().list().toList()
50 network_list.addFooterView(View(this), null, false) 72 runOnUiThread {
51 network_list.emptyView = network_list_empty 73 networkListAdapter?.setElements(networks)
52 network_list.adapter = ArrayAdapter<String>(this, R.layout.fragment_list_item, AppPaths.confDir().list()) 74 network_list_wrapper.isRefreshing = false
53 network_list.onItemClickListener = this 75 }
54 } 76 }
55 77
78 override fun onItemClick(parent: AdapterView<*>?, view: View?, position: Int, id: Long) =
79 PromptActivity.requestVpnPermission((view as TextView).text.toString())
80
81 fun openConfigureActivity(@Suppress("UNUSED_PARAMETER") i: MenuItem) =
82 startActivity(Intent(this, ConfigureActivity::class.java))
83
84 fun openStatusActivity() =
85 startActivity(Intent(this, StatusActivity::class.java)
86 .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK))
87
56} 88}