summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
authorAleksandr Granin <aleksandr@mullvad.net>2021-01-08 15:59:02 +0100
committerAleksandr Granin <aleksandr@mullvad.net>2021-01-19 14:10:29 +0100
commit43109a76357ba9d85daa1c8c67d61c8b5fb87b3b (patch)
treef88801308525399205b07e427d569e1b2152caa5 /android
parente9d8f0de61b4598e45177ff96055419536d8b3a2 (diff)
downloadmullvadvpn-43109a76357ba9d85daa1c8c67d61c8b5fb87b3b.tar.xz
mullvadvpn-43109a76357ba9d85daa1c8c67d61c8b5fb87b3b.zip
Migrate to androidX
Diffstat (limited to 'android')
-rw-r--r--android/.idea/codeStyles/Project.xml117
-rw-r--r--android/.idea/codeStyles/codeStyleConfig.xml5
-rw-r--r--android/.idea/modules/android.iml69
-rw-r--r--android/build.gradle8
-rw-r--r--android/gradle.properties2
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/applist/AppListAdapter.kt2
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/applist/AppListItemHolder.kt2
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayItemHolder.kt2
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayListAdapter.kt2
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/ForegroundNotificationManager.kt6
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt4
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/NotificationChannel.kt2
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/TunnelStateNotification.kt2
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/AccountFragment.kt6
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/AdvancedFragment.kt6
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConfirmNoEmailDialogFragment.kt2
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConfirmPublicDnsDialogFragment.kt2
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ListItemDividerDecoration.kt6
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/LoginFragment.kt2
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt12
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ProblemReportFragment.kt6
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/RedeemVoucherDialogFragment.kt2
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/SelectLocationFragment.kt2
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ServiceAwareFragment.kt2
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/SplitTunnelingFragment.kt2
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/UnderNotificationBannerBehavior.kt4
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ViewLogsFragment.kt2
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/customdns/CustomDnsAdapter.kt6
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/customdns/CustomDnsItemHolder.kt2
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/AccountHistoryAdapter.kt2
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/AccountHistoryHolder.kt2
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/AccountLogin.kt5
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/CustomItemAnimator.kt6
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/CustomRecyclerView.kt3
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/NavigateCell.kt4
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/RedeemVoucherButton.kt2
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/util/AdapterWithHeader.kt6
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/util/HeaderOrHolder.kt2
-rw-r--r--android/src/main/res/layout/account_login.xml8
-rw-r--r--android/src/main/res/layout/connect.xml81
40 files changed, 265 insertions, 143 deletions
diff --git a/android/.idea/codeStyles/Project.xml b/android/.idea/codeStyles/Project.xml
new file mode 100644
index 0000000000..4bec4ea8ae
--- /dev/null
+++ b/android/.idea/codeStyles/Project.xml
@@ -0,0 +1,117 @@
+<component name="ProjectCodeStyleConfiguration">
+ <code_scheme name="Project" version="173">
+ <codeStyleSettings language="XML">
+ <option name="FORCE_REARRANGE_MODE" value="1" />
+ <indentOptions>
+ <option name="CONTINUATION_INDENT_SIZE" value="4" />
+ </indentOptions>
+ <arrangement>
+ <rules>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>xmlns:android</NAME>
+ <XML_ATTRIBUTE />
+ <XML_NAMESPACE>^$</XML_NAMESPACE>
+ </AND>
+ </match>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>xmlns:.*</NAME>
+ <XML_ATTRIBUTE />
+ <XML_NAMESPACE>^$</XML_NAMESPACE>
+ </AND>
+ </match>
+ <order>BY_NAME</order>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*:id</NAME>
+ <XML_ATTRIBUTE />
+ <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+ </AND>
+ </match>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*:name</NAME>
+ <XML_ATTRIBUTE />
+ <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+ </AND>
+ </match>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>name</NAME>
+ <XML_ATTRIBUTE />
+ <XML_NAMESPACE>^$</XML_NAMESPACE>
+ </AND>
+ </match>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>style</NAME>
+ <XML_ATTRIBUTE />
+ <XML_NAMESPACE>^$</XML_NAMESPACE>
+ </AND>
+ </match>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*</NAME>
+ <XML_ATTRIBUTE />
+ <XML_NAMESPACE>^$</XML_NAMESPACE>
+ </AND>
+ </match>
+ <order>BY_NAME</order>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*</NAME>
+ <XML_ATTRIBUTE />
+ <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+ </AND>
+ </match>
+ <order>ANDROID_ATTRIBUTE_ORDER</order>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*</NAME>
+ <XML_ATTRIBUTE />
+ <XML_NAMESPACE>.*</XML_NAMESPACE>
+ </AND>
+ </match>
+ <order>BY_NAME</order>
+ </rule>
+ </section>
+ </rules>
+ </arrangement>
+ </codeStyleSettings>
+ </code_scheme>
+</component> \ No newline at end of file
diff --git a/android/.idea/codeStyles/codeStyleConfig.xml b/android/.idea/codeStyles/codeStyleConfig.xml
new file mode 100644
index 0000000000..a55e7a179b
--- /dev/null
+++ b/android/.idea/codeStyles/codeStyleConfig.xml
@@ -0,0 +1,5 @@
+<component name="ProjectCodeStyleConfiguration">
+ <state>
+ <option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
+ </state>
+</component> \ No newline at end of file
diff --git a/android/.idea/modules/android.iml b/android/.idea/modules/android.iml
index 10df39b1c9..5d032106a0 100644
--- a/android/.idea/modules/android.iml
+++ b/android/.idea/modules/android.iml
@@ -31,7 +31,7 @@
</compilerSettings>
<compilerArguments>
<option name="destination" value="$MODULE_DIR$/../../build/tmp/kotlin-classes/debug" />
- <option name="classpath" value="$MODULE_DIR$/../../build/intermediates/compile_and_runtime_not_namespaced_r_class_jar/debug/R.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/b024e35e5edf4ce49211e68595bc964b/design-28.0.0-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/8611f4143304b181415e3434d4415389/appcompat-v7-28.0.0-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/914cafc8ffa772c2d7c217cc17f2db2f/recyclerview-v7-28.0.0-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/ae1420ad1a5d058fb726fc2d154a036f/support-fragment-28.0.0-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/1388969ec8576c54f06e4a9d479ff493/animated-vector-drawable-28.0.0-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/29f739a92853319e7e58eef5824b7544/support-core-ui-28.0.0-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/da7c47c0940dc271a29c9b89e4a3e10b/support-core-utils-28.0.0-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/fb927b40fc7b3060cc9a3b13c97c52b4/support-vector-drawable-28.0.0-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/4e21189a41f8463d2e4f9131e286311a/transition-28.0.0-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/1b921d632bc61e62b39e0d3a82a0ae32/loader-28.0.0-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/e744e663dae6d1d88081a5df1d97c2a3/viewpager-28.0.0-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/7a669cee88ebb788b7eaa09ce761a351/coordinatorlayout-28.0.0-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/0ebdf95527cbeece5a21d84cc6c4b086/drawerlayout-28.0.0-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/58e36aae25cfbf83592bdf49ac67d470/slidingpanelayout-28.0.0-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/9c0c9aa4f8715aa106c7e20c35949a78/customview-28.0.0-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/48b441fd6eaa6d278b4ef956807efad8/swiperefreshlayout-28.0.0-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/7fd4642405af9c08d44b0fa1b88181e6/asynclayoutinflater-28.0.0-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/a7b56579ef86da4647fb07b1ddba527d/support-compat-28.0.0-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/8a291c69bfa063cd0f5fb8e4a450853b/versionedparcelable-28.0.0-api.jar:/Users/aleksandrgranin/.gradle/caches/modules-2/files-2.1/com.android.support/collections/28.0.0/c1bcdade4d3cc2836130424a3f3e4182c666a745/collections-28.0.0.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/b7f26c9c6b77357d9431655d921ad54a/cursoradapter-28.0.0-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/fe24e68342c87d45e2605d78ea26daf9/cardview-v7-28.0.0-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/f6dbe0c03b38ad9719bec5b4d93905b7/runtime-1.1.1-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/41adb507c4e896d29f186b02eed44456/documentfile-28.0.0-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/56f0fec0d5bcecd5c31ef17f1edea427/localbroadcastmanager-28.0.0-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/f683a78d8b0b97d0e67e8d49ab6941b2/print-28.0.0-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/483a2630bb511b5b5038165a1004b11e/viewmodel-1.1.1-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/aa131f3755044618717eaed9d3fa0561/interpolator-28.0.0-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/d29b2044d541e239defc632af9f547ce/livedata-1.1.1-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/b53fb39f97d550d28c636dd0fba36153/livedata-core-1.1.1-api.jar:/Users/aleksandrgranin/.gradle/caches/modules-2/files-2.1/android.arch.lifecycle/common/1.1.1/207a6efae6a3555e326de41f76bdadd9a239cbce/common-1.1.1.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/dea96a141d780798373096d3a0866feb/runtime-1.1.1-api.jar:/Users/aleksandrgranin/.gradle/caches/modules-2/files-2.1/android.arch.core/common/1.1.1/e55b70d1f5620db124b3e85a7f4bdc7bd48d9f95/common-1.1.1.jar:/Users/aleksandrgranin/.gradle/caches/modules-2/files-2.1/com.android.support/support-annotations/28.0.0/ed73f5337a002d1fd24339d5fb08c2c9d9ca60d8/support-annotations-28.0.0.jar:/Users/aleksandrgranin/.gradle/caches/modules-2/files-2.1/commons-validator/commons-validator/1.7/76069c915de3787f3ddd8726a56f47a95bfcbb0e/commons-validator-1.7.jar:/Users/aleksandrgranin/.gradle/caches/modules-2/files-2.1/commons-beanutils/commons-beanutils/1.9.4/d52b9abcd97f38c81342bb7e7ae1eee9b73cba51/commons-beanutils-1.9.4.jar:/Users/aleksandrgranin/.gradle/caches/modules-2/files-2.1/commons-logging/commons-logging/1.2/4bfc12adfe4842bf07b657f0369c4cb522955686/commons-logging-1.2.jar:/Users/aleksandrgranin/.gradle/caches/modules-2/files-2.1/commons-collections/commons-collections/3.2.2/8ad72fe39fa8c91eaaf12aadb21e0c3661fe26d5/commons-collections-3.2.2.jar:/Users/aleksandrgranin/.gradle/caches/modules-2/files-2.1/commons-digester/commons-digester/2.1/73a8001e7a54a255eef0f03521ec1805dc738ca0/commons-digester-2.1.jar:/Users/aleksandrgranin/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlinx/kotlinx-coroutines-android/1.3.9/df17db5e329363c4e9cc7bf5b661ce3723a3e460/kotlinx-coroutines-android-1.3.9.jar:/Users/aleksandrgranin/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlinx/kotlinx-coroutines-core-jvm/1.3.9/4be434f5e86c1998a273e7f19a7286440894f0b0/kotlinx-coroutines-core-jvm-1.3.9.jar:/Users/aleksandrgranin/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.4.10/ea29e063d2bbe695be13e9d044dcfb0c7add398e/kotlin-stdlib-1.4.10.jar:/Users/aleksandrgranin/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.4.10/6229be3465805c99db1142ad75e6c6ddeac0b04c/kotlin-stdlib-common-1.4.10.jar:/Users/aleksandrgranin/.gradle/caches/modules-2/files-2.1/org.jetbrains/annotations/13.0/919f0dfe192fb4e063e7dacadee7f8bb9a2672a9/annotations-13.0.jar:/Users/aleksandrgranin/.gradle/caches/modules-2/files-2.1/joda-time/joda-time/2.10.2/a079fc39ccc3de02acdeb7117443e5d9bd431687/joda-time-2.10.2.jar:/Users/aleksandrgranin/Library/Android/sdk/platforms/android-29/android.jar:/Users/aleksandrgranin/Library/Android/sdk/build-tools/29.0.3/core-lambda-stubs.jar" />
+ <option name="classpath" value="$MODULE_DIR$/../../build/intermediates/compile_and_runtime_not_namespaced_r_class_jar/debug/R.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/2c6db3db3fce28dc9741e81f634883bc/material-1.2.1-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/c984a79bba9d355ff47b0092abe2bae2/appcompat-1.2.0-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/ed1553fa3f354b6f2fb744008effe300/jetified-viewpager2-1.0.0-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/3e6c32804e74519738439fa69a6da541/recyclerview-1.1.0-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/0b805fd125b14aaa952d6bd515bcba89/fragment-1.1.0-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/d4c859afceda3b2aeff55f3ce9259cd6/jetified-appcompat-resources-1.2.0-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/871216028175f46f2f63b9f7221a0418/drawerlayout-1.0.0-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/4daa0a572f7703fa25e2cef8bd6d93a2/coordinatorlayout-1.1.0-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/114f3636978f03934c44f1e01c155835/viewpager-1.0.0-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/27d106a84ac8db1a229759b11adf4e0a/customview-1.0.0-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/781021d445036b91d3502e2ec5e7fc78/transition-1.2.0-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/43e686f054162f512249c2d11a7705fe/vectordrawable-animated-1.1.0-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/62a68cffee166159737266a398268e32/vectordrawable-1.1.0-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/211261877f036f70ab7043b14cc94d67/loader-1.0.0-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/97b1b6f22d2508bf19e80bdebd5d00e6/jetified-activity-1.0.0-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/dc25dafbd92e8a0ce10d85d8b3bb09c7/core-1.3.0-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/f70b7893a2942ef9f931806bd6648c0a/cursoradapter-1.0.0-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/6996984890ede67a37409f7a29e95f25/versionedparcelable-1.1.0-api.jar:/Users/aleksandrgranin/.gradle/caches/modules-2/files-2.1/androidx.collection/collection/1.1.0/1f27220b47669781457de0d600849a5de0e89909/collection-1.1.0.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/a35ea332117e719bee10684040436649/cardview-1.0.0-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/5f6f32f25c8f33f462a180f26eda5374/lifecycle-runtime-2.1.0-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/4efc73e28a881e1b9d528d1639822af3/lifecycle-viewmodel-2.1.0-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/aa8925ce74054233b5296b3ce401398b/jetified-savedstate-1.0.0-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/4ae38170a63c8ef068d11787fa92905a/lifecycle-livedata-2.0.0-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/b8abe10c75d9ae18fcb55cbacd57da46/lifecycle-livedata-core-2.0.0-api.jar:/Users/aleksandrgranin/.gradle/caches/modules-2/files-2.1/androidx.lifecycle/lifecycle-common/2.1.0/c67e7807d9cd6c329b9d0218b2ec4e505dd340b7/lifecycle-common-2.1.0.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/bb7ce1440f3ca7503c52c9d15edee74f/core-runtime-2.0.0-api.jar:/Users/aleksandrgranin/.gradle/caches/modules-2/files-2.1/androidx.arch.core/core-common/2.1.0/b3152fc64428c9354344bd89848ecddc09b6f07e/core-common-2.1.0.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/ece404db03183a2badbeb504453455ad/interpolator-1.0.0-api.jar:/Users/aleksandrgranin/.gradle/caches/modules-2/files-2.1/androidx.annotation/annotation/1.1.0/e3a6fb2f40e3a3842e6b7472628ba4ce416ea4c8/annotation-1.1.0.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/a1a54bd90632beb2820625cd70f67b89/jetified-annotation-experimental-1.0.0-api.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/ab1b6f6ae2c7e93a1473d206c5589009/jetified-commons-validator-1.7.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/661b19480f85bdca98f2cc1865434b8b/jetified-commons-beanutils-1.9.4.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/2fd3dbfc4c3338686a34dec4df48014e/jetified-commons-logging-1.2.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/62edf39f561884f9387100dc7d626df7/jetified-commons-collections-3.2.2.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/0fbad796a56b19f64b105972e5145ee5/jetified-commons-digester-2.1.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/b1c7f98e242b84b284cbaf428ff0f4de/jetified-joda-time-2.10.2.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/aa302c8f52f51c6be109438ef5e096ea/jetified-kotlinx-coroutines-android-1.3.9.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/b8d9d1d9d83f1e9efd36ffe011043dc0/jetified-kotlinx-coroutines-core-jvm-1.3.9.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/1e2e5d334ccb46d235082a09c43857ec/jetified-kotlin-stdlib-1.4.10.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/5de51ab0c33e3315f87021699c8a6839/jetified-kotlin-stdlib-common-1.4.10.jar:/Users/aleksandrgranin/.gradle/caches/transforms-2/files-2.1/fd06d0e199a6ee0606db09c58b1e846c/jetified-annotations-13.0.jar:/Users/aleksandrgranin/Library/Android/sdk/platforms/android-29/android.jar:/Users/aleksandrgranin/Library/Android/sdk/build-tools/29.0.3/core-lambda-stubs.jar" />
<option name="noStdlib" value="true" />
<option name="noReflect" value="true" />
<option name="moduleName" value="android_debug" />
@@ -65,50 +65,47 @@
</content>
<orderEntry type="jdk" jdkName="Android API 29 Platform" jdkType="Android SDK" />
<orderEntry type="sourceFolder" forTests="false" />
- <orderEntry type="library" name="Gradle: com.android.support:collections:28.0.0" level="project" />
- <orderEntry type="library" name="Gradle: android.arch.lifecycle:common:1.1.1" level="project" />
- <orderEntry type="library" name="Gradle: android.arch.core:common:1.1.1" level="project" />
- <orderEntry type="library" name="Gradle: com.android.support:support-annotations:28.0.0" level="project" />
+ <orderEntry type="library" name="Gradle: androidx.collection:collection:1.1.0" level="project" />
+ <orderEntry type="library" name="Gradle: androidx.lifecycle:lifecycle-common:2.1.0" level="project" />
+ <orderEntry type="library" name="Gradle: androidx.arch.core:core-common:2.1.0" level="project" />
+ <orderEntry type="library" name="Gradle: androidx.annotation:annotation:1.1.0" level="project" />
<orderEntry type="library" name="Gradle: commons-validator:commons-validator:1.7" level="project" />
<orderEntry type="library" name="Gradle: commons-beanutils:commons-beanutils:1.9.4" level="project" />
<orderEntry type="library" name="Gradle: commons-logging:commons-logging:1.2" level="project" />
<orderEntry type="library" name="Gradle: commons-collections:commons-collections:3.2.2" level="project" />
<orderEntry type="library" name="Gradle: commons-digester:commons-digester:2.1" level="project" />
+ <orderEntry type="library" name="Gradle: joda-time:joda-time:2.10.2" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.3.9" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-stdlib:1.4.10" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:1.4.10" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains:annotations:13.0" level="project" />
- <orderEntry type="library" name="Gradle: joda-time:joda-time:2.10.2" level="project" />
- <orderEntry type="library" name="Gradle: com.android.support:design:28.0.0@aar" level="project" />
- <orderEntry type="library" name="Gradle: com.android.support:appcompat-v7:28.0.0@aar" level="project" />
- <orderEntry type="library" name="Gradle: com.android.support:recyclerview-v7:28.0.0@aar" level="project" />
- <orderEntry type="library" name="Gradle: com.android.support:support-fragment:28.0.0@aar" level="project" />
- <orderEntry type="library" name="Gradle: com.android.support:animated-vector-drawable:28.0.0@aar" level="project" />
- <orderEntry type="library" name="Gradle: com.android.support:support-core-ui:28.0.0@aar" level="project" />
- <orderEntry type="library" name="Gradle: com.android.support:support-core-utils:28.0.0@aar" level="project" />
- <orderEntry type="library" name="Gradle: com.android.support:support-vector-drawable:28.0.0@aar" level="project" />
- <orderEntry type="library" name="Gradle: com.android.support:transition:28.0.0@aar" level="project" />
- <orderEntry type="library" name="Gradle: com.android.support:loader:28.0.0@aar" level="project" />
- <orderEntry type="library" name="Gradle: com.android.support:viewpager:28.0.0@aar" level="project" />
- <orderEntry type="library" name="Gradle: com.android.support:coordinatorlayout:28.0.0@aar" level="project" />
- <orderEntry type="library" name="Gradle: com.android.support:drawerlayout:28.0.0@aar" level="project" />
- <orderEntry type="library" name="Gradle: com.android.support:slidingpanelayout:28.0.0@aar" level="project" />
- <orderEntry type="library" name="Gradle: com.android.support:customview:28.0.0@aar" level="project" />
- <orderEntry type="library" name="Gradle: com.android.support:swiperefreshlayout:28.0.0@aar" level="project" />
- <orderEntry type="library" name="Gradle: com.android.support:asynclayoutinflater:28.0.0@aar" level="project" />
- <orderEntry type="library" name="Gradle: com.android.support:support-compat:28.0.0@aar" level="project" />
- <orderEntry type="library" name="Gradle: com.android.support:versionedparcelable:28.0.0@aar" level="project" />
- <orderEntry type="library" name="Gradle: com.android.support:cursoradapter:28.0.0@aar" level="project" />
- <orderEntry type="library" name="Gradle: com.android.support:cardview-v7:28.0.0@aar" level="project" />
- <orderEntry type="library" name="Gradle: android.arch.lifecycle:runtime:1.1.1@aar" level="project" />
- <orderEntry type="library" name="Gradle: com.android.support:documentfile:28.0.0@aar" level="project" />
- <orderEntry type="library" name="Gradle: com.android.support:localbroadcastmanager:28.0.0@aar" level="project" />
- <orderEntry type="library" name="Gradle: com.android.support:print:28.0.0@aar" level="project" />
- <orderEntry type="library" name="Gradle: android.arch.lifecycle:viewmodel:1.1.1@aar" level="project" />
- <orderEntry type="library" name="Gradle: com.android.support:interpolator:28.0.0@aar" level="project" />
- <orderEntry type="library" name="Gradle: android.arch.lifecycle:livedata:1.1.1@aar" level="project" />
- <orderEntry type="library" name="Gradle: android.arch.lifecycle:livedata-core:1.1.1@aar" level="project" />
- <orderEntry type="library" name="Gradle: android.arch.core:runtime:1.1.1@aar" level="project" />
+ <orderEntry type="library" name="Gradle: com.google.android.material:material:1.2.1@aar" level="project" />
+ <orderEntry type="library" name="Gradle: androidx.appcompat:appcompat:1.2.0@aar" level="project" />
+ <orderEntry type="library" name="Gradle: androidx.viewpager2:viewpager2:1.0.0@aar" level="project" />
+ <orderEntry type="library" name="Gradle: androidx.recyclerview:recyclerview:1.1.0@aar" level="project" />
+ <orderEntry type="library" name="Gradle: androidx.fragment:fragment:1.1.0@aar" level="project" />
+ <orderEntry type="library" name="Gradle: androidx.appcompat:appcompat-resources:1.2.0@aar" level="project" />
+ <orderEntry type="library" name="Gradle: androidx.drawerlayout:drawerlayout:1.0.0@aar" level="project" />
+ <orderEntry type="library" name="Gradle: androidx.coordinatorlayout:coordinatorlayout:1.1.0@aar" level="project" />
+ <orderEntry type="library" name="Gradle: androidx.viewpager:viewpager:1.0.0@aar" level="project" />
+ <orderEntry type="library" name="Gradle: androidx.customview:customview:1.0.0@aar" level="project" />
+ <orderEntry type="library" name="Gradle: androidx.transition:transition:1.2.0@aar" level="project" />
+ <orderEntry type="library" name="Gradle: androidx.vectordrawable:vectordrawable-animated:1.1.0@aar" level="project" />
+ <orderEntry type="library" name="Gradle: androidx.vectordrawable:vectordrawable:1.1.0@aar" level="project" />
+ <orderEntry type="library" name="Gradle: androidx.loader:loader:1.0.0@aar" level="project" />
+ <orderEntry type="library" name="Gradle: androidx.activity:activity:1.0.0@aar" level="project" />
+ <orderEntry type="library" name="Gradle: androidx.core:core:1.3.0@aar" level="project" />
+ <orderEntry type="library" name="Gradle: androidx.cursoradapter:cursoradapter:1.0.0@aar" level="project" />
+ <orderEntry type="library" name="Gradle: androidx.versionedparcelable:versionedparcelable:1.1.0@aar" level="project" />
+ <orderEntry type="library" name="Gradle: androidx.cardview:cardview:1.0.0@aar" level="project" />
+ <orderEntry type="library" name="Gradle: androidx.lifecycle:lifecycle-runtime:2.1.0@aar" level="project" />
+ <orderEntry type="library" name="Gradle: androidx.lifecycle:lifecycle-viewmodel:2.1.0@aar" level="project" />
+ <orderEntry type="library" name="Gradle: androidx.savedstate:savedstate:1.0.0@aar" level="project" />
+ <orderEntry type="library" name="Gradle: androidx.lifecycle:lifecycle-livedata:2.0.0@aar" level="project" />
+ <orderEntry type="library" name="Gradle: androidx.lifecycle:lifecycle-livedata-core:2.0.0@aar" level="project" />
+ <orderEntry type="library" name="Gradle: androidx.arch.core:core-runtime:2.0.0@aar" level="project" />
+ <orderEntry type="library" name="Gradle: androidx.interpolator:interpolator:1.0.0@aar" level="project" />
+ <orderEntry type="library" name="Gradle: androidx.annotation:annotation-experimental:1.0.0@aar" level="project" />
</component>
</module> \ No newline at end of file
diff --git a/android/build.gradle b/android/build.gradle
index 92334f2991..b507ea910c 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -98,13 +98,13 @@ repositories {
}
dependencies {
- implementation 'com.android.support:appcompat-v7:28.0.0'
- implementation 'com.android.support:design:28.0.0'
- implementation 'com.android.support:recyclerview-v7:28.0.0'
+ implementation 'androidx.appcompat:appcompat:1.2.0'
+ implementation 'androidx.recyclerview:recyclerview:1.1.0'
+ implementation 'com.google.android.material:material:1.2.1'
implementation 'commons-validator:commons-validator:1.7'
+ implementation 'joda-time:joda-time:2.10.2'
implementation 'org.jetbrains.kotlin:kotlin-stdlib:1.4.10'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9'
- implementation 'joda-time:joda-time:2.10.2'
}
buildscript {
diff --git a/android/gradle.properties b/android/gradle.properties
index e35976012c..794290ebd9 100644
--- a/android/gradle.properties
+++ b/android/gradle.properties
@@ -11,4 +11,6 @@
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
#Mon Jan 04 14:44:17 CET 2021
+android.enableJetifier=true
+android.useAndroidX=true
org.gradle.jvmargs=-Xmx2048M -Dkotlin.daemon.jvm.options\="-Xmx2048M"
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/applist/AppListAdapter.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/applist/AppListAdapter.kt
index 91e1d0f951..1401ffa26b 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/applist/AppListAdapter.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/applist/AppListAdapter.kt
@@ -4,9 +4,9 @@ import android.Manifest
import android.content.Context
import android.content.pm.ApplicationInfo
import android.content.pm.PackageManager
-import android.support.v7.widget.RecyclerView.Adapter
import android.view.LayoutInflater
import android.view.ViewGroup
+import androidx.recyclerview.widget.RecyclerView.Adapter
import kotlin.properties.Delegates.observable
import net.mullvad.mullvadvpn.R
import net.mullvad.mullvadvpn.service.SplitTunneling
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/applist/AppListItemHolder.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/applist/AppListItemHolder.kt
index ad9fcc3318..2a9a6249dd 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/applist/AppListItemHolder.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/applist/AppListItemHolder.kt
@@ -2,10 +2,10 @@ package net.mullvad.mullvadvpn.applist
import android.content.pm.PackageManager
import android.graphics.drawable.Drawable
-import android.support.v7.widget.RecyclerView.ViewHolder
import android.view.View
import android.widget.ImageView
import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView.ViewHolder
import kotlin.properties.Delegates.observable
import net.mullvad.mullvadvpn.R
import net.mullvad.mullvadvpn.service.SplitTunneling
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayItemHolder.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayItemHolder.kt
index a215930194..a16313f797 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayItemHolder.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayItemHolder.kt
@@ -1,11 +1,11 @@
package net.mullvad.mullvadvpn.relaylist
-import android.support.v7.widget.RecyclerView.ViewHolder
import android.view.View
import android.view.ViewGroup.MarginLayoutParams
import android.widget.ImageButton
import android.widget.ImageView
import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView.ViewHolder
import net.mullvad.mullvadvpn.R
class RelayItemHolder(
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayListAdapter.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayListAdapter.kt
index a4f521be3d..0937592399 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayListAdapter.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayListAdapter.kt
@@ -1,9 +1,9 @@
package net.mullvad.mullvadvpn.relaylist
import android.content.res.Resources
-import android.support.v7.widget.RecyclerView.Adapter
import android.view.LayoutInflater
import android.view.ViewGroup
+import androidx.recyclerview.widget.RecyclerView.Adapter
import java.lang.ref.WeakReference
import java.util.LinkedList
import net.mullvad.mullvadvpn.R
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/ForegroundNotificationManager.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/ForegroundNotificationManager.kt
index a5d05628b2..9ab632f017 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/ForegroundNotificationManager.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/ForegroundNotificationManager.kt
@@ -47,8 +47,10 @@ class ForegroundNotificationManager(
loggedIn = accountNumber != null
}
- private var tunnelStateEvents
- by autoSubscribable<TunnelState>(this, TunnelState.Disconnected()) { newState ->
+ private var tunnelStateEvents by autoSubscribable<TunnelState>(
+ this,
+ TunnelState.Disconnected()
+ ) { newState ->
updater.sendBlocking(UpdaterMessage.NewTunnelState(newState))
}
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt
index 1b31605adc..4f1f291026 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt
@@ -63,8 +63,8 @@ class MullvadVpnService : TalpidVpnService() {
}
}
- private var accountExpiryNotification
- by observable<AccountExpiryNotification?>(null) { _, oldNotification, _ ->
+ private var accountExpiryNotification by observable<AccountExpiryNotification?>(null) {
+ _, oldNotification, _ ->
oldNotification?.onDestroy()
}
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/NotificationChannel.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/NotificationChannel.kt
index 0f4646335c..16d44487c3 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/NotificationChannel.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/NotificationChannel.kt
@@ -6,7 +6,7 @@ import android.app.NotificationManager
import android.app.PendingIntent
import android.content.Context
import android.os.Build
-import android.support.v4.app.NotificationCompat
+import androidx.core.app.NotificationCompat
import net.mullvad.mullvadvpn.R
class NotificationChannel(
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/TunnelStateNotification.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/TunnelStateNotification.kt
index de384379cf..8bb836f0f4 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/TunnelStateNotification.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/TunnelStateNotification.kt
@@ -6,7 +6,7 @@ import android.app.PendingIntent
import android.content.Context
import android.content.Intent
import android.os.Build
-import android.support.v4.app.NotificationCompat
+import androidx.core.app.NotificationCompat
import kotlin.properties.Delegates.observable
import net.mullvad.mullvadvpn.R
import net.mullvad.mullvadvpn.model.TunnelState
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/AccountFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/AccountFragment.kt
index d5644ae72f..86538f71dc 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/AccountFragment.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/AccountFragment.kt
@@ -1,10 +1,10 @@
package net.mullvad.mullvadvpn.ui
import android.os.Bundle
-import android.support.v4.app.FragmentManager
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import androidx.fragment.app.FragmentManager
import java.text.DateFormat
import net.mullvad.mullvadvpn.R
import net.mullvad.mullvadvpn.model.TunnelState
@@ -139,9 +139,9 @@ class AccountFragment : ServiceDependentFragment(OnNoService.GoBack) {
}
private fun showRedeemVoucherDialog() {
- val transaction = fragmentManager?.beginTransaction()
+ val transaction = requireFragmentManager().beginTransaction()
- transaction?.addToBackStack(null)
+ transaction.addToBackStack(null)
RedeemVoucherDialogFragment().show(transaction, null)
}
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 f02f5cca91..b7b9445cbe 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/AdvancedFragment.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/AdvancedFragment.kt
@@ -1,10 +1,10 @@
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 androidx.recyclerview.widget.LinearLayoutManager
import kotlinx.coroutines.CompletableDeferred
import net.mullvad.mullvadvpn.R
import net.mullvad.mullvadvpn.model.Settings
@@ -124,10 +124,10 @@ class AdvancedFragment : ServiceDependentFragment(OnNoService.GoBack) {
}
private fun showConfirmPublicDnsServerDialog(confirmation: CompletableDeferred<Boolean>) {
- val transaction = fragmentManager?.beginTransaction()
+ val transaction = requireFragmentManager().beginTransaction()
detachBackButtonHandler()
- transaction?.addToBackStack(null)
+ transaction.addToBackStack(null)
ConfirmPublicDnsDialogFragment()
.apply { confirmPublicDns = confirmation }
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConfirmNoEmailDialogFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConfirmNoEmailDialogFragment.kt
index 1789bd0c64..8271e8141d 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConfirmNoEmailDialogFragment.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConfirmNoEmailDialogFragment.kt
@@ -5,12 +5,12 @@ import android.content.Context
import android.content.DialogInterface
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
-import android.support.v4.app.DialogFragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.view.ViewGroup.LayoutParams
import android.widget.Button
+import androidx.fragment.app.DialogFragment
import kotlinx.coroutines.CompletableDeferred
import net.mullvad.mullvadvpn.R
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConfirmPublicDnsDialogFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConfirmPublicDnsDialogFragment.kt
index 3888e756e0..c75662dcf0 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConfirmPublicDnsDialogFragment.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConfirmPublicDnsDialogFragment.kt
@@ -4,12 +4,12 @@ import android.app.Dialog
import android.content.DialogInterface
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
-import android.support.v4.app.DialogFragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.view.ViewGroup.LayoutParams
import android.widget.Button
+import androidx.fragment.app.DialogFragment
import kotlinx.coroutines.CompletableDeferred
import net.mullvad.mullvadvpn.R
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ListItemDividerDecoration.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ListItemDividerDecoration.kt
index 55084a0ea2..07753a1265 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ListItemDividerDecoration.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ListItemDividerDecoration.kt
@@ -2,10 +2,10 @@ package net.mullvad.mullvadvpn.ui
import android.content.Context
import android.graphics.Rect
-import android.support.v7.widget.RecyclerView
-import android.support.v7.widget.RecyclerView.ItemDecoration
-import android.support.v7.widget.RecyclerView.State
import android.view.View
+import androidx.recyclerview.widget.RecyclerView
+import androidx.recyclerview.widget.RecyclerView.ItemDecoration
+import androidx.recyclerview.widget.RecyclerView.State
import kotlin.properties.Delegates.observable
class ListItemDividerDecoration(context: Context) : ItemDecoration() {
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/LoginFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/LoginFragment.kt
index fa5df39a0e..528524ac23 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/LoginFragment.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/LoginFragment.kt
@@ -2,12 +2,12 @@ package net.mullvad.mullvadvpn.ui
import android.graphics.Rect
import android.os.Bundle
-import android.support.v4.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ScrollView
import android.widget.TextView
+import androidx.fragment.app.Fragment
import kotlinx.coroutines.CompletableDeferred
import kotlinx.coroutines.delay
import net.mullvad.mullvadvpn.R
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt
index 613927fe49..5929490065 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt
@@ -9,10 +9,10 @@ import android.content.res.Configuration
import android.os.Build
import android.os.Bundle
import android.os.IBinder
-import android.support.v4.app.Fragment
-import android.support.v4.app.FragmentActivity
-import android.support.v4.app.FragmentManager
import android.view.WindowManager
+import androidx.fragment.app.Fragment
+import androidx.fragment.app.FragmentActivity
+import androidx.fragment.app.FragmentManager
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
@@ -170,7 +170,7 @@ class MainActivity : FragmentActivity() {
}
fun openSettings() {
- supportFragmentManager?.beginTransaction()?.apply {
+ supportFragmentManager.beginTransaction().apply {
setCustomAnimations(
R.anim.fragment_enter_from_bottom,
R.anim.do_nothing,
@@ -184,7 +184,7 @@ class MainActivity : FragmentActivity() {
}
fun returnToLaunchScreen() {
- supportFragmentManager?.apply {
+ supportFragmentManager.apply {
popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE)
beginTransaction().apply {
@@ -206,7 +206,7 @@ class MainActivity : FragmentActivity() {
}
private fun addInitialFragment() {
- supportFragmentManager?.beginTransaction()?.apply {
+ supportFragmentManager.beginTransaction().apply {
add(R.id.main_fragment, LaunchFragment())
commit()
}
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ProblemReportFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ProblemReportFragment.kt
index 491f0d53fc..ce99256e19 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ProblemReportFragment.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ProblemReportFragment.kt
@@ -3,7 +3,6 @@ package net.mullvad.mullvadvpn.ui
import android.content.Context
import android.graphics.Typeface
import android.os.Bundle
-import android.support.v4.app.Fragment
import android.text.Editable
import android.text.Spannable
import android.text.SpannableStringBuilder
@@ -18,6 +17,7 @@ import android.widget.EditText
import android.widget.ScrollView
import android.widget.TextView
import android.widget.ViewSwitcher
+import androidx.fragment.app.Fragment
import kotlin.properties.Delegates.observable
import kotlinx.coroutines.CompletableDeferred
import net.mullvad.mullvadvpn.R
@@ -197,9 +197,9 @@ class ProblemReportFragment : Fragment() {
}
private fun showConfirmNoEmailDialog() {
- val transaction = fragmentManager?.beginTransaction()
+ val transaction = requireFragmentManager().beginTransaction()
- transaction?.addToBackStack(null)
+ transaction.addToBackStack(null)
ConfirmNoEmailDialogFragment().show(transaction, null)
}
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/RedeemVoucherDialogFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/RedeemVoucherDialogFragment.kt
index 1a300e1fec..5822da9a91 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/RedeemVoucherDialogFragment.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/RedeemVoucherDialogFragment.kt
@@ -4,7 +4,6 @@ import android.app.Dialog
import android.content.Context
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
-import android.support.v4.app.DialogFragment
import android.text.Editable
import android.text.TextWatcher
import android.view.LayoutInflater
@@ -13,6 +12,7 @@ import android.view.ViewGroup
import android.view.ViewGroup.LayoutParams
import android.widget.EditText
import android.widget.TextView
+import androidx.fragment.app.DialogFragment
import net.mullvad.mullvadvpn.R
import net.mullvad.mullvadvpn.model.VoucherSubmissionResult
import net.mullvad.mullvadvpn.service.AccountCache
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/SelectLocationFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/SelectLocationFragment.kt
index e35377c690..ddc89d973b 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/SelectLocationFragment.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/SelectLocationFragment.kt
@@ -2,7 +2,6 @@ package net.mullvad.mullvadvpn.ui
import android.content.Context
import android.os.Bundle
-import android.support.v7.widget.LinearLayoutManager
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
@@ -10,6 +9,7 @@ import android.view.animation.Animation
import android.view.animation.Animation.AnimationListener
import android.view.animation.AnimationUtils
import android.widget.ImageButton
+import androidx.recyclerview.widget.LinearLayoutManager
import kotlinx.coroutines.CompletableDeferred
import net.mullvad.mullvadvpn.R
import net.mullvad.mullvadvpn.model.Constraint
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ServiceAwareFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ServiceAwareFragment.kt
index 4bbff22a59..aa70bfd4ca 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ServiceAwareFragment.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ServiceAwareFragment.kt
@@ -1,7 +1,7 @@
package net.mullvad.mullvadvpn.ui
import android.content.Context
-import android.support.v4.app.Fragment
+import androidx.fragment.app.Fragment
import net.mullvad.mullvadvpn.util.JobTracker
abstract class ServiceAwareFragment : Fragment() {
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/SplitTunnelingFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/SplitTunnelingFragment.kt
index 6294a2028a..a7b74ddeb0 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/SplitTunnelingFragment.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/SplitTunnelingFragment.kt
@@ -4,10 +4,10 @@ import android.animation.Animator
import android.animation.Animator.AnimatorListener
import android.animation.ObjectAnimator
import android.os.Bundle
-import android.support.v7.widget.LinearLayoutManager
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import androidx.recyclerview.widget.LinearLayoutManager
import net.mullvad.mullvadvpn.R
import net.mullvad.mullvadvpn.applist.AppListAdapter
import net.mullvad.mullvadvpn.ui.widget.CellSwitch
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/UnderNotificationBannerBehavior.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/UnderNotificationBannerBehavior.kt
index e53a8fe2fe..2b28f21ff1 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/UnderNotificationBannerBehavior.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/UnderNotificationBannerBehavior.kt
@@ -1,11 +1,11 @@
package net.mullvad.mullvadvpn.ui
import android.content.Context
-import android.support.design.widget.CoordinatorLayout
-import android.support.design.widget.CoordinatorLayout.Behavior
import android.util.AttributeSet
import android.view.View
import android.widget.ScrollView
+import androidx.coordinatorlayout.widget.CoordinatorLayout
+import androidx.coordinatorlayout.widget.CoordinatorLayout.Behavior
import net.mullvad.mullvadvpn.R
class UnderNotificationBannerBehavior(
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ViewLogsFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ViewLogsFragment.kt
index 30a81111b9..43a31ccfad 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ViewLogsFragment.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ViewLogsFragment.kt
@@ -2,11 +2,11 @@ package net.mullvad.mullvadvpn.ui
import android.content.Context
import android.os.Bundle
-import android.support.v4.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.EditText
+import androidx.fragment.app.Fragment
import net.mullvad.mullvadvpn.R
import net.mullvad.mullvadvpn.dataproxy.MullvadProblemReport
import net.mullvad.mullvadvpn.util.JobTracker
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/customdns/CustomDnsAdapter.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/customdns/CustomDnsAdapter.kt
index 44af15c1f7..709fc2d1b6 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/customdns/CustomDnsAdapter.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/customdns/CustomDnsAdapter.kt
@@ -1,8 +1,8 @@
package net.mullvad.mullvadvpn.ui.customdns
-import android.support.v7.widget.RecyclerView.Adapter
import android.view.LayoutInflater
import android.view.ViewGroup
+import androidx.recyclerview.widget.RecyclerView.Adapter
import java.net.InetAddress
import kotlin.properties.Delegates.observable
import kotlinx.coroutines.CompletableDeferred
@@ -27,8 +27,8 @@ class CustomDnsAdapter(val customDns: CustomDns) : Adapter<CustomDnsItemHolder>(
private var editingPosition: Int? = null
- private var activeCustomDnsServers
- by observable<List<InetAddress>>(emptyList()) { _, _, servers ->
+ private var activeCustomDnsServers by observable<List<InetAddress>>(emptyList()) {
+ _, _, servers ->
if (servers != cachedCustomDnsServers) {
cachedCustomDnsServers = servers.toMutableList()
notifyDataSetChanged()
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/customdns/CustomDnsItemHolder.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/customdns/CustomDnsItemHolder.kt
index 3276737e5d..cfaf9399cc 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/customdns/CustomDnsItemHolder.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/customdns/CustomDnsItemHolder.kt
@@ -1,6 +1,6 @@
package net.mullvad.mullvadvpn.ui.customdns
-import android.support.v7.widget.RecyclerView.ViewHolder
import android.view.View
+import androidx.recyclerview.widget.RecyclerView.ViewHolder
abstract class CustomDnsItemHolder(view: View) : ViewHolder(view)
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/AccountHistoryAdapter.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/AccountHistoryAdapter.kt
index 737e4a3859..555d8e75b0 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/AccountHistoryAdapter.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/AccountHistoryAdapter.kt
@@ -1,8 +1,8 @@
package net.mullvad.mullvadvpn.ui.widget
-import android.support.v7.widget.RecyclerView.Adapter
import android.view.LayoutInflater
import android.view.ViewGroup
+import androidx.recyclerview.widget.RecyclerView.Adapter
import kotlin.properties.Delegates.observable
import net.mullvad.mullvadvpn.R
import net.mullvad.mullvadvpn.util.SegmentedTextFormatter
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/AccountHistoryHolder.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/AccountHistoryHolder.kt
index e0e911467b..4a87f4f601 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/AccountHistoryHolder.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/AccountHistoryHolder.kt
@@ -1,8 +1,8 @@
package net.mullvad.mullvadvpn.ui.widget
-import android.support.v7.widget.RecyclerView.ViewHolder
import android.view.View
import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView.ViewHolder
import kotlin.properties.Delegates.observable
import net.mullvad.mullvadvpn.R
import net.mullvad.mullvadvpn.util.SegmentedTextFormatter
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/AccountLogin.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/AccountLogin.kt
index 58051411ff..491c7086e2 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/AccountLogin.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/AccountLogin.kt
@@ -3,15 +3,14 @@ package net.mullvad.mullvadvpn.ui.widget
import android.animation.ValueAnimator
import android.app.Activity
import android.content.Context
-import android.support.v7.widget.LinearLayoutManager
-import android.support.v7.widget.RecyclerView
import android.util.AttributeSet
import android.view.LayoutInflater
import android.view.View
import android.view.View.OnLayoutChangeListener
-import android.view.ViewGroup.MarginLayoutParams
import android.view.inputmethod.InputMethodManager
import android.widget.RelativeLayout
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
import kotlin.properties.Delegates.observable
import net.mullvad.mullvadvpn.R
import net.mullvad.mullvadvpn.ui.ListItemDividerDecoration
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/CustomItemAnimator.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/CustomItemAnimator.kt
index 06244067b8..ef8caf7e7c 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/CustomItemAnimator.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/CustomItemAnimator.kt
@@ -1,8 +1,8 @@
package net.mullvad.mullvadvpn.ui.widget
-import android.support.v7.widget.DefaultItemAnimator
-import android.support.v7.widget.RecyclerView.LayoutManager
-import android.support.v7.widget.RecyclerView.ViewHolder
+import androidx.recyclerview.widget.DefaultItemAnimator
+import androidx.recyclerview.widget.RecyclerView.LayoutManager
+import androidx.recyclerview.widget.RecyclerView.ViewHolder
import kotlin.math.round
class CustomItemAnimator : DefaultItemAnimator() {
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/CustomRecyclerView.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/CustomRecyclerView.kt
index 3e0c4d1d70..4684d50871 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/CustomRecyclerView.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/CustomRecyclerView.kt
@@ -1,9 +1,8 @@
package net.mullvad.mullvadvpn.ui.widget
import android.content.Context
-import android.support.v7.widget.RecyclerView
-import android.support.v7.widget.RecyclerView.LayoutManager
import android.util.AttributeSet
+import androidx.recyclerview.widget.RecyclerView
import net.mullvad.mullvadvpn.util.ListenableScrollableView
class CustomRecyclerView : RecyclerView, ListenableScrollableView {
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/NavigateCell.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/NavigateCell.kt
index 9ff9c3588d..1080e4e3fb 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/NavigateCell.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/NavigateCell.kt
@@ -1,10 +1,10 @@
package net.mullvad.mullvadvpn.ui.widget
import android.content.Context
-import android.support.v4.app.Fragment
-import android.support.v4.app.FragmentActivity
import android.util.AttributeSet
import android.widget.ImageView
+import androidx.fragment.app.Fragment
+import androidx.fragment.app.FragmentActivity
import kotlin.reflect.KClass
import net.mullvad.mullvadvpn.R
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/RedeemVoucherButton.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/RedeemVoucherButton.kt
index 308eff37df..f1e27e7b1b 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/RedeemVoucherButton.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/RedeemVoucherButton.kt
@@ -1,8 +1,8 @@
package net.mullvad.mullvadvpn.ui.widget
import android.content.Context
-import android.support.v4.app.FragmentManager
import android.util.AttributeSet
+import androidx.fragment.app.FragmentManager
import net.mullvad.mullvadvpn.ui.RedeemVoucherDialogFragment
import net.mullvad.mullvadvpn.util.JobTracker
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/util/AdapterWithHeader.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/util/AdapterWithHeader.kt
index 379d58f758..cbf96457ef 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/util/AdapterWithHeader.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/util/AdapterWithHeader.kt
@@ -1,11 +1,11 @@
package net.mullvad.mullvadvpn.util
-import android.support.v7.widget.RecyclerView.Adapter
-import android.support.v7.widget.RecyclerView.AdapterDataObserver
-import android.support.v7.widget.RecyclerView.ViewHolder
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import androidx.recyclerview.widget.RecyclerView.Adapter
+import androidx.recyclerview.widget.RecyclerView.AdapterDataObserver
+import androidx.recyclerview.widget.RecyclerView.ViewHolder
import kotlin.properties.Delegates.observable
class AdapterWithHeader<H : ViewHolder>(
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/util/HeaderOrHolder.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/util/HeaderOrHolder.kt
index 631d69100e..308298443a 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/util/HeaderOrHolder.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/util/HeaderOrHolder.kt
@@ -1,7 +1,7 @@
package net.mullvad.mullvadvpn.util
-import android.support.v7.widget.RecyclerView.ViewHolder
import android.view.View
+import androidx.recyclerview.widget.RecyclerView.ViewHolder
sealed class HeaderOrHolder<H : ViewHolder>(itemView: View) : ViewHolder(itemView) {
class Header<H : ViewHolder>(headerView: View) : HeaderOrHolder<H>(headerView)
diff --git a/android/src/main/res/layout/account_login.xml b/android/src/main/res/layout/account_login.xml
index d91222c73f..8a57930721 100644
--- a/android/src/main/res/layout/account_login.xml
+++ b/android/src/main/res/layout/account_login.xml
@@ -9,8 +9,8 @@
android:layout_height="48dp"
android:layout_alignParentTop="true"
android:orientation="horizontal" />
- <android.support.v7.widget.RecyclerView android:id="@+id/history"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_below="@id/input" />
+ <androidx.recyclerview.widget.RecyclerView android:id="@+id/history"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_below="@id/input" />
</merge>
diff --git a/android/src/main/res/layout/connect.xml b/android/src/main/res/layout/connect.xml
index 254dd05442..d6ac999d43 100644
--- a/android/src/main/res/layout/connect.xml
+++ b/android/src/main/res/layout/connect.xml
@@ -7,8 +7,8 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:elevation="0.5dp" />
- <android.support.design.widget.CoordinatorLayout android:layout_width="match_parent"
- android:layout_height="match_parent">
+ <androidx.coordinatorlayout.widget.CoordinatorLayout android:layout_width="match_parent"
+ android:layout_height="match_parent">
<net.mullvad.mullvadvpn.ui.widget.NotificationBanner android:id="@+id/notification_banner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@@ -16,75 +16,76 @@
<ScrollView android:id="@+id/body"
android:layout_width="match_parent"
android:layout_height="match_parent"
- app:layout_behavior="net.mullvad.mullvadvpn.ui.UnderNotificationBannerBehavior"
- android:fillViewport="true">
+ android:fillViewport="true"
+ app:layout_behavior="net.mullvad.mullvadvpn.ui.UnderNotificationBannerBehavior">
+
<LinearLayout android:layout_width="match_parent"
android:layout_height="match_parent"
- android:orientation="vertical"
- android:gravity="bottom">
+ android:gravity="bottom"
+ android:orientation="vertical">
<ProgressBar android:id="@+id/connecting_spinner"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_gravity="center"
android:layout_marginBottom="7dp"
android:indeterminate="true"
- android:indeterminateOnly="true"
- android:indeterminateDuration="600"
android:indeterminateDrawable="@drawable/icon_spinner"
+ android:indeterminateDuration="600"
+ android:indeterminateOnly="true"
android:visibility="invisible" />
<LinearLayout android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_weight="0"
android:layout_marginTop="7dp"
- android:orientation="vertical"
- android:gravity="start">
+ android:layout_weight="0"
+ android:gravity="start"
+ android:orientation="vertical">
<TextView android:id="@+id/connection_status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_marginBottom="2dp"
android:layout_marginHorizontal="@dimen/side_margin"
+ android:layout_marginBottom="2dp"
+ android:text="@string/unsecured_connection"
+ android:textAllCaps="true"
android:textColor="@color/red"
android:textSize="@dimen/text_medium"
- android:textStyle="bold"
- android:text="@string/unsecured_connection"
- android:textAllCaps="true" />
+ android:textStyle="bold" />
<TextView android:id="@+id/city"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/side_margin"
+ android:text=""
android:textColor="@color/white"
android:textSize="@dimen/text_huge"
- android:textStyle="bold"
- android:text="" />
+ android:textStyle="bold" />
<TextView android:id="@+id/country"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/side_margin"
android:layout_marginBottom="2dp"
+ android:text=""
android:textColor="@color/white"
android:textSize="@dimen/text_huge"
- android:textStyle="bold"
- android:text="" />
+ android:textStyle="bold" />
<LinearLayout android:id="@+id/tunnel_info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0"
- android:orientation="vertical"
- android:paddingHorizontal="@dimen/side_margin"
- android:gravity="bottom"
+ android:background="?android:attr/selectableItemBackground"
android:clickable="true"
android:focusable="true"
- android:background="?android:attr/selectableItemBackground">
+ android:gravity="bottom"
+ android:orientation="vertical"
+ android:paddingHorizontal="@dimen/side_margin">
<LinearLayout android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:gravity="center">
+ android:gravity="center"
+ android:orientation="horizontal">
<TextView android:id="@+id/hostname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+ android:text=""
android:textColor="@color/white40"
- android:textSize="@dimen/text_hostname"
- android:text="" />
+ android:textSize="@dimen/text_hostname" />
<ImageView android:id="@+id/chevron"
android:layout_width="24dp"
android:layout_height="24dp"
@@ -96,23 +97,23 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="1dp"
+ android:text=""
android:textColor="@color/white"
- android:textSize="@dimen/text_small"
- android:text="" />
+ android:textSize="@dimen/text_small" />
<TextView android:id="@+id/in_address"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="1dp"
+ android:text=""
android:textColor="@color/white"
- android:textSize="@dimen/text_small"
- android:text="" />
+ android:textSize="@dimen/text_small" />
<TextView android:id="@+id/out_address"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="1dp"
+ android:text=""
android:textColor="@color/white"
- android:textSize="@dimen/text_small"
- android:text="" />
+ android:textSize="@dimen/text_small" />
</LinearLayout>
</LinearLayout>
<LinearLayout android:layout_width="match_parent"
@@ -130,21 +131,21 @@
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button android:id="@+id/action_button"
+ style="@style/GreenButton"
android:layout_weight="1"
- android:text="@string/connect"
- style="@style/GreenButton" />
+ android:text="@string/connect" />
<ImageButton android:id="@+id/reconnect_button"
android:layout_width="50dp"
android:layout_height="match_parent"
- android:layout_weight="0"
android:layout_marginLeft="1dp"
- android:padding="9dp"
+ android:layout_weight="0"
android:background="@drawable/transparent_red_right_half_button_background"
- android:visibility="gone"
- android:src="@drawable/icon_reload" />
+ android:padding="9dp"
+ android:src="@drawable/icon_reload"
+ android:visibility="gone" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</ScrollView>
- </android.support.design.widget.CoordinatorLayout>
+ </androidx.coordinatorlayout.widget.CoordinatorLayout>
</LinearLayout>