summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.idea/gradle.xml1
-rw-r--r--anastasis-ui/.gitignore1
-rw-r--r--anastasis-ui/build.gradle70
-rw-r--r--anastasis-ui/consumer-rules.pro0
-rw-r--r--anastasis-ui/proguard-rules.pro21
-rw-r--r--anastasis-ui/src/main/AndroidManifest.xml26
-rw-r--r--anastasis-ui/src/main/java/org/gnu/anastasis/ui/IntroFragment.kt (renamed from wallet/src/main/java/net/taler/wallet/settings/AnastasisIntroFragment.kt)11
-rw-r--r--anastasis-ui/src/main/java/org/gnu/anastasis/ui/MainActivity.kt46
-rw-r--r--anastasis-ui/src/main/java/org/gnu/anastasis/ui/MainViewModel.kt (renamed from wallet/src/main/java/net/taler/wallet/settings/AnastasisManager.kt)6
-rw-r--r--anastasis-ui/src/main/java/org/gnu/anastasis/ui/authentication/AuthenticationFragment.kt (renamed from wallet/src/main/java/net/taler/wallet/settings/AnastasisAuthenticationFragment.kt)22
-rw-r--r--anastasis-ui/src/main/java/org/gnu/anastasis/ui/authentication/SecurityQuestionFragment.kt (renamed from wallet/src/main/java/net/taler/wallet/settings/SecurityQuestionFragment.kt)11
-rw-r--r--anastasis-ui/src/main/java/org/gnu/anastasis/ui/authentication/SmsFragment.kt (renamed from wallet/src/main/java/net/taler/wallet/settings/SmsFragment.kt)11
-rw-r--r--anastasis-ui/src/main/java/org/gnu/anastasis/ui/authentication/VideoFragment.kt (renamed from wallet/src/main/java/net/taler/wallet/settings/VideoFragment.kt)19
-rw-r--r--anastasis-ui/src/main/java/org/gnu/anastasis/ui/identity/IdentityFragment.kt (renamed from wallet/src/main/java/net/taler/wallet/settings/AnastasisIdentityFragment.kt)10
-rw-r--r--anastasis-ui/src/main/res/anim/slide_in_right.xml (renamed from wallet/src/main/res/anim/slide_in_right.xml)0
-rw-r--r--anastasis-ui/src/main/res/anim/slide_out_left.xml (renamed from wallet/src/main/res/anim/slide_out_left.xml)0
-rw-r--r--anastasis-ui/src/main/res/drawable/ic_baseline_check.xml (renamed from wallet/src/main/res/drawable/ic_baseline_check.xml)0
-rw-r--r--anastasis-ui/src/main/res/drawable/ic_baseline_cloud_circle.xml (renamed from wallet/src/main/res/drawable/ic_baseline_cloud_circle.xml)0
-rw-r--r--anastasis-ui/src/main/res/drawable/ic_baseline_cloud_download.xml (renamed from wallet/src/main/res/drawable/ic_baseline_cloud_download.xml)0
-rw-r--r--anastasis-ui/src/main/res/drawable/ic_baseline_face.xml (renamed from wallet/src/main/res/drawable/ic_baseline_face.xml)0
-rw-r--r--anastasis-ui/src/main/res/drawable/ic_baseline_lock.xml (renamed from wallet/src/main/res/drawable/ic_baseline_lock.xml)0
-rw-r--r--anastasis-ui/src/main/res/drawable/ic_baseline_person.xml (renamed from wallet/src/main/res/drawable/ic_baseline_person.xml)0
-rw-r--r--anastasis-ui/src/main/res/layout/activity.xml54
-rw-r--r--anastasis-ui/src/main/res/layout/fragment_authentication.xml (renamed from wallet/src/main/res/layout/fragment_anastasis_authentication.xml)0
-rw-r--r--anastasis-ui/src/main/res/layout/fragment_identity.xml (renamed from wallet/src/main/res/layout/fragment_anastasis_identity.xml)0
-rw-r--r--anastasis-ui/src/main/res/layout/fragment_intro.xml (renamed from wallet/src/main/res/layout/fragment_anastasis_intro.xml)0
-rw-r--r--anastasis-ui/src/main/res/layout/fragment_security_question.xml (renamed from wallet/src/main/res/layout/fragment_security_question.xml)0
-rw-r--r--anastasis-ui/src/main/res/layout/fragment_sms.xml (renamed from wallet/src/main/res/layout/fragment_sms.xml)0
-rw-r--r--anastasis-ui/src/main/res/layout/fragment_video.xml (renamed from wallet/src/main/res/layout/fragment_video.xml)0
-rw-r--r--anastasis-ui/src/main/res/navigation/anastasis.xml83
-rw-r--r--anastasis-ui/src/main/res/values/themes.xml32
-rw-r--r--build.gradle1
-rw-r--r--settings.gradle1
-rw-r--r--wallet/build.gradle4
-rw-r--r--wallet/src/main/java/net/taler/wallet/MainActivity.kt1
-rw-r--r--wallet/src/main/java/net/taler/wallet/MainViewModel.kt2
-rw-r--r--wallet/src/main/java/net/taler/wallet/settings/BackupSettingsFragment.kt16
-rw-r--r--wallet/src/main/res/navigation/nav_graph.xml70
-rw-r--r--wallet/src/main/res/xml/settings_backup.xml6
39 files changed, 395 insertions, 130 deletions
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index d14ac7f..697ff36 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -10,6 +10,7 @@
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />
+ <option value="$PROJECT_DIR$/anastasis-ui" />
<option value="$PROJECT_DIR$/cashier" />
<option value="$PROJECT_DIR$/merchant-terminal" />
<option value="$PROJECT_DIR$/taler-kotlin-common" />
diff --git a/anastasis-ui/.gitignore b/anastasis-ui/.gitignore
new file mode 100644
index 0000000..42afabf
--- /dev/null
+++ b/anastasis-ui/.gitignore
@@ -0,0 +1 @@
+/build \ No newline at end of file
diff --git a/anastasis-ui/build.gradle b/anastasis-ui/build.gradle
new file mode 100644
index 0000000..0391c7c
--- /dev/null
+++ b/anastasis-ui/build.gradle
@@ -0,0 +1,70 @@
+/*
+ * This file is part of GNU Taler
+ * (C) 2020 Taler Systems S.A.
+ *
+ * GNU Taler is free software; you can redistribute it and/or modify it under the
+ * terms of the GNU General Public License as published by the Free Software
+ * Foundation; either version 3, or (at your option) any later version.
+ *
+ * GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+ * A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
+ */
+
+apply plugin: 'com.android.library'
+apply plugin: 'kotlin-android'
+apply plugin: 'kotlin-android-extensions'
+
+android {
+ compileSdkVersion 29
+ //noinspection GradleDependency
+ buildToolsVersion "$build_tools_version"
+
+ defaultConfig {
+ minSdkVersion 24
+ targetSdkVersion 29
+ versionCode 1
+ versionName "0.1"
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ consumerProguardFiles "consumer-rules.pro"
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+
+ compileOptions {
+ sourceCompatibility = 1.8
+ targetCompatibility = 1.8
+ }
+
+ kotlinOptions {
+ jvmTarget = "1.8"
+ }
+}
+
+dependencies {
+ implementation project(":taler-kotlin-common")
+
+ implementation 'com.google.android.material:material:1.2.0-beta01'
+ implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
+
+ // Navigation Library
+ implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
+ implementation "androidx.navigation:navigation-ui-ktx:$nav_version"
+
+ // ViewModel and LiveData
+ implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
+
+ testImplementation 'junit:junit:4.13'
+
+ androidTestImplementation 'androidx.test.ext:junit:1.1.1'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
+}
diff --git a/anastasis-ui/consumer-rules.pro b/anastasis-ui/consumer-rules.pro
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/anastasis-ui/consumer-rules.pro
diff --git a/anastasis-ui/proguard-rules.pro b/anastasis-ui/proguard-rules.pro
new file mode 100644
index 0000000..481bb43
--- /dev/null
+++ b/anastasis-ui/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile \ No newline at end of file
diff --git a/anastasis-ui/src/main/AndroidManifest.xml b/anastasis-ui/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..3f2402b
--- /dev/null
+++ b/anastasis-ui/src/main/AndroidManifest.xml
@@ -0,0 +1,26 @@
+<!--
+ ~ This file is part of GNU Taler
+ ~ (C) 2020 Taler Systems S.A.
+ ~
+ ~ GNU Taler is free software; you can redistribute it and/or modify it under the
+ ~ terms of the GNU General Public License as published by the Free Software
+ ~ Foundation; either version 3, or (at your option) any later version.
+ ~
+ ~ GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
+ ~ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+ ~ A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ ~
+ ~ You should have received a copy of the GNU General Public License along with
+ ~ GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
+ -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="org.gnu.anastasis.ui">
+
+ <application>
+ <activity
+ android:name=".MainActivity"
+ android:theme="@style/AppTheme.NoActionBar" />
+ </application>
+
+</manifest>
diff --git a/wallet/src/main/java/net/taler/wallet/settings/AnastasisIntroFragment.kt b/anastasis-ui/src/main/java/org/gnu/anastasis/ui/IntroFragment.kt
index 463f5b8..c4b8e73 100644
--- a/wallet/src/main/java/net/taler/wallet/settings/AnastasisIntroFragment.kt
+++ b/anastasis-ui/src/main/java/org/gnu/anastasis/ui/IntroFragment.kt
@@ -14,7 +14,7 @@
* GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
-package net.taler.wallet.settings
+package org.gnu.anastasis.ui
import android.os.Bundle
import android.view.LayoutInflater
@@ -23,12 +23,9 @@ import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import androidx.navigation.fragment.findNavController
-import kotlinx.android.synthetic.main.fragment_anastasis_intro.*
-import net.taler.wallet.MainViewModel
-import net.taler.wallet.R
+import kotlinx.android.synthetic.main.fragment_intro.*
-
-class AnastasisIntroFragment : Fragment() {
+class IntroFragment : Fragment() {
private val model: MainViewModel by activityViewModels()
@@ -36,7 +33,7 @@ class AnastasisIntroFragment : Fragment() {
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
- return inflater.inflate(R.layout.fragment_anastasis_intro, container, false)
+ return inflater.inflate(R.layout.fragment_intro, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
diff --git a/anastasis-ui/src/main/java/org/gnu/anastasis/ui/MainActivity.kt b/anastasis-ui/src/main/java/org/gnu/anastasis/ui/MainActivity.kt
new file mode 100644
index 0000000..3ca3224
--- /dev/null
+++ b/anastasis-ui/src/main/java/org/gnu/anastasis/ui/MainActivity.kt
@@ -0,0 +1,46 @@
+/*
+ * This file is part of GNU Taler
+ * (C) 2020 Taler Systems S.A.
+ *
+ * GNU Taler is free software; you can redistribute it and/or modify it under the
+ * terms of the GNU General Public License as published by the Free Software
+ * Foundation; either version 3, or (at your option) any later version.
+ *
+ * GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+ * A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
+ */
+
+package org.gnu.anastasis.ui
+
+import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
+import androidx.navigation.NavController
+import androidx.navigation.fragment.NavHostFragment
+import androidx.navigation.ui.AppBarConfiguration
+import androidx.navigation.ui.setupWithNavController
+import kotlinx.android.synthetic.main.activity.*
+
+class MainActivity : AppCompatActivity() {
+
+ private lateinit var nav: NavController
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity)
+
+ val navHostFragment =
+ supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
+ nav = navHostFragment.navController
+
+ setSupportActionBar(toolbar)
+ val appBarConfiguration = AppBarConfiguration(
+ emptySet()
+ )
+ toolbar.setupWithNavController(nav, appBarConfiguration)
+ }
+
+}
diff --git a/wallet/src/main/java/net/taler/wallet/settings/AnastasisManager.kt b/anastasis-ui/src/main/java/org/gnu/anastasis/ui/MainViewModel.kt
index 09c6a39..7bcfc19 100644
--- a/wallet/src/main/java/net/taler/wallet/settings/AnastasisManager.kt
+++ b/anastasis-ui/src/main/java/org/gnu/anastasis/ui/MainViewModel.kt
@@ -14,11 +14,13 @@
* GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
-package net.taler.wallet.settings
+package org.gnu.anastasis.ui
+import android.app.Application
+import androidx.lifecycle.AndroidViewModel
import androidx.lifecycle.MutableLiveData
-class AnastasisManager {
+class MainViewModel(private val app: Application) : AndroidViewModel(app) {
val securityQuestionChecked = MutableLiveData<Boolean>()
val smsChecked = MutableLiveData<Boolean>()
diff --git a/wallet/src/main/java/net/taler/wallet/settings/AnastasisAuthenticationFragment.kt b/anastasis-ui/src/main/java/org/gnu/anastasis/ui/authentication/AuthenticationFragment.kt
index 4421d46..607917d 100644
--- a/wallet/src/main/java/net/taler/wallet/settings/AnastasisAuthenticationFragment.kt
+++ b/anastasis-ui/src/main/java/org/gnu/anastasis/ui/authentication/AuthenticationFragment.kt
@@ -14,7 +14,7 @@
* GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
-package net.taler.wallet.settings
+package org.gnu.anastasis.ui.authentication
import android.os.Bundle
import android.view.Gravity.CENTER
@@ -30,16 +30,14 @@ import androidx.lifecycle.Observer
import androidx.navigation.fragment.FragmentNavigatorExtras
import androidx.navigation.fragment.findNavController
import com.google.android.material.card.MaterialCardView
-import kotlinx.android.synthetic.main.fragment_anastasis_authentication.*
+import kotlinx.android.synthetic.main.fragment_authentication.*
import net.taler.common.Amount
-import net.taler.wallet.MainViewModel
-import net.taler.wallet.R
+import org.gnu.anastasis.ui.MainViewModel
+import org.gnu.anastasis.ui.R
+class AuthenticationFragment : Fragment() {
-class AnastasisAuthenticationFragment : Fragment() {
-
- private val model: MainViewModel by activityViewModels()
- private val anastasisManager by lazy { model.anastasisManager }
+ private val viewModel: MainViewModel by activityViewModels()
private var price: Amount = Amount.zero("KUDOS")
@@ -47,7 +45,7 @@ class AnastasisAuthenticationFragment : Fragment() {
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
- return inflater.inflate(R.layout.fragment_anastasis_authentication, container, false)
+ return inflater.inflate(R.layout.fragment_authentication, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
@@ -80,17 +78,17 @@ class AnastasisAuthenticationFragment : Fragment() {
)
}
- anastasisManager.securityQuestionChecked.observe(viewLifecycleOwner, Observer { checked ->
+ viewModel.securityQuestionChecked.observe(viewLifecycleOwner, Observer { checked ->
passwordCard.isChecked = checked
updatePrice(checked, Amount.fromJSONString("KUDOS:0.5"))
updateNextButtonState()
})
- anastasisManager.smsChecked.observe(viewLifecycleOwner, Observer { checked ->
+ viewModel.smsChecked.observe(viewLifecycleOwner, Observer { checked ->
smsCard.isChecked = checked
updatePrice(checked, Amount.fromJSONString("KUDOS:1.0"))
updateNextButtonState()
})
- anastasisManager.videoChecked.observe(viewLifecycleOwner, Observer { checked ->
+ viewModel.videoChecked.observe(viewLifecycleOwner, Observer { checked ->
videoCard.isChecked = checked
updatePrice(checked, Amount.fromJSONString("KUDOS:2.25"))
updateNextButtonState()
diff --git a/wallet/src/main/java/net/taler/wallet/settings/SecurityQuestionFragment.kt b/anastasis-ui/src/main/java/org/gnu/anastasis/ui/authentication/SecurityQuestionFragment.kt
index 0ca63b4..7353174 100644
--- a/wallet/src/main/java/net/taler/wallet/settings/SecurityQuestionFragment.kt
+++ b/anastasis-ui/src/main/java/org/gnu/anastasis/ui/authentication/SecurityQuestionFragment.kt
@@ -14,7 +14,7 @@
* GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
-package net.taler.wallet.settings
+package org.gnu.anastasis.ui.authentication
import android.os.Bundle
import android.view.LayoutInflater
@@ -26,13 +26,12 @@ import androidx.navigation.fragment.findNavController
import com.google.android.material.transition.MaterialContainerTransform
import com.google.android.material.transition.MaterialContainerTransform.FADE_MODE_CROSS
import kotlinx.android.synthetic.main.fragment_security_question.*
-import net.taler.wallet.MainViewModel
-import net.taler.wallet.R
+import org.gnu.anastasis.ui.MainViewModel
+import org.gnu.anastasis.ui.R
class SecurityQuestionFragment : Fragment() {
- private val model: MainViewModel by activityViewModels()
- private val anastasisManager by lazy { model.anastasisManager }
+ private val viewModel: MainViewModel by activityViewModels()
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
@@ -48,7 +47,7 @@ class SecurityQuestionFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
saveQuestionButton.setOnClickListener {
- anastasisManager.securityQuestionChecked.value = true
+ viewModel.securityQuestionChecked.value = true
findNavController().popBackStack()
}
}
diff --git a/wallet/src/main/java/net/taler/wallet/settings/SmsFragment.kt b/anastasis-ui/src/main/java/org/gnu/anastasis/ui/authentication/SmsFragment.kt
index 6a617ac..2ceb422 100644
--- a/wallet/src/main/java/net/taler/wallet/settings/SmsFragment.kt
+++ b/anastasis-ui/src/main/java/org/gnu/anastasis/ui/authentication/SmsFragment.kt
@@ -14,7 +14,7 @@
* GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
-package net.taler.wallet.settings
+package org.gnu.anastasis.ui.authentication
import android.os.Bundle
import android.view.LayoutInflater
@@ -26,13 +26,12 @@ import androidx.navigation.fragment.findNavController
import com.google.android.material.transition.MaterialContainerTransform
import com.google.android.material.transition.MaterialContainerTransform.FADE_MODE_CROSS
import kotlinx.android.synthetic.main.fragment_sms.*
-import net.taler.wallet.MainViewModel
-import net.taler.wallet.R
+import org.gnu.anastasis.ui.MainViewModel
+import org.gnu.anastasis.ui.R
class SmsFragment : Fragment() {
- private val model: MainViewModel by activityViewModels()
- private val anastasisManager by lazy { model.anastasisManager }
+ private val viewModel: MainViewModel by activityViewModels()
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
@@ -48,7 +47,7 @@ class SmsFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
saveSmsButton.setOnClickListener {
- anastasisManager.smsChecked.value = true
+ viewModel.smsChecked.value = true
findNavController().popBackStack()
}
}
diff --git a/wallet/src/main/java/net/taler/wallet/settings/VideoFragment.kt b/anastasis-ui/src/main/java/org/gnu/anastasis/ui/authentication/VideoFragment.kt
index 8a6477d..6cd80ce 100644
--- a/wallet/src/main/java/net/taler/wallet/settings/VideoFragment.kt
+++ b/anastasis-ui/src/main/java/org/gnu/anastasis/ui/authentication/VideoFragment.kt
@@ -14,7 +14,7 @@
* GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
-package net.taler.wallet.settings
+package org.gnu.anastasis.ui.authentication
import android.app.Activity.RESULT_OK
import android.content.Intent
@@ -36,8 +36,8 @@ import androidx.transition.TransitionManager.beginDelayedTransition
import com.google.android.material.transition.MaterialContainerTransform
import com.google.android.material.transition.MaterialContainerTransform.FADE_MODE_CROSS
import kotlinx.android.synthetic.main.fragment_video.*
-import net.taler.wallet.MainViewModel
-import net.taler.wallet.R
+import org.gnu.anastasis.ui.MainViewModel
+import org.gnu.anastasis.ui.R
import java.io.FileDescriptor
private const val REQUEST_IMAGE_CAPTURE = 1
@@ -45,8 +45,7 @@ private const val REQUEST_IMAGE_OPEN = 2
class VideoFragment : Fragment() {
- private val model: MainViewModel by activityViewModels()
- private val anastasisManager by lazy { model.anastasisManager }
+ private val viewModel: MainViewModel by activityViewModels()
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
@@ -65,7 +64,9 @@ class VideoFragment : Fragment() {
val pm = requireContext().packageManager
Intent(MediaStore.ACTION_IMAGE_CAPTURE).also { takePictureIntent ->
takePictureIntent.resolveActivity(pm)?.also {
- startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE)
+ startActivityForResult(takePictureIntent,
+ REQUEST_IMAGE_CAPTURE
+ )
}
}
}
@@ -74,11 +75,13 @@ class VideoFragment : Fragment() {
addCategory(Intent.CATEGORY_OPENABLE)
type = "image/*"
}
- startActivityForResult(intent, REQUEST_IMAGE_OPEN)
+ startActivityForResult(intent,
+ REQUEST_IMAGE_OPEN
+ )
}
saveVideoButton.setOnClickListener {
- anastasisManager.videoChecked.value = true
+ viewModel.videoChecked.value = true
findNavController().popBackStack()
}
}
diff --git a/wallet/src/main/java/net/taler/wallet/settings/AnastasisIdentityFragment.kt b/anastasis-ui/src/main/java/org/gnu/anastasis/ui/identity/IdentityFragment.kt
index 6b84223..d391c5d 100644
--- a/wallet/src/main/java/net/taler/wallet/settings/AnastasisIdentityFragment.kt
+++ b/anastasis-ui/src/main/java/org/gnu/anastasis/ui/identity/IdentityFragment.kt
@@ -14,7 +14,7 @@
* GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
-package net.taler.wallet.settings
+package org.gnu.anastasis.ui.identity
import android.annotation.SuppressLint
import android.app.DatePickerDialog
@@ -28,9 +28,9 @@ import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import androidx.navigation.fragment.findNavController
import com.google.android.material.snackbar.Snackbar
-import kotlinx.android.synthetic.main.fragment_anastasis_identity.*
-import net.taler.wallet.MainViewModel
-import net.taler.wallet.R
+import kotlinx.android.synthetic.main.fragment_identity.*
+import org.gnu.anastasis.ui.MainViewModel
+import org.gnu.anastasis.ui.R
import java.util.*
import java.util.concurrent.TimeUnit.DAYS
@@ -44,7 +44,7 @@ class AnastasisIdentityFragment : Fragment() {
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
- return inflater.inflate(R.layout.fragment_anastasis_identity, container, false)
+ return inflater.inflate(R.layout.fragment_identity, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
diff --git a/wallet/src/main/res/anim/slide_in_right.xml b/anastasis-ui/src/main/res/anim/slide_in_right.xml
index 1425210..1425210 100644
--- a/wallet/src/main/res/anim/slide_in_right.xml
+++ b/anastasis-ui/src/main/res/anim/slide_in_right.xml
diff --git a/wallet/src/main/res/anim/slide_out_left.xml b/anastasis-ui/src/main/res/anim/slide_out_left.xml
index 0581b69..0581b69 100644
--- a/wallet/src/main/res/anim/slide_out_left.xml
+++ b/anastasis-ui/src/main/res/anim/slide_out_left.xml
diff --git a/wallet/src/main/res/drawable/ic_baseline_check.xml b/anastasis-ui/src/main/res/drawable/ic_baseline_check.xml
index 219e80e..219e80e 100644
--- a/wallet/src/main/res/drawable/ic_baseline_check.xml
+++ b/anastasis-ui/src/main/res/drawable/ic_baseline_check.xml
diff --git a/wallet/src/main/res/drawable/ic_baseline_cloud_circle.xml b/anastasis-ui/src/main/res/drawable/ic_baseline_cloud_circle.xml
index bb8e80a..bb8e80a 100644
--- a/wallet/src/main/res/drawable/ic_baseline_cloud_circle.xml
+++ b/anastasis-ui/src/main/res/drawable/ic_baseline_cloud_circle.xml
diff --git a/wallet/src/main/res/drawable/ic_baseline_cloud_download.xml b/anastasis-ui/src/main/res/drawable/ic_baseline_cloud_download.xml
index 58832b1..58832b1 100644
--- a/wallet/src/main/res/drawable/ic_baseline_cloud_download.xml
+++ b/anastasis-ui/src/main/res/drawable/ic_baseline_cloud_download.xml
diff --git a/wallet/src/main/res/drawable/ic_baseline_face.xml b/anastasis-ui/src/main/res/drawable/ic_baseline_face.xml
index 4d55e34..4d55e34 100644
--- a/wallet/src/main/res/drawable/ic_baseline_face.xml
+++ b/anastasis-ui/src/main/res/drawable/ic_baseline_face.xml
diff --git a/wallet/src/main/res/drawable/ic_baseline_lock.xml b/anastasis-ui/src/main/res/drawable/ic_baseline_lock.xml
index 8f13e37..8f13e37 100644
--- a/wallet/src/main/res/drawable/ic_baseline_lock.xml
+++ b/anastasis-ui/src/main/res/drawable/ic_baseline_lock.xml
diff --git a/wallet/src/main/res/drawable/ic_baseline_person.xml b/anastasis-ui/src/main/res/drawable/ic_baseline_person.xml
index 07eeb5a..07eeb5a 100644
--- a/wallet/src/main/res/drawable/ic_baseline_person.xml
+++ b/anastasis-ui/src/main/res/drawable/ic_baseline_person.xml
diff --git a/anastasis-ui/src/main/res/layout/activity.xml b/anastasis-ui/src/main/res/layout/activity.xml
new file mode 100644
index 0000000..02fe90c
--- /dev/null
+++ b/anastasis-ui/src/main/res/layout/activity.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?><!--
+ ~ This file is part of GNU Taler
+ ~ (C) 2020 Taler Systems S.A.
+ ~
+ ~ GNU Taler is free software; you can redistribute it and/or modify it under the
+ ~ terms of the GNU General Public License as published by the Free Software
+ ~ Foundation; either version 3, or (at your option) any later version.
+ ~
+ ~ GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
+ ~ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+ ~ A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ ~
+ ~ You should have received a copy of the GNU General Public License along with
+ ~ GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
+ -->
+
+<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ tools:context=".MainActivity">
+
+ <com.google.android.material.appbar.AppBarLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:theme="@style/AppTheme.AppBarOverlay">
+
+ <com.google.android.material.appbar.MaterialToolbar
+ android:id="@+id/toolbar"
+ style="@style/AppTheme.Toolbar"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent" />
+
+ </com.google.android.material.appbar.AppBarLayout>
+
+ <androidx.fragment.app.FragmentContainerView
+ android:id="@+id/nav_host_fragment"
+ android:name="androidx.navigation.fragment.NavHostFragment"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ app:defaultNavHost="true"
+ app:layout_behavior="@string/appbar_scrolling_view_behavior"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintLeft_toLeftOf="parent"
+ app:layout_constraintRight_toRightOf="parent"
+ app:layout_constraintTop_toTopOf="parent"
+ app:navGraph="@navigation/anastasis" />
+
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
diff --git a/wallet/src/main/res/layout/fragment_anastasis_authentication.xml b/anastasis-ui/src/main/res/layout/fragment_authentication.xml
index a83871a..a83871a 100644
--- a/wallet/src/main/res/layout/fragment_anastasis_authentication.xml
+++ b/anastasis-ui/src/main/res/layout/fragment_authentication.xml
diff --git a/wallet/src/main/res/layout/fragment_anastasis_identity.xml b/anastasis-ui/src/main/res/layout/fragment_identity.xml
index e24be31..e24be31 100644
--- a/wallet/src/main/res/layout/fragment_anastasis_identity.xml
+++ b/anastasis-ui/src/main/res/layout/fragment_identity.xml
diff --git a/wallet/src/main/res/layout/fragment_anastasis_intro.xml b/anastasis-ui/src/main/res/layout/fragment_intro.xml
index 262287b..262287b 100644
--- a/wallet/src/main/res/layout/fragment_anastasis_intro.xml
+++ b/anastasis-ui/src/main/res/layout/fragment_intro.xml
diff --git a/wallet/src/main/res/layout/fragment_security_question.xml b/anastasis-ui/src/main/res/layout/fragment_security_question.xml
index 4df4f97..4df4f97 100644
--- a/wallet/src/main/res/layout/fragment_security_question.xml
+++ b/anastasis-ui/src/main/res/layout/fragment_security_question.xml
diff --git a/wallet/src/main/res/layout/fragment_sms.xml b/anastasis-ui/src/main/res/layout/fragment_sms.xml
index f855d38..f855d38 100644
--- a/wallet/src/main/res/layout/fragment_sms.xml
+++ b/anastasis-ui/src/main/res/layout/fragment_sms.xml
diff --git a/wallet/src/main/res/layout/fragment_video.xml b/anastasis-ui/src/main/res/layout/fragment_video.xml
index c08e269..c08e269 100644
--- a/wallet/src/main/res/layout/fragment_video.xml
+++ b/anastasis-ui/src/main/res/layout/fragment_video.xml
diff --git a/anastasis-ui/src/main/res/navigation/anastasis.xml b/anastasis-ui/src/main/res/navigation/anastasis.xml
new file mode 100644
index 0000000..1e151da
--- /dev/null
+++ b/anastasis-ui/src/main/res/navigation/anastasis.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?><!--
+ ~ This file is part of GNU Taler
+ ~ (C) 2020 Taler Systems S.A.
+ ~
+ ~ GNU Taler is free software; you can redistribute it and/or modify it under the
+ ~ terms of the GNU General Public License as published by the Free Software
+ ~ Foundation; either version 3, or (at your option) any later version.
+ ~
+ ~ GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
+ ~ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+ ~ A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ ~
+ ~ You should have received a copy of the GNU General Public License along with
+ ~ GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
+ -->
+
+<navigation xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:id="@+id/nav_graph"
+ app:startDestination="@id/nav_anastasis_intro">
+
+ <fragment
+ android:id="@+id/nav_anastasis_intro"
+ android:name="org.gnu.anastasis.ui.IntroFragment"
+ android:label="Secure Cloud Recovery"
+ tools:layout="@layout/fragment_intro">
+ <action
+ android:id="@+id/action_nav_anastasis_intro_to_nav_anastasis_identity"
+ app:destination="@id/nav_anastasis_identity"
+ app:enterAnim="@anim/slide_in_right"
+ app:exitAnim="@anim/slide_out_left"
+ app:popEnterAnim="@android:anim/slide_in_left"
+ app:popExitAnim="@android:anim/slide_out_right" />
+ </fragment>
+
+ <fragment
+ android:id="@+id/nav_anastasis_identity"
+ android:name="org.gnu.anastasis.ui.identity.AnastasisIdentityFragment"
+ android:label="Define your identity"
+ tools:layout="@layout/fragment_identity">
+ <action
+ android:id="@+id/action_nav_anastasis_intro_to_nav_anastasis_authentication"
+ app:destination="@id/nav_anastasis_authentication"
+ app:enterAnim="@anim/slide_in_right"
+ app:exitAnim="@anim/slide_out_left"
+ app:popEnterAnim="@android:anim/slide_in_left"
+ app:popExitAnim="@android:anim/slide_out_right" />
+ </fragment>
+
+ <fragment
+ android:id="@+id/nav_anastasis_authentication"
+ android:name="org.gnu.anastasis.ui.authentication.AuthenticationFragment"
+ android:label="Choose authentication methods"
+ tools:layout="@layout/fragment_authentication">
+ <action
+ android:id="@+id/action_nav_anastasis_authentication_to_securityQuestionFragment"
+ app:destination="@id/securityQuestionFragment" />
+ <action
+ android:id="@+id/action_nav_anastasis_authentication_to_smsFragment"
+ app:destination="@id/smsFragment" />
+ <action
+ android:id="@+id/action_nav_anastasis_authentication_to_videoFragment"
+ app:destination="@id/videoFragment" />
+ </fragment>
+
+ <fragment
+ android:id="@+id/securityQuestionFragment"
+ android:name="org.gnu.anastasis.ui.authentication.SecurityQuestionFragment"
+ android:label="Security question"
+ tools:layout="@layout/fragment_security_question" />
+ <fragment
+ android:id="@+id/smsFragment"
+ android:name="org.gnu.anastasis.ui.authentication.SmsFragment"
+ android:label="SMS"
+ tools:layout="@layout/fragment_sms" />
+ <fragment
+ android:id="@+id/videoFragment"
+ android:name="org.gnu.anastasis.ui.authentication.VideoFragment"
+ android:label="Video identification"
+ tools:layout="@layout/fragment_video" />
+
+</navigation>
diff --git a/anastasis-ui/src/main/res/values/themes.xml b/anastasis-ui/src/main/res/values/themes.xml
new file mode 100644
index 0000000..e6d3422
--- /dev/null
+++ b/anastasis-ui/src/main/res/values/themes.xml
@@ -0,0 +1,32 @@
+<!--
+ ~ This file is part of GNU Taler
+ ~ (C) 2020 Taler Systems S.A.
+ ~
+ ~ GNU Taler is free software; you can redistribute it and/or modify it under the
+ ~ terms of the GNU General Public License as published by the Free Software
+ ~ Foundation; either version 3, or (at your option) any later version.
+ ~
+ ~ GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
+ ~ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+ ~ A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ ~
+ ~ You should have received a copy of the GNU General Public License along with
+ ~ GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
+ -->
+
+<resources>
+
+ <style name="AppTheme" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
+ </style>
+
+ <style name="AppTheme.NoActionBar">
+ <item name="windowActionBar">false</item>
+ <item name="windowNoTitle">true</item>
+ <item name="android:statusBarColor">@android:color/transparent</item>
+ </style>
+
+ <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.MaterialComponents.ActionBar" />
+
+ <style name="AppTheme.Toolbar" parent="Widget.MaterialComponents.Toolbar.Primary" />
+
+</resources>
diff --git a/build.gradle b/build.gradle
index 5a6f0b7..4f08021 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,6 +1,7 @@
buildscript {
ext.kotlin_version = '1.3.72'
ext.nav_version = "2.2.2"
+ ext.lifecycle_version = "2.2.0"
// check https://android-rebuilds.beuc.net/ for availability of free build tools
ext.build_tools_version = "29.0.2"
repositories {
diff --git a/settings.gradle b/settings.gradle
index b0e66eb..b45a276 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,2 +1,3 @@
include ':cashier', ':merchant-terminal', ':wallet'
include ':taler-kotlin-common'
+include ':anastasis-ui'
diff --git a/wallet/build.gradle b/wallet/build.gradle
index 4a9111b..192b454 100644
--- a/wallet/build.gradle
+++ b/wallet/build.gradle
@@ -66,10 +66,11 @@ android {
dependencies {
implementation project(":taler-kotlin-common")
+ implementation project(":anastasis-ui")
implementation 'net.taler:akono:0.1'
implementation 'androidx.preference:preference:1.1.1'
- implementation 'com.google.android.material:material:1.2.0-beta01'
+ implementation 'com.google.android.material:material:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
// Lists and Selection
@@ -81,7 +82,6 @@ dependencies {
implementation "androidx.navigation:navigation-ui-ktx:$nav_version"
// ViewModel and LiveData
- def lifecycle_version = "2.2.0"
implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
// QR codes
diff --git a/wallet/src/main/java/net/taler/wallet/MainActivity.kt b/wallet/src/main/java/net/taler/wallet/MainActivity.kt
index c687a0e..2eeb4fd 100644
--- a/wallet/src/main/java/net/taler/wallet/MainActivity.kt
+++ b/wallet/src/main/java/net/taler/wallet/MainActivity.kt
@@ -216,7 +216,6 @@ class MainActivity : AppCompatActivity(), OnNavigationItemSelectedListener,
): Boolean {
when (pref.key) {
"pref_backup" -> nav.navigate(R.id.action_nav_settings_to_nav_settings_backup)
- "pref_backup_recovery" -> nav.navigate(R.id.action_nav_settings_backup_to_nav_anastasis_intro)
}
return true
}
diff --git a/wallet/src/main/java/net/taler/wallet/MainViewModel.kt b/wallet/src/main/java/net/taler/wallet/MainViewModel.kt
index 63d833a..c69c31c 100644
--- a/wallet/src/main/java/net/taler/wallet/MainViewModel.kt
+++ b/wallet/src/main/java/net/taler/wallet/MainViewModel.kt
@@ -37,7 +37,6 @@ import net.taler.wallet.history.DevHistoryManager
import net.taler.wallet.payment.PaymentManager
import net.taler.wallet.pending.PendingOperationsManager
import net.taler.wallet.refund.RefundManager
-import net.taler.wallet.settings.AnastasisManager
import net.taler.wallet.transactions.TransactionManager
import net.taler.wallet.withdraw.WithdrawManager
import org.json.JSONObject
@@ -103,7 +102,6 @@ class MainViewModel(val app: Application) : AndroidViewModel(app) {
val transactionManager: TransactionManager =
TransactionManager(walletBackendApi, viewModelScope, mapper)
val refundManager = RefundManager(walletBackendApi)
- val anastasisManager = AnastasisManager()
private val mTransactionsEvent = MutableLiveData<Event<String>>()
val transactionsEvent: LiveData<Event<String>> = mTransactionsEvent
diff --git a/wallet/src/main/java/net/taler/wallet/settings/BackupSettingsFragment.kt b/wallet/src/main/java/net/taler/wallet/settings/BackupSettingsFragment.kt
index f820661..0dc7124 100644
--- a/wallet/src/main/java/net/taler/wallet/settings/BackupSettingsFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/settings/BackupSettingsFragment.kt
@@ -16,26 +16,28 @@
package net.taler.wallet.settings
+import android.content.Intent
import android.os.Bundle
import android.view.View
-import androidx.fragment.app.activityViewModels
+import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat
-import net.taler.wallet.MainViewModel
import net.taler.wallet.R
-
+import org.gnu.anastasis.ui.MainActivity
class BackupSettingsFragment : PreferenceFragmentCompat() {
- private val model: MainViewModel by activityViewModels()
-
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.settings_backup, rootKey)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
-
+ val recoveryPref: Preference = findPreference("pref_backup_recovery")!!
+ recoveryPref.setOnPreferenceClickListener {
+ val intent = Intent(requireContext(), MainActivity::class.java)
+ startActivity(intent)
+ true
+ }
}
-
}
diff --git a/wallet/src/main/res/navigation/nav_graph.xml b/wallet/src/main/res/navigation/nav_graph.xml
index 7ce7b02..51dcaba 100644
--- a/wallet/src/main/res/navigation/nav_graph.xml
+++ b/wallet/src/main/res/navigation/nav_graph.xml
@@ -66,75 +66,7 @@
<fragment
android:id="@+id/nav_settings_backup"
android:name="net.taler.wallet.settings.BackupSettingsFragment"
- android:label="@string/nav_settings_backup">
- <action
- android:id="@+id/action_nav_settings_backup_to_nav_anastasis_intro"
- app:destination="@id/nav_anastasis_intro"
- app:enterAnim="@anim/slide_in_right"
- app:exitAnim="@anim/slide_out_left"
- app:popEnterAnim="@android:anim/slide_in_left"
- app:popExitAnim="@android:anim/slide_out_right" />
- </fragment>
-
- <fragment
- android:id="@+id/nav_anastasis_intro"
- android:name="net.taler.wallet.settings.AnastasisIntroFragment"
- android:label="Secure Cloud Recovery"
- tools:layout="@layout/fragment_anastasis_intro">
- <action
- android:id="@+id/action_nav_anastasis_intro_to_nav_anastasis_identity"
- app:destination="@id/nav_anastasis_identity"
- app:enterAnim="@anim/slide_in_right"
- app:exitAnim="@anim/slide_out_left"
- app:popEnterAnim="@android:anim/slide_in_left"
- app:popExitAnim="@android:anim/slide_out_right" />
- </fragment>
-
- <fragment
- android:id="@+id/nav_anastasis_identity"
- android:name="net.taler.wallet.settings.AnastasisIdentityFragment"
- android:label="Define your identity"
- tools:layout="@layout/fragment_anastasis_identity">
- <action
- android:id="@+id/action_nav_anastasis_intro_to_nav_anastasis_authentication"
- app:destination="@id/nav_anastasis_authentication"
- app:enterAnim="@anim/slide_in_right"
- app:exitAnim="@anim/slide_out_left"
- app:popEnterAnim="@android:anim/slide_in_left"
- app:popExitAnim="@android:anim/slide_out_right" />
- </fragment>
-
- <fragment
- android:id="@+id/nav_anastasis_authentication"
- android:name="net.taler.wallet.settings.AnastasisAuthenticationFragment"
- android:label="Choose authentication methods"
- tools:layout="@layout/fragment_anastasis_authentication">
- <action
- android:id="@+id/action_nav_anastasis_authentication_to_securityQuestionFragment"
- app:destination="@id/securityQuestionFragment" />
- <action
- android:id="@+id/action_nav_anastasis_authentication_to_smsFragment"
- app:destination="@id/smsFragment" />
- <action
- android:id="@+id/action_nav_anastasis_authentication_to_videoFragment"
- app:destination="@id/videoFragment" />
- </fragment>
-
- <fragment
- android:id="@+id/securityQuestionFragment"
- android:name="net.taler.wallet.settings.SecurityQuestionFragment"
- android:label="Security question"
- tools:layout="@layout/fragment_security_question" />
- <fragment
- android:id="@+id/smsFragment"
- android:name="net.taler.wallet.settings.SmsFragment"
- android:label="SMS"
- tools:layout="@layout/fragment_sms" />
- <fragment
- android:id="@+id/videoFragment"
- android:name="net.taler.wallet.settings.VideoFragment"
- android:label="Video identification"
- tools:layout="@layout/fragment_video" />
+ android:label="@string/nav_settings_backup"/>
<fragment
android:id="@+id/nav_transactions"
diff --git a/wallet/src/main/res/xml/settings_backup.xml b/wallet/src/main/res/xml/settings_backup.xml
index b275302..52b72ac 100644
--- a/wallet/src/main/res/xml/settings_backup.xml
+++ b/wallet/src/main/res/xml/settings_backup.xml
@@ -14,7 +14,8 @@
~ GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
-->
-<PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto">
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto">
<SwitchPreferenceCompat
app:defaultValue="@bool/settings_backup_default"
@@ -48,10 +49,9 @@
<Preference
app:dependency="pref_backup_switch"
app:icon="@drawable/ic_baseline_cloud_circle"
- app:fragment="net.taler.wallet.settings.SettingsFragment"
app:key="pref_backup_recovery"
app:summary="Not used"
- app:title="Secure cloud recovery" />
+ app:title="Secure cloud recovery"/>
</PreferenceCategory>