summaryrefslogtreecommitdiff
path: root/app/src
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2019-12-09 19:59:26 +0100
committerFlorian Dold <florian.dold@gmail.com>2019-12-09 19:59:26 +0100
commit9c160ac939ea20d4ed77acf8bc75cd9f60e82bb8 (patch)
treeb87b45731409cd223ac4bbc8574d9bd522718198 /app/src
parentb39914ed445bdde1a0204b2cbf883f23a5132832 (diff)
downloadwallet-android-9c160ac939ea20d4ed77acf8bc75cd9f60e82bb8.tar.gz
wallet-android-9c160ac939ea20d4ed77acf8bc75cd9f60e82bb8.tar.bz2
wallet-android-9c160ac939ea20d4ed77acf8bc75cd9f60e82bb8.zip
tos / branding
Diffstat (limited to 'app/src')
-rw-r--r--app/src/main/ic_launcher-web.pngbin0 -> 14129 bytes
-rw-r--r--app/src/main/java/net/taler/wallet/PromptWithdraw.kt10
-rw-r--r--app/src/main/java/net/taler/wallet/ReviewExchangeTOS.kt76
-rw-r--r--app/src/main/java/net/taler/wallet/WalletViewModel.kt98
-rw-r--r--app/src/main/java/net/taler/wallet/backend/WalletBackendService.kt2
-rw-r--r--app/src/main/res/drawable-v24/ic_launcher_foreground.xml34
-rw-r--r--app/src/main/res/drawable/ic_launcher_background.xml74
-rw-r--r--app/src/main/res/drawable/ic_launcher_foreground.xml51
-rw-r--r--app/src/main/res/drawable/ic_logo_taler.xml48
-rw-r--r--app/src/main/res/drawable/side_nav_bar.xml5
-rw-r--r--app/src/main/res/layout/fragment_review_exchange_tos.xml56
-rw-r--r--app/src/main/res/layout/fragment_settings.xml4
-rw-r--r--app/src/main/res/layout/nav_header_main.xml7
-rw-r--r--app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml2
-rw-r--r--app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml2
-rw-r--r--app/src/main/res/mipmap-hdpi/ic_launcher.pngbin2963 -> 1611 bytes
-rw-r--r--app/src/main/res/mipmap-hdpi/ic_launcher_round.pngbin4905 -> 2898 bytes
-rw-r--r--app/src/main/res/mipmap-mdpi/ic_launcher.pngbin2060 -> 1101 bytes
-rw-r--r--app/src/main/res/mipmap-mdpi/ic_launcher_round.pngbin2783 -> 1836 bytes
-rw-r--r--app/src/main/res/mipmap-xhdpi/ic_launcher.pngbin4490 -> 2314 bytes
-rw-r--r--app/src/main/res/mipmap-xhdpi/ic_launcher_round.pngbin6895 -> 4158 bytes
-rw-r--r--app/src/main/res/mipmap-xxhdpi/ic_launcher.pngbin6387 -> 3405 bytes
-rw-r--r--app/src/main/res/mipmap-xxhdpi/ic_launcher_round.pngbin10413 -> 6328 bytes
-rw-r--r--app/src/main/res/mipmap-xxxhdpi/ic_launcher.pngbin9128 -> 4592 bytes
-rw-r--r--app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.pngbin15132 -> 8828 bytes
-rw-r--r--app/src/main/res/navigation/nav_graph.xml14
-rw-r--r--app/src/main/res/values/colors.xml6
-rw-r--r--app/src/main/res/values/ic_launcher_background.xml4
-rw-r--r--app/src/main/res/values/strings.xml5
29 files changed, 364 insertions, 134 deletions
diff --git a/app/src/main/ic_launcher-web.png b/app/src/main/ic_launcher-web.png
new file mode 100644
index 0000000..f0f6be7
--- /dev/null
+++ b/app/src/main/ic_launcher-web.png
Binary files differ
diff --git a/app/src/main/java/net/taler/wallet/PromptWithdraw.kt b/app/src/main/java/net/taler/wallet/PromptWithdraw.kt
index 785da42..57965f5 100644
--- a/app/src/main/java/net/taler/wallet/PromptWithdraw.kt
+++ b/app/src/main/java/net/taler/wallet/PromptWithdraw.kt
@@ -62,6 +62,10 @@ class PromptWithdraw : Fragment() {
is WithdrawStatus.None -> {
}
+ is WithdrawStatus.TermsOfServiceReviewRequired -> {
+ val navController = requireActivity().findNavController(R.id.nav_host_fragment)
+ navController.navigate(R.id.action_promptWithdraw_to_reviewExchangeTOS)
+ }
else -> {
val bar = Snackbar.make(view, "Bug: Unexpected result", Snackbar.LENGTH_SHORT)
bar.show()
@@ -88,6 +92,12 @@ class PromptWithdraw : Fragment() {
showWithdrawStatus(view, it)
})
+ view.findViewById<Button>(R.id.button_cancel_withdraw).setOnClickListener {
+ val navController = requireActivity().findNavController(R.id.nav_host_fragment)
+ model.cancelCurrentWithdraw()
+ navController.navigateUp()
+ }
+
view.findViewById<Button>(R.id.button_confirm_withdraw).setOnClickListener {
val status = this.model.withdrawStatus.value
if (status !is WithdrawStatus.ReceivedDetails) {
diff --git a/app/src/main/java/net/taler/wallet/ReviewExchangeTOS.kt b/app/src/main/java/net/taler/wallet/ReviewExchangeTOS.kt
new file mode 100644
index 0000000..542b855
--- /dev/null
+++ b/app/src/main/java/net/taler/wallet/ReviewExchangeTOS.kt
@@ -0,0 +1,76 @@
+package net.taler.wallet
+
+
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.Button
+import android.widget.CheckBox
+import android.widget.CompoundButton
+import android.widget.TextView
+import androidx.lifecycle.Observer
+import androidx.lifecycle.ViewModelProviders
+import androidx.navigation.findNavController
+
+/**
+ * A simple [Fragment] subclass.
+ */
+class ReviewExchangeTOS : Fragment() {
+
+ private lateinit var acceptButton: Button
+ private lateinit var model: WalletViewModel
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+
+ model = activity?.run {
+ ViewModelProviders.of(this)[WalletViewModel::class.java]
+ } ?: throw Exception("Invalid Activity")
+ }
+
+ private fun onAcceptCheck(checked: Boolean) {
+ acceptButton.isEnabled = checked
+ }
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ // Inflate the layout for this fragment
+ val view = inflater.inflate(R.layout.fragment_review_exchange_tos, container, false)
+ val navController = requireActivity().findNavController(R.id.nav_host_fragment)
+ view.findViewById<Button>(R.id.button_tos_abort).setOnClickListener {
+ model.cancelCurrentWithdraw()
+ navController.navigateUp()
+ }
+ acceptButton = view.findViewById<Button>(R.id.button_tos_accept)
+ acceptButton.setOnClickListener {
+ model.acceptCurrentTermsOfService()
+ }
+ val checkbox = view.findViewById<CheckBox>(R.id.checkBox_accept_tos)
+ checkbox.isChecked = false
+ checkbox.setOnCheckedChangeListener { buttonView, isChecked ->
+ onAcceptCheck(isChecked)
+ }
+ onAcceptCheck(false)
+ val tosTextField = view.findViewById<TextView>(R.id.text_tos)
+ model.withdrawStatus.observe(this, Observer {
+ when (it) {
+ is WithdrawStatus.TermsOfServiceReviewRequired -> {
+ tosTextField.text = it.tosText
+ }
+ is WithdrawStatus.Loading -> {
+ navController.navigate(R.id.action_reviewExchangeTOS_to_promptWithdraw)
+ }
+ is WithdrawStatus.ReceivedDetails -> {
+ navController.navigate(R.id.action_reviewExchangeTOS_to_promptWithdraw)
+ }
+ else -> {
+ }
+ }
+ })
+ return view
+ }
+}
diff --git a/app/src/main/java/net/taler/wallet/WalletViewModel.kt b/app/src/main/java/net/taler/wallet/WalletViewModel.kt
index f8acc2d..fd53470 100644
--- a/app/src/main/java/net/taler/wallet/WalletViewModel.kt
+++ b/app/src/main/java/net/taler/wallet/WalletViewModel.kt
@@ -61,6 +61,12 @@ open class PayStatus {
open class WithdrawStatus {
class None : WithdrawStatus()
data class Loading(val talerWithdrawUri: String) : WithdrawStatus()
+ data class TermsOfServiceReviewRequired(
+ val talerWithdrawUri: String,
+ val exchangeBaseUrl: String,
+ val tosText: String,
+ val tosEtag: String
+ ) : WithdrawStatus()
class Success : WithdrawStatus()
data class ReceivedDetails(
val talerWithdrawUri: String,
@@ -118,6 +124,7 @@ class WalletViewModel(val app: Application) : AndroidViewModel(app) {
private var activeGetPending = 0
private var currentPayRequestId = 0
+ private var currentWithdrawRequestId = 0
private val walletBackendApi = WalletBackendApi(app)
@@ -299,22 +306,71 @@ class WalletViewModel(val app: Application) : AndroidViewModel(app) {
withdrawStatus.value = WithdrawStatus.Loading(talerWithdrawUri)
- walletBackendApi.sendRequest("getWithdrawalInfo", args) { result ->
- Log.v(TAG, "got getWithdrawalInfo result")
+ this.currentWithdrawRequestId++
+ val myWithdrawRequestId = this.currentWithdrawRequestId
+
+ walletBackendApi.sendRequest("getWithdrawDetailsForUri", args) { result ->
+ if (myWithdrawRequestId != this.currentWithdrawRequestId) {
+ return@sendRequest
+ }
+ Log.v(TAG, "got getWithdrawDetailsForUri result")
val status = withdrawStatus.value
if (status !is WithdrawStatus.Loading) {
Log.v(TAG, "ignoring withdrawal info result, not loading.")
return@sendRequest
}
- val suggestedExchange = result.getString("suggestedExchange")
- val amount = Amount.fromJson(result.getJSONObject("amount"))
- withdrawStatus.postValue(
- WithdrawStatus.ReceivedDetails(
- status.talerWithdrawUri,
- amount,
- suggestedExchange
+ val wi = result.getJSONObject("bankWithdrawDetails")
+ val suggestedExchange = wi.getString("suggestedExchange")
+ // We just use the suggested exchange, in the future there will be
+ // a selection dialog.
+ getWithdrawalInfoWithExchange(talerWithdrawUri, suggestedExchange)
+ }
+ }
+
+ private fun getWithdrawalInfoWithExchange(talerWithdrawUri: String, selectedExchange: String) {
+ val args = JSONObject()
+ args.put("talerWithdrawUri", talerWithdrawUri)
+ args.put("selectedExchange", selectedExchange)
+
+ this.currentWithdrawRequestId++
+ val myWithdrawRequestId = this.currentWithdrawRequestId
+
+ walletBackendApi.sendRequest("getWithdrawDetailsForUri", args) { result ->
+ if (myWithdrawRequestId != this.currentWithdrawRequestId) {
+ return@sendRequest
+ }
+ Log.v(TAG, "got getWithdrawDetailsForUri result (with exchange details)")
+ val status = withdrawStatus.value
+ if (status !is WithdrawStatus.Loading) {
+ Log.v(TAG, "ignoring withdrawal info result, not loading.")
+ return@sendRequest
+ }
+ val ei = result.getJSONObject("exchangeWithdrawDetails")
+ val termsOfServiceAccepted = ei.getBoolean("termsOfServiceAccepted")
+ if (!termsOfServiceAccepted) {
+ val exchange = ei.getJSONObject("exchangeInfo")
+ val tosText = exchange.getString("termsOfServiceText")
+ val tosEtag = exchange.getString("termsOfServiceLastEtag")
+ withdrawStatus.postValue(
+ WithdrawStatus.TermsOfServiceReviewRequired(
+ status.talerWithdrawUri,
+ selectedExchange,
+ tosText,
+ tosEtag
+ )
)
- )
+ } else {
+ val wi = result.getJSONObject("bankWithdrawDetails")
+ val suggestedExchange = wi.getString("suggestedExchange")
+ val amount = Amount.fromJson(wi.getJSONObject("amount"))
+ withdrawStatus.postValue(
+ WithdrawStatus.ReceivedDetails(
+ status.talerWithdrawUri,
+ amount,
+ suggestedExchange
+ )
+ )
+ }
}
}
@@ -343,4 +399,26 @@ class WalletViewModel(val app: Application) : AndroidViewModel(app) {
walletBackendApi.destroy()
super.onCleared()
}
+
+ /**
+ * Accept the currently displayed terms of service.
+ */
+ fun acceptCurrentTermsOfService() {
+ when (val s = withdrawStatus.value) {
+ is WithdrawStatus.TermsOfServiceReviewRequired -> {
+ val args = JSONObject()
+ args.put("exchangeBaseUrl", s.exchangeBaseUrl)
+ args.put("etag", s.tosEtag)
+ walletBackendApi.sendRequest("acceptExchangeTermsOfService", args) {
+ // Try withdrawing again with accepted ToS
+ getWithdrawalInfo(s.talerWithdrawUri)
+ }
+ }
+ }
+ }
+
+ fun cancelCurrentWithdraw() {
+ currentWithdrawRequestId++
+ withdrawStatus.value = WithdrawStatus.None()
+ }
}
diff --git a/app/src/main/java/net/taler/wallet/backend/WalletBackendService.kt b/app/src/main/java/net/taler/wallet/backend/WalletBackendService.kt
index 26420a1..b387c9c 100644
--- a/app/src/main/java/net/taler/wallet/backend/WalletBackendService.kt
+++ b/app/src/main/java/net/taler/wallet/backend/WalletBackendService.kt
@@ -63,7 +63,7 @@ class WalletBackendService : Service() {
msg.put("operation", "init")
val args = JSONObject()
msg.put("args", args)
- args.put("persistentStoragePath", "${application.filesDir}/talerwalletdb-v27.json")
+ args.put("persistentStoragePath", "${application.filesDir}/talerwalletdb-v29.json")
akono.sendMessage(msg.toString())
}
diff --git a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
deleted file mode 100644
index 6348baa..0000000
--- a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:aapt="http://schemas.android.com/aapt"
- android:width="108dp"
- android:height="108dp"
- android:viewportHeight="108"
- android:viewportWidth="108">
- <path
- android:fillType="evenOdd"
- android:pathData="M32,64C32,64 38.39,52.99 44.13,50.95C51.37,48.37 70.14,49.57 70.14,49.57L108.26,87.69L108,109.01L75.97,107.97L32,64Z"
- android:strokeColor="#00000000"
- android:strokeWidth="1">
- <aapt:attr name="android:fillColor">
- <gradient
- android:endX="78.5885"
- android:endY="90.9159"
- android:startX="48.7653"
- android:startY="61.0927"
- android:type="linear">
- <item
- android:color="#44000000"
- android:offset="0.0"/>
- <item
- android:color="#00000000"
- android:offset="1.0"/>
- </gradient>
- </aapt:attr>
- </path>
- <path
- android:fillColor="#FFFFFF"
- android:fillType="nonZero"
- android:pathData="M66.94,46.02L66.94,46.02C72.44,50.07 76,56.61 76,64L32,64C32,56.61 35.56,50.11 40.98,46.06L36.18,41.19C35.45,40.45 35.45,39.3 36.18,38.56C36.91,37.81 38.05,37.81 38.78,38.56L44.25,44.05C47.18,42.57 50.48,41.71 54,41.71C57.48,41.71 60.78,42.57 63.68,44.05L69.11,38.56C69.84,37.81 70.98,37.81 71.71,38.56C72.44,39.3 72.44,40.45 71.71,41.19L66.94,46.02ZM62.94,56.92C64.08,56.92 65,56.01 65,54.88C65,53.76 64.08,52.85 62.94,52.85C61.8,52.85 60.88,53.76 60.88,54.88C60.88,56.01 61.8,56.92 62.94,56.92ZM45.06,56.92C46.2,56.92 47.13,56.01 47.13,54.88C47.13,53.76 46.2,52.85 45.06,52.85C43.92,52.85 43,53.76 43,54.88C43,56.01 43.92,56.92 45.06,56.92Z"
- android:strokeColor="#00000000"
- android:strokeWidth="1"/>
-</vector>
diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml
deleted file mode 100644
index a0ad202..0000000
--- a/app/src/main/res/drawable/ic_launcher_background.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<vector
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:height="108dp"
- android:width="108dp"
- android:viewportHeight="108"
- android:viewportWidth="108">
- <path android:fillColor="#008577"
- android:pathData="M0,0h108v108h-108z"/>
- <path android:fillColor="#00000000" android:pathData="M9,0L9,108"
- android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
- <path android:fillColor="#00000000" android:pathData="M19,0L19,108"
- android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
- <path android:fillColor="#00000000" android:pathData="M29,0L29,108"
- android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
- <path android:fillColor="#00000000" android:pathData="M39,0L39,108"
- android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
- <path android:fillColor="#00000000" android:pathData="M49,0L49,108"
- android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
- <path android:fillColor="#00000000" android:pathData="M59,0L59,108"
- android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
- <path android:fillColor="#00000000" android:pathData="M69,0L69,108"
- android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
- <path android:fillColor="#00000000" android:pathData="M79,0L79,108"
- android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
- <path android:fillColor="#00000000" android:pathData="M89,0L89,108"
- android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
- <path android:fillColor="#00000000" android:pathData="M99,0L99,108"
- android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
- <path android:fillColor="#00000000" android:pathData="M0,9L108,9"
- android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
- <path android:fillColor="#00000000" android:pathData="M0,19L108,19"
- android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
- <path android:fillColor="#00000000" android:pathData="M0,29L108,29"
- android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
- <path android:fillColor="#00000000" android:pathData="M0,39L108,39"
- android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
- <path android:fillColor="#00000000" android:pathData="M0,49L108,49"
- android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
- <path android:fillColor="#00000000" android:pathData="M0,59L108,59"
- android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
- <path android:fillColor="#00000000" android:pathData="M0,69L108,69"
- android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
- <path android:fillColor="#00000000" android:pathData="M0,79L108,79"
- android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
- <path android:fillColor="#00000000" android:pathData="M0,89L108,89"
- android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
- <path android:fillColor="#00000000" android:pathData="M0,99L108,99"
- android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
- <path android:fillColor="#00000000" android:pathData="M19,29L89,29"
- android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
- <path android:fillColor="#00000000" android:pathData="M19,39L89,39"
- android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
- <path android:fillColor="#00000000" android:pathData="M19,49L89,49"
- android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
- <path android:fillColor="#00000000" android:pathData="M19,59L89,59"
- android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
- <path android:fillColor="#00000000" android:pathData="M19,69L89,69"
- android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
- <path android:fillColor="#00000000" android:pathData="M19,79L89,79"
- android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
- <path android:fillColor="#00000000" android:pathData="M29,19L29,89"
- android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
- <path android:fillColor="#00000000" android:pathData="M39,19L39,89"
- android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
- <path android:fillColor="#00000000" android:pathData="M49,19L49,89"
- android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
- <path android:fillColor="#00000000" android:pathData="M59,19L59,89"
- android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
- <path android:fillColor="#00000000" android:pathData="M69,19L69,89"
- android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
- <path android:fillColor="#00000000" android:pathData="M79,19L79,89"
- android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
-</vector>
diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml
new file mode 100644
index 0000000..4ab24a4
--- /dev/null
+++ b/app/src/main/res/drawable/ic_launcher_foreground.xml
@@ -0,0 +1,51 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="108dp"
+ android:height="108dp"
+ android:viewportWidth="237.28813"
+ android:viewportHeight="237.2881">
+ <group android:translateX="48.64407"
+ android:translateY="48.644062">
+ <path
+ android:pathData="m31.669,82.748h-4.702v-19.684h-6.041v-4.112h16.783v4.112L31.669,63.064Z"
+ android:strokeWidth="0.81604069"
+ android:fillColor="#ffffff"
+ android:strokeColor="#00000000"
+ android:fillAlpha="1"/>
+ <path
+ android:pathData="m50.301,74.364q-2.614,0 -3.65,0.669 -1.036,0.669 -1.036,2.295 0,1.211 0.717,1.929 0.717,0.717 1.944,0.717 1.849,0 2.869,-1.387 1.02,-1.403 1.02,-3.905v-0.319zM56.804,72.563v10.185h-4.638v-1.992q-0.845,1.179 -2.168,1.817 -1.323,0.638 -2.917,0.638 -3.044,0 -4.75,-1.61 -1.689,-1.61 -1.689,-4.495 0,-3.124 2.024,-4.606 2.024,-1.498 6.264,-1.498h3.235v-0.781q0,-1.132 -0.829,-1.705 -0.813,-0.59 -2.407,-0.59 -1.674,0 -3.251,0.43 -1.562,0.414 -3.267,1.339v-3.985q1.546,-0.638 3.14,-0.94 1.594,-0.303 3.379,-0.303 4.351,0 6.104,1.769 1.769,1.769 1.769,6.328z"
+ android:strokeWidth="0.81604069"
+ android:fillColor="#ffffff"
+ android:strokeColor="#00000000"
+ android:fillAlpha="1"/>
+ <path
+ android:pathData="m64.964,75.305v-13.771h-4.734v-3.586h9.404v17.357q0,2.104 0.653,2.98 0.653,0.877 2.215,0.877h3.73v3.586h-5.037q-3.331,0 -4.781,-1.721 -1.45,-1.721 -1.45,-5.722z"
+ android:strokeWidth="0.81604069"
+ android:fillColor="#ffffff"
+ android:strokeColor="#00000000"
+ android:fillAlpha="1"/>
+ <path
+ android:pathData="m96.012,81.871q-1.626,0.669 -3.315,1.004 -1.689,0.335 -3.57,0.335 -4.479,0 -6.853,-2.391 -2.359,-2.407 -2.359,-6.917 0,-4.367 2.279,-6.901 2.279,-2.534 6.216,-2.534 3.969,0 6.152,2.359 2.199,2.343 2.199,6.614v1.897h-12.097q0.016,2.104 1.243,3.14 1.227,1.036 3.666,1.036 1.61,0 3.172,-0.462 1.562,-0.462 3.267,-1.466zM92.059,71.83q-0.032,-1.849 -0.956,-2.789 -0.908,-0.956 -2.694,-0.956 -1.61,0 -2.566,0.988 -0.956,0.972 -1.132,2.773z"
+ android:strokeWidth="0.81604069"
+ android:fillColor="#ffffff"
+ android:strokeColor="#00000000"
+ android:fillAlpha="1"/>
+ <path
+ android:pathData="m116.445,69.822q-0.765,-0.701 -1.801,-1.052 -1.02,-0.351 -2.247,-0.351 -1.482,0 -2.598,0.526 -1.1,0.51 -1.705,1.498 -0.383,0.606 -0.542,1.466 -0.143,0.861 -0.143,2.614v8.224h-4.67v-17.851h4.67v2.773q0.685,-1.53 2.104,-2.359 1.419,-0.845 3.315,-0.845 0.956,0 1.865,0.239 0.924,0.223 1.753,0.669z"
+ android:strokeWidth="0.81604069"
+ android:fillColor="#ffffff"
+ android:strokeColor="#00000000"
+ android:fillAlpha="1"/>
+ <path
+ android:pathData="M25.843,97.583L16.433,97.583L0,70.865 16.433,44.111l9.409,0l-16.522,26.754z"
+ android:strokeWidth="2.03518677"
+ android:fillColor="#ae1010"
+ android:strokeColor="#00000000"
+ android:fillAlpha="1"/>
+ <path
+ android:pathData="m109.483,97.667 l17.087,-27.134 -17.041,-27.171l9.712,0l17.041,27.171 -17.041,27.134z"
+ android:strokeWidth="2.08855891"
+ android:fillColor="#ae1010"
+ android:strokeColor="#00000000"
+ android:fillAlpha="1"/>
+ </group>
+</vector>
diff --git a/app/src/main/res/drawable/ic_logo_taler.xml b/app/src/main/res/drawable/ic_logo_taler.xml
new file mode 100644
index 0000000..2a6cb4f
--- /dev/null
+++ b/app/src/main/res/drawable/ic_logo_taler.xml
@@ -0,0 +1,48 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="14dp"
+ android:height="14dp"
+ android:viewportWidth="140"
+ android:viewportHeight="139.99998">
+ <path
+ android:pathData="m31.669,82.748h-4.702v-19.684h-6.041v-4.112h16.783v4.112L31.669,63.064Z"
+ android:strokeWidth="0.81604069"
+ android:fillColor="#ffffff"
+ android:strokeColor="#00000000"
+ android:fillAlpha="1"/>
+ <path
+ android:pathData="m50.301,74.364q-2.614,0 -3.65,0.669 -1.036,0.669 -1.036,2.295 0,1.211 0.717,1.929 0.717,0.717 1.944,0.717 1.849,0 2.869,-1.387 1.02,-1.403 1.02,-3.905v-0.319zM56.804,72.563v10.185h-4.638v-1.992q-0.845,1.179 -2.168,1.817 -1.323,0.638 -2.917,0.638 -3.044,0 -4.75,-1.61 -1.689,-1.61 -1.689,-4.495 0,-3.124 2.024,-4.606 2.024,-1.498 6.264,-1.498h3.235v-0.781q0,-1.132 -0.829,-1.705 -0.813,-0.59 -2.407,-0.59 -1.674,0 -3.251,0.43 -1.562,0.414 -3.267,1.339v-3.985q1.546,-0.638 3.14,-0.94 1.594,-0.303 3.379,-0.303 4.351,0 6.104,1.769 1.769,1.769 1.769,6.328z"
+ android:strokeWidth="0.81604069"
+ android:fillColor="#ffffff"
+ android:strokeColor="#00000000"
+ android:fillAlpha="1"/>
+ <path
+ android:pathData="m64.964,75.305v-13.771h-4.734v-3.586h9.404v17.357q0,2.104 0.653,2.98 0.653,0.877 2.215,0.877h3.73v3.586h-5.037q-3.331,0 -4.781,-1.721 -1.45,-1.721 -1.45,-5.722z"
+ android:strokeWidth="0.81604069"
+ android:fillColor="#ffffff"
+ android:strokeColor="#00000000"
+ android:fillAlpha="1"/>
+ <path
+ android:pathData="m96.012,81.871q-1.626,0.669 -3.315,1.004 -1.689,0.335 -3.57,0.335 -4.479,0 -6.853,-2.391 -2.359,-2.407 -2.359,-6.917 0,-4.367 2.279,-6.901 2.279,-2.534 6.216,-2.534 3.969,0 6.152,2.359 2.199,2.343 2.199,6.614v1.897h-12.097q0.016,2.104 1.243,3.14 1.227,1.036 3.666,1.036 1.61,0 3.172,-0.462 1.562,-0.462 3.267,-1.466zM92.059,71.83q-0.032,-1.849 -0.956,-2.789 -0.908,-0.956 -2.694,-0.956 -1.61,0 -2.566,0.988 -0.956,0.972 -1.132,2.773z"
+ android:strokeWidth="0.81604069"
+ android:fillColor="#ffffff"
+ android:strokeColor="#00000000"
+ android:fillAlpha="1"/>
+ <path
+ android:pathData="m116.445,69.822q-0.765,-0.701 -1.801,-1.052 -1.02,-0.351 -2.247,-0.351 -1.482,0 -2.598,0.526 -1.1,0.51 -1.705,1.498 -0.383,0.606 -0.542,1.466 -0.143,0.861 -0.143,2.614v8.224h-4.67v-17.851h4.67v2.773q0.685,-1.53 2.104,-2.359 1.419,-0.845 3.315,-0.845 0.956,0 1.865,0.239 0.924,0.223 1.753,0.669z"
+ android:strokeWidth="0.81604069"
+ android:fillColor="#ffffff"
+ android:strokeColor="#00000000"
+ android:fillAlpha="1"/>
+ <path
+ android:pathData="M25.843,97.583L16.433,97.583L0,70.865 16.433,44.111l9.409,0l-16.522,26.754z"
+ android:strokeWidth="2.03518677"
+ android:fillColor="#ae1010"
+ android:strokeColor="#00000000"
+ android:fillAlpha="1"/>
+ <path
+ android:pathData="m109.483,97.667 l17.087,-27.134 -17.041,-27.171l9.712,0l17.041,27.171 -17.041,27.134z"
+ android:strokeWidth="2.08855891"
+ android:fillColor="#ae1010"
+ android:strokeColor="#00000000"
+ android:fillAlpha="1"/>
+</vector>
diff --git a/app/src/main/res/drawable/side_nav_bar.xml b/app/src/main/res/drawable/side_nav_bar.xml
index a33798b..ff85523 100644
--- a/app/src/main/res/drawable/side_nav_bar.xml
+++ b/app/src/main/res/drawable/side_nav_bar.xml
@@ -2,8 +2,7 @@
android:shape="rectangle">
<gradient
android:angle="135"
- android:centerColor="#009688"
- android:endColor="#00695C"
- android:startColor="#4DB6AC"
+ android:startColor="@color/colorPrimary"
+ android:endColor="@color/colorPrimaryDark"
android:type="linear"/>
</shape> \ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_review_exchange_tos.xml b/app/src/main/res/layout/fragment_review_exchange_tos.xml
new file mode 100644
index 0000000..6db6587
--- /dev/null
+++ b/app/src/main/res/layout/fragment_review_exchange_tos.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_margin="15dp"
+ tools:context=".ReviewExchangeTOS">
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical">
+
+ <ScrollView
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1"
+ android:scrollbars="vertical">
+ <TextView
+ android:id="@+id/text_tos"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="TextView" />
+ </ScrollView>
+
+ <CheckBox
+ android:id="@+id/checkBox_accept_tos"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_weight="0"
+ android:text="Accept Terms of Service" />
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_weight="0"
+ android:orientation="horizontal">
+ <Button
+ android:id="@+id/button_tos_abort"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="Cancel" />
+ <Space
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:layout_weight="1"/>
+
+ <Button
+ android:id="@+id/button_tos_accept"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="Continue" />
+ </LinearLayout>
+
+ </LinearLayout>
+</FrameLayout> \ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml
index 73179cb..6534f3f 100644
--- a/app/src/main/res/layout/fragment_settings.xml
+++ b/app/src/main/res/layout/fragment_settings.xml
@@ -36,7 +36,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
- android:text="0.6.0pre4 (Fri 6 Dec 2019)" />
+ android:text="0.6.0pre4 (Mon 9 Dec 2019)" />
</LinearLayout>
@@ -59,7 +59,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
- android:text="0.6.0pre4 (Fri 6 Dec 2019)" />
+ android:text="0.6.0pre4 (Mon 9 Dec 2019)" />
</LinearLayout>
diff --git a/app/src/main/res/layout/nav_header_main.xml b/app/src/main/res/layout/nav_header_main.xml
index 92ca611..8f4f926 100644
--- a/app/src/main/res/layout/nav_header_main.xml
+++ b/app/src/main/res/layout/nav_header_main.xml
@@ -14,12 +14,13 @@
android:gravity="bottom">
<ImageView
+ android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:paddingTop="@dimen/nav_header_vertical_spacing"
- app:srcCompat="@mipmap/ic_launcher_round"
+ android:adjustViewBounds="false"
android:contentDescription="@string/nav_header_desc"
- android:id="@+id/imageView"/>
+ android:paddingTop="@dimen/nav_header_vertical_spacing"
+ app:srcCompat="@mipmap/ic_launcher_round" />
<TextView
android:layout_width="match_parent"
diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
index bbd3e02..7353dbd 100644
--- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
+++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
- <background android:drawable="@drawable/ic_launcher_background"/>
+ <background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
</adaptive-icon> \ No newline at end of file
diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
index bbd3e02..7353dbd 100644
--- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
+++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
- <background android:drawable="@drawable/ic_launcher_background"/>
+ <background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
</adaptive-icon> \ No newline at end of file
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png
index 898f3ed..2bfb696 100644
--- a/app/src/main/res/mipmap-hdpi/ic_launcher.png
+++ b/app/src/main/res/mipmap-hdpi/ic_launcher.png
Binary files differ
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
index dffca36..c7ae940 100644
--- a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
+++ b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
Binary files differ
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png
index 64ba76f..c104056 100644
--- a/app/src/main/res/mipmap-mdpi/ic_launcher.png
+++ b/app/src/main/res/mipmap-mdpi/ic_launcher.png
Binary files differ
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
index dae5e08..1130914 100644
--- a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
+++ b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png
index e5ed465..7144a11 100644
--- a/app/src/main/res/mipmap-xhdpi/ic_launcher.png
+++ b/app/src/main/res/mipmap-xhdpi/ic_launcher.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
index 14ed0af..d63ccd3 100644
--- a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
+++ b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
index b0907ca..bc3155e 100644
--- a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
+++ b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
index d8ae031..028fe60 100644
--- a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
+++ b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
index 2c18de9..ccc81eb 100644
--- a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
+++ b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
index beed3cd..da3ce45 100644
--- a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
+++ b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
Binary files differ
diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml
index fac49f3..88d64f7 100644
--- a/app/src/main/res/navigation/nav_graph.xml
+++ b/app/src/main/res/navigation/nav_graph.xml
@@ -60,6 +60,10 @@
android:id="@+id/action_promptWithdraw_to_withdrawSuccessful"
app:destination="@id/withdrawSuccessful"
app:popUpTo="@id/showBalance" />
+ <action
+ android:id="@+id/action_promptWithdraw_to_reviewExchangeTOS"
+ app:destination="@id/reviewExchangeTOS"
+ app:popUpTo="@id/showBalance"/>
</fragment>
<fragment
android:id="@+id/withdrawSuccessful"
@@ -69,4 +73,14 @@
<action
android:id="@+id/action_global_promptPayment"
app:destination="@id/promptPayment" />
+ <fragment
+ android:id="@+id/reviewExchangeTOS"
+ android:name="net.taler.wallet.ReviewExchangeTOS"
+ android:label="Exchange's Terms of Service"
+ tools:layout="@layout/fragment_review_exchange_tos" >
+ <action
+ android:id="@+id/action_reviewExchangeTOS_to_promptWithdraw"
+ app:popUpTo="@id/showBalance"
+ app:destination="@id/promptWithdraw" />
+ </fragment>
</navigation> \ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 69b2233..3b6dc88 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
- <color name="colorPrimary">#008577</color>
- <color name="colorPrimaryDark">#00574B</color>
- <color name="colorAccent">#D81B60</color>
+ <color name="colorPrimary">#283593</color>
+ <color name="colorPrimaryDark">#1A237E</color>
+ <color name="colorAccent">#AE1010</color>
</resources>
diff --git a/app/src/main/res/values/ic_launcher_background.xml b/app/src/main/res/values/ic_launcher_background.xml
new file mode 100644
index 0000000..beab31f
--- /dev/null
+++ b/app/src/main/res/values/ic_launcher_background.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <color name="ic_launcher_background">#000000</color>
+</resources> \ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 658dc62..b57aadf 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -14,8 +14,9 @@
<string name="menu_share">Share</string>
<string name="menu_send">Send</string>
- <!-- TODO: Remove or change this placeholder text -->
- <string name="hello_blank_fragment">Hello blank fragment</string>
<string name="servicedesc">my service</string>
<string name="aiddescription">my aid</string>
+
+ <!-- TODO: Remove or change this placeholder text -->
+ <string name="hello_blank_fragment">Hello blank fragment</string>
</resources>