gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-taler-android] branch master updated (98d693d -> 97dac70)


From: gnunet
Subject: [taler-taler-android] branch master updated (98d693d -> 97dac70)
Date: Fri, 26 Jun 2020 19:16:19 +0200

This is an automated email from the git hooks/post-receive script.

torsten-grote pushed a change to branch master
in repository taler-android.

    from 98d693d  [wallet] Improve Anastasis UI mockup
     new 730fbaa  [wallet] Move Anastasis UI mockup into its own library module
     new 9cbb35c  [anastasis] add more countries and allow switching between 
them
     new 97dac70  [anastasis] ask for permission to fill in phone number 
automatically

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .idea/codeStyles/Project.xml                       |   5 +
 .idea/gradle.xml                                   |   1 +
 anastasis-ui/.gitignore                            |   1 +
 {cashier => anastasis-ui}/build.gradle             |  27 +++---
 .../consumer-rules.pro                             |   0
 {cashier => anastasis-ui}/proguard-rules.pro       |   2 +-
 .../src/main/AndroidManifest.xml                   |  12 ++-
 .../java/org/gnu/anastasis/ui/IntroFragment.kt     |  11 +--
 .../java/org/gnu/anastasis/ui}/MainActivity.kt     |  42 +++------
 .../java/org/gnu/anastasis/ui/MainViewModel.kt     |   9 +-
 .../ui/authentication/AuthenticationFragment.kt    |  22 ++---
 .../ui/authentication}/SecurityQuestionFragment.kt |  11 +--
 .../gnu/anastasis/ui/authentication/SmsFragment.kt | 105 +++++++++++++++++++++
 .../anastasis/ui/authentication}/VideoFragment.kt  |  19 ++--
 .../ui/identity/ChangeLocationFragment.kt          |  42 +++++----
 .../gnu/anastasis/ui/identity/IdentityFragment.kt  |  27 ++++--
 .../org/gnu/anastasis/ui/identity/Locations.kt     |  20 ++--
 .../src/main/res/anim/slide_in_right.xml           |   0
 .../src/main/res/anim/slide_out_left.xml           |   0
 .../src/main/res/drawable/ic_baseline_check.xml    |   0
 .../main/res/drawable/ic_baseline_cloud_circle.xml |   0
 .../res/drawable/ic_baseline_cloud_download.xml    |   0
 .../src/main/res/drawable/ic_baseline_face.xml     |   0
 .../src/main/res/drawable/ic_baseline_lock.xml     |   0
 .../src/main/res/drawable/ic_baseline_person.xml   |   0
 .../src/main/res/layout/activity.xml               |   8 +-
 .../src/main/res/layout/country_germany.xml        |  47 ++++-----
 .../src/main/res/layout/country_india.xml          |  31 ++----
 .../src/main/res/layout/country_switzerland.xml    |  47 ++++-----
 .../src/main/res/layout/country_usa.xml            |  31 ++----
 .../main/res/layout/fragment_authentication.xml    |   0
 .../main/res/layout/fragment_change_location.xml   |  53 +++++++----
 .../src/main/res/layout/fragment_identity.xml      |  52 ++--------
 .../src/main/res/layout/fragment_intro.xml         |   0
 .../main/res/layout/fragment_security_question.xml |   0
 .../src/main/res/layout/fragment_sms.xml           |   0
 .../src/main/res/layout/fragment_video.xml         |   0
 anastasis-ui/src/main/res/navigation/anastasis.xml |  96 +++++++++++++++++++
 .../src/main/res/values/themes.xml                 |  18 +++-
 build.gradle                                       |   1 +
 settings.gradle                                    |   1 +
 wallet/build.gradle                                |   4 +-
 .../src/main/java/net/taler/wallet/MainActivity.kt |   1 -
 .../main/java/net/taler/wallet/MainViewModel.kt    |   2 -
 .../wallet/settings/BackupSettingsFragment.kt      |  16 ++--
 wallet/src/main/res/navigation/nav_graph.xml       |  70 +-------------
 wallet/src/main/res/xml/settings_backup.xml        |   6 +-
 47 files changed, 481 insertions(+), 359 deletions(-)
 create mode 100644 anastasis-ui/.gitignore
 copy {cashier => anastasis-ui}/build.gradle (75%)
 copy {taler-kotlin-common => anastasis-ui}/consumer-rules.pro (100%)
 copy {cashier => anastasis-ui}/proguard-rules.pro (94%)
 copy {taler-kotlin-common => anastasis-ui}/src/main/AndroidManifest.xml (75%)
 rename 
wallet/src/main/java/net/taler/wallet/settings/AnastasisIntroFragment.kt => 
anastasis-ui/src/main/java/org/gnu/anastasis/ui/IntroFragment.kt (83%)
 copy {cashier/src/main/java/net/taler/cashier => 
anastasis-ui/src/main/java/org/gnu/anastasis/ui}/MainActivity.kt (55%)
 rename wallet/src/main/java/net/taler/wallet/settings/AnastasisManager.kt => 
anastasis-ui/src/main/java/org/gnu/anastasis/ui/MainViewModel.kt (76%)
 rename 
wallet/src/main/java/net/taler/wallet/settings/AnastasisAuthenticationFragment.kt
 => 
anastasis-ui/src/main/java/org/gnu/anastasis/ui/authentication/AuthenticationFragment.kt
 (85%)
 rename {wallet/src/main/java/net/taler/wallet/settings => 
anastasis-ui/src/main/java/org/gnu/anastasis/ui/authentication}/SecurityQuestionFragment.kt
 (86%)
 create mode 100644 
anastasis-ui/src/main/java/org/gnu/anastasis/ui/authentication/SmsFragment.kt
 rename {wallet/src/main/java/net/taler/wallet/settings => 
anastasis-ui/src/main/java/org/gnu/anastasis/ui/authentication}/VideoFragment.kt
 (90%)
 rename wallet/src/main/java/net/taler/wallet/settings/SmsFragment.kt => 
anastasis-ui/src/main/java/org/gnu/anastasis/ui/identity/ChangeLocationFragment.kt
 (57%)
 rename 
wallet/src/main/java/net/taler/wallet/settings/AnastasisIdentityFragment.kt => 
anastasis-ui/src/main/java/org/gnu/anastasis/ui/identity/IdentityFragment.kt 
(81%)
 copy merchant-terminal/src/main/java/net/taler/merchantpos/payment/Payment.kt 
=> anastasis-ui/src/main/java/org/gnu/anastasis/ui/identity/Locations.kt (63%)
 rename {wallet => anastasis-ui}/src/main/res/anim/slide_in_right.xml (100%)
 rename {wallet => anastasis-ui}/src/main/res/anim/slide_out_left.xml (100%)
 rename {wallet => anastasis-ui}/src/main/res/drawable/ic_baseline_check.xml 
(100%)
 rename {wallet => 
anastasis-ui}/src/main/res/drawable/ic_baseline_cloud_circle.xml (100%)
 rename {wallet => 
anastasis-ui}/src/main/res/drawable/ic_baseline_cloud_download.xml (100%)
 rename {wallet => anastasis-ui}/src/main/res/drawable/ic_baseline_face.xml 
(100%)
 rename {wallet => anastasis-ui}/src/main/res/drawable/ic_baseline_lock.xml 
(100%)
 rename {wallet => anastasis-ui}/src/main/res/drawable/ic_baseline_person.xml 
(100%)
 copy cashier/src/main/res/layout/activity_main.xml => 
anastasis-ui/src/main/res/layout/activity.xml (86%)
 copy wallet/src/main/res/layout/fragment_sms.xml => 
anastasis-ui/src/main/res/layout/country_germany.xml (55%)
 copy wallet/src/main/res/layout/fragment_sms.xml => 
anastasis-ui/src/main/res/layout/country_india.xml (56%)
 copy wallet/src/main/res/layout/fragment_sms.xml => 
anastasis-ui/src/main/res/layout/country_switzerland.xml (55%)
 copy wallet/src/main/res/layout/fragment_sms.xml => 
anastasis-ui/src/main/res/layout/country_usa.xml (56%)
 rename wallet/src/main/res/layout/fragment_anastasis_authentication.xml => 
anastasis-ui/src/main/res/layout/fragment_authentication.xml (100%)
 copy wallet/src/main/res/layout/list_item_wire_fee.xml => 
anastasis-ui/src/main/res/layout/fragment_change_location.xml (50%)
 rename wallet/src/main/res/layout/fragment_anastasis_identity.xml => 
anastasis-ui/src/main/res/layout/fragment_identity.xml (77%)
 rename wallet/src/main/res/layout/fragment_anastasis_intro.xml => 
anastasis-ui/src/main/res/layout/fragment_intro.xml (100%)
 rename {wallet => 
anastasis-ui}/src/main/res/layout/fragment_security_question.xml (100%)
 rename {wallet => anastasis-ui}/src/main/res/layout/fragment_sms.xml (100%)
 rename {wallet => anastasis-ui}/src/main/res/layout/fragment_video.xml (100%)
 create mode 100644 anastasis-ui/src/main/res/navigation/anastasis.xml
 copy taler-kotlin-common/src/main/res/values/colors.xml => 
anastasis-ui/src/main/res/values/themes.xml (59%)

diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
index 26724fb..dfca6e5 100644
--- a/.idea/codeStyles/Project.xml
+++ b/.idea/codeStyles/Project.xml
@@ -1,6 +1,11 @@
 <component name="ProjectCodeStyleConfiguration">
   <code_scheme name="Project" version="173">
     <JetCodeStyleSettings>
+      <option name="PACKAGES_TO_USE_STAR_IMPORTS">
+        <value>
+          <package name="kotlinx.android.synthetic" withSubpackages="true" 
static="false" />
+        </value>
+      </option>
       <option name="NAME_COUNT_TO_USE_STAR_IMPORT" value="2147483647" />
       <option name="NAME_COUNT_TO_USE_STAR_IMPORT_FOR_MEMBERS" 
value="2147483647" />
       <option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
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/cashier/build.gradle b/anastasis-ui/build.gradle
similarity index 75%
copy from cashier/build.gradle
copy to anastasis-ui/build.gradle
index 0d06c60..0391c7c 100644
--- a/cashier/build.gradle
+++ b/anastasis-ui/build.gradle
@@ -14,10 +14,9 @@
  * GNU Taler; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
  */
 
-apply plugin: 'com.android.application'
+apply plugin: 'com.android.library'
 apply plugin: 'kotlin-android'
 apply plugin: 'kotlin-android-extensions'
-apply plugin: 'androidx.navigation.safeargs.kotlin'
 
 android {
     compileSdkVersion 29
@@ -25,12 +24,13 @@ android {
     buildToolsVersion "$build_tools_version"
 
     defaultConfig {
-        applicationId "net.taler.cashier"
         minSdkVersion 24
         targetSdkVersion 29
         versionCode 1
         versionName "0.1"
+
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+        consumerProguardFiles "consumer-rules.pro"
     }
 
     buildTypes {
@@ -40,29 +40,28 @@ android {
         }
     }
 
-    kotlinOptions {
-        jvmTarget = "1.8"
+    compileOptions {
+        sourceCompatibility = 1.8
+        targetCompatibility = 1.8
     }
 
-    lintOptions {
-        abortOnError true
-        ignoreWarnings false
-        // TODO remove once com.google.android.material fixed this
-        //      
https://github.com/material-components/material-components-android/issues/504
-        ignore "WrongConstant"
+    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'
-    implementation 'androidx.security:security-crypto:1.0.0-rc02'
-    implementation 'com.google.android.material:material:1.1.0'
 
+    // Navigation Library
     implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
     implementation "androidx.navigation:navigation-ui-ktx:$nav_version"
 
-    implementation "com.squareup.okhttp3:okhttp:3.12.12"
+    // ViewModel and LiveData
+    implementation 
"androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
 
     testImplementation 'junit:junit:4.13'
 
diff --git a/taler-kotlin-common/consumer-rules.pro 
b/anastasis-ui/consumer-rules.pro
similarity index 100%
copy from taler-kotlin-common/consumer-rules.pro
copy to anastasis-ui/consumer-rules.pro
diff --git a/cashier/proguard-rules.pro b/anastasis-ui/proguard-rules.pro
similarity index 94%
copy from cashier/proguard-rules.pro
copy to anastasis-ui/proguard-rules.pro
index f1b4245..481bb43 100644
--- a/cashier/proguard-rules.pro
+++ b/anastasis-ui/proguard-rules.pro
@@ -18,4 +18,4 @@
 
 # If you keep the line number information, uncomment this to
 # hide the original source file name.
-#-renamesourcefileattribute SourceFile
+#-renamesourcefileattribute SourceFile
\ No newline at end of file
diff --git a/taler-kotlin-common/src/main/AndroidManifest.xml 
b/anastasis-ui/src/main/AndroidManifest.xml
similarity index 75%
copy from taler-kotlin-common/src/main/AndroidManifest.xml
copy to anastasis-ui/src/main/AndroidManifest.xml
index 902ddc1..9340508 100644
--- a/taler-kotlin-common/src/main/AndroidManifest.xml
+++ b/anastasis-ui/src/main/AndroidManifest.xml
@@ -15,10 +15,14 @@
   -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android";
-    package="net.taler.common">
+    package="org.gnu.anastasis.ui">
 
-    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
-    <uses-permission android:name="android.permission.INTERNET" />
-    <uses-permission android:name="android.permission.NFC" />
+    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
+
+    <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
similarity index 83%
rename from 
wallet/src/main/java/net/taler/wallet/settings/AnastasisIntroFragment.kt
rename to 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/cashier/src/main/java/net/taler/cashier/MainActivity.kt 
b/anastasis-ui/src/main/java/org/gnu/anastasis/ui/MainActivity.kt
similarity index 55%
copy from cashier/src/main/java/net/taler/cashier/MainActivity.kt
copy to anastasis-ui/src/main/java/org/gnu/anastasis/ui/MainActivity.kt
index 0559b38..ac355c1 100644
--- a/cashier/src/main/java/net/taler/cashier/MainActivity.kt
+++ b/anastasis-ui/src/main/java/org/gnu/anastasis/ui/MainActivity.kt
@@ -14,51 +14,35 @@
  * GNU Taler; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
  */
 
-package net.taler.cashier
+package org.gnu.anastasis.ui
 
-import android.content.Intent
-import android.content.Intent.ACTION_MAIN
-import android.content.Intent.CATEGORY_HOME
-import android.content.Intent.FLAG_ACTIVITY_NEW_TASK
 import android.os.Bundle
-import androidx.activity.viewModels
 import androidx.appcompat.app.AppCompatActivity
 import androidx.navigation.NavController
 import androidx.navigation.fragment.NavHostFragment
-import kotlinx.android.synthetic.main.activity_main.*
+import androidx.navigation.ui.AppBarConfiguration
+import androidx.navigation.ui.setupWithNavController
+import kotlinx.android.synthetic.main.activity.*
+
+internal const val PERMISSION_REQUEST_CODE = 1
 
 class MainActivity : AppCompatActivity() {
 
-    private val viewModel: MainViewModel by viewModels()
     private lateinit var nav: NavController
 
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
-        setContentView(R.layout.activity_main)
-        setSupportActionBar(toolbar)
+        setContentView(R.layout.activity)
+
         val navHostFragment =
             supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as 
NavHostFragment
         nav = navHostFragment.navController
-    }
 
-    override fun onStart() {
-        super.onStart()
-        if (!viewModel.hasConfig()) {
-            nav.navigate(viewModel.configDestination)
-        }
-    }
-
-    override fun onBackPressed() {
-        if (!viewModel.hasConfig() && nav.currentDestination?.id == 
R.id.configFragment) {
-            // we are in the configuration screen and need a config to continue
-            val intent = Intent(ACTION_MAIN).apply {
-                addCategory(CATEGORY_HOME)
-                flags = FLAG_ACTIVITY_NEW_TASK
-            }
-            startActivity(intent)
-        } else {
-            super.onBackPressed()
-        }
+        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
similarity index 76%
rename from wallet/src/main/java/net/taler/wallet/settings/AnastasisManager.kt
rename to anastasis-ui/src/main/java/org/gnu/anastasis/ui/MainViewModel.kt
index 09c6a39..3b97578 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,16 @@
  * 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
+import org.gnu.anastasis.ui.identity.LOCATIONS
 
-class AnastasisManager {
+class MainViewModel(private val app: Application) : AndroidViewModel(app) {
+
+    val currentCountry = MutableLiveData(LOCATIONS[0])
 
     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
similarity index 85%
rename from 
wallet/src/main/java/net/taler/wallet/settings/AnastasisAuthenticationFragment.kt
rename to 
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
similarity index 86%
rename from 
wallet/src/main/java/net/taler/wallet/settings/SecurityQuestionFragment.kt
rename to 
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/anastasis-ui/src/main/java/org/gnu/anastasis/ui/authentication/SmsFragment.kt 
b/anastasis-ui/src/main/java/org/gnu/anastasis/ui/authentication/SmsFragment.kt
new file mode 100644
index 0000000..f20fba5
--- /dev/null
+++ 
b/anastasis-ui/src/main/java/org/gnu/anastasis/ui/authentication/SmsFragment.kt
@@ -0,0 +1,105 @@
+/*
+ * 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.authentication
+
+import android.Manifest
+import android.annotation.SuppressLint
+import android.content.pm.PackageManager.PERMISSION_GRANTED
+import android.os.Bundle
+import android.telephony.TelephonyManager
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.annotation.RequiresPermission
+import androidx.core.content.ContextCompat
+import androidx.fragment.app.Fragment
+import androidx.fragment.app.activityViewModels
+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 org.gnu.anastasis.ui.MainViewModel
+import org.gnu.anastasis.ui.PERMISSION_REQUEST_CODE
+import org.gnu.anastasis.ui.R
+
+private const val PERMISSION = Manifest.permission.READ_PHONE_STATE
+
+class SmsFragment : Fragment() {
+
+    private val viewModel: MainViewModel by activityViewModels()
+
+    override fun onCreateView(
+        inflater: LayoutInflater, container: ViewGroup?,
+        savedInstanceState: Bundle?
+    ): View? {
+        sharedElementEnterTransition = MaterialContainerTransform().apply {
+            fadeMode = FADE_MODE_CROSS
+        }
+        return inflater.inflate(R.layout.fragment_sms, container, false).apply 
{
+            transitionName = "sms_card"
+        }
+    }
+
+    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+        smsView.editText?.setOnFocusChangeListener { _, hasFocus ->
+            if (hasFocus) checkPerm()
+        }
+        saveSmsButton.setOnClickListener {
+            viewModel.smsChecked.value = true
+            findNavController().popBackStack()
+        }
+    }
+
+    private fun checkPerm() = when {
+        ContextCompat.checkSelfPermission(requireContext(), PERMISSION)
+                == PERMISSION_GRANTED -> {
+            // You can use the API that requires the permission.
+            fillPhoneNumber()
+        }
+        shouldShowRequestPermissionRationale(PERMISSION) -> {
+            // In an educational UI, explain to the user why your app requires 
this
+            // permission for a specific feature to behave as expected. In 
this UI,
+            // include a "cancel" or "no thanks" button that allows the user to
+            // continue using your app without granting the permission.
+        }
+        else -> {
+            // You can directly ask for the permission.
+            requestPermissions(arrayOf(PERMISSION), PERMISSION_REQUEST_CODE)
+        }
+    }
+
+    override fun onRequestPermissionsResult(
+        requestCode: Int,
+        permissions: Array<String>,
+        grantResults: IntArray
+    ) {
+        if (requestCode == PERMISSION_REQUEST_CODE && 
grantResults.isNotEmpty() &&
+            grantResults[0] == PERMISSION_GRANTED
+        ) checkPerm()
+    }
+
+    @SuppressLint("HardwareIds")
+    @RequiresPermission(PERMISSION)
+    private fun fillPhoneNumber() {
+        val telephonyService = 
requireContext().getSystemService(TelephonyManager::class.java)
+        telephonyService?.line1Number?.let { phoneNumber ->
+            smsView?.editText?.setText(phoneNumber)
+            smsView?.editText?.setSelection(phoneNumber.length)
+        }
+    }
+
+}
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
similarity index 90%
rename from wallet/src/main/java/net/taler/wallet/settings/VideoFragment.kt
rename to 
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/SmsFragment.kt 
b/anastasis-ui/src/main/java/org/gnu/anastasis/ui/identity/ChangeLocationFragment.kt
similarity index 57%
rename from wallet/src/main/java/net/taler/wallet/settings/SmsFragment.kt
rename to 
anastasis-ui/src/main/java/org/gnu/anastasis/ui/identity/ChangeLocationFragment.kt
index 6a617ac..5b68d36 100644
--- a/wallet/src/main/java/net/taler/wallet/settings/SmsFragment.kt
+++ 
b/anastasis-ui/src/main/java/org/gnu/anastasis/ui/identity/ChangeLocationFragment.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.os.Bundle
 import android.view.LayoutInflater
@@ -23,34 +23,40 @@ import android.view.ViewGroup
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.activityViewModels
 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 kotlinx.android.synthetic.main.fragment_change_location.*
+import org.gnu.anastasis.ui.MainViewModel
+import org.gnu.anastasis.ui.R
 
-class SmsFragment : Fragment() {
+class ChangeLocationFragment : 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?,
         savedInstanceState: Bundle?
     ): View? {
-        sharedElementEnterTransition = MaterialContainerTransform().apply {
-            fadeMode = FADE_MODE_CROSS
-        }
-        return inflater.inflate(R.layout.fragment_sms, container, false).apply 
{
-            transitionName = "sms_card"
-        }
+        return inflater.inflate(R.layout.fragment_change_location, container, 
false)
     }
 
     override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
-        saveSmsButton.setOnClickListener {
-            anastasisManager.smsChecked.value = true
-            findNavController().popBackStack()
+        super.onViewCreated(view, savedInstanceState)
+        switzerlandView.setOnClickListener {
+            changeCountry(LOCATIONS[0])
+        }
+        germanyView.setOnClickListener {
+            changeCountry(LOCATIONS[1])
+        }
+        usaView.setOnClickListener {
+            changeCountry(LOCATIONS[2])
         }
+        indiaView.setOnClickListener {
+            changeCountry(LOCATIONS[3])
+        }
+    }
+
+    private fun changeCountry(location: Location) {
+        viewModel.currentCountry.value = location
+        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
similarity index 81%
rename from 
wallet/src/main/java/net/taler/wallet/settings/AnastasisIdentityFragment.kt
rename to 
anastasis-ui/src/main/java/org/gnu/anastasis/ui/identity/IdentityFragment.kt
index 6b84223..40fa477 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
@@ -26,12 +26,14 @@ import android.view.View
 import android.view.ViewGroup
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.activityViewModels
+import androidx.lifecycle.Observer
 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 java.util.*
+import kotlinx.android.synthetic.main.fragment_identity.*
+import org.gnu.anastasis.ui.MainViewModel
+import org.gnu.anastasis.ui.R
+import java.util.Calendar
+import java.util.Date
+import java.util.Locale
 import java.util.concurrent.TimeUnit.DAYS
 
 private const val MIN_AGE = 18
@@ -44,15 +46,21 @@ 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?) {
         super.onViewCreated(view, savedInstanceState)
 
-        countryView.text = getCountryName()
+        model.currentCountry.observe(viewLifecycleOwner, Observer { country ->
+            countryView.text = country.name
+            if (stub != null) {
+                stub.layoutResource = country.layoutRes
+                stub.inflate()
+            }
+        })
         changeCountryView.setOnClickListener {
-            Snackbar.make(view, "Not implemented", 
Snackbar.LENGTH_SHORT).show()
+            
findNavController().navigate(R.id.action_nav_anastasis_identity_to_nav_change_location)
         }
         birthDateInput.editText?.setOnClickListener {
             val picker = DatePickerDialog(requireContext())
@@ -72,6 +80,7 @@ class AnastasisIdentityFragment : Fragment() {
         }
     }
 
+    @Suppress("unused")
     private fun getCountryName(): String {
         val tm = 
requireContext().getSystemService(TelephonyManager::class.java)!!
         val countryIso = if (tm.networkCountryIso.isNullOrEmpty()) {
diff --git 
a/merchant-terminal/src/main/java/net/taler/merchantpos/payment/Payment.kt 
b/anastasis-ui/src/main/java/org/gnu/anastasis/ui/identity/Locations.kt
similarity index 63%
copy from 
merchant-terminal/src/main/java/net/taler/merchantpos/payment/Payment.kt
copy to anastasis-ui/src/main/java/org/gnu/anastasis/ui/identity/Locations.kt
index b7e4a4b..13658d2 100644
--- a/merchant-terminal/src/main/java/net/taler/merchantpos/payment/Payment.kt
+++ b/anastasis-ui/src/main/java/org/gnu/anastasis/ui/identity/Locations.kt
@@ -14,16 +14,16 @@
  * GNU Taler; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
  */
 
-package net.taler.merchantpos.payment
+package org.gnu.anastasis.ui.identity
 
-import net.taler.merchantpos.order.Order
+import androidx.annotation.LayoutRes
+import org.gnu.anastasis.ui.R
 
-data class Payment(
-    val order: Order,
-    val summary: String,
-    val currency: String,
-    val orderId: String? = null,
-    val talerPayUri: String? = null,
-    val paid: Boolean = false,
-    val error: Boolean = false
+data class Location(val name: String, @LayoutRes val layoutRes: Int)
+
+val LOCATIONS = listOf(
+    Location("Switzerland", R.layout.country_switzerland),
+    Location("Germany", R.layout.country_germany),
+    Location("Unites States", R.layout.country_usa),
+    Location("India", R.layout.country_india)
 )
diff --git a/wallet/src/main/res/anim/slide_in_right.xml 
b/anastasis-ui/src/main/res/anim/slide_in_right.xml
similarity index 100%
rename from wallet/src/main/res/anim/slide_in_right.xml
rename to 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
similarity index 100%
rename from wallet/src/main/res/anim/slide_out_left.xml
rename to 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
similarity index 100%
rename from wallet/src/main/res/drawable/ic_baseline_check.xml
rename to 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
similarity index 100%
rename from wallet/src/main/res/drawable/ic_baseline_cloud_circle.xml
rename to 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
similarity index 100%
rename from wallet/src/main/res/drawable/ic_baseline_cloud_download.xml
rename to 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
similarity index 100%
rename from wallet/src/main/res/drawable/ic_baseline_face.xml
rename to 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
similarity index 100%
rename from wallet/src/main/res/drawable/ic_baseline_lock.xml
rename to 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
similarity index 100%
rename from wallet/src/main/res/drawable/ic_baseline_person.xml
rename to anastasis-ui/src/main/res/drawable/ic_baseline_person.xml
diff --git a/cashier/src/main/res/layout/activity_main.xml 
b/anastasis-ui/src/main/res/layout/activity.xml
similarity index 86%
copy from cashier/src/main/res/layout/activity_main.xml
copy to anastasis-ui/src/main/res/layout/activity.xml
index a56b647..02fe90c 100644
--- a/cashier/src/main/res/layout/activity_main.xml
+++ b/anastasis-ui/src/main/res/layout/activity.xml
@@ -30,7 +30,11 @@
             android:id="@+id/toolbar"
             style="@style/AppTheme.Toolbar"
             android:layout_width="match_parent"
-            android:layout_height="wrap_content" />
+            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>
 
@@ -45,6 +49,6 @@
         app:layout_constraintLeft_toLeftOf="parent"
         app:layout_constraintRight_toRightOf="parent"
         app:layout_constraintTop_toTopOf="parent"
-        app:navGraph="@navigation/nav_graph" />
+        app:navGraph="@navigation/anastasis" />
 
 </androidx.coordinatorlayout.widget.CoordinatorLayout>
diff --git a/wallet/src/main/res/layout/fragment_sms.xml 
b/anastasis-ui/src/main/res/layout/country_germany.xml
similarity index 55%
copy from wallet/src/main/res/layout/fragment_sms.xml
copy to anastasis-ui/src/main/res/layout/country_germany.xml
index f855d38..5b54843 100644
--- a/wallet/src/main/res/layout/fragment_sms.xml
+++ b/anastasis-ui/src/main/res/layout/country_germany.xml
@@ -14,38 +14,41 @@
   ~ GNU Taler; see the file COPYING.  If not, see 
<http://www.gnu.org/licenses/>
   -->
 
-<androidx.constraintlayout.widget.ConstraintLayout 
xmlns:android="http://schemas.android.com/apk/res/android";
-    xmlns:app="http://schemas.android.com/apk/res-auto";
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android";
     android:layout_width="match_parent"
-    android:layout_height="match_parent">
+    android:layout_height="match_parent"
+    android:padding="16dp"
+    android:orientation="vertical">
 
     <com.google.android.material.textfield.TextInputLayout
-        android:id="@+id/smsView"
+        android:id="@+id/idNumberInput"
         
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense"
         android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_margin="16dp"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent">
+        android:layout_height="wrap_content">
 
         <com.google.android.material.textfield.TextInputEditText
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:hint="Phone Number"
-            android:inputType="phone" />
+            android:hint="Passport number"
+            android:inputType="number"
+            android:maxLength="13" />
 
     </com.google.android.material.textfield.TextInputLayout>
 
-    <Button
-        android:id="@+id/saveSmsButton"
-        android:layout_width="wrap_content"
+    <com.google.android.material.textfield.TextInputLayout
+        android:id="@+id/taxIdInput"
+        
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense"
+        android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:layout_margin="16dp"
-        android:backgroundTint="@color/green"
-        android:drawableTint="?attr/colorOnPrimarySurface"
-        android:text="Save"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent" />
-
-</androidx.constraintlayout.widget.ConstraintLayout>
+        android:layout_marginTop="16dp">
+
+        <com.google.android.material.textfield.TextInputEditText
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:hint="Krankenversicherungsnummer"
+            android:inputType="number"
+            android:maxLength="13" />
+
+    </com.google.android.material.textfield.TextInputLayout>
+
+</LinearLayout>
diff --git a/wallet/src/main/res/layout/fragment_sms.xml 
b/anastasis-ui/src/main/res/layout/country_india.xml
similarity index 56%
copy from wallet/src/main/res/layout/fragment_sms.xml
copy to anastasis-ui/src/main/res/layout/country_india.xml
index f855d38..a12616e 100644
--- a/wallet/src/main/res/layout/fragment_sms.xml
+++ b/anastasis-ui/src/main/res/layout/country_india.xml
@@ -14,38 +14,25 @@
   ~ GNU Taler; see the file COPYING.  If not, see 
<http://www.gnu.org/licenses/>
   -->
 
-<androidx.constraintlayout.widget.ConstraintLayout 
xmlns:android="http://schemas.android.com/apk/res/android";
-    xmlns:app="http://schemas.android.com/apk/res-auto";
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android";
     android:layout_width="match_parent"
-    android:layout_height="match_parent">
+    android:layout_height="match_parent"
+    android:orientation="vertical">
 
     <com.google.android.material.textfield.TextInputLayout
-        android:id="@+id/smsView"
+        android:id="@+id/idNumberInput"
         
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:layout_margin="16dp"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent">
+        android:layout_margin="16dp">
 
         <com.google.android.material.textfield.TextInputEditText
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:hint="Phone Number"
-            android:inputType="phone" />
+            android:hint="Aadhaar number"
+            android:inputType="number"
+            android:maxLength="13" />
 
     </com.google.android.material.textfield.TextInputLayout>
 
-    <Button
-        android:id="@+id/saveSmsButton"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_margin="16dp"
-        android:backgroundTint="@color/green"
-        android:drawableTint="?attr/colorOnPrimarySurface"
-        android:text="Save"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent" />
-
-</androidx.constraintlayout.widget.ConstraintLayout>
+</LinearLayout>
diff --git a/wallet/src/main/res/layout/fragment_sms.xml 
b/anastasis-ui/src/main/res/layout/country_switzerland.xml
similarity index 55%
copy from wallet/src/main/res/layout/fragment_sms.xml
copy to anastasis-ui/src/main/res/layout/country_switzerland.xml
index f855d38..0fc71fc 100644
--- a/wallet/src/main/res/layout/fragment_sms.xml
+++ b/anastasis-ui/src/main/res/layout/country_switzerland.xml
@@ -14,38 +14,41 @@
   ~ GNU Taler; see the file COPYING.  If not, see 
<http://www.gnu.org/licenses/>
   -->
 
-<androidx.constraintlayout.widget.ConstraintLayout 
xmlns:android="http://schemas.android.com/apk/res/android";
-    xmlns:app="http://schemas.android.com/apk/res-auto";
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android";
     android:layout_width="match_parent"
-    android:layout_height="match_parent">
+    android:layout_height="match_parent"
+    android:padding="16dp"
+    android:orientation="vertical">
 
     <com.google.android.material.textfield.TextInputLayout
-        android:id="@+id/smsView"
+        android:id="@+id/idNumberInput"
         
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense"
         android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_margin="16dp"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent">
+        android:layout_height="wrap_content">
 
         <com.google.android.material.textfield.TextInputEditText
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:hint="Phone Number"
-            android:inputType="phone" />
+            android:hint="AHV number"
+            android:inputType="number"
+            android:maxLength="13" />
 
     </com.google.android.material.textfield.TextInputLayout>
 
-    <Button
-        android:id="@+id/saveSmsButton"
-        android:layout_width="wrap_content"
+    <com.google.android.material.textfield.TextInputLayout
+        android:id="@+id/taxIdInput"
+        
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense"
+        android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:layout_margin="16dp"
-        android:backgroundTint="@color/green"
-        android:drawableTint="?attr/colorOnPrimarySurface"
-        android:text="Save"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent" />
-
-</androidx.constraintlayout.widget.ConstraintLayout>
+        android:layout_marginTop="16dp">
+
+        <com.google.android.material.textfield.TextInputEditText
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:hint="Krankenversicherungsnummer"
+            android:inputType="number"
+            android:maxLength="13" />
+
+    </com.google.android.material.textfield.TextInputLayout>
+
+</LinearLayout>
diff --git a/wallet/src/main/res/layout/fragment_sms.xml 
b/anastasis-ui/src/main/res/layout/country_usa.xml
similarity index 56%
copy from wallet/src/main/res/layout/fragment_sms.xml
copy to anastasis-ui/src/main/res/layout/country_usa.xml
index f855d38..f9762e6 100644
--- a/wallet/src/main/res/layout/fragment_sms.xml
+++ b/anastasis-ui/src/main/res/layout/country_usa.xml
@@ -14,38 +14,25 @@
   ~ GNU Taler; see the file COPYING.  If not, see 
<http://www.gnu.org/licenses/>
   -->
 
-<androidx.constraintlayout.widget.ConstraintLayout 
xmlns:android="http://schemas.android.com/apk/res/android";
-    xmlns:app="http://schemas.android.com/apk/res-auto";
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android";
     android:layout_width="match_parent"
-    android:layout_height="match_parent">
+    android:layout_height="match_parent"
+    android:orientation="vertical">
 
     <com.google.android.material.textfield.TextInputLayout
-        android:id="@+id/smsView"
+        android:id="@+id/idNumberInput"
         
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:layout_margin="16dp"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent">
+        android:layout_margin="16dp">
 
         <com.google.android.material.textfield.TextInputEditText
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:hint="Phone Number"
-            android:inputType="phone" />
+            android:hint="Social security number"
+            android:inputType="number"
+            android:maxLength="13" />
 
     </com.google.android.material.textfield.TextInputLayout>
 
-    <Button
-        android:id="@+id/saveSmsButton"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_margin="16dp"
-        android:backgroundTint="@color/green"
-        android:drawableTint="?attr/colorOnPrimarySurface"
-        android:text="Save"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent" />
-
-</androidx.constraintlayout.widget.ConstraintLayout>
+</LinearLayout>
diff --git a/wallet/src/main/res/layout/fragment_anastasis_authentication.xml 
b/anastasis-ui/src/main/res/layout/fragment_authentication.xml
similarity index 100%
rename from wallet/src/main/res/layout/fragment_anastasis_authentication.xml
rename to anastasis-ui/src/main/res/layout/fragment_authentication.xml
diff --git a/wallet/src/main/res/layout/list_item_wire_fee.xml 
b/anastasis-ui/src/main/res/layout/fragment_change_location.xml
similarity index 50%
copy from wallet/src/main/res/layout/list_item_wire_fee.xml
copy to anastasis-ui/src/main/res/layout/fragment_change_location.xml
index 92ede8b..93c919f 100644
--- a/wallet/src/main/res/layout/list_item_wire_fee.xml
+++ b/anastasis-ui/src/main/res/layout/fragment_change_location.xml
@@ -16,42 +16,59 @@
 
 <androidx.constraintlayout.widget.ConstraintLayout 
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="wrap_content">
+    android:layout_height="match_parent">
 
     <TextView
-        android:id="@+id/validityView"
+        android:id="@+id/usaView"
         android:layout_width="0dp"
         android:layout_height="wrap_content"
-        app:layout_constrainedWidth="true"
+        android:layout_marginTop="16dp"
+        android:background="?selectableItemBackground"
+        android:padding="16dp"
+        android:text="United States"
+        android:textAppearance="@style/TextAppearance.AppCompat.Medium"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent"
-        tools:text="Timespan: Jan 1 2020 - Dec 31 2020" />
+        app:layout_constraintTop_toTopOf="parent" />
 
     <TextView
-        android:id="@+id/wireFeeView"
+        android:id="@+id/germanyView"
         android:layout_width="0dp"
         android:layout_height="wrap_content"
-        android:layout_marginStart="16dp"
-        android:layout_marginTop="4dp"
+        android:layout_marginTop="16dp"
+        android:background="?selectableItemBackground"
+        android:padding="16dp"
+        android:text="Germany"
+        android:textAppearance="@style/TextAppearance.AppCompat.Medium"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toBottomOf="@+id/validityView"
-        tools:text="Wire Fee: 0.01 TESTKUDOS" />
+        app:layout_constraintTop_toBottomOf="@+id/usaView" />
 
     <TextView
-        android:id="@+id/closingFeeView"
+        android:id="@+id/switzerlandView"
         android:layout_width="0dp"
         android:layout_height="wrap_content"
-        android:layout_marginStart="16dp"
-        android:layout_marginTop="4dp"
-        android:layout_marginBottom="8dp"
-        app:layout_constraintBottom_toBottomOf="parent"
+        android:layout_marginTop="16dp"
+        android:background="?selectableItemBackground"
+        android:padding="16dp"
+        android:text="Switzerland"
+        android:textAppearance="@style/TextAppearance.AppCompat.Medium"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toBottomOf="@+id/wireFeeView"
-        tools:text="Closing Fee: 0.01 TESTKUDOS" />
+        app:layout_constraintTop_toBottomOf="@+id/germanyView" />
+
+    <TextView
+        android:id="@+id/indiaView"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="16dp"
+        android:background="?selectableItemBackground"
+        android:padding="16dp"
+        android:text="India"
+        android:textAppearance="@style/TextAppearance.AppCompat.Medium"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/switzerlandView" />
 
 </androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/wallet/src/main/res/layout/fragment_anastasis_identity.xml 
b/anastasis-ui/src/main/res/layout/fragment_identity.xml
similarity index 77%
rename from wallet/src/main/res/layout/fragment_anastasis_identity.xml
rename to anastasis-ui/src/main/res/layout/fragment_identity.xml
index e24be31..072414d 100644
--- a/wallet/src/main/res/layout/fragment_anastasis_identity.xml
+++ b/anastasis-ui/src/main/res/layout/fragment_identity.xml
@@ -49,7 +49,7 @@
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_margin="16dp"
-            android:text="Detected Country:"
+            android:text="Country:"
             app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toBottomOf="@+id/identityIntro" />
 
@@ -87,8 +87,8 @@
             <com.google.android.material.textfield.TextInputEditText
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:inputType="textPersonName|textCapWords"
-                android:hint="Name" />
+                android:hint="Name"
+                android:inputType="textPersonName|textCapWords" />
 
         </com.google.android.material.textfield.TextInputLayout>
 
@@ -105,8 +105,8 @@
             <com.google.android.material.textfield.TextInputEditText
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:inputType="text|textCapWords"
-                android:hint="Place of birth" />
+                android:hint="Place of birth"
+                android:inputType="text|textCapWords" />
 
         </com.google.android.material.textfield.TextInputLayout>
 
@@ -129,46 +129,14 @@
 
         </com.google.android.material.textfield.TextInputLayout>
 
-        <com.google.android.material.textfield.TextInputLayout
-            android:id="@+id/idNumberInput"
-            
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_margin="16dp"
-            app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toBottomOf="@+id/birthDateInput"
-            app:layout_constraintVertical_bias="0.0">
-
-            <com.google.android.material.textfield.TextInputEditText
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:hint="AHV number"
-                android:inputType="number"
-                android:maxLength="13" />
-
-        </com.google.android.material.textfield.TextInputLayout>
-
-        <com.google.android.material.textfield.TextInputLayout
-            android:id="@+id/taxIdInput"
-            
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense"
-            android:layout_width="match_parent"
+        <ViewStub
+            android:id="@+id/stub"
+            android:layout_width="0dp"
             android:layout_height="wrap_content"
-            android:layout_margin="16dp"
-            app:layout_constraintBottom_toTopOf="@+id/createIdentifierButton"
+            android:layout="@layout/country_switzerland"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toBottomOf="@+id/idNumberInput"
-            app:layout_constraintVertical_bias="0.0">
-
-            <com.google.android.material.textfield.TextInputEditText
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:hint="Tax ID number"
-                android:inputType="number"
-                android:maxLength="13" />
-
-        </com.google.android.material.textfield.TextInputLayout>
+            app:layout_constraintTop_toBottomOf="@+id/birthDateInput" />
 
         <Button
             android:id="@+id/createIdentifierButton"
diff --git a/wallet/src/main/res/layout/fragment_anastasis_intro.xml 
b/anastasis-ui/src/main/res/layout/fragment_intro.xml
similarity index 100%
rename from wallet/src/main/res/layout/fragment_anastasis_intro.xml
rename to 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
similarity index 100%
rename from wallet/src/main/res/layout/fragment_security_question.xml
rename to 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
similarity index 100%
rename from wallet/src/main/res/layout/fragment_sms.xml
rename to 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
similarity index 100%
rename from wallet/src/main/res/layout/fragment_video.xml
rename to 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..efdddca
--- /dev/null
+++ b/anastasis-ui/src/main/res/navigation/anastasis.xml
@@ -0,0 +1,96 @@
+<?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" />
+        <action
+            
android:id="@+id/action_nav_anastasis_identity_to_nav_change_location"
+            app:destination="@id/nav_change_location"
+            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_change_location"
+        android:name="org.gnu.anastasis.ui.identity.ChangeLocationFragment"
+        android:label="Select country"
+        tools:layout="@layout/fragment_change_location"/>
+
+    <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/taler-kotlin-common/src/main/res/values/colors.xml 
b/anastasis-ui/src/main/res/values/themes.xml
similarity index 59%
copy from taler-kotlin-common/src/main/res/values/colors.xml
copy to anastasis-ui/src/main/res/values/themes.xml
index c916442..e6d3422 100644
--- a/taler-kotlin-common/src/main/res/values/colors.xml
+++ b/anastasis-ui/src/main/res/values/themes.xml
@@ -1,4 +1,3 @@
-<?xml version="1.0" encoding="utf-8"?>
 <!--
   ~ This file is part of GNU Taler
   ~ (C) 2020 Taler Systems S.A.
@@ -16,9 +15,18 @@
   -->
 
 <resources>
-    <color name="highlightedBackground">#E4E4E4</color>
-    <color name="selectedBackground">#DADADA</color>
 
-    <color name="green">#388E3C</color>
-    <color name="red">#C62828</color>
+    <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>
 

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]