summaryrefslogtreecommitdiffhomepage
path: root/android/src
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-10-30 15:02:49 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-12-10 12:55:06 +0000
commit92a92998c16758e5e426d5d97b66d9b397fc107c (patch)
tree10bd60407fe556b5deee9bef2a7548f345173eab /android/src
parent13b9bc10eb909875220e1a8127c98dea80312b1d (diff)
downloadmullvadvpn-92a92998c16758e5e426d5d97b66d9b397fc107c.tar.xz
mullvadvpn-92a92998c16758e5e426d5d97b66d9b397fc107c.zip
Use a `RecyclerView` in `AdvancedFragment`
Diffstat (limited to 'android/src')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/AdvancedFragment.kt37
-rw-r--r--android/src/main/res/layout/advanced.xml36
-rw-r--r--android/src/main/res/layout/advanced_header.xml30
3 files changed, 62 insertions, 41 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/AdvancedFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/AdvancedFragment.kt
index 28ee558585..b7b374c4dc 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/AdvancedFragment.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/AdvancedFragment.kt
@@ -1,15 +1,21 @@
package net.mullvad.mullvadvpn.ui
import android.os.Bundle
+import android.support.v7.widget.LinearLayoutManager
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import net.mullvad.mullvadvpn.R
import net.mullvad.mullvadvpn.model.Settings
+import net.mullvad.mullvadvpn.ui.customdns.CustomDnsAdapter
+import net.mullvad.mullvadvpn.ui.widget.CustomRecyclerView
import net.mullvad.mullvadvpn.ui.widget.MtuCell
import net.mullvad.mullvadvpn.ui.widget.NavigateCell
+import net.mullvad.mullvadvpn.util.AdapterWithHeader
class AdvancedFragment : ServiceDependentFragment(OnNoService.GoBack) {
+ private val customDnsAdapter = CustomDnsAdapter()
+
private lateinit var wireguardMtuInput: MtuCell
private lateinit var titleController: CollapsibleTitleController
@@ -24,6 +30,28 @@ class AdvancedFragment : ServiceDependentFragment(OnNoService.GoBack) {
parentActivity.onBackPressed()
}
+ titleController = CollapsibleTitleController(view, R.id.contents)
+
+ view.findViewById<CustomRecyclerView>(R.id.contents).apply {
+ layoutManager = LinearLayoutManager(parentActivity)
+
+ adapter = AdapterWithHeader(customDnsAdapter, R.layout.advanced_header).apply {
+ onHeaderAvailable = { headerView ->
+ configureHeader(headerView)
+ titleController.expandedTitleView = headerView.findViewById(R.id.expanded_title)
+ }
+ }
+ }
+
+ return view
+ }
+
+ override fun onSafelyDestroyView() {
+ titleController.onDestroy()
+ settingsListener.unsubscribe(this)
+ }
+
+ private fun configureHeader(view: View) {
wireguardMtuInput = view.findViewById<MtuCell>(R.id.wireguard_mtu).apply {
onSubmit = { mtu ->
jobTracker.newBackgroundJob("updateMtu") {
@@ -43,15 +71,6 @@ class AdvancedFragment : ServiceDependentFragment(OnNoService.GoBack) {
settingsListener.subscribe(this) { settings ->
updateUi(settings)
}
-
- titleController = CollapsibleTitleController(view)
-
- return view
- }
-
- override fun onSafelyDestroyView() {
- titleController.onDestroy()
- settingsListener.unsubscribe(this)
}
private fun updateUi(settings: Settings) {
diff --git a/android/src/main/res/layout/advanced.xml b/android/src/main/res/layout/advanced.xml
index c96c1b3d03..70359352e2 100644
--- a/android/src/main/res/layout/advanced.xml
+++ b/android/src/main/res/layout/advanced.xml
@@ -27,37 +27,9 @@
android:text="@string/settings_advanced"
style="@style/SettingsCollapsedHeader" />
</FrameLayout>
- <net.mullvad.mullvadvpn.ui.widget.ListenableScrollView android:id="@+id/scroll_area"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
-
- <LinearLayout android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:paddingBottom="@dimen/screen_vertical_margin"
- android:orientation="vertical">
- <TextView android:id="@+id/expanded_title"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="2dp"
- android:layout_marginLeft="@dimen/side_margin"
- android:text="@string/settings_advanced"
- style="@style/SettingsExpandedHeader" />
- <net.mullvad.mullvadvpn.ui.widget.MtuCell android:id="@+id/wireguard_mtu"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="@dimen/vertical_space"
- mullvad:text="@string/wireguard_mtu" />
- <net.mullvad.mullvadvpn.ui.widget.NavigateCell android:id="@+id/wireguard_keys"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="@dimen/vertical_space"
- mullvad:text="@string/wireguard_key" />
- <net.mullvad.mullvadvpn.ui.widget.NavigateCell android:id="@+id/split_tunneling"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="1dp"
- mullvad:text="@string/split_tunneling" />
- </LinearLayout>
- </net.mullvad.mullvadvpn.ui.widget.ListenableScrollView>
+ <net.mullvad.mullvadvpn.ui.widget.CustomRecyclerView android:id="@+id/contents"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:scrollbars="vertical" />
</LinearLayout>
</FrameLayout>
diff --git a/android/src/main/res/layout/advanced_header.xml b/android/src/main/res/layout/advanced_header.xml
new file mode 100644
index 0000000000..5711e0df0a
--- /dev/null
+++ b/android/src/main/res/layout/advanced_header.xml
@@ -0,0 +1,30 @@
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:mullvad="http://schemas.android.com/apk/res-auto"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingBottom="@dimen/screen_vertical_margin"
+ android:orientation="vertical"
+ android:gravity="left">
+ <TextView android:id="@+id/expanded_title"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="2dp"
+ android:layout_marginLeft="@dimen/side_margin"
+ android:text="@string/settings_advanced"
+ style="@style/SettingsExpandedHeader" />
+ <net.mullvad.mullvadvpn.ui.widget.MtuCell android:id="@+id/wireguard_mtu"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="@dimen/vertical_space"
+ mullvad:text="@string/wireguard_mtu" />
+ <net.mullvad.mullvadvpn.ui.widget.NavigateCell android:id="@+id/wireguard_keys"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="@dimen/vertical_space"
+ mullvad:text="@string/wireguard_key" />
+ <net.mullvad.mullvadvpn.ui.widget.NavigateCell android:id="@+id/split_tunneling"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="1dp"
+ mullvad:text="@string/split_tunneling" />
+</LinearLayout>