diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-07-01 14:10:44 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-07-15 12:52:17 +0000 |
| commit | afc0127d0bdc3032c7a4c85c026e3aa107403cb0 (patch) | |
| tree | cf0bab1a608f772142fa275997e62cd0d101c24b /android/src | |
| parent | 577d62a574f054213c6e59882b9357f13783f642 (diff) | |
| download | mullvadvpn-afc0127d0bdc3032c7a4c85c026e3aa107403cb0.tar.xz mullvadvpn-afc0127d0bdc3032c7a4c85c026e3aa107403cb0.zip | |
Create initial Split Tunnelling screen
Diffstat (limited to 'android/src')
6 files changed, 174 insertions, 0 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 4f51012759..ba9ca142d8 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/AdvancedFragment.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/AdvancedFragment.kt @@ -47,6 +47,10 @@ class AdvancedFragment : ServiceDependentFragment(OnNoService.GoBack) { } } + view.findViewById<View>(R.id.split_tunnelling).setOnClickListener { + openSubFragment(SplitTunnellingFragment()) + } + settingsListener.subscribe(this) { settings -> updateUi(settings) } diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/SplitTunnellingFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/SplitTunnellingFragment.kt new file mode 100644 index 0000000000..ebffbf6e6f --- /dev/null +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/SplitTunnellingFragment.kt @@ -0,0 +1,43 @@ +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.applist.AppListAdapter +import net.mullvad.mullvadvpn.ui.widget.CustomRecyclerView +import net.mullvad.mullvadvpn.util.AdapterWithHeader + +class SplitTunnellingFragment : ServiceDependentFragment(OnNoService.GoToLaunchScreen) { + private val appListAdapter = AppListAdapter() + + private lateinit var titleController: CollapsibleTitleController + + override fun onSafelyCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + val view = inflater.inflate(R.layout.split_tunnelling, container, false) + + titleController = CollapsibleTitleController(view, R.id.app_list) + + view.findViewById<CustomRecyclerView>(R.id.app_list).apply { + layoutManager = LinearLayoutManager(parentActivity) + + adapter = AdapterWithHeader(appListAdapter, R.layout.split_tunnelling_header).apply { + onHeaderAvailable = { headerView -> + titleController.expandedTitleView = headerView.findViewById(R.id.expanded_title) + } + } + } + + return view + } + + override fun onSafelyDestroyView() { + titleController.onDestroy() + } +} diff --git a/android/src/main/res/layout/advanced.xml b/android/src/main/res/layout/advanced.xml index 990784ac80..3d24a40d03 100644 --- a/android/src/main/res/layout/advanced.xml +++ b/android/src/main/res/layout/advanced.xml @@ -125,6 +125,29 @@ android:alpha="0.6" android:src="@drawable/icon_chevron" /> </LinearLayout> + <LinearLayout android:id="@+id/split_tunnelling" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="24dp" + android:paddingHorizontal="16dp" + android:background="@drawable/cell_button_background" + android:clickable="true" + android:gravity="center"> + <TextView android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="1" + android:paddingHorizontal="8dp" + android:paddingVertical="17dp" + android:textColor="@color/white" + android:textSize="20sp" + android:textStyle="bold" + android:text="@string/split_tunnelling" /> + <ImageView android:layout_width="14dp" + android:layout_height="24dp" + android:layout_weight="0" + android:alpha="0.6" + android:src="@drawable/icon_chevron" /> + </LinearLayout> </LinearLayout> </net.mullvad.mullvadvpn.ui.widget.ListenableScrollView> </LinearLayout> diff --git a/android/src/main/res/layout/split_tunnelling.xml b/android/src/main/res/layout/split_tunnelling.xml new file mode 100644 index 0000000000..e6284884c5 --- /dev/null +++ b/android/src/main/res/layout/split_tunnelling.xml @@ -0,0 +1,55 @@ +<FrameLayout 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="match_parent" + android:background="@color/darkBlue" + android:elevation="3dp" + android:gravity="left"> + <TextView android:id="@+id/title" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textColor="@color/white" + android:textSize="16sp" + android:textStyle="bold" + android:text="@string/split_tunnelling" /> + <LinearLayout android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical"> + <FrameLayout android:layout_width="match_parent" + android:layout_height="wrap_content"> + <LinearLayout android:id="@+id/back" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="0" + android:padding="12dp" + android:orientation="horizontal" + android:gravity="center_vertical | left" + android:clickable="true" + android:background="?android:attr/selectableItemBackground"> + <ImageView android:layout_width="24dp" + android:layout_height="24dp" + android:layout_marginRight="8dp" + android:src="@drawable/icon_back" /> + <TextView android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textColor="@color/white60" + android:textSize="13sp" + android:textStyle="bold" + android:text="@string/settings_advanced" /> + </LinearLayout> + <TextView android:id="@+id/collapsed_title" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginHorizontal="4dp" + android:layout_gravity="center" + android:textColor="@color/white" + android:textSize="16sp" + android:textStyle="bold" + android:text="@string/split_tunnelling" /> + </FrameLayout> + <net.mullvad.mullvadvpn.ui.widget.CustomRecyclerView android:id="@+id/app_list" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:scrollbars="vertical" /> + </LinearLayout> +</FrameLayout> diff --git a/android/src/main/res/layout/split_tunnelling_header.xml b/android/src/main/res/layout/split_tunnelling_header.xml new file mode 100644 index 0000000000..0fd8abc45b --- /dev/null +++ b/android/src/main/res/layout/split_tunnelling_header.xml @@ -0,0 +1,45 @@ +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:gravity="left"> + <TextView android:id="@+id/expanded_title" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="0" + android:layout_marginLeft="24dp" + android:layout_marginTop="4dp" + android:layout_marginBottom="12dp" + android:text="@string/split_tunnelling" + android:textColor="@color/white" + android:textSize="32sp" + android:textStyle="bold" /> + <TextView android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingTop="8dp" + android:paddingHorizontal="24dp" + android:text="@string/split_tunnelling_description" + android:textColor="@color/white60" + android:textSize="13sp" /> + <LinearLayout android:id="@+id/enabled" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="24dp" + android:paddingHorizontal="16dp" + android:background="@drawable/cell_button_background" + android:gravity="center"> + <TextView android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="1" + android:paddingHorizontal="8dp" + android:paddingVertical="17dp" + android:textColor="@color/white" + android:textSize="20sp" + android:textStyle="bold" + android:text="@string/enabled" /> + <net.mullvad.mullvadvpn.ui.CellSwitch android:id="@+id/enabled_toggle" + android:layout_width="52dp" + android:layout_height="32dp" + android:layout_weight="0" /> + </LinearLayout> +</LinearLayout> diff --git a/android/src/main/res/values/strings.xml b/android/src/main/res/values/strings.xml index 5160671d22..623d3f1fa4 100644 --- a/android/src/main/res/values/strings.xml +++ b/android/src/main/res/values/strings.xml @@ -159,6 +159,10 @@ <string name="wireguard_key_verification_failure">Key verification failed</string> <string name="wireguard_public_key">WireGuard public key</string> <string name="copied_wireguard_public_key">Copied WireGuard public key to clipboard</string> + <string name="split_tunnelling">Split tunnelling</string> + <string name="split_tunnelling_description">Split tunnelling makes it possible to select which + applications should not be routed through the VPN tunnel.</string> + <string name="enabled">Enabled</string> <string name="account_url">https://mullvad.net/en/account</string> <string name="wg_key_url">https://mullvad.net/account/ports</string> <string name="create_account_url">https://mullvad.net/en/account/create</string> |
