0.5.6.1: Remove retry system in connection handling, reword "View outputs" to "View coins", reformat code

This commit is contained in:
pokkst 2023-12-09 21:12:06 -06:00
parent ae4e7cb65c
commit 5733197cb0
No known key found for this signature in database
GPG Key ID: EC4FAAA66859FAA4
49 changed files with 1136 additions and 994 deletions

View File

@ -10,8 +10,8 @@ android {
applicationId "net.mynero.wallet" applicationId "net.mynero.wallet"
minSdkVersion 21 minSdkVersion 21
targetSdkVersion 34 targetSdkVersion 34
versionCode 50600 versionCode 50601
versionName "0.5.6 'Fluorine Fermi'" versionName "0.5.6.1 'Fluorine Fermi'"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
externalNativeBuild { externalNativeBuild {
cmake { cmake {

View File

@ -235,7 +235,7 @@ std::vector<std::string> java2cpp(JNIEnv *env, jobject arrayList) {
jlong getElement(JNIEnv *env, jlongArray arr_j, int element) { jlong getElement(JNIEnv *env, jlongArray arr_j, int element) {
jlong result; jlong result;
env->GetLongArrayRegion(arr_j, element,1, &result); env->GetLongArrayRegion(arr_j, element, 1, &result);
return result; return result;
} }
@ -349,7 +349,8 @@ Java_net_mynero_wallet_model_WalletManager_createWalletJ(JNIEnv *env, jobject in
JNIEXPORT jlong JNICALL JNIEXPORT jlong JNICALL
Java_net_mynero_wallet_model_WalletManager_createWalletPolyseedJ(JNIEnv *env, jobject instance, Java_net_mynero_wallet_model_WalletManager_createWalletPolyseedJ(JNIEnv *env, jobject instance,
jstring path, jstring password, jstring passpharse, jstring path, jstring password,
jstring passpharse,
jstring language, jstring language,
jint networkType) { jint networkType) {
std::string seed_words; std::string seed_words;
@ -728,7 +729,8 @@ Java_net_mynero_wallet_model_Wallet_getSeed(JNIEnv *env, jobject instance, jstri
} }
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_net_mynero_wallet_model_Wallet_getLegacySeed(JNIEnv *env, jobject instance, jstring seedOffset) { Java_net_mynero_wallet_model_Wallet_getLegacySeed(JNIEnv *env, jobject instance,
jstring seedOffset) {
const char *_seedOffset = env->GetStringUTFChars(seedOffset, nullptr); const char *_seedOffset = env->GetStringUTFChars(seedOffset, nullptr);
Monero::Wallet *wallet = getHandle<Monero::Wallet>(env, instance); Monero::Wallet *wallet = getHandle<Monero::Wallet>(env, instance);
@ -743,7 +745,8 @@ Java_net_mynero_wallet_model_Wallet_getLegacySeed(JNIEnv *env, jobject instance,
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_net_mynero_wallet_model_Wallet_isPolyseedSupported(JNIEnv *env, jobject instance, jstring seedOffset) { Java_net_mynero_wallet_model_Wallet_isPolyseedSupported(JNIEnv *env, jobject instance,
jstring seedOffset) {
const char *_seedOffset = env->GetStringUTFChars(seedOffset, nullptr); const char *_seedOffset = env->GetStringUTFChars(seedOffset, nullptr);
Monero::Wallet *wallet = getHandle<Monero::Wallet>(env, instance); Monero::Wallet *wallet = getHandle<Monero::Wallet>(env, instance);
@ -921,7 +924,8 @@ Java_net_mynero_wallet_model_Wallet_getConnectionStatusJ(JNIEnv *env, jobject in
return wallet->connected(); return wallet->connected();
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_net_mynero_wallet_model_Wallet_setTrustedDaemonJ(JNIEnv *env, jobject instance, jboolean trusted) { Java_net_mynero_wallet_model_Wallet_setTrustedDaemonJ(JNIEnv *env, jobject instance,
jboolean trusted) {
Monero::Wallet *wallet = getHandle<Monero::Wallet>(env, instance); Monero::Wallet *wallet = getHandle<Monero::Wallet>(env, instance);
if (trusted) { if (trusted) {
wallet->setTrustedDaemon(true); wallet->setTrustedDaemon(true);
@ -1132,7 +1136,8 @@ Java_net_mynero_wallet_model_Wallet_createTransactionJ(JNIEnv *env, jobject inst
Monero::PendingTransaction *tx = wallet->createTransaction(_dst_addr, _payment_id, Monero::PendingTransaction *tx = wallet->createTransaction(_dst_addr, _payment_id,
amount, (uint32_t) mixin_count, amount, (uint32_t) mixin_count,
_priority, _priority,
(uint32_t) accountIndex, {}, _key_images); (uint32_t) accountIndex, {},
_key_images);
env->ReleaseStringUTFChars(dst_addr, _dst_addr); env->ReleaseStringUTFChars(dst_addr, _dst_addr);
env->ReleaseStringUTFChars(payment_id, _payment_id); env->ReleaseStringUTFChars(payment_id, _payment_id);
@ -1141,10 +1146,12 @@ Java_net_mynero_wallet_model_Wallet_createTransactionJ(JNIEnv *env, jobject inst
JNIEXPORT jlong JNICALL JNIEXPORT jlong JNICALL
Java_net_mynero_wallet_model_Wallet_createTransactionMultDestJ(JNIEnv *env, jobject instance, Java_net_mynero_wallet_model_Wallet_createTransactionMultDestJ(JNIEnv *env, jobject instance,
jobject dst_addrs, jstring payment_id, jobject dst_addrs,
jstring payment_id,
jlongArray amounts, jint mixin_count, jlongArray amounts, jint mixin_count,
jint priority, jint priority,
jint accountIndex, jobject key_images) { jint accountIndex,
jobject key_images) {
const std::set<std::string> _key_images = java2cpp_set(env, key_images); const std::set<std::string> _key_images = java2cpp_set(env, key_images);
const std::vector<std::string> _dst_addrs = java2cpp(env, dst_addrs); const std::vector<std::string> _dst_addrs = java2cpp(env, dst_addrs);
const std::vector<std::uint64_t> _dst_amounts = java2cpp_long(env, amounts); const std::vector<std::uint64_t> _dst_amounts = java2cpp_long(env, amounts);
@ -1154,9 +1161,11 @@ Java_net_mynero_wallet_model_Wallet_createTransactionMultDestJ(JNIEnv *env, jobj
Monero::Wallet *wallet = getHandle<Monero::Wallet>(env, instance); Monero::Wallet *wallet = getHandle<Monero::Wallet>(env, instance);
Monero::PendingTransaction *tx = wallet->createTransactionMultDest(_dst_addrs, _payment_id, Monero::PendingTransaction *tx = wallet->createTransactionMultDest(_dst_addrs, _payment_id,
_dst_amounts, (uint32_t) mixin_count, _dst_amounts,
(uint32_t) mixin_count,
_priority, _priority,
(uint32_t) accountIndex, {}, _key_images); (uint32_t) accountIndex, {},
_key_images);
env->ReleaseStringUTFChars(payment_id, _payment_id); env->ReleaseStringUTFChars(payment_id, _payment_id);
return reinterpret_cast<jlong>(tx); return reinterpret_cast<jlong>(tx);
@ -1165,7 +1174,8 @@ Java_net_mynero_wallet_model_Wallet_createTransactionMultDestJ(JNIEnv *env, jobj
JNIEXPORT jlong JNICALL JNIEXPORT jlong JNICALL
Java_net_mynero_wallet_model_Wallet_estimateTransactionFee(JNIEnv *env, jobject instance, Java_net_mynero_wallet_model_Wallet_estimateTransactionFee(JNIEnv *env, jobject instance,
jobject destinations, jint priority) { jobject destinations, jint priority) {
std::vector<std::pair<std::string, uint64_t>> dest_vector = java2cpp_pairvector(env, destinations); std::vector<std::pair<std::string, uint64_t>> dest_vector = java2cpp_pairvector(env,
destinations);
Monero::PendingTransaction::Priority _priority = static_cast<Monero::PendingTransaction::Priority>(priority); Monero::PendingTransaction::Priority _priority = static_cast<Monero::PendingTransaction::Priority>(priority);
Monero::Wallet *wallet = getHandle<Monero::Wallet>(env, instance); Monero::Wallet *wallet = getHandle<Monero::Wallet>(env, instance);
uint64_t fee = wallet->estimateTransactionFee(dest_vector, _priority); uint64_t fee = wallet->estimateTransactionFee(dest_vector, _priority);
@ -1190,7 +1200,8 @@ Java_net_mynero_wallet_model_Wallet_createSweepTransaction(JNIEnv *env, jobject
Monero::PendingTransaction *tx = wallet->createTransaction(_dst_addr, _payment_id, Monero::PendingTransaction *tx = wallet->createTransaction(_dst_addr, _payment_id,
empty, (uint32_t) mixin_count, empty, (uint32_t) mixin_count,
_priority, _priority,
(uint32_t) accountIndex, {}, _key_images); (uint32_t) accountIndex, {},
_key_images);
env->ReleaseStringUTFChars(dst_addr, _dst_addr); env->ReleaseStringUTFChars(dst_addr, _dst_addr);
env->ReleaseStringUTFChars(payment_id, _payment_id); env->ReleaseStringUTFChars(payment_id, _payment_id);
@ -1281,7 +1292,8 @@ Java_net_mynero_wallet_model_Coins_refreshJ(JNIEnv *env, jobject instance) {
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_net_mynero_wallet_model_Coins_setFrozen(JNIEnv *env, jobject instance, jstring publicKey, jboolean frozen) { Java_net_mynero_wallet_model_Coins_setFrozen(JNIEnv *env, jobject instance, jstring publicKey,
jboolean frozen) {
Monero::Coins *coins = getHandle<Monero::Coins>(env, instance); Monero::Coins *coins = getHandle<Monero::Coins>(env, instance);
const char *_publicKey = env->GetStringUTFChars(publicKey, nullptr); const char *_publicKey = env->GetStringUTFChars(publicKey, nullptr);
if (frozen) { if (frozen) {

View File

@ -4,11 +4,7 @@ import android.os.Bundle
import android.widget.Toast import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.FragmentActivity import androidx.fragment.app.FragmentActivity
import androidx.lifecycle.Observer
import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.NavHostFragment import androidx.navigation.fragment.NavHostFragment
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import net.mynero.wallet.fragment.dialog.PasswordBottomSheetDialog import net.mynero.wallet.fragment.dialog.PasswordBottomSheetDialog
import net.mynero.wallet.fragment.dialog.PasswordBottomSheetDialog.PasswordListener import net.mynero.wallet.fragment.dialog.PasswordBottomSheetDialog.PasswordListener
import net.mynero.wallet.fragment.dialog.SendBottomSheetDialog import net.mynero.wallet.fragment.dialog.SendBottomSheetDialog
@ -26,7 +22,6 @@ import net.mynero.wallet.service.TxService
import net.mynero.wallet.service.UTXOService import net.mynero.wallet.service.UTXOService
import net.mynero.wallet.util.Constants import net.mynero.wallet.util.Constants
import net.mynero.wallet.util.UriData import net.mynero.wallet.util.UriData
import timber.log.Timber
import java.io.File import java.io.File
class MainActivity : AppCompatActivity(), MoneroHandlerThread.Listener, PasswordListener { class MainActivity : AppCompatActivity(), MoneroHandlerThread.Listener, PasswordListener {

View File

@ -107,7 +107,7 @@ class NodeSelectionAdapter(val listener: NodeSelectionAdapterListener?) :
if (node.password.isNotEmpty()) { if (node.password.isNotEmpty()) {
authTextView.visibility = View.VISIBLE authTextView.visibility = View.VISIBLE
} }
if(node.trusted) { if (node.trusted) {
trustedTextView.visibility = View.VISIBLE trustedTextView.visibility = View.VISIBLE
} }
val nodeAnonymityNetworkImageView = val nodeAnonymityNetworkImageView =

View File

@ -1,18 +1,13 @@
package net.mynero.wallet.fragment.dialog package net.mynero.wallet.fragment.dialog
import android.app.Activity
import android.os.Bundle import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.Button import android.widget.Button
import android.widget.Toast
import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.google.android.material.bottomsheet.BottomSheetDialogFragment import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import net.mynero.wallet.R import net.mynero.wallet.R
import net.mynero.wallet.adapter.NodeSelectionAdapter import net.mynero.wallet.adapter.NodeSelectionAdapter
import net.mynero.wallet.adapter.NodeSelectionAdapter.NodeSelectionAdapterListener import net.mynero.wallet.adapter.NodeSelectionAdapter.NodeSelectionAdapterListener
@ -20,7 +15,6 @@ import net.mynero.wallet.data.DefaultNodes
import net.mynero.wallet.data.Node import net.mynero.wallet.data.Node
import net.mynero.wallet.data.Node.Companion.fromJson import net.mynero.wallet.data.Node.Companion.fromJson
import net.mynero.wallet.data.Node.Companion.fromString import net.mynero.wallet.data.Node.Companion.fromString
import net.mynero.wallet.model.WalletManager
import net.mynero.wallet.service.DaemonService import net.mynero.wallet.service.DaemonService
import net.mynero.wallet.service.PrefService import net.mynero.wallet.service.PrefService
import net.mynero.wallet.util.Constants import net.mynero.wallet.util.Constants

View File

@ -9,9 +9,7 @@ import android.widget.Button
import android.widget.ImageView import android.widget.ImageView
import android.widget.ProgressBar import android.widget.ProgressBar
import android.widget.TextView import android.widget.TextView
import android.widget.Toast
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.navigation.NavDirections import androidx.navigation.NavDirections
@ -24,9 +22,7 @@ import net.mynero.wallet.MainActivity
import net.mynero.wallet.R import net.mynero.wallet.R
import net.mynero.wallet.adapter.TransactionInfoAdapter import net.mynero.wallet.adapter.TransactionInfoAdapter
import net.mynero.wallet.adapter.TransactionInfoAdapter.TxInfoAdapterListener import net.mynero.wallet.adapter.TransactionInfoAdapter.TxInfoAdapterListener
import net.mynero.wallet.model.EnumTorState
import net.mynero.wallet.model.TransactionInfo import net.mynero.wallet.model.TransactionInfo
import net.mynero.wallet.model.Wallet
import net.mynero.wallet.model.WalletManager import net.mynero.wallet.model.WalletManager
import net.mynero.wallet.service.BalanceService import net.mynero.wallet.service.BalanceService
import net.mynero.wallet.service.BlockchainService import net.mynero.wallet.service.BlockchainService
@ -34,10 +30,7 @@ import net.mynero.wallet.service.DaemonService
import net.mynero.wallet.service.HistoryService import net.mynero.wallet.service.HistoryService
import net.mynero.wallet.service.PrefService import net.mynero.wallet.service.PrefService
import net.mynero.wallet.service.ProxyService import net.mynero.wallet.service.ProxyService
import net.mynero.wallet.service.SamouraiTorManager
import net.mynero.wallet.service.TorKmpManager
import net.mynero.wallet.util.Constants import net.mynero.wallet.util.Constants
import timber.log.Timber
class HomeFragment : Fragment(), TxInfoAdapterListener { class HomeFragment : Fragment(), TxInfoAdapterListener {
private var startHeight: Long = 0 private var startHeight: Long = 0
@ -82,7 +75,8 @@ class HomeFragment : Fragment(), TxInfoAdapterListener {
ProxyService.instance?.proxyChangeEvents?.observe(viewLifecycleOwner) { proxy -> ProxyService.instance?.proxyChangeEvents?.observe(viewLifecycleOwner) { proxy ->
lifecycleScope.launch(Dispatchers.IO) { lifecycleScope.launch(Dispatchers.IO) {
Log.d("HomeFragment", "Updating proxy, restarting wallet. proxy=$proxy") Log.d("HomeFragment", "Updating proxy, restarting wallet. proxy=$proxy")
val finalProxy = if(proxy.isNotEmpty() && ProxyService.instance?.usingProxy == true) proxy else "" val finalProxy =
if (proxy.isNotEmpty() && ProxyService.instance?.usingProxy == true) proxy else ""
WalletManager.instance?.setProxy(finalProxy) WalletManager.instance?.setProxy(finalProxy)
WalletManager.instance?.wallet?.setProxy(finalProxy) WalletManager.instance?.wallet?.setProxy(finalProxy)
WalletManager.instance?.wallet?.init(0) WalletManager.instance?.wallet?.init(0)
@ -177,13 +171,13 @@ class HomeFragment : Fragment(), TxInfoAdapterListener {
val samouraiTorManager = ProxyService.instance?.samouraiTorManager val samouraiTorManager = ProxyService.instance?.samouraiTorManager
samouraiTorManager?.getTorStateLiveData()?.observe(viewLifecycleOwner) { samouraiTorManager?.getTorStateLiveData()?.observe(viewLifecycleOwner) {
samouraiTorManager.getProxy()?.address()?.let { socketAddress -> samouraiTorManager.getProxy()?.address()?.let { socketAddress ->
if(socketAddress.toString().isEmpty()) return@let if (socketAddress.toString().isEmpty()) return@let
if(ProxyService.instance?.usingProxy == true && ProxyService.instance?.useBundledTor == true) { if (ProxyService.instance?.usingProxy == true && ProxyService.instance?.useBundledTor == true) {
val proxyString = socketAddress.toString().substring(1) val proxyString = socketAddress.toString().substring(1)
val address = proxyString.split(":")[0] val address = proxyString.split(":")[0]
val port = proxyString.split(":")[1] val port = proxyString.split(":")[1]
if(WalletManager.instance?.proxy != proxyString) if (WalletManager.instance?.proxy != proxyString)
refreshProxy(address, port) refreshProxy(address, port)
} }
} }
@ -193,7 +187,7 @@ class HomeFragment : Fragment(), TxInfoAdapterListener {
private fun refreshProxy(proxyAddress: String, proxyPort: String) { private fun refreshProxy(proxyAddress: String, proxyPort: String) {
val cachedProxyAddress = ProxyService.instance?.proxyAddress val cachedProxyAddress = ProxyService.instance?.proxyAddress
val cachedProxyPort = ProxyService.instance?.proxyPort val cachedProxyPort = ProxyService.instance?.proxyPort
if((proxyAddress != cachedProxyAddress) || (proxyPort != cachedProxyPort)) { if ((proxyAddress != cachedProxyAddress) || (proxyPort != cachedProxyPort)) {
ProxyService.instance?.updateProxy(proxyAddress, proxyPort) ProxyService.instance?.updateProxy(proxyAddress, proxyPort)
} }
} }

View File

@ -163,13 +163,14 @@ class OnboardingFragment : Fragment(), NodeSelectionDialogListener, AddNodeListe
} }
val samouraiTorManager = ProxyService.instance?.samouraiTorManager val samouraiTorManager = ProxyService.instance?.samouraiTorManager
val indicatorCircle = view?.findViewById<CircularProgressIndicator>(R.id.onboarding_tor_loading_progressindicator) val indicatorCircle =
view?.findViewById<CircularProgressIndicator>(R.id.onboarding_tor_loading_progressindicator)
val torIcon = view?.findViewById<ImageView>(R.id.onboarding_tor_icon) val torIcon = view?.findViewById<ImageView>(R.id.onboarding_tor_icon)
samouraiTorManager?.getTorStateLiveData()?.observe(viewLifecycleOwner) { state -> samouraiTorManager?.getTorStateLiveData()?.observe(viewLifecycleOwner) { state ->
samouraiTorManager.getProxy()?.address()?.let { socketAddress -> samouraiTorManager.getProxy()?.address()?.let { socketAddress ->
if(socketAddress.toString().isEmpty()) return@let if (socketAddress.toString().isEmpty()) return@let
if(mViewModel?.useProxy?.value == true && mViewModel?.useBundledTor?.value == true) { if (mViewModel?.useProxy?.value == true && mViewModel?.useBundledTor?.value == true) {
torIcon?.visibility = View.VISIBLE torIcon?.visibility = View.VISIBLE
indicatorCircle?.visibility = View.INVISIBLE indicatorCircle?.visibility = View.INVISIBLE
val proxyString = socketAddress.toString().substring(1) val proxyString = socketAddress.toString().substring(1)
@ -187,10 +188,12 @@ class OnboardingFragment : Fragment(), NodeSelectionDialogListener, AddNodeListe
torIcon?.visibility = View.INVISIBLE torIcon?.visibility = View.INVISIBLE
indicatorCircle?.visibility = View.INVISIBLE indicatorCircle?.visibility = View.INVISIBLE
} }
EnumTorState.STARTING, EnumTorState.STOPPING -> { EnumTorState.STARTING, EnumTorState.STOPPING -> {
torIcon?.visibility = View.INVISIBLE torIcon?.visibility = View.INVISIBLE
indicatorCircle?.visibility = View.VISIBLE indicatorCircle?.visibility = View.VISIBLE
} }
else -> {} else -> {}
} }
} }

View File

@ -52,13 +52,13 @@ class OnboardingViewModel : ViewModel() {
_creatingWallet, _creatingWallet,
ProxyService.instance?.samouraiTorManager?.getTorStateLiveData() ProxyService.instance?.samouraiTorManager?.getTorStateLiveData()
) { seedType, useProxy, proxyAddress, proxyPort, useBundledTor, passphrase, confirmedPassphrase, creatingWallet, torState -> ) { seedType, useProxy, proxyAddress, proxyPort, useBundledTor, passphrase, confirmedPassphrase, creatingWallet, torState ->
if(seedType == null || useProxy == null || proxyAddress == null || proxyPort == null || useBundledTor == null || passphrase == null || confirmedPassphrase == null || creatingWallet == null) return@combineLiveDatas false if (seedType == null || useProxy == null || proxyAddress == null || proxyPort == null || useBundledTor == null || passphrase == null || confirmedPassphrase == null || creatingWallet == null) return@combineLiveDatas false
if((passphrase.isNotEmpty() || confirmedPassphrase.isNotEmpty()) && passphrase != confirmedPassphrase) return@combineLiveDatas false if ((passphrase.isNotEmpty() || confirmedPassphrase.isNotEmpty()) && passphrase != confirmedPassphrase) return@combineLiveDatas false
if(creatingWallet) return@combineLiveDatas false if (creatingWallet) return@combineLiveDatas false
if(seedType == SeedType.POLYSEED && (passphrase.isEmpty() || confirmedPassphrase.isEmpty())) return@combineLiveDatas false if (seedType == SeedType.POLYSEED && (passphrase.isEmpty() || confirmedPassphrase.isEmpty())) return@combineLiveDatas false
if(useProxy && (proxyAddress.isEmpty() || proxyPort.isEmpty()) && !useBundledTor) return@combineLiveDatas false if (useProxy && (proxyAddress.isEmpty() || proxyPort.isEmpty()) && !useBundledTor) return@combineLiveDatas false
val progress = torState?.progressIndicator ?: 0 val progress = torState?.progressIndicator ?: 0
if(useBundledTor && progress < 100 && useProxy) return@combineLiveDatas false if (useBundledTor && progress < 100 && useProxy) return@combineLiveDatas false
return@combineLiveDatas true return@combineLiveDatas true
} }
@ -227,24 +227,25 @@ class OnboardingViewModel : ViewModel() {
fun setProxyAddress(address: String) { fun setProxyAddress(address: String) {
_proxyAddress.value = address _proxyAddress.value = address
if(address.isEmpty()) PrefService.instance?.deleteProxy() if (address.isEmpty()) PrefService.instance?.deleteProxy()
val port = _proxyPort.value ?: return val port = _proxyPort.value ?: return
ProxyService.instance?.updateProxy(address, port) ProxyService.instance?.updateProxy(address, port)
} }
fun setProxyPort(port: String) { fun setProxyPort(port: String) {
_proxyPort.value = port _proxyPort.value = port
if(port.isEmpty()) PrefService.instance?.deleteProxy() if (port.isEmpty()) PrefService.instance?.deleteProxy()
val address = _proxyAddress.value ?: return val address = _proxyAddress.value ?: return
ProxyService.instance?.updateProxy(address, port) ProxyService.instance?.updateProxy(address, port)
} }
fun setUseBundledTor(useBundled: Boolean) { fun setUseBundledTor(useBundled: Boolean) {
_useBundledTor.value = useBundled _useBundledTor.value = useBundled
PrefService.instance?.edit()?.putBoolean(Constants.PREF_USE_BUNDLED_TOR, useBundled)?.apply() PrefService.instance?.edit()?.putBoolean(Constants.PREF_USE_BUNDLED_TOR, useBundled)
?.apply()
val samouraiTorManager = ProxyService.instance?.samouraiTorManager val samouraiTorManager = ProxyService.instance?.samouraiTorManager
if(useBundled && ProxyService.instance?.usingProxy == true) { if (useBundled && ProxyService.instance?.usingProxy == true) {
samouraiTorManager?.start() samouraiTorManager?.start()
} else { } else {
samouraiTorManager?.stop() samouraiTorManager?.stop()
@ -256,7 +257,7 @@ class OnboardingViewModel : ViewModel() {
PrefService.instance?.edit()?.putBoolean(Constants.PREF_USES_PROXY, useProxy)?.apply() PrefService.instance?.edit()?.putBoolean(Constants.PREF_USES_PROXY, useProxy)?.apply()
val samouraiTorManager = ProxyService.instance?.samouraiTorManager val samouraiTorManager = ProxyService.instance?.samouraiTorManager
if(useProxy && ProxyService.instance?.useBundledTor == true) { if (useProxy && ProxyService.instance?.useBundledTor == true) {
samouraiTorManager?.start() samouraiTorManager?.start()
} else { } else {
samouraiTorManager?.stop() samouraiTorManager?.stop()

View File

@ -148,7 +148,10 @@ class SendFragment : Fragment() {
} }
sendTxSlider?.let { slideToActView -> sendTxSlider?.let { slideToActView ->
ViewCompat.addAccessibilityAction(slideToActView, getString(R.string.approve_the_transaction)) { _, _ -> ViewCompat.addAccessibilityAction(
slideToActView,
getString(R.string.approve_the_transaction)
) { _, _ ->
confirmSlider() confirmSlider()
return@addAccessibilityAction true return@addAccessibilityAction true
} }

View File

@ -1,7 +1,6 @@
package net.mynero.wallet.fragment.settings package net.mynero.wallet.fragment.settings
import android.os.Bundle import android.os.Bundle
import android.util.Patterns
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
@ -10,12 +9,10 @@ import android.widget.CheckBox
import android.widget.CompoundButton import android.widget.CompoundButton
import android.widget.EditText import android.widget.EditText
import android.widget.ImageView import android.widget.ImageView
import android.widget.Switch
import android.widget.Toast import android.widget.Toast
import androidx.activity.OnBackPressedCallback import androidx.activity.OnBackPressedCallback
import androidx.appcompat.widget.SwitchCompat import androidx.appcompat.widget.SwitchCompat
import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.widget.addTextChangedListener
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.navigation.fragment.NavHostFragment import androidx.navigation.fragment.NavHostFragment
@ -84,13 +81,18 @@ class SettingsFragment : Fragment(), PasswordListener, NodeSelectionDialogListen
val cachedUsingBundledTor = ProxyService.instance?.useBundledTor == true val cachedUsingBundledTor = ProxyService.instance?.useBundledTor == true
val useProxyVisibility = if (cachedUsingProxy) View.VISIBLE else View.GONE val useProxyVisibility = if (cachedUsingProxy) View.VISIBLE else View.GONE
walletProxyPortEditText?.visibility = if (cachedUsingBundledTor) View.GONE else useProxyVisibility walletProxyPortEditText?.visibility =
walletProxyAddressEditText?.visibility = if (cachedUsingBundledTor) View.GONE else useProxyVisibility if (cachedUsingBundledTor) View.GONE else useProxyVisibility
walletProxyAddressEditText?.visibility =
if (cachedUsingBundledTor) View.GONE else useProxyVisibility
proxySettingsLayout?.visibility = useProxyVisibility proxySettingsLayout?.visibility = useProxyVisibility
streetModeSwitch?.isChecked = PrefService.instance?.getBoolean(Constants.PREF_STREET_MODE, false) == true streetModeSwitch?.isChecked =
monerochanSwitch?.isChecked = PrefService.instance?.getBoolean(Constants.PREF_MONEROCHAN, true) == true PrefService.instance?.getBoolean(Constants.PREF_STREET_MODE, false) == true
donationSwitch?.isChecked = PrefService.instance?.getBoolean(Constants.PREF_DONATE_PER_TX, false) == true monerochanSwitch?.isChecked =
PrefService.instance?.getBoolean(Constants.PREF_MONEROCHAN, true) == true
donationSwitch?.isChecked =
PrefService.instance?.getBoolean(Constants.PREF_DONATE_PER_TX, false) == true
useBundledTor?.isChecked = cachedUsingBundledTor useBundledTor?.isChecked = cachedUsingBundledTor
torSwitch?.isChecked = cachedUsingProxy torSwitch?.isChecked = cachedUsingProxy
updateProxy(cachedProxyAddress, cachedProxyPort) updateProxy(cachedProxyAddress, cachedProxyPort)
@ -161,7 +163,7 @@ class SettingsFragment : Fragment(), PasswordListener, NodeSelectionDialogListen
private fun bindObservers() { private fun bindObservers() {
mViewModel?.useProxy?.observe(viewLifecycleOwner) { b -> mViewModel?.useProxy?.observe(viewLifecycleOwner) { b ->
val visibility = if(b) View.VISIBLE else View.GONE val visibility = if (b) View.VISIBLE else View.GONE
proxySettingsLayout?.visibility = visibility proxySettingsLayout?.visibility = visibility
val useBundledTor = mViewModel?.useBundledTor?.value == true val useBundledTor = mViewModel?.useBundledTor?.value == true
@ -173,19 +175,20 @@ class SettingsFragment : Fragment(), PasswordListener, NodeSelectionDialogListen
mViewModel?.useBundledTor?.observe(viewLifecycleOwner) { isChecked -> mViewModel?.useBundledTor?.observe(viewLifecycleOwner) { isChecked ->
val usingProxy = mViewModel?.useProxy?.value == true val usingProxy = mViewModel?.useProxy?.value == true
val visibility = if(usingProxy) View.VISIBLE else View.GONE val visibility = if (usingProxy) View.VISIBLE else View.GONE
walletProxyPortEditText?.visibility = if (isChecked) View.GONE else visibility walletProxyPortEditText?.visibility = if (isChecked) View.GONE else visibility
walletProxyAddressEditText?.visibility = if (isChecked) View.GONE else visibility walletProxyAddressEditText?.visibility = if (isChecked) View.GONE else visibility
} }
val samouraiTorManager = ProxyService.instance?.samouraiTorManager val samouraiTorManager = ProxyService.instance?.samouraiTorManager
val indicatorCircle = view?.findViewById<CircularProgressIndicator>(R.id.settings_tor_loading_progressindicator) val indicatorCircle =
view?.findViewById<CircularProgressIndicator>(R.id.settings_tor_loading_progressindicator)
val torIcon = view?.findViewById<ImageView>(R.id.settings_tor_icon) val torIcon = view?.findViewById<ImageView>(R.id.settings_tor_icon)
samouraiTorManager?.getTorStateLiveData()?.observe(viewLifecycleOwner) { state -> samouraiTorManager?.getTorStateLiveData()?.observe(viewLifecycleOwner) { state ->
samouraiTorManager.getProxy()?.address()?.let { socketAddress -> samouraiTorManager.getProxy()?.address()?.let { socketAddress ->
if(socketAddress.toString().isEmpty()) return@let if (socketAddress.toString().isEmpty()) return@let
if(mViewModel?.useProxy?.value == true && mViewModel?.useBundledTor?.value == true) { if (mViewModel?.useProxy?.value == true && mViewModel?.useBundledTor?.value == true) {
torIcon?.visibility = View.VISIBLE torIcon?.visibility = View.VISIBLE
indicatorCircle?.visibility = View.INVISIBLE indicatorCircle?.visibility = View.INVISIBLE
val proxyString = socketAddress.toString().substring(1) val proxyString = socketAddress.toString().substring(1)
@ -203,10 +206,12 @@ class SettingsFragment : Fragment(), PasswordListener, NodeSelectionDialogListen
torIcon?.visibility = View.INVISIBLE torIcon?.visibility = View.INVISIBLE
indicatorCircle?.visibility = View.INVISIBLE indicatorCircle?.visibility = View.INVISIBLE
} }
EnumTorState.STARTING, EnumTorState.STOPPING -> { EnumTorState.STARTING, EnumTorState.STOPPING -> {
torIcon?.visibility = View.INVISIBLE torIcon?.visibility = View.INVISIBLE
indicatorCircle?.visibility = View.VISIBLE indicatorCircle?.visibility = View.VISIBLE
} }
else -> {} else -> {}
} }
} }
@ -224,7 +229,7 @@ class SettingsFragment : Fragment(), PasswordListener, NodeSelectionDialogListen
val savedProxyAddress = ProxyService.instance?.proxyAddress val savedProxyAddress = ProxyService.instance?.proxyAddress
val savedProxyPort = ProxyService.instance?.proxyPort val savedProxyPort = ProxyService.instance?.proxyPort
if(proxyAddress != savedProxyAddress || proxyPort != savedProxyPort) if (proxyAddress != savedProxyAddress || proxyPort != savedProxyPort)
ProxyService.instance?.updateProxy(proxyAddress, proxyPort) ProxyService.instance?.updateProxy(proxyAddress, proxyPort)
} }

View File

@ -1,11 +1,8 @@
package net.mynero.wallet.fragment.settings package net.mynero.wallet.fragment.settings
import android.util.Patterns
import androidx.lifecycle.LiveData import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import net.mynero.wallet.MoneroApplication
import net.mynero.wallet.model.WalletManager
import net.mynero.wallet.service.PrefService import net.mynero.wallet.service.PrefService
import net.mynero.wallet.service.ProxyService import net.mynero.wallet.service.ProxyService
import net.mynero.wallet.util.Constants import net.mynero.wallet.util.Constants
@ -26,7 +23,7 @@ class SettingsViewModel : ViewModel() {
PrefService.instance?.edit()?.putBoolean(Constants.PREF_USES_PROXY, use)?.apply() PrefService.instance?.edit()?.putBoolean(Constants.PREF_USES_PROXY, use)?.apply()
val samouraiTorManager = ProxyService.instance?.samouraiTorManager val samouraiTorManager = ProxyService.instance?.samouraiTorManager
if(use && ProxyService.instance?.useBundledTor == true) { if (use && ProxyService.instance?.useBundledTor == true) {
samouraiTorManager?.start() samouraiTorManager?.start()
} else { } else {
samouraiTorManager?.stop() samouraiTorManager?.stop()
@ -38,7 +35,7 @@ class SettingsViewModel : ViewModel() {
PrefService.instance?.edit()?.putBoolean(Constants.PREF_USE_BUNDLED_TOR, use)?.apply() PrefService.instance?.edit()?.putBoolean(Constants.PREF_USE_BUNDLED_TOR, use)?.apply()
val samouraiTorManager = ProxyService.instance?.samouraiTorManager val samouraiTorManager = ProxyService.instance?.samouraiTorManager
if(use && ProxyService.instance?.usingProxy == true) { if (use && ProxyService.instance?.usingProxy == true) {
samouraiTorManager?.start() samouraiTorManager?.start()
} else { } else {
samouraiTorManager?.stop() samouraiTorManager?.stop()

View File

@ -1,14 +1,6 @@
package net.mynero.wallet.model package net.mynero.wallet.model
class TorState { class TorState {
var state : EnumTorState = EnumTorState.OFF var state: EnumTorState = EnumTorState.OFF
get() = field var progressIndicator: Int = 0
set(value) {
field = value
}
var progressIndicator : Int = 0
get() = field
set(value) {
field = value
}
} }

View File

@ -18,7 +18,6 @@ package net.mynero.wallet.model
import android.util.Log import android.util.Log
import android.util.Pair import android.util.Pair
import net.mynero.wallet.data.Subaddress import net.mynero.wallet.data.Subaddress
import timber.log.Timber
import java.io.File import java.io.File
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.Date import java.util.Date
@ -212,16 +211,19 @@ class Wallet {
fun setTrustedDaemon(trusted: Boolean) { fun setTrustedDaemon(trusted: Boolean) {
setTrustedDaemonJ(trusted) setTrustedDaemonJ(trusted)
} }
private external fun setTrustedDaemonJ(trusted: Boolean) private external fun setTrustedDaemonJ(trusted: Boolean)
fun isTrustedDaemon(): Boolean { fun isTrustedDaemon(): Boolean {
return isTrustedDaemonJ(); return isTrustedDaemonJ()
} }
private external fun isTrustedDaemonJ(): Boolean private external fun isTrustedDaemonJ(): Boolean
fun setProxy(address: String?): Boolean { fun setProxy(address: String?): Boolean {
return setProxyJ(address) return setProxyJ(address)
} }
private external fun setProxyJ(address: String?): Boolean private external fun setProxyJ(address: String?): Boolean
val balance: Long val balance: Long
get() = getBalance(accountIndex) get() = getBalance(accountIndex)
@ -238,11 +240,13 @@ class Wallet {
fun getBlockChainHeight(): Long { fun getBlockChainHeight(): Long {
return getBlockChainHeightJ().minus(1) return getBlockChainHeightJ().minus(1)
} }
private external fun getBlockChainHeightJ(): Long private external fun getBlockChainHeightJ(): Long
external fun getApproximateBlockChainHeight(): Long external fun getApproximateBlockChainHeight(): Long
fun getDaemonBlockChainHeight(): Long { fun getDaemonBlockChainHeight(): Long {
return getDaemonBlockChainHeightJ().minus(1) return getDaemonBlockChainHeightJ().minus(1)
} }
private external fun getDaemonBlockChainHeightJ(): Long private external fun getDaemonBlockChainHeightJ(): Long
external fun getDaemonBlockChainTargetHeight(): Long external fun getDaemonBlockChainTargetHeight(): Long
@ -253,6 +257,7 @@ class Wallet {
fun startRefresh() { fun startRefresh() {
startRefreshJ() startRefreshJ()
} }
private external fun startRefreshJ() private external fun startRefreshJ()
external fun pauseRefresh() external fun pauseRefresh()
external fun refresh(): Boolean external fun refresh(): Boolean

View File

@ -1,12 +1,7 @@
package net.mynero.wallet.service package net.mynero.wallet.service
import android.util.Patterns
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import net.mynero.wallet.data.Node import net.mynero.wallet.data.Node
import net.mynero.wallet.livedata.SingleLiveEvent import net.mynero.wallet.livedata.SingleLiveEvent
import net.mynero.wallet.model.WalletManager
import net.mynero.wallet.util.Constants
class DaemonService(thread: MoneroHandlerThread) : ServiceBase(thread) { class DaemonService(thread: MoneroHandlerThread) : ServiceBase(thread) {
val daemonChangeEvents: SingleLiveEvent<Node> = SingleLiveEvent() val daemonChangeEvents: SingleLiveEvent<Node> = SingleLiveEvent()

View File

@ -16,7 +16,6 @@
*/ */
package net.mynero.wallet.service package net.mynero.wallet.service
import android.util.Log
import net.mynero.wallet.model.PendingTransaction import net.mynero.wallet.model.PendingTransaction
import net.mynero.wallet.model.TransactionOutput import net.mynero.wallet.model.TransactionOutput
import net.mynero.wallet.model.Wallet import net.mynero.wallet.model.Wallet
@ -37,7 +36,6 @@ import java.security.SecureRandom
class MoneroHandlerThread(name: String, val listener: Listener?, wallet: Wallet) : class MoneroHandlerThread(name: String, val listener: Listener?, wallet: Wallet) :
Thread(null, null, name, THREAD_STACK_SIZE), WalletListener { Thread(null, null, name, THREAD_STACK_SIZE), WalletListener {
private val wallet: Wallet private val wallet: Wallet
private var triesLeft = 5
init { init {
this.wallet = wallet this.wallet = wallet
@ -75,7 +73,8 @@ class MoneroHandlerThread(name: String, val listener: Listener?, wallet: Wallet)
override fun unconfirmedMoneyReceived(txId: String?, amount: Long) {} override fun unconfirmedMoneyReceived(txId: String?, amount: Long) {}
override fun newBlock(height: Long) { override fun newBlock(height: Long) {
refresh(false) refresh(false)
BlockchainService.instance?.daemonHeight = if (wallet.isSynchronized) height else 0 // when 0 it fetches from C++ BlockchainService.instance?.daemonHeight =
if (wallet.isSynchronized) height else 0 // when 0 it fetches from C++
} }
override fun updated() { override fun updated() {
@ -89,11 +88,11 @@ class MoneroHandlerThread(name: String, val listener: Listener?, wallet: Wallet)
BlockchainService.instance?.daemonHeight = daemonHeight BlockchainService.instance?.daemonHeight = daemonHeight
status?.let { BlockchainService.instance?.setConnectionStatus(it) } status?.let { BlockchainService.instance?.setConnectionStatus(it) }
if (status === ConnectionStatus.ConnectionStatus_Disconnected || status == null) { if (status === ConnectionStatus.ConnectionStatus_Disconnected || status == null) {
tryRestartOrFail() tryRestartConnection()
} else { } else {
val heightDiff = daemonHeight - chainHeight val heightDiff = daemonHeight - chainHeight
if(heightDiff >= 2) { if (heightDiff >= 2) {
tryRestartOrFail() tryRestartConnection()
} else { } else {
Timber.d("refreshed() Synchronized") Timber.d("refreshed() Synchronized")
wallet.setSynchronized() wallet.setSynchronized()
@ -104,16 +103,10 @@ class MoneroHandlerThread(name: String, val listener: Listener?, wallet: Wallet)
} }
} }
private fun tryRestartOrFail() { private fun tryRestartConnection() {
Timber.d("refreshed() Disconnected") Timber.d("refreshed() Starting connection retry")
if (triesLeft > 0) { wallet.init(0)
Timber.d("refreshed() Starting refresh")
wallet.startRefresh() wallet.startRefresh()
triesLeft--
} else {
Timber.d("refreshed() On connection fail")
listener?.onConnectionFail()
}
} }
private fun refresh(walletSynced: Boolean) { private fun refresh(walletSynced: Boolean) {

View File

@ -81,12 +81,12 @@ class PrefService(application: MoneroApplication) : ServiceBase(null) {
} }
fun saveProxy(address: String, port: String): String? { fun saveProxy(address: String, port: String): String? {
if(address.isEmpty() || port.isEmpty()) { if (address.isEmpty() || port.isEmpty()) {
deleteProxy() deleteProxy()
return null return null
} }
val proxyAddress = "$address:$port" val proxyAddress = "$address:$port"
if(proxyAddress == ":") return null if (proxyAddress == ":") return null
Log.d("PrefService", "Setting proxy. proxyAddress=$proxyAddress") Log.d("PrefService", "Setting proxy. proxyAddress=$proxyAddress")
edit()?.putString(Constants.PREF_PROXY, proxyAddress)?.apply() edit()?.putString(Constants.PREF_PROXY, proxyAddress)?.apply()
return proxyAddress return proxyAddress

View File

@ -15,7 +15,7 @@ class ProxyService(application: Application) : ServiceBase(null) {
instance = this instance = this
samouraiTorManager = SamouraiTorManager(application, TorKmpManager(application)) samouraiTorManager = SamouraiTorManager(application, TorKmpManager(application))
if(useBundledTor && usingProxy) { if (useBundledTor && usingProxy) {
samouraiTorManager?.start() samouraiTorManager?.start()
} }
} }

View File

@ -5,7 +5,10 @@ import androidx.lifecycle.MutableLiveData
import net.mynero.wallet.model.TorState import net.mynero.wallet.model.TorState
import java.net.Proxy import java.net.Proxy
class SamouraiTorManager(private val appContext: Application?, private val torKmpManager: TorKmpManager) { class SamouraiTorManager(
private val appContext: Application?,
private val torKmpManager: TorKmpManager
) {
fun getTorStateLiveData(): MutableLiveData<TorState> { fun getTorStateLiveData(): MutableLiveData<TorState> {
return torKmpManager.torStateLiveData return torKmpManager.torStateLiveData
} }

View File

@ -5,7 +5,6 @@ import android.util.Log
import android.widget.Toast import android.widget.Toast
import androidx.lifecycle.LiveData import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import net.mynero.wallet.model.TorState
import io.matthewnelson.kmp.tor.KmpTorLoaderAndroid import io.matthewnelson.kmp.tor.KmpTorLoaderAndroid
import io.matthewnelson.kmp.tor.TorConfigProviderAndroid import io.matthewnelson.kmp.tor.TorConfigProviderAndroid
import io.matthewnelson.kmp.tor.common.address.* import io.matthewnelson.kmp.tor.common.address.*
@ -26,11 +25,11 @@ import io.matthewnelson.kmp.tor.manager.common.state.isStarting
import io.matthewnelson.kmp.tor.manager.common.state.isStopping import io.matthewnelson.kmp.tor.manager.common.state.isStopping
import kotlinx.coroutines.* import kotlinx.coroutines.*
import net.mynero.wallet.model.EnumTorState import net.mynero.wallet.model.EnumTorState
import java.lang.Exception import net.mynero.wallet.model.TorState
import java.net.InetSocketAddress import java.net.InetSocketAddress
import java.net.Proxy import java.net.Proxy
class TorKmpManager(application : Application) { class TorKmpManager(application: Application) {
private val TAG = "TorListener" private val TAG = "TorListener"
@ -61,11 +60,15 @@ class TorKmpManager(application : Application) {
put(socks.set(AorDorPort.Value(PortProxy(9263)))) put(socks.set(AorDorPort.Value(PortProxy(9263))))
// Set Flags // Set Flags
socks.setFlags(setOf( socks.setFlags(
setOf(
Ports.Socks.Flag.OnionTrafficOnly Ports.Socks.Flag.OnionTrafficOnly
)).setIsolationFlags(setOf( )
).setIsolationFlags(
setOf(
Ports.IsolationFlag.IsolateClientAddr, Ports.IsolationFlag.IsolateClientAddr,
)).set(AorDorPort.Value(PortProxy(9264))) )
).set(AorDorPort.Value(PortProxy(9264)))
put(socks) put(socks)
// reset our socks object to defaults // reset our socks object to defaults
@ -142,23 +145,36 @@ class TorKmpManager(application : Application) {
addSegment("test_service") addSegment("test_service")
} }
// Add Hidden services // Add Hidden services
put(HiddenService() put(
.setPorts(ports = setOf( HiddenService()
.setPorts(
ports = setOf(
// Use a unix domain socket to communicate via IPC instead of over TCP // Use a unix domain socket to communicate via IPC instead of over TCP
HiddenService.UnixSocket(virtualPort = Port(80), targetUnixSocket = hsPath.builder { HiddenService.UnixSocket(
virtualPort = Port(80),
targetUnixSocket = hsPath.builder {
addSegment(HiddenService.UnixSocket.DEFAULT_UNIX_SOCKET_NAME) addSegment(HiddenService.UnixSocket.DEFAULT_UNIX_SOCKET_NAME)
}), }),
)) )
)
.setMaxStreams(maxStreams = HiddenService.MaxStreams(value = 2)) .setMaxStreams(maxStreams = HiddenService.MaxStreams(value = 2))
.setMaxStreamsCloseCircuit(value = TorF.True) .setMaxStreamsCloseCircuit(value = TorF.True)
.set(FileSystemDir(path = hsPath)) .set(FileSystemDir(path = hsPath))
) )
put(HiddenService() put(HiddenService()
.setPorts(ports = setOf( .setPorts(
HiddenService.Ports(virtualPort = Port(80), targetPort = Port(1030)), // http ports = setOf(
HiddenService.Ports(virtualPort = Port(443), targetPort = Port(1030)) // https HiddenService.Ports(
)) virtualPort = Port(80),
targetPort = Port(1030)
), // http
HiddenService.Ports(
virtualPort = Port(443),
targetPort = Port(1030)
) // https
)
)
.set(FileSystemDir(path = .set(FileSystemDir(path =
workDir.builder { workDir.builder {
addSegment(HiddenService.DEFAULT_PARENT_DIR_NAME) addSegment(HiddenService.DEFAULT_PARENT_DIR_NAME)
@ -176,7 +192,11 @@ class TorKmpManager(application : Application) {
} }
private val manager: TorManager by lazy { private val manager: TorManager by lazy {
TorManager.newInstance(application = application, loader = loaderAndroid, requiredEvents = null) TorManager.newInstance(
application = application,
loader = loaderAndroid,
requiredEvents = null
)
} }
// only expose necessary interfaces // only expose necessary interfaces
@ -192,12 +212,9 @@ class TorKmpManager(application : Application) {
} }
val torStateLiveData: MutableLiveData<TorState> = MutableLiveData() val torStateLiveData: MutableLiveData<TorState> = MutableLiveData()
get() = field
var torState: TorState = TorState() var torState: TorState = TorState()
get() = field
var proxy: Proxy? = null var proxy: Proxy? = null
get() = field
init { init {
manager.debug(true) manager.debug(true)
@ -210,7 +227,7 @@ class TorKmpManager(application : Application) {
} }
fun isStarting(): Boolean { fun isStarting(): Boolean {
return manager.state.isStarting(); return manager.state.isStarting()
} }
@ -231,7 +248,7 @@ class TorKmpManager(application : Application) {
} }
} }
private inner class TorListener: TorManagerEvent.Listener() { private inner class TorListener : TorManagerEvent.Listener() {
private val _eventLines: MutableLiveData<String> = MutableLiveData("") private val _eventLines: MutableLiveData<String> = MutableLiveData("")
val eventLines: LiveData<String> = _eventLines val eventLines: LiveData<String> = _eventLines
private val events: MutableList<String> = ArrayList(50) private val events: MutableList<String> = ArrayList(50)
@ -313,7 +330,8 @@ class TorKmpManager(application : Application) {
} else { } else {
info.socksInfoToProxyAddressOrNull()?.firstOrNull()?.let { proxyAddress -> info.socksInfoToProxyAddressOrNull()?.firstOrNull()?.let { proxyAddress ->
@Suppress("UNUSED_VARIABLE") @Suppress("UNUSED_VARIABLE")
val socket = InetSocketAddress(proxyAddress.address.value, proxyAddress.port.value) val socket =
InetSocketAddress(proxyAddress.address.value, proxyAddress.port.value)
proxy = Proxy(Proxy.Type.SOCKS, socket) proxy = Proxy(Proxy.Type.SOCKS, socket)
} }
} }

View File

@ -5,6 +5,7 @@
android:left="8dp" android:left="8dp"
android:right="8dp" /> android:right="8dp" />
<solid android:color="@color/button_disabled_bg_color" /> <solid android:color="@color/button_disabled_bg_color" />
<corners android:topLeftRadius="16dp" <corners
android:bottomLeftRadius="16dp"/> android:bottomLeftRadius="16dp"
android:topLeftRadius="16dp" />
</shape> </shape>

View File

@ -5,6 +5,7 @@
android:left="8dp" android:left="8dp"
android:right="8dp" /> android:right="8dp" />
<solid android:color="@color/button_disabled_bg_color" /> <solid android:color="@color/button_disabled_bg_color" />
<corners android:topRightRadius="16dp" <corners
android:bottomRightRadius="16dp"/> android:bottomRightRadius="16dp"
android:topRightRadius="16dp" />
</shape> </shape>

View File

@ -5,6 +5,7 @@
android:left="8dp" android:left="8dp"
android:right="8dp" /> android:right="8dp" />
<solid android:color="@color/oled_colorSecondary" /> <solid android:color="@color/oled_colorSecondary" />
<corners android:topLeftRadius="16dp" <corners
android:bottomLeftRadius="16dp"/> android:bottomLeftRadius="16dp"
android:topLeftRadius="16dp" />
</shape> </shape>

View File

@ -5,6 +5,7 @@
android:left="8dp" android:left="8dp"
android:right="8dp" /> android:right="8dp" />
<solid android:color="@color/oled_colorSecondary" /> <solid android:color="@color/oled_colorSecondary" />
<corners android:topRightRadius="16dp" <corners
android:bottomRightRadius="16dp"/> android:bottomRightRadius="16dp"
android:topRightRadius="16dp" />
</shape> </shape>

View File

@ -2,10 +2,10 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android" <shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"> android:shape="rectangle">
<padding <padding
android:bottom="12dp"
android:left="12dp" android:left="12dp"
android:right="12dp" android:right="12dp"
android:bottom="12dp" android:top="12dp" />
android:top="12dp"/>
<solid android:color="@color/oled_dialogBackgroundColor" /> <solid android:color="@color/oled_dialogBackgroundColor" />
<corners android:radius="16dp" /> <corners android:radius="16dp" />
</shape> </shape>

View File

@ -2,9 +2,9 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android" <shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"> android:shape="rectangle">
<padding <padding
android:bottom="12dp"
android:left="12dp" android:left="12dp"
android:right="12dp" android:right="12dp" />
android:bottom="12dp"/>
<solid android:color="@color/oled_dialogBackgroundColor" /> <solid android:color="@color/oled_dialogBackgroundColor" />
<corners android:radius="16dp" /> <corners android:radius="16dp" />
</shape> </shape>

View File

@ -1,74 +1,170 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<vector <vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="108dp"
android:width="108dp" android:width="108dp"
android:viewportHeight="108" android:height="108dp"
android:viewportWidth="108" android:viewportWidth="108"
xmlns:android="http://schemas.android.com/apk/res/android"> android:viewportHeight="108">
<path android:fillColor="#3DDC84" <path
android:pathData="M0,0h108v108h-108z"/> android:fillColor="#3DDC84"
<path android:fillColor="#00000000" android:pathData="M9,0L9,108" android:pathData="M0,0h108v108h-108z" />
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> <path
<path android:fillColor="#00000000" android:pathData="M19,0L19,108" android:fillColor="#00000000"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> android:pathData="M9,0L9,108"
<path android:fillColor="#00000000" android:pathData="M29,0L29,108" android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> android:strokeColor="#33FFFFFF" />
<path android:fillColor="#00000000" android:pathData="M39,0L39,108" <path
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> android:fillColor="#00000000"
<path android:fillColor="#00000000" android:pathData="M49,0L49,108" android:pathData="M19,0L19,108"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> android:strokeWidth="0.8"
<path android:fillColor="#00000000" android:pathData="M59,0L59,108" android:strokeColor="#33FFFFFF" />
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> <path
<path android:fillColor="#00000000" android:pathData="M69,0L69,108" android:fillColor="#00000000"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> android:pathData="M29,0L29,108"
<path android:fillColor="#00000000" android:pathData="M79,0L79,108" android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> android:strokeColor="#33FFFFFF" />
<path android:fillColor="#00000000" android:pathData="M89,0L89,108" <path
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> android:fillColor="#00000000"
<path android:fillColor="#00000000" android:pathData="M99,0L99,108" android:pathData="M39,0L39,108"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> android:strokeWidth="0.8"
<path android:fillColor="#00000000" android:pathData="M0,9L108,9" android:strokeColor="#33FFFFFF" />
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> <path
<path android:fillColor="#00000000" android:pathData="M0,19L108,19" android:fillColor="#00000000"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> android:pathData="M49,0L49,108"
<path android:fillColor="#00000000" android:pathData="M0,29L108,29" android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> android:strokeColor="#33FFFFFF" />
<path android:fillColor="#00000000" android:pathData="M0,39L108,39" <path
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> android:fillColor="#00000000"
<path android:fillColor="#00000000" android:pathData="M0,49L108,49" android:pathData="M59,0L59,108"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> android:strokeWidth="0.8"
<path android:fillColor="#00000000" android:pathData="M0,59L108,59" android:strokeColor="#33FFFFFF" />
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> <path
<path android:fillColor="#00000000" android:pathData="M0,69L108,69" android:fillColor="#00000000"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> android:pathData="M69,0L69,108"
<path android:fillColor="#00000000" android:pathData="M0,79L108,79" android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> android:strokeColor="#33FFFFFF" />
<path android:fillColor="#00000000" android:pathData="M0,89L108,89" <path
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> android:fillColor="#00000000"
<path android:fillColor="#00000000" android:pathData="M0,99L108,99" android:pathData="M79,0L79,108"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> android:strokeWidth="0.8"
<path android:fillColor="#00000000" android:pathData="M19,29L89,29" android:strokeColor="#33FFFFFF" />
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> <path
<path android:fillColor="#00000000" android:pathData="M19,39L89,39" android:fillColor="#00000000"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> android:pathData="M89,0L89,108"
<path android:fillColor="#00000000" android:pathData="M19,49L89,49" android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> android:strokeColor="#33FFFFFF" />
<path android:fillColor="#00000000" android:pathData="M19,59L89,59" <path
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> android:fillColor="#00000000"
<path android:fillColor="#00000000" android:pathData="M19,69L89,69" android:pathData="M99,0L99,108"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> android:strokeWidth="0.8"
<path android:fillColor="#00000000" android:pathData="M19,79L89,79" android:strokeColor="#33FFFFFF" />
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> <path
<path android:fillColor="#00000000" android:pathData="M29,19L29,89" android:fillColor="#00000000"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> android:pathData="M0,9L108,9"
<path android:fillColor="#00000000" android:pathData="M39,19L39,89" android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> android:strokeColor="#33FFFFFF" />
<path android:fillColor="#00000000" android:pathData="M49,19L49,89" <path
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> android:fillColor="#00000000"
<path android:fillColor="#00000000" android:pathData="M59,19L59,89" android:pathData="M0,19L108,19"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> android:strokeWidth="0.8"
<path android:fillColor="#00000000" android:pathData="M69,19L69,89" android:strokeColor="#33FFFFFF" />
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> <path
<path android:fillColor="#00000000" android:pathData="M79,19L79,89" android:fillColor="#00000000"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> android:pathData="M0,29L108,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,39L108,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,49L108,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,59L108,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,69L108,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,79L108,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,89L108,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,99L108,99"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,29L89,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,39L89,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,49L89,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,59L89,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,69L89,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,79L89,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,19L29,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,19L39,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,19L49,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,19L59,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,19L69,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,19L79,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
</vector> </vector>

View File

@ -6,5 +6,5 @@
android:viewportHeight="24.0"> android:viewportHeight="24.0">
<path <path
android:fillColor="#ffffff" android:fillColor="#ffffff"
android:pathData="M17.65,6.35C16.2,4.9 14.21,4 12,4c-4.42,0 -7.99,3.58 -7.99,8s3.57,8 7.99,8c3.73,0 6.84,-2.55 7.73,-6h-2.08c-0.82,2.33 -3.04,4 -5.65,4 -3.31,0 -6,-2.69 -6,-6s2.69,-6 6,-6c1.66,0 3.14,0.69 4.22,1.78L13,11h7V4l-2.35,2.35z"/> android:pathData="M17.65,6.35C16.2,4.9 14.21,4 12,4c-4.42,0 -7.99,3.58 -7.99,8s3.57,8 7.99,8c3.73,0 6.84,-2.55 7.73,-6h-2.08c-0.82,2.33 -3.04,4 -5.65,4 -3.31,0 -6,-2.69 -6,-6s2.69,-6 6,-6c1.66,0 3.14,0.69 4.22,1.78L13,11h7V4l-2.35,2.35z" />
</vector> </vector>

View File

@ -4,9 +4,9 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@color/oled_dialogBackgroundColor"
android:fillViewport="true" android:fillViewport="true"
android:fitsSystemWindows="true" android:fitsSystemWindows="true"
android:background="@color/oled_dialogBackgroundColor"
android:padding="24dp"> android:padding="24dp">
@ -61,13 +61,13 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="8dp" android:layout_marginBottom="8dp"
android:background="@drawable/edittext_bg" android:background="@drawable/edittext_bg"
android:digits="QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890.:-[]"
android:hint="@string/node_address_hint" android:hint="@string/node_address_hint"
android:inputType="text" android:inputType="text"
android:digits="QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890.:-[]"
app:layout_constraintBottom_toTopOf="@id/trusted_node_checkbox" app:layout_constraintBottom_toTopOf="@id/trusted_node_checkbox"
app:layout_constraintEnd_toStartOf="@id/node_port_edittext" app:layout_constraintEnd_toStartOf="@id/node_port_edittext"
app:layout_constraintTop_toBottomOf="@id/node_name_edittext" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintStart_toStartOf="parent" /> app:layout_constraintTop_toBottomOf="@id/node_name_edittext" />
<EditText <EditText
android:id="@+id/node_port_edittext" android:id="@+id/node_port_edittext"
@ -75,26 +75,26 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:background="@drawable/edittext_bg" android:background="@drawable/edittext_bg"
android:digits="-QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890.:"
android:hint="@string/node_port_hint" android:hint="@string/node_port_hint"
android:inputType="number" android:inputType="number"
android:digits="-QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890.:"
app:layout_constraintTop_toTopOf="@id/address_edittext"
app:layout_constraintBottom_toBottomOf="@id/address_edittext" app:layout_constraintBottom_toBottomOf="@id/address_edittext"
app:layout_constraintEnd_toStartOf="@id/paste_address_imagebutton" app:layout_constraintEnd_toStartOf="@id/paste_address_imagebutton"
app:layout_constraintStart_toEndOf="@id/address_edittext" /> app:layout_constraintStart_toEndOf="@id/address_edittext"
app:layout_constraintTop_toTopOf="@id/address_edittext" />
<CheckBox <CheckBox
android:id="@+id/trusted_node_checkbox" android:id="@+id/trusted_node_checkbox"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:minHeight="48dp"
android:layout_marginBottom="8dp" android:layout_marginBottom="8dp"
android:minHeight="48dp"
android:text="@string/trusted_daemon" android:text="@string/trusted_daemon"
android:visibility="visible" android:visibility="visible"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toTopOf="@id/username_edittext" app:layout_constraintBottom_toTopOf="@id/username_edittext"
app:layout_constraintTop_toBottomOf="@id/address_edittext"/> app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/address_edittext" />
<Button <Button
android:id="@+id/add_node_button" android:id="@+id/add_node_button"
@ -114,10 +114,10 @@
android:background="@drawable/edittext_bg" android:background="@drawable/edittext_bg"
android:hint="@string/node_username_hint" android:hint="@string/node_username_hint"
android:inputType="text" android:inputType="text"
app:layout_constraintTop_toBottomOf="@id/trusted_node_checkbox"
app:layout_constraintBottom_toTopOf="@id/password_edittext" app:layout_constraintBottom_toTopOf="@id/password_edittext"
app:layout_constraintEnd_toStartOf="@id/paste_username_imagebutton" app:layout_constraintEnd_toStartOf="@id/paste_username_imagebutton"
app:layout_constraintStart_toStartOf="parent" /> app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/trusted_node_checkbox" />
<ImageButton <ImageButton
android:id="@+id/paste_username_imagebutton" android:id="@+id/paste_username_imagebutton"
@ -152,8 +152,8 @@
android:background="@android:color/transparent" android:background="@android:color/transparent"
android:minWidth="48dp" android:minWidth="48dp"
android:minHeight="48dp" android:minHeight="48dp"
android:visibility="gone"
android:src="@drawable/ic_content_paste_24dp" android:src="@drawable/ic_content_paste_24dp"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@id/password_edittext" app:layout_constraintBottom_toBottomOf="@id/password_edittext"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/password_edittext" app:layout_constraintStart_toEndOf="@id/password_edittext"

View File

@ -1,56 +1,57 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="8dp" android:layout_marginBottom="8dp"
android:paddingEnd="8dp" android:paddingStart="8dp"
android:paddingStart="8dp"> android:paddingEnd="8dp">
<TextView <TextView
android:id="@+id/address_item_address_textview" android:id="@+id/address_item_address_textview"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="Address" android:ellipsize="middle"
android:textStyle="bold"
android:textSize="16sp"
android:paddingTop="4dp" android:paddingTop="4dp"
android:paddingBottom="4dp" android:paddingBottom="4dp"
android:ellipsize="middle"
android:singleLine="true" android:singleLine="true"
android:text="Address"
android:textColor="@color/oled_addressListColor" android:textColor="@color/oled_addressListColor"
app:layout_constraintStart_toStartOf="parent" android:textSize="16sp"
app:layout_constraintEnd_toEndOf="parent" android:textStyle="bold"
app:layout_constraintBottom_toTopOf="@id/address_label_textview" app:layout_constraintBottom_toTopOf="@id/address_label_textview"
app:layout_constraintTop_toTopOf="parent"/> app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView <TextView
android:id="@+id/address_label_textview" android:id="@+id/address_label_textview"
style="@style/MoneroText.Subaddress" style="@style/MoneroText.Subaddress"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="Label" android:ellipsize="middle"
android:paddingStart="8dp" android:paddingStart="8dp"
android:paddingEnd="8dp" android:paddingEnd="8dp"
android:singleLine="true"
android:text="Label"
android:textStyle="bold" android:textStyle="bold"
android:ellipsize="middle"
app:layout_constraintTop_toBottomOf="@id/address_item_address_textview"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
android:singleLine="true" /> app:layout_constraintTop_toBottomOf="@id/address_item_address_textview" />
<TextView <TextView
android:id="@+id/address_amount_textview" android:id="@+id/address_amount_textview"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="0dp" android:layout_height="0dp"
android:text="Amount" android:ellipsize="middle"
android:paddingStart="8dp" android:paddingStart="8dp"
android:paddingEnd="8dp" android:paddingEnd="8dp"
android:ellipsize="middle" android:singleLine="true"
android:text="Amount"
android:textAlignment="viewEnd" android:textAlignment="viewEnd"
android:textColor="@color/oled_positiveColor" android:textColor="@color/oled_positiveColor"
app:layout_constraintTop_toBottomOf="@id/address_item_address_textview"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/address_label_textview" app:layout_constraintStart_toEndOf="@id/address_label_textview"
android:singleLine="true" /> app:layout_constraintTop_toBottomOf="@id/address_item_address_textview" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -14,11 +14,11 @@
android:id="@+id/enter_password_textview" android:id="@+id/enter_password_textview"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginTop="24dp"
android:layout_marginEnd="24dp"
android:layout_marginBottom="32dp" android:layout_marginBottom="32dp"
android:text="@string/edit_address_label" android:text="@string/edit_address_label"
android:layout_marginStart="24dp"
android:layout_marginEnd="24dp"
android:layout_marginTop="24dp"
android:textSize="32sp" android:textSize="32sp"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintBottom_toTopOf="@id/wallet_password_edittext" app:layout_constraintBottom_toTopOf="@id/wallet_password_edittext"
@ -30,9 +30,9 @@
android:id="@+id/wallet_password_edittext" android:id="@+id/wallet_password_edittext"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginBottom="32dp" android:layout_marginBottom="32dp"
android:background="@drawable/edittext_bg" android:background="@drawable/edittext_bg"
android:layout_marginStart="24dp"
android:hint="@string/label" android:hint="@string/label"
android:inputType="text" android:inputType="text"
app:layout_constraintBottom_toTopOf="@id/unlock_wallet_button" app:layout_constraintBottom_toTopOf="@id/unlock_wallet_button"
@ -59,11 +59,11 @@
android:id="@+id/unlock_wallet_button" android:id="@+id/unlock_wallet_button"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/button_bg"
android:text="@string/save"
android:layout_marginStart="24dp" android:layout_marginStart="24dp"
android:layout_marginEnd="24dp" android:layout_marginEnd="24dp"
android:layout_marginBottom="16dp" android:layout_marginBottom="16dp"
android:background="@drawable/button_bg"
android:text="@string/save"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/wallet_password_edittext" /> app:layout_constraintTop_toBottomOf="@id/wallet_password_edittext" />

View File

@ -4,9 +4,9 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@color/oled_dialogBackgroundColor"
android:fillViewport="true" android:fillViewport="true"
android:fitsSystemWindows="true" android:fitsSystemWindows="true"
android:background="@color/oled_dialogBackgroundColor"
android:padding="24dp"> android:padding="24dp">
@ -61,13 +61,13 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="8dp" android:layout_marginBottom="8dp"
android:background="@drawable/edittext_bg" android:background="@drawable/edittext_bg"
android:digits="QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890.:-[]"
android:hint="@string/node_address_hint" android:hint="@string/node_address_hint"
android:inputType="text" android:inputType="text"
android:digits="QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890.:-[]"
app:layout_constraintBottom_toTopOf="@id/trusted_node_checkbox" app:layout_constraintBottom_toTopOf="@id/trusted_node_checkbox"
app:layout_constraintEnd_toStartOf="@id/node_port_edittext" app:layout_constraintEnd_toStartOf="@id/node_port_edittext"
app:layout_constraintTop_toBottomOf="@id/node_name_edittext" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintStart_toStartOf="parent" /> app:layout_constraintTop_toBottomOf="@id/node_name_edittext" />
<EditText <EditText
android:id="@+id/node_port_edittext" android:id="@+id/node_port_edittext"
@ -75,26 +75,26 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:background="@drawable/edittext_bg" android:background="@drawable/edittext_bg"
android:digits="-QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890.:"
android:hint="@string/node_port_hint" android:hint="@string/node_port_hint"
android:inputType="number" android:inputType="number"
android:digits="-QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890.:"
app:layout_constraintTop_toTopOf="@id/address_edittext"
app:layout_constraintBottom_toBottomOf="@id/address_edittext" app:layout_constraintBottom_toBottomOf="@id/address_edittext"
app:layout_constraintEnd_toStartOf="@id/paste_address_imagebutton" app:layout_constraintEnd_toStartOf="@id/paste_address_imagebutton"
app:layout_constraintStart_toEndOf="@id/address_edittext" /> app:layout_constraintStart_toEndOf="@id/address_edittext"
app:layout_constraintTop_toTopOf="@id/address_edittext" />
<CheckBox <CheckBox
android:id="@+id/trusted_node_checkbox" android:id="@+id/trusted_node_checkbox"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:minHeight="48dp"
android:layout_marginBottom="8dp" android:layout_marginBottom="8dp"
android:minHeight="48dp"
android:text="@string/trusted_daemon" android:text="@string/trusted_daemon"
android:visibility="visible" android:visibility="visible"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toTopOf="@id/username_edittext" app:layout_constraintBottom_toTopOf="@id/username_edittext"
app:layout_constraintTop_toBottomOf="@id/address_edittext"/> app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/address_edittext" />
<EditText <EditText
android:id="@+id/username_edittext" android:id="@+id/username_edittext"
@ -104,10 +104,10 @@
android:background="@drawable/edittext_bg" android:background="@drawable/edittext_bg"
android:hint="@string/node_username_hint" android:hint="@string/node_username_hint"
android:inputType="text" android:inputType="text"
app:layout_constraintTop_toBottomOf="@id/trusted_node_checkbox"
app:layout_constraintBottom_toTopOf="@id/password_edittext" app:layout_constraintBottom_toTopOf="@id/password_edittext"
app:layout_constraintEnd_toStartOf="@id/paste_username_imagebutton" app:layout_constraintEnd_toStartOf="@id/paste_username_imagebutton"
app:layout_constraintStart_toStartOf="parent" /> app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/trusted_node_checkbox" />
<ImageButton <ImageButton
android:id="@+id/paste_username_imagebutton" android:id="@+id/paste_username_imagebutton"
@ -131,10 +131,10 @@
android:hint="@string/node_password_hint" android:hint="@string/node_password_hint"
android:inputType="textPassword" android:inputType="textPassword"
android:visibility="gone" android:visibility="gone"
app:layout_constraintTop_toBottomOf="@id/username_edittext"
app:layout_constraintBottom_toTopOf="@id/delete_node_button" app:layout_constraintBottom_toTopOf="@id/delete_node_button"
app:layout_constraintEnd_toStartOf="@id/paste_password_imagebutton" app:layout_constraintEnd_toStartOf="@id/paste_password_imagebutton"
app:layout_constraintStart_toStartOf="parent" /> app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/username_edittext" />
<ImageButton <ImageButton
android:id="@+id/paste_password_imagebutton" android:id="@+id/paste_password_imagebutton"
@ -144,8 +144,8 @@
android:minWidth="48dp" android:minWidth="48dp"
android:minHeight="48dp" android:minHeight="48dp"
android:padding="8dp" android:padding="8dp"
android:visibility="gone"
android:src="@drawable/ic_content_paste_24dp" android:src="@drawable/ic_content_paste_24dp"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@id/password_edittext" app:layout_constraintBottom_toBottomOf="@id/password_edittext"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/password_edittext" app:layout_constraintStart_toEndOf="@id/password_edittext"
@ -160,15 +160,16 @@
android:layout_marginEnd="1dp" android:layout_marginEnd="1dp"
android:background="@drawable/button_bg_left" android:background="@drawable/button_bg_left"
android:text="@string/delete" android:text="@string/delete"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@id/done_editing_button" app:layout_constraintEnd_toStartOf="@id/done_editing_button"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/password_edittext" /> app:layout_constraintTop_toBottomOf="@id/password_edittext" />
<Button <Button
android:id="@+id/done_editing_button" android:id="@+id/done_editing_button"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginStart="1dp" android:layout_marginStart="1dp"
android:layout_marginTop="16dp"
android:background="@drawable/button_bg_right" android:background="@drawable/button_bg_right"
android:text="@string/done" android:text="@string/done"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"

View File

@ -24,14 +24,14 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="24dp" android:layout_marginStart="24dp"
android:layout_marginEnd="24dp" android:layout_marginEnd="24dp"
android:textAlignment="center"
android:textSize="12sp" android:textSize="12sp"
android:textStyle="bold" android:textStyle="bold"
android:textAlignment="center"
android:visibility="gone" android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@id/sync_progress_bar"
app:layout_constraintEnd_toEndOf="@id/sync_progress_bar" app:layout_constraintEnd_toEndOf="@id/sync_progress_bar"
app:layout_constraintStart_toStartOf="@id/sync_progress_bar" app:layout_constraintStart_toStartOf="@id/sync_progress_bar"
app:layout_constraintTop_toTopOf="@id/sync_progress_bar" app:layout_constraintTop_toTopOf="@id/sync_progress_bar"
app:layout_constraintBottom_toBottomOf="@id/sync_progress_bar"
tools:text="Syncing... 3102333/40010203" /> tools:text="Syncing... 3102333/40010203" />
<TextView <TextView
@ -75,20 +75,22 @@
android:id="@+id/no_history_layout" android:id="@+id/no_history_layout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/balance_locked_textview" app:layout_constraintTop_toBottomOf="@id/balance_locked_textview"
android:visibility="gone"
tools:visibility="visible"> tools:visibility="visible">
<ImageView <ImageView
android:id="@+id/monerochan_imageview" android:id="@+id/monerochan_imageview"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="400dp" android:layout_height="400dp"
android:src="@drawable/xmrchan_empty" android:src="@drawable/xmrchan_empty"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toStartOf="@id/monerochan_empty_tx_textview"
app:layout_constraintEnd_toStartOf="@id/monerochan_empty_tx_textview"/> app:layout_constraintStart_toStartOf="parent" />
<TextView <TextView
android:id="@+id/monerochan_empty_tx_textview" android:id="@+id/monerochan_empty_tx_textview"
android:layout_width="0dp" android:layout_width="0dp"
@ -97,19 +99,20 @@
android:text="@string/no_history_nget_some_monero_in_here" android:text="@string/no_history_nget_some_monero_in_here"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/monerochan_imageview" app:layout_constraintStart_toEndOf="@id/monerochan_imageview"
app:layout_constraintTop_toTopOf="@id/monerochan_imageview"/> app:layout_constraintTop_toTopOf="@id/monerochan_imageview" />
<TextView <TextView
android:id="@+id/empty_tx_textview" android:id="@+id/empty_tx_textview"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textAlignment="center"
android:layout_marginStart="24dp" android:layout_marginStart="24dp"
android:layout_marginEnd="24dp" android:layout_marginEnd="24dp"
android:text="@string/no_history_nget_some_monero_in_here" android:text="@string/no_history_nget_some_monero_in_here"
android:textAlignment="center"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent" />
app:layout_constraintBottom_toBottomOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
<ImageView <ImageView
@ -134,11 +137,11 @@
android:id="@+id/receive_button" android:id="@+id/receive_button"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/button_bg_left" android:layout_marginStart="24dp"
android:text="@string/receive"
android:layout_marginEnd="1dp" android:layout_marginEnd="1dp"
android:layout_marginBottom="24dp" android:layout_marginBottom="24dp"
android:layout_marginStart="24dp" android:background="@drawable/button_bg_left"
android:text="@string/receive"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/send_button" app:layout_constraintEnd_toStartOf="@id/send_button"
app:layout_constraintStart_toStartOf="parent" /> app:layout_constraintStart_toStartOf="parent" />
@ -147,11 +150,11 @@
android:id="@+id/send_button" android:id="@+id/send_button"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="1dp"
android:layout_marginEnd="24dp"
android:layout_marginBottom="24dp"
android:background="@drawable/button_bg_right" android:background="@drawable/button_bg_right"
android:text="@string/send" android:text="@string/send"
android:layout_marginStart="1dp"
android:layout_marginBottom="24dp"
android:layout_marginEnd="24dp"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/receive_button" /> app:layout_constraintStart_toEndOf="@id/receive_button" />
@ -162,10 +165,10 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="24dp" android:layout_marginEnd="24dp"
android:contentDescription="@string/settings"
android:minWidth="48dp" android:minWidth="48dp"
android:minHeight="48dp" android:minHeight="48dp"
android:padding="8dp" android:padding="8dp"
android:contentDescription="@string/settings"
android:src="@drawable/ic_settings" android:src="@drawable/ic_settings"
app:layout_constraintBottom_toBottomOf="@id/balance_unlocked_textview" app:layout_constraintBottom_toBottomOf="@id/balance_unlocked_textview"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"

View File

@ -4,23 +4,27 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
<ImageView <ImageView
android:id="@+id/xmrchan_onboarding_imageview" android:id="@+id/xmrchan_onboarding_imageview"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:scaleType="fitEnd"
android:adjustViewBounds="false" android:adjustViewBounds="false"
android:scaleType="fitEnd"
android:src="@drawable/xmrchan_half" android:src="@drawable/xmrchan_half"
app:layout_constraintBottom_toBottomOf="parent"/> app:layout_constraintBottom_toBottomOf="parent" />
<ScrollView <ScrollView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
android:paddingEnd="24dp"
android:paddingStart="24dp" android:paddingStart="24dp"
android:paddingTop="24dp"> android:paddingTop="24dp"
android:paddingEnd="24dp">
<TextView <TextView
android:id="@+id/create_wallet_textview" android:id="@+id/create_wallet_textview"
android:layout_width="0dp" android:layout_width="0dp"
@ -40,10 +44,10 @@
android:layout_height="32dp" android:layout_height="32dp"
android:src="@drawable/tor" android:src="@drawable/tor"
android:visibility="invisible" android:visibility="invisible"
app:layout_constraintBottom_toBottomOf="@id/onboarding_tor_loading_progressindicator"
app:layout_constraintEnd_toEndOf="@id/onboarding_tor_loading_progressindicator" app:layout_constraintEnd_toEndOf="@id/onboarding_tor_loading_progressindicator"
app:layout_constraintStart_toStartOf="@id/onboarding_tor_loading_progressindicator" app:layout_constraintStart_toStartOf="@id/onboarding_tor_loading_progressindicator"
app:layout_constraintTop_toTopOf="@id/onboarding_tor_loading_progressindicator" app:layout_constraintTop_toTopOf="@id/onboarding_tor_loading_progressindicator" />
app:layout_constraintBottom_toBottomOf="@id/onboarding_tor_loading_progressindicator"/>
<com.google.android.material.progressindicator.CircularProgressIndicator <com.google.android.material.progressindicator.CircularProgressIndicator
android:id="@+id/onboarding_tor_loading_progressindicator" android:id="@+id/onboarding_tor_loading_progressindicator"
@ -51,9 +55,9 @@
android:layout_height="32dp" android:layout_height="32dp"
android:indeterminate="true" android:indeterminate="true"
android:visibility="invisible" android:visibility="invisible"
app:layout_constraintBottom_toBottomOf="@id/create_wallet_textview"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/create_wallet_textview" app:layout_constraintTop_toTopOf="@id/create_wallet_textview" />
app:layout_constraintBottom_toBottomOf="@id/create_wallet_textview"/>
<EditText <EditText
android:id="@+id/wallet_password_edittext" android:id="@+id/wallet_password_edittext"
@ -88,13 +92,13 @@
android:id="@+id/advanced_settings_dropdown_textview" android:id="@+id/advanced_settings_dropdown_textview"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
android:text="@string/more_options" android:layout_marginBottom="8dp"
android:textStyle="bold"
android:paddingTop="4dp" android:paddingTop="4dp"
android:paddingBottom="4dp" android:paddingBottom="4dp"
android:text="@string/more_options"
android:textSize="18sp" android:textSize="18sp"
android:textStyle="bold"
app:layout_constraintBottom_toTopOf="@id/more_options_layout" app:layout_constraintBottom_toTopOf="@id/more_options_layout"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0" app:layout_constraintHorizontal_bias="0.0"
@ -105,9 +109,9 @@
android:id="@+id/advanced_settings_chevron_imageview" android:id="@+id/advanced_settings_chevron_imageview"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:contentDescription="@string/display_advanced_wallet_creation_options"
android:minWidth="24dp" android:minWidth="24dp"
android:minHeight="24dp" android:minHeight="24dp"
android:contentDescription="@string/display_advanced_wallet_creation_options"
android:src="@drawable/ic_keyboard_arrow_down" android:src="@drawable/ic_keyboard_arrow_down"
app:layout_constraintBottom_toBottomOf="@id/advanced_settings_dropdown_textview" app:layout_constraintBottom_toBottomOf="@id/advanced_settings_dropdown_textview"
app:layout_constraintStart_toEndOf="@id/advanced_settings_dropdown_textview" app:layout_constraintStart_toEndOf="@id/advanced_settings_dropdown_textview"
@ -117,9 +121,10 @@
android:id="@+id/more_options_layout" android:id="@+id/more_options_layout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/advanced_settings_dropdown_textview"> app:layout_constraintTop_toBottomOf="@id/advanced_settings_dropdown_textview">
<TextView <TextView
android:id="@+id/disable_xmrchan_textview" android:id="@+id/disable_xmrchan_textview"
android:layout_width="0dp" android:layout_width="0dp"
@ -135,8 +140,8 @@
android:id="@+id/show_xmrchan_switch" android:id="@+id/show_xmrchan_switch"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:minHeight="48dp"
android:minWidth="48dp" android:minWidth="48dp"
android:minHeight="48dp"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
@ -145,37 +150,38 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:paddingStart="16dp"
android:paddingEnd="16dp"
tools:text="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
android:background="@drawable/button_bg" android:background="@drawable/button_bg"
android:ellipsize="middle" android:ellipsize="middle"
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:singleLine="true" android:singleLine="true"
app:layout_constraintBottom_toTopOf="@id/wallet_seed_layout"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0" app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toTopOf="@id/wallet_seed_layout"
app:layout_constraintTop_toBottomOf="@id/show_xmrchan_switch" app:layout_constraintTop_toBottomOf="@id/show_xmrchan_switch"
tools:ignore="SpeakableTextPresentCheck" /> tools:ignore="SpeakableTextPresentCheck"
tools:text="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" />
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/wallet_seed_layout" android:id="@+id/wallet_seed_layout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/card"
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
app:layout_constraintTop_toBottomOf="@id/select_node_button" android:background="@drawable/card"
app:layout_constraintBottom_toTopOf="@id/wallet_proxy_layout"> app:layout_constraintBottom_toTopOf="@id/wallet_proxy_layout"
app:layout_constraintTop_toBottomOf="@id/select_node_button">
<Button <Button
android:id="@+id/seed_type_button" android:id="@+id/seed_type_button"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="32dp" android:layout_height="32dp"
android:background="@drawable/button_bg_small"
android:text="POLYSEED" android:text="POLYSEED"
android:textSize="12sp" android:textSize="12sp"
android:background="@drawable/button_bg_small" app:layout_constraintBottom_toTopOf="@id/seed_type_desc_textview"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent" />
app:layout_constraintBottom_toTopOf="@id/seed_type_desc_textview"/>
<TextView <TextView
android:id="@+id/seed_type_label_textview" android:id="@+id/seed_type_label_textview"
@ -183,21 +189,21 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="Seed version" android:text="Seed version"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintBottom_toBottomOf="@id/seed_type_button"
app:layout_constraintEnd_toStartOf="@id/seed_type_button" app:layout_constraintEnd_toStartOf="@id/seed_type_button"
app:layout_constraintTop_toTopOf="@id/seed_type_button" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="@id/seed_type_button"/> app:layout_constraintTop_toTopOf="@id/seed_type_button" />
<TextView <TextView
android:id="@+id/seed_type_desc_textview" android:id="@+id/seed_type_desc_textview"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="@color/oled_addressListColor"
android:paddingBottom="16dp"
android:paddingTop="8dp" android:paddingTop="8dp"
android:paddingBottom="16dp"
android:text="16 words instead of 25; just as secure." android:text="16 words instead of 25; just as secure."
app:layout_constraintTop_toBottomOf="@id/seed_type_button" android:textColor="@color/oled_addressListColor"
app:layout_constraintBottom_toTopOf="@id/wallet_seed_edittext"/> app:layout_constraintBottom_toTopOf="@id/wallet_seed_edittext"
app:layout_constraintTop_toBottomOf="@id/seed_type_button" />
<EditText <EditText
android:id="@+id/wallet_seed_edittext" android:id="@+id/wallet_seed_edittext"
@ -215,12 +221,12 @@
android:id="@+id/wallet_restore_height_edittext" android:id="@+id/wallet_restore_height_edittext"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:background="@drawable/edittext_bg" android:background="@drawable/edittext_bg"
android:hint="@string/restore_height_optional" android:hint="@string/restore_height_optional"
android:inputType="number" android:inputType="number"
android:minHeight="48dp" android:minHeight="48dp"
android:visibility="gone" android:visibility="gone"
android:layout_marginTop="8dp"
app:layout_constraintBottom_toTopOf="@id/seed_offset_checkbox" app:layout_constraintBottom_toTopOf="@id/seed_offset_checkbox"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
@ -233,10 +239,11 @@
android:minHeight="48dp" android:minHeight="48dp"
android:text="@string/use_password_as_seed_offset" android:text="@string/use_password_as_seed_offset"
android:visibility="gone" android:visibility="gone"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/wallet_restore_height_edittext"/> app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/wallet_restore_height_edittext" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/wallet_proxy_layout" android:id="@+id/wallet_proxy_layout"
android:layout_width="match_parent" android:layout_width="match_parent"
@ -244,6 +251,7 @@
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
android:background="@drawable/card_no_top" android:background="@drawable/card_no_top"
app:layout_constraintTop_toBottomOf="@id/wallet_seed_layout"> app:layout_constraintTop_toBottomOf="@id/wallet_seed_layout">
<TextView <TextView
android:id="@+id/tor_onboarding_switch_label" android:id="@+id/tor_onboarding_switch_label"
android:layout_width="0dp" android:layout_width="0dp"
@ -259,20 +267,22 @@
android:id="@+id/tor_onboarding_switch" android:id="@+id/tor_onboarding_switch"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:minHeight="48dp"
android:minWidth="48dp" android:minWidth="48dp"
android:minHeight="48dp"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<CheckBox <CheckBox
android:id="@+id/bundled_tor_checkbox" android:id="@+id/bundled_tor_checkbox"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:minHeight="48dp" android:minHeight="48dp"
android:text="@string/use_bundled_tor" android:text="@string/use_bundled_tor"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toTopOf="@id/wallet_proxy_address_edittext" app:layout_constraintBottom_toTopOf="@id/wallet_proxy_address_edittext"
app:layout_constraintTop_toBottomOf="@id/tor_onboarding_switch"/> app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tor_onboarding_switch" />
<EditText <EditText
android:id="@+id/wallet_proxy_address_edittext" android:id="@+id/wallet_proxy_address_edittext"
android:layout_width="0dp" android:layout_width="0dp"
@ -289,9 +299,9 @@
android:id="@+id/wallet_proxy_port_edittext" android:id="@+id/wallet_proxy_port_edittext"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:background="@drawable/edittext_bg" android:background="@drawable/edittext_bg"
android:hint="@string/wallet_proxy_port_hint" android:hint="@string/wallet_proxy_port_hint"
android:layout_marginTop="8dp"
android:inputType="number" android:inputType="number"
android:minHeight="48dp" android:minHeight="48dp"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
@ -300,14 +310,15 @@
app:layout_constraintTop_toBottomOf="@id/wallet_proxy_address_edittext" /> app:layout_constraintTop_toBottomOf="@id/wallet_proxy_address_edittext" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
<Button <Button
android:id="@+id/create_wallet_button" android:id="@+id/create_wallet_button"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="32dp" android:layout_marginTop="32dp"
android:background="@drawable/button_bg" android:background="@drawable/button_bg"
android:text="@string/create_wallet"
android:enabled="false" android:enabled="false"
android:text="@string/create_wallet"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/more_options_layout" /> app:layout_constraintTop_toBottomOf="@id/more_options_layout" />

View File

@ -1,11 +1,10 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:padding="24dp"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent"
android:padding="24dp">
<TextView <TextView
android:id="@+id/recv_monero_textview" android:id="@+id/recv_monero_textview"
@ -25,13 +24,13 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@android:color/transparent" android:background="@android:color/transparent"
android:src="@drawable/ic_refresh" android:contentDescription="@string/generate_fresh_wallet_address"
android:minWidth="48dp" android:minWidth="48dp"
android:minHeight="48dp" android:minHeight="48dp"
android:contentDescription="@string/generate_fresh_wallet_address" android:src="@drawable/ic_refresh"
app:layout_constraintBottom_toBottomOf="@id/recv_monero_textview"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/recv_monero_textview" app:layout_constraintTop_toTopOf="@id/recv_monero_textview"
app:layout_constraintBottom_toBottomOf="@id/recv_monero_textview"
app:tint="@color/oled_textColorPrimary" /> app:tint="@color/oled_textColorPrimary" />
<ImageView <ImageView
@ -58,18 +57,18 @@
android:id="@+id/address_textview" android:id="@+id/address_textview"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
android:textSize="16sp" android:layout_marginEnd="8dp"
android:textStyle="bold"
android:ellipsize="middle" android:ellipsize="middle"
android:singleLine="true"
android:paddingTop="4dp" android:paddingTop="4dp"
android:paddingBottom="4dp" android:paddingBottom="4dp"
android:singleLine="true"
android:textSize="16sp"
android:textStyle="bold"
app:layout_constraintBottom_toTopOf="@id/address_label_textview"
app:layout_constraintEnd_toStartOf="@id/copy_address_imagebutton" app:layout_constraintEnd_toStartOf="@id/copy_address_imagebutton"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/monero_qr_imageview" app:layout_constraintTop_toBottomOf="@id/monero_qr_imageview"
app:layout_constraintBottom_toTopOf="@id/address_label_textview"
tools:text="ADDRESS" /> tools:text="ADDRESS" />
<TextView <TextView
@ -78,11 +77,11 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="8dp" android:layout_marginEnd="8dp"
android:textSize="14sp"
android:ellipsize="middle" android:ellipsize="middle"
android:singleLine="true"
android:paddingStart="8dp" android:paddingStart="8dp"
android:paddingEnd="8dp" android:paddingEnd="8dp"
android:singleLine="true"
android:textSize="14sp"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/address_textview" app:layout_constraintTop_toBottomOf="@id/address_textview"
tools:text="LABEL" /> tools:text="LABEL" />
@ -91,11 +90,11 @@
android:id="@+id/copy_address_imagebutton" android:id="@+id/copy_address_imagebutton"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
android:background="@android:color/transparent"
android:contentDescription="@string/copy_selected_wallet_address"
android:minWidth="48dp" android:minWidth="48dp"
android:minHeight="48dp" android:minHeight="48dp"
android:contentDescription="@string/copy_selected_wallet_address"
android:src="@drawable/ic_content_copy_24dp" android:src="@drawable/ic_content_copy_24dp"
app:layout_constraintBottom_toTopOf="@id/address_list_recyclerview" app:layout_constraintBottom_toTopOf="@id/address_list_recyclerview"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
@ -108,20 +107,20 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="8dp" android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp" android:layout_marginBottom="8dp"
android:textSize="14sp"
android:ellipsize="middle" android:ellipsize="middle"
android:singleLine="true" android:singleLine="true"
android:text="@string/previous_addresses"
android:textSize="14sp"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toTopOf="@id/address_list_recyclerview" app:layout_constraintBottom_toTopOf="@id/address_list_recyclerview"
android:text="@string/previous_addresses" /> app:layout_constraintStart_toStartOf="parent" />
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/address_list_recyclerview" android:id="@+id/address_list_recyclerview"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
android:background="@drawable/round_bg"
android:layout_marginTop="64dp" android:layout_marginTop="64dp"
android:background="@drawable/round_bg"
android:clipToPadding="true" android:clipToPadding="true"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"

View File

@ -4,13 +4,14 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
<TextView <TextView
android:id="@+id/send_monero_textview" android:id="@+id/send_monero_textview"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/send_monero"
android:layout_marginTop="24dp"
android:layout_marginStart="24dp" android:layout_marginStart="24dp"
android:layout_marginTop="24dp"
android:text="@string/send_monero"
android:textSize="32sp" android:textSize="32sp"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintEnd_toStartOf="@id/top_controls" app:layout_constraintEnd_toStartOf="@id/top_controls"
@ -26,6 +27,7 @@
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/send_monero_textview" app:layout_constraintStart_toEndOf="@id/send_monero_textview"
app:layout_constraintTop_toTopOf="@id/send_monero_textview"> app:layout_constraintTop_toTopOf="@id/send_monero_textview">
<Button <Button
android:id="@+id/send_max_button" android:id="@+id/send_max_button"
android:layout_width="wrap_content" android:layout_width="wrap_content"
@ -43,17 +45,17 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@android:color/transparent" android:background="@android:color/transparent"
android:contentDescription="@string/add_recipient_to_transaction"
android:minWidth="48dp" android:minWidth="48dp"
android:minHeight="48dp" android:minHeight="48dp"
android:contentDescription="@string/add_recipient_to_transaction"
android:src="@android:drawable/ic_input_add" android:src="@android:drawable/ic_input_add"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@id/send_max_button" app:layout_constraintEnd_toStartOf="@id/send_max_button"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:tint="@color/oled_textColorPrimary"
tools:ignore="SpeakableTextPresentCheck" tools:ignore="SpeakableTextPresentCheck"
tools:visibility="visible" tools:visibility="visible" />
app:tint="@color/oled_textColorPrimary" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
<!-- CREATE LAYOUT --> <!-- CREATE LAYOUT -->
@ -61,9 +63,9 @@
android:id="@+id/selected_utxos_value_textview" android:id="@+id/selected_utxos_value_textview"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="24dp"
android:layout_marginStart="24dp" android:layout_marginStart="24dp"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:layout_marginEnd="24dp"
android:text="@string/selected_utxos_value" android:text="@string/selected_utxos_value"
android:textSize="14sp" android:textSize="14sp"
android:visibility="invisible" android:visibility="invisible"
@ -76,57 +78,60 @@
android:id="@+id/tx_fee_radiogroup_label_textview" android:id="@+id/tx_fee_radiogroup_label_textview"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/fee_priority"
android:layout_marginStart="24dp" android:layout_marginStart="24dp"
android:text="@string/fee_priority"
android:textSize="16sp" android:textSize="16sp"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintBottom_toBottomOf="@id/tx_fee_radiogroup"
app:layout_constraintEnd_toStartOf="@id/tx_fee_radiogroup" app:layout_constraintEnd_toStartOf="@id/tx_fee_radiogroup"
app:layout_constraintTop_toTopOf="@id/tx_fee_radiogroup" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="@id/tx_fee_radiogroup"/> app:layout_constraintTop_toTopOf="@id/tx_fee_radiogroup" />
<RadioGroup <RadioGroup
android:id="@+id/tx_fee_radiogroup" android:id="@+id/tx_fee_radiogroup"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginEnd="24dp" android:layout_marginEnd="24dp"
android:orientation="horizontal"
app:layout_constraintBottom_toTopOf="@id/create_tx_button" app:layout_constraintBottom_toTopOf="@id/create_tx_button"
app:layout_constraintStart_toEndOf="@id/tx_fee_radiogroup_label_textview" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintEnd_toEndOf="parent"> app:layout_constraintStart_toEndOf="@id/tx_fee_radiogroup_label_textview">
<RadioButton <RadioButton
android:layout_width="wrap_content"
android:layout_height="48dp"
android:text="@string/low"
android:id="@+id/low_fee_radiobutton" android:id="@+id/low_fee_radiobutton"
android:layout_width="wrap_content"
android:layout_height="48dp"
android:checked="true" android:checked="true"
android:text="@string/low"
android:textSize="16sp" /> android:textSize="16sp" />
<RadioButton <RadioButton
android:layout_width="wrap_content"
android:layout_height="48dp"
android:text="@string/medium"
android:id="@+id/med_fee_radiobutton" android:id="@+id/med_fee_radiobutton"
android:checked="false"
android:textSize="16sp"/>
<RadioButton
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="48dp" android:layout_height="48dp"
android:text="@string/high"
android:id="@+id/high_fee_radiobutton"
android:checked="false" android:checked="false"
android:textSize="16sp"/> android:text="@string/medium"
android:textSize="16sp" />
<RadioButton
android:id="@+id/high_fee_radiobutton"
android:layout_width="wrap_content"
android:layout_height="48dp"
android:checked="false"
android:text="@string/high"
android:textSize="16sp" />
</RadioGroup> </RadioGroup>
<Button <Button
android:id="@+id/create_tx_button" android:id="@+id/create_tx_button"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/button_bg" android:layout_marginStart="24dp"
android:text="@string/create"
android:layout_marginTop="24dp" android:layout_marginTop="24dp"
android:layout_marginEnd="24dp" android:layout_marginEnd="24dp"
android:layout_marginStart="24dp"
android:layout_marginBottom="24dp" android:layout_marginBottom="24dp"
android:background="@drawable/button_bg"
android:text="@string/create"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
tools:visibility="visible" /> tools:visibility="visible" />
@ -140,16 +145,16 @@
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/selected_utxos_value_textview"> app:layout_constraintTop_toBottomOf="@id/selected_utxos_value_textview">
<LinearLayout <LinearLayout
android:id="@+id/transaction_destination_list" android:id="@+id/transaction_destination_list"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:paddingBottom="128dp"
android:clickable="false" android:clickable="false"
android:clipToPadding="false" android:clipToPadding="false"
android:orientation="vertical" android:orientation="vertical"
> android:paddingBottom="128dp">
</LinearLayout> </LinearLayout>
</ScrollView> </ScrollView>
@ -158,15 +163,15 @@
android:id="@+id/address_pending_textview" android:id="@+id/address_pending_textview"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
android:layout_marginEnd="24dp"
android:ellipsize="middle" android:ellipsize="middle"
android:singleLine="true" android:singleLine="true"
android:text="@string/tx_address_text" android:text="@string/tx_address_text"
android:textSize="16sp" android:textSize="16sp"
android:textStyle="bold" android:textStyle="bold"
android:visibility="gone" android:visibility="gone"
android:layout_marginStart="24dp"
android:layout_marginEnd="24dp"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/send_monero_textview" app:layout_constraintTop_toBottomOf="@id/send_monero_textview"
@ -176,13 +181,13 @@
android:id="@+id/amount_pending_textview" android:id="@+id/amount_pending_textview"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
android:layout_marginEnd="24dp"
android:text="@string/tx_amount_text" android:text="@string/tx_amount_text"
android:textSize="16sp" android:textSize="16sp"
android:textStyle="bold" android:textStyle="bold"
android:visibility="gone" android:visibility="gone"
android:layout_marginStart="24dp"
android:layout_marginEnd="24dp"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/address_pending_textview" app:layout_constraintTop_toBottomOf="@id/address_pending_textview"
@ -192,13 +197,13 @@
android:id="@+id/fee_textview" android:id="@+id/fee_textview"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
android:layout_marginEnd="24dp"
android:text="@string/tx_fee_text" android:text="@string/tx_fee_text"
android:textSize="16sp" android:textSize="16sp"
android:textStyle="bold" android:textStyle="bold"
android:visibility="gone" android:visibility="gone"
android:layout_marginStart="24dp"
android:layout_marginEnd="24dp"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/amount_pending_textview" app:layout_constraintTop_toBottomOf="@id/amount_pending_textview"
@ -211,20 +216,20 @@
android:layout_marginStart="32dp" android:layout_marginStart="32dp"
android:layout_marginEnd="32dp" android:layout_marginEnd="32dp"
android:layout_marginBottom="24dp" android:layout_marginBottom="24dp"
android:elevation="6dp"
android:visibility="gone"
android:importantForAccessibility="yes"
android:contentDescription="@string/slide_to_send_transaction" android:contentDescription="@string/slide_to_send_transaction"
android:elevation="6dp"
android:focusable="true"
android:importantForAccessibility="yes"
android:visibility="gone"
app:area_margin="10dp" app:area_margin="10dp"
app:border_radius="20dp" app:border_radius="20dp"
app:inner_color="@android:color/white" app:inner_color="@android:color/white"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:outer_color="@color/oled_colorSecondary" app:outer_color="@color/oled_colorSecondary"
app:slider_height="72dp" app:slider_height="72dp"
app:slider_locked="false" app:slider_locked="false"
app:text="@string/slide_to_send" app:text="@string/slide_to_send"
android:focusable="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:text_size="18sp" app:text_size="18sp"
tools:visibility="visible"/> tools:visibility="visible" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -5,6 +5,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
tools:context="net.mynero.wallet.fragment.settings.SettingsFragment"> tools:context="net.mynero.wallet.fragment.settings.SettingsFragment">
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content">
@ -13,24 +14,25 @@
android:id="@+id/settings_textview" android:id="@+id/settings_textview"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/settings"
android:layout_marginTop="24dp"
android:layout_marginStart="24dp" android:layout_marginStart="24dp"
android:layout_marginTop="24dp"
android:text="@string/settings"
android:textSize="32sp" android:textSize="32sp"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintEnd_toStartOf="@id/settings_tor_loading_progressindicator" app:layout_constraintEnd_toStartOf="@id/settings_tor_loading_progressindicator"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<ImageView <ImageView
android:id="@+id/settings_tor_icon" android:id="@+id/settings_tor_icon"
android:layout_width="32dp" android:layout_width="32dp"
android:layout_height="32dp" android:layout_height="32dp"
android:layout_marginEnd="24dp"
android:src="@drawable/tor" android:src="@drawable/tor"
android:visibility="invisible" android:visibility="invisible"
android:layout_marginEnd="24dp" app:layout_constraintBottom_toBottomOf="@id/settings_textview"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/settings_textview" app:layout_constraintTop_toTopOf="@id/settings_textview" />
app:layout_constraintBottom_toBottomOf="@id/settings_textview"/>
<com.google.android.material.progressindicator.CircularProgressIndicator <com.google.android.material.progressindicator.CircularProgressIndicator
android:id="@+id/settings_tor_loading_progressindicator" android:id="@+id/settings_tor_loading_progressindicator"
@ -38,20 +40,20 @@
android:layout_height="32dp" android:layout_height="32dp"
android:indeterminate="true" android:indeterminate="true"
android:visibility="invisible" android:visibility="invisible"
app:layout_constraintBottom_toBottomOf="@id/settings_tor_icon"
app:layout_constraintEnd_toEndOf="@id/settings_tor_icon" app:layout_constraintEnd_toEndOf="@id/settings_tor_icon"
app:layout_constraintStart_toStartOf="@id/settings_tor_icon" app:layout_constraintStart_toStartOf="@id/settings_tor_icon"
app:layout_constraintTop_toTopOf="@id/settings_tor_icon" app:layout_constraintTop_toTopOf="@id/settings_tor_icon" />
app:layout_constraintBottom_toBottomOf="@id/settings_tor_icon"/>
<TextView <TextView
android:id="@+id/wallet_settings_textview" android:id="@+id/wallet_settings_textview"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginTop="32dp" android:layout_marginTop="32dp"
android:layout_marginEnd="24dp"
android:text="@string/wallet" android:text="@string/wallet"
android:textSize="24sp" android:textSize="24sp"
android:layout_marginEnd="24dp"
android:layout_marginStart="24dp"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
@ -61,10 +63,10 @@
android:id="@+id/display_seed_button" android:id="@+id/display_seed_button"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:background="@drawable/button_bg"
android:layout_marginEnd="24dp"
android:layout_marginStart="24dp" android:layout_marginStart="24dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="24dp"
android:background="@drawable/button_bg"
android:text="@string/display_recovery_phrase" android:text="@string/display_recovery_phrase"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0" app:layout_constraintHorizontal_bias="0.0"
@ -75,10 +77,10 @@
android:id="@+id/display_utxos_button" android:id="@+id/display_utxos_button"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:background="@drawable/button_bg"
android:layout_marginEnd="24dp"
android:layout_marginStart="24dp" android:layout_marginStart="24dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="24dp"
android:background="@drawable/button_bg"
android:text="@string/view_utxos" android:text="@string/view_utxos"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0" app:layout_constraintHorizontal_bias="0.0"
@ -89,10 +91,10 @@
android:id="@+id/transaction_settings_textview" android:id="@+id/transaction_settings_textview"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="32dp"
android:text="@string/transactions"
android:layout_marginEnd="24dp"
android:layout_marginStart="24dp" android:layout_marginStart="24dp"
android:layout_marginTop="32dp"
android:layout_marginEnd="24dp"
android:text="@string/transactions"
android:textSize="24sp" android:textSize="24sp"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
@ -103,9 +105,9 @@
android:id="@+id/donate_per_tx_label_textview" android:id="@+id/donate_per_tx_label_textview"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:text="@string/option_donate_per_tx" android:text="@string/option_donate_per_tx"
android:textSize="16sp" android:textSize="16sp"
android:layout_marginStart="24dp"
app:layout_constraintBottom_toBottomOf="@id/donate_per_tx_switch" app:layout_constraintBottom_toBottomOf="@id/donate_per_tx_switch"
app:layout_constraintEnd_toStartOf="@id/donate_per_tx_switch" app:layout_constraintEnd_toStartOf="@id/donate_per_tx_switch"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
@ -115,11 +117,11 @@
android:id="@+id/donate_per_tx_desc_textview" android:id="@+id/donate_per_tx_desc_textview"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/option_donate_per_tx_desc"
android:textSize="14sp"
android:textColor="@color/oled_addressListColor"
android:layout_marginStart="24dp" android:layout_marginStart="24dp"
android:layout_marginEnd="24dp" android:layout_marginEnd="24dp"
android:text="@string/option_donate_per_tx_desc"
android:textColor="@color/oled_addressListColor"
android:textSize="14sp"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/donate_per_tx_switch" /> app:layout_constraintTop_toBottomOf="@id/donate_per_tx_switch" />
@ -129,8 +131,8 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="24dp" android:layout_marginEnd="24dp"
android:minHeight="48dp"
android:minWidth="48dp" android:minWidth="48dp"
android:minHeight="48dp"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/transaction_settings_textview" /> app:layout_constraintTop_toBottomOf="@id/transaction_settings_textview" />
@ -138,10 +140,10 @@
android:id="@+id/appearance_settings_textview" android:id="@+id/appearance_settings_textview"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="32dp"
android:text="@string/appearance"
android:layout_marginEnd="24dp"
android:layout_marginStart="24dp" android:layout_marginStart="24dp"
android:layout_marginTop="32dp"
android:layout_marginEnd="24dp"
android:text="@string/appearance"
android:textSize="24sp" android:textSize="24sp"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
@ -152,9 +154,9 @@
android:id="@+id/street_mode_label_textview" android:id="@+id/street_mode_label_textview"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:text="@string/street_mode" android:text="@string/street_mode"
android:textSize="16sp" android:textSize="16sp"
android:layout_marginStart="24dp"
app:layout_constraintBottom_toBottomOf="@id/street_mode_switch" app:layout_constraintBottom_toBottomOf="@id/street_mode_switch"
app:layout_constraintEnd_toStartOf="@id/street_mode_switch" app:layout_constraintEnd_toStartOf="@id/street_mode_switch"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
@ -164,10 +166,10 @@
android:id="@+id/street_mode_switch" android:id="@+id/street_mode_switch"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="24dp"
android:minHeight="48dp"
android:minWidth="48dp"
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
android:layout_marginEnd="24dp"
android:minWidth="48dp"
android:minHeight="48dp"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/appearance_settings_textview" /> app:layout_constraintTop_toBottomOf="@id/appearance_settings_textview" />
@ -175,9 +177,9 @@
android:id="@+id/monerochan_label_textview" android:id="@+id/monerochan_label_textview"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:text="@string/option_hide_xmrchan" android:text="@string/option_hide_xmrchan"
android:textSize="16sp" android:textSize="16sp"
android:layout_marginStart="24dp"
app:layout_constraintBottom_toBottomOf="@id/monerochan_switch" app:layout_constraintBottom_toBottomOf="@id/monerochan_switch"
app:layout_constraintEnd_toStartOf="@id/monerochan_switch" app:layout_constraintEnd_toStartOf="@id/monerochan_switch"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
@ -188,8 +190,8 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="24dp" android:layout_marginEnd="24dp"
android:minHeight="48dp"
android:minWidth="48dp" android:minWidth="48dp"
android:minHeight="48dp"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/street_mode_switch" /> app:layout_constraintTop_toBottomOf="@id/street_mode_switch" />
@ -197,9 +199,9 @@
android:id="@+id/network_settings_textview" android:id="@+id/network_settings_textview"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginTop="32dp" android:layout_marginTop="32dp"
android:layout_marginEnd="24dp" android:layout_marginEnd="24dp"
android:layout_marginStart="24dp"
android:text="@string/network" android:text="@string/network"
android:textSize="24sp" android:textSize="24sp"
android:textStyle="bold" android:textStyle="bold"
@ -214,25 +216,25 @@
android:layout_marginStart="24dp" android:layout_marginStart="24dp"
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
android:layout_marginEnd="24dp" android:layout_marginEnd="24dp"
android:paddingStart="16dp"
android:paddingEnd="16dp"
tools:text="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
android:background="@drawable/button_bg" android:background="@drawable/button_bg"
android:ellipsize="middle" android:ellipsize="middle"
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:singleLine="true" android:singleLine="true"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0" app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/network_settings_textview" app:layout_constraintTop_toBottomOf="@id/network_settings_textview"
tools:ignore="SpeakableTextPresentCheck" /> tools:ignore="SpeakableTextPresentCheck"
tools:text="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" />
<TextView <TextView
android:id="@+id/tor_textview" android:id="@+id/tor_textview"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:text="@string/tor_switch_label" android:text="@string/tor_switch_label"
android:textSize="16sp" android:textSize="16sp"
android:layout_marginStart="24dp"
app:layout_constraintBottom_toBottomOf="@id/tor_switch" app:layout_constraintBottom_toBottomOf="@id/tor_switch"
app:layout_constraintEnd_toStartOf="@id/tor_switch" app:layout_constraintEnd_toStartOf="@id/tor_switch"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
@ -244,8 +246,8 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
android:layout_marginEnd="24dp" android:layout_marginEnd="24dp"
android:minHeight="48dp"
android:minWidth="48dp" android:minWidth="48dp"
android:minHeight="48dp"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/select_node_button" /> app:layout_constraintTop_toBottomOf="@id/select_node_button" />
@ -254,29 +256,30 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:visibility="visible" android:visibility="visible"
app:layout_constraintTop_toBottomOf="@id/tor_switch" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"> app:layout_constraintTop_toBottomOf="@id/tor_switch">
<CheckBox <CheckBox
android:id="@+id/bundled_tor_checkbox" android:id="@+id/bundled_tor_checkbox"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginEnd="24dp"
android:minHeight="48dp" android:minHeight="48dp"
android:text="@string/use_bundled_tor" android:text="@string/use_bundled_tor"
android:visibility="visible" android:visibility="visible"
android:layout_marginEnd="24dp"
android:layout_marginStart="24dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toTopOf="@id/wallet_proxy_address_edittext" app:layout_constraintBottom_toTopOf="@id/wallet_proxy_address_edittext"
app:layout_constraintTop_toTopOf="parent"/> app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<EditText <EditText
android:id="@+id/wallet_proxy_address_edittext" android:id="@+id/wallet_proxy_address_edittext"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="24dp"
android:layout_marginStart="24dp" android:layout_marginStart="24dp"
android:layout_marginEnd="24dp"
android:background="@drawable/edittext_bg" android:background="@drawable/edittext_bg"
android:hint="@string/wallet_proxy_address_hint" android:hint="@string/wallet_proxy_address_hint"
android:minHeight="48dp" android:minHeight="48dp"
@ -289,11 +292,11 @@
android:id="@+id/wallet_proxy_port_edittext" android:id="@+id/wallet_proxy_port_edittext"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/edittext_bg"
android:hint="@string/wallet_proxy_port_hint"
android:layout_marginEnd="24dp"
android:layout_marginStart="24dp" android:layout_marginStart="24dp"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:layout_marginEnd="24dp"
android:background="@drawable/edittext_bg"
android:hint="@string/wallet_proxy_port_hint"
android:inputType="number" android:inputType="number"
android:minHeight="48dp" android:minHeight="48dp"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"

View File

@ -13,9 +13,9 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="32dp" android:layout_marginBottom="32dp"
android:text="@string/transaction_action_recv" android:text="@string/transaction_action_recv"
android:textColor="@color/oled_addressListColor"
android:textSize="42sp" android:textSize="42sp"
android:textStyle="bold" android:textStyle="bold"
android:textColor="@color/oled_addressListColor"
app:layout_constraintBottom_toTopOf="@id/transaction_amount_textview" app:layout_constraintBottom_toTopOf="@id/transaction_amount_textview"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
@ -25,63 +25,63 @@
android:id="@+id/transaction_amount_textview" android:id="@+id/transaction_amount_textview"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:ellipsize="middle"
android:singleLine="true"
android:text="@string/tx_amount_no_prefix2" android:text="@string/tx_amount_no_prefix2"
android:textSize="24sp" android:textSize="24sp"
android:textStyle="bold" android:textStyle="bold"
android:singleLine="true"
android:ellipsize="middle"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/transaction_action_textview"/> app:layout_constraintTop_toBottomOf="@id/transaction_action_textview" />
<TextView <TextView
android:id="@+id/transaction_amount_units_textview" android:id="@+id/transaction_amount_units_textview"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="XMR"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:ellipsize="middle"
android:singleLine="true"
android:text="XMR"
android:textSize="24sp" android:textSize="24sp"
android:textStyle="bold" android:textStyle="bold"
android:singleLine="true"
android:ellipsize="middle"
app:layout_constraintStart_toEndOf="@id/transaction_amount_textview"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/transaction_action_textview"/> app:layout_constraintStart_toEndOf="@id/transaction_amount_textview"
app:layout_constraintTop_toBottomOf="@id/transaction_action_textview" />
<TextView <TextView
android:id="@+id/transaction_address_label_textview" android:id="@+id/transaction_address_label_textview"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/transaction_destination_desc"
android:textSize="28sp"
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
android:textStyle="bold" android:text="@string/transaction_destination_desc"
android:textColor="@color/oled_addressListColor" android:textColor="@color/oled_addressListColor"
app:layout_constraintStart_toStartOf="parent" android:textSize="28sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/transaction_amount_textview"/> app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/transaction_amount_textview" />
<TextView <TextView
android:id="@+id/transaction_address_textview" android:id="@+id/transaction_address_textview"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:ellipsize="middle"
android:singleLine="true"
android:text="@string/transaction_destination" android:text="@string/transaction_destination"
android:textSize="24sp" android:textSize="24sp"
android:textStyle="bold" android:textStyle="bold"
android:singleLine="true" app:layout_constraintBottom_toBottomOf="@id/copy_txaddress_imagebutton"
android:ellipsize="middle"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@id/copy_txaddress_imagebutton" app:layout_constraintEnd_toStartOf="@id/copy_txaddress_imagebutton"
app:layout_constraintTop_toTopOf="@id/copy_txaddress_imagebutton" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="@id/copy_txaddress_imagebutton"/> app:layout_constraintTop_toTopOf="@id/copy_txaddress_imagebutton" />
<ImageButton <ImageButton
android:id="@+id/copy_txaddress_imagebutton" android:id="@+id/copy_txaddress_imagebutton"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@android:color/transparent" android:background="@android:color/transparent"
android:contentDescription="@string/copy_transaction_addr"
android:minWidth="48dp" android:minWidth="48dp"
android:minHeight="48dp" android:minHeight="48dp"
android:contentDescription="@string/copy_transaction_addr"
android:src="@drawable/ic_content_copy_24dp" android:src="@drawable/ic_content_copy_24dp"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/transaction_address_textview" app:layout_constraintStart_toEndOf="@id/transaction_address_textview"
@ -91,37 +91,37 @@
android:id="@+id/transaction_hash_label_textview" android:id="@+id/transaction_hash_label_textview"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/transaction_hash_desc"
android:textSize="28sp"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:textStyle="bold" android:text="@string/transaction_hash_desc"
android:textColor="@color/oled_addressListColor" android:textColor="@color/oled_addressListColor"
app:layout_constraintStart_toStartOf="parent" android:textSize="28sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/copy_txaddress_imagebutton"/> app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/copy_txaddress_imagebutton" />
<TextView <TextView
android:id="@+id/transaction_hash_textview" android:id="@+id/transaction_hash_textview"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:ellipsize="middle"
android:singleLine="true"
android:text="@string/transaction_hash" android:text="@string/transaction_hash"
android:textSize="24sp" android:textSize="24sp"
android:textStyle="bold" android:textStyle="bold"
android:singleLine="true" app:layout_constraintBottom_toBottomOf="@id/copy_txhash_imagebutton"
android:ellipsize="middle"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@id/copy_txhash_imagebutton" app:layout_constraintEnd_toStartOf="@id/copy_txhash_imagebutton"
app:layout_constraintTop_toTopOf="@id/copy_txhash_imagebutton" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="@id/copy_txhash_imagebutton"/> app:layout_constraintTop_toTopOf="@id/copy_txhash_imagebutton" />
<ImageButton <ImageButton
android:id="@+id/copy_txhash_imagebutton" android:id="@+id/copy_txhash_imagebutton"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@android:color/transparent" android:background="@android:color/transparent"
android:contentDescription="@string/copy_transaction_hash"
android:minWidth="48dp" android:minWidth="48dp"
android:minHeight="48dp" android:minHeight="48dp"
android:contentDescription="@string/copy_transaction_hash"
android:src="@drawable/ic_content_copy_24dp" android:src="@drawable/ic_content_copy_24dp"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/transaction_hash_textview" app:layout_constraintStart_toEndOf="@id/transaction_hash_textview"
@ -133,75 +133,75 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:text="@string/transaction_on_date_label" android:text="@string/transaction_on_date_label"
android:textColor="@color/oled_addressListColor"
android:textSize="28sp" android:textSize="28sp"
android:textStyle="bold" android:textStyle="bold"
android:textColor="@color/oled_addressListColor"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/copy_txhash_imagebutton"/> app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/copy_txhash_imagebutton" />
<TextView <TextView
android:id="@+id/transaction_date_textview" android:id="@+id/transaction_date_textview"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:ellipsize="middle"
android:singleLine="true"
android:text="0" android:text="0"
android:textSize="24sp" android:textSize="24sp"
android:textStyle="bold" android:textStyle="bold"
android:singleLine="true"
android:ellipsize="middle"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/transaction_date_label_textview"/> app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/transaction_date_label_textview" />
<TextView <TextView
android:id="@+id/transaction_conf_label_textview" android:id="@+id/transaction_conf_label_textview"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/transaction_conf_desc"
android:textSize="28sp"
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
android:textStyle="bold" android:text="@string/transaction_conf_desc"
android:textColor="@color/oled_addressListColor" android:textColor="@color/oled_addressListColor"
app:layout_constraintStart_toStartOf="parent" android:textSize="28sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/transaction_date_textview"/> app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/transaction_date_textview" />
<TextView <TextView
android:id="@+id/transaction_conf_textview" android:id="@+id/transaction_conf_textview"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:ellipsize="middle"
android:singleLine="true"
android:text="0" android:text="0"
android:textSize="24sp" android:textSize="24sp"
android:textStyle="bold" android:textStyle="bold"
android:singleLine="true"
android:ellipsize="middle"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/transaction_conf_label_textview"/> app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/transaction_conf_label_textview" />
<TextView <TextView
android:id="@+id/transaction_conf_label2_textview" android:id="@+id/transaction_conf_label2_textview"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/transaction_conf_desc2_confirmed" android:text="@string/transaction_conf_desc2_confirmed"
android:textColor="@color/oled_addressListColor"
android:textSize="28sp" android:textSize="28sp"
android:textStyle="bold" android:textStyle="bold"
android:textColor="@color/oled_addressListColor"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/transaction_conf_textview"/> app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/transaction_conf_textview" />
<TextView <TextView
android:id="@+id/tx_block_height_textview" android:id="@+id/tx_block_height_textview"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:ellipsize="middle"
android:singleLine="true"
android:text="0" android:text="0"
android:textSize="24sp" android:textSize="24sp"
android:textStyle="bold" android:textStyle="bold"
android:singleLine="true"
android:ellipsize="middle"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/transaction_conf_label2_textview"/> app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/transaction_conf_label2_textview" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -10,12 +10,12 @@
android:id="@+id/view_utxos_textview" android:id="@+id/view_utxos_textview"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginTop="24dp"
android:layout_marginEnd="24dp"
android:text="@string/view_utxos" android:text="@string/view_utxos"
android:textSize="32sp" android:textSize="32sp"
android:textStyle="bold" android:textStyle="bold"
android:layout_marginTop="24dp"
android:layout_marginStart="24dp"
android:layout_marginEnd="24dp"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
@ -48,8 +48,8 @@
android:id="@+id/freeze_utxos_button" android:id="@+id/freeze_utxos_button"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/button_bg_left"
android:layout_marginEnd="1dp" android:layout_marginEnd="1dp"
android:background="@drawable/button_bg_left"
android:text="@string/freeze" android:text="@string/freeze"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/churn_utxos_button" app:layout_constraintEnd_toStartOf="@id/churn_utxos_button"
@ -69,8 +69,8 @@
android:id="@+id/send_utxos_button" android:id="@+id/send_utxos_button"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/button_bg_right"
android:layout_marginStart="1dp" android:layout_marginStart="1dp"
android:background="@drawable/button_bg_right"
android:text="@string/send" android:text="@string/send"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"

View File

@ -4,8 +4,8 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:fillViewport="true"
android:background="@color/oled_dialogBackgroundColor" android:background="@color/oled_dialogBackgroundColor"
android:fillViewport="true"
android:padding="24dp"> android:padding="24dp">
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
@ -29,24 +29,24 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/button_bg" android:background="@drawable/button_bg"
android:text="@string/add_node"
android:textSize="12sp"
android:paddingStart="16dp" android:paddingStart="16dp"
android:paddingEnd="16dp" android:paddingEnd="16dp"
app:layout_constraintStart_toEndOf="@id/nodes_textview" android:text="@string/add_node"
app:layout_constraintTop_toTopOf="parent" android:textSize="12sp"
app:layout_constraintBottom_toTopOf="@id/node_selection_recyclerview" app:layout_constraintBottom_toTopOf="@id/node_selection_recyclerview"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/nodes_textview"
app:layout_constraintTop_toTopOf="parent"
tools:visibility="visible" /> tools:visibility="visible" />
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/node_selection_recyclerview" android:id="@+id/node_selection_recyclerview"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:clipToPadding="false"
android:paddingBottom="128dp"
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
android:clipToPadding="false"
android:nestedScrollingEnabled="false" android:nestedScrollingEnabled="false"
android:paddingBottom="128dp"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"

View File

@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:padding="8dp" android:layout_marginBottom="8dp"
android:layout_marginBottom="8dp"> android:padding="8dp">
<ImageView <ImageView
android:id="@+id/anonymity_network_imageview" android:id="@+id/anonymity_network_imageview"
android:layout_width="20dp" android:layout_width="20dp"
@ -13,58 +13,62 @@
android:layout_marginEnd="8dp" android:layout_marginEnd="8dp"
android:src="@drawable/ic_fingerprint" android:src="@drawable/ic_fingerprint"
android:visibility="gone" android:visibility="gone"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@id/node_uri_textview" app:layout_constraintBottom_toTopOf="@id/node_uri_textview"
app:layout_constraintEnd_toStartOf="@id/node_name_textview"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@id/node_name_textview"/> app:layout_constraintTop_toTopOf="parent" />
<TextView <TextView
android:id="@+id/node_name_textview" android:id="@+id/node_name_textview"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="Node Name" android:text="Node Name"
android:textStyle="bold"
android:textSize="16sp" android:textSize="16sp"
app:layout_constraintStart_toEndOf="@id/anonymity_network_imageview" android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toTopOf="@id/node_uri_textview" app:layout_constraintBottom_toTopOf="@id/node_uri_textview"
app:layout_constraintTop_toTopOf="parent"/> app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/anonymity_network_imageview"
app:layout_constraintTop_toTopOf="parent" />
<TextView <TextView
android:id="@+id/node_uri_textview" android:id="@+id/node_uri_textview"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="NODE::"
android:ellipsize="middle" android:ellipsize="middle"
app:layout_constraintTop_toBottomOf="@id/node_name_textview" android:singleLine="true"
app:layout_constraintStart_toStartOf="parent" android:text="NODE::"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
android:singleLine="true" /> app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/node_name_textview" />
<TextView <TextView
android:id="@+id/authenticated_textview" android:id="@+id/authenticated_textview"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/auth"
android:textColor="@color/oled_addressListColor"
android:ellipsize="middle"
android:visibility="gone"
android:layout_marginStart="4dp" android:layout_marginStart="4dp"
android:layout_marginEnd="4dp" android:layout_marginEnd="4dp"
app:layout_constraintTop_toBottomOf="@id/node_uri_textview" android:ellipsize="middle"
android:singleLine="true"
android:text="@string/auth"
android:textColor="@color/oled_addressListColor"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@id/trusted_node_textview" app:layout_constraintEnd_toStartOf="@id/trusted_node_textview"
android:singleLine="true" /> app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/node_uri_textview" />
<TextView <TextView
android:id="@+id/trusted_node_textview" android:id="@+id/trusted_node_textview"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/trusted"
android:textColor="@color/oled_addressListColor"
android:ellipsize="middle"
android:visibility="gone"
android:layout_marginStart="4dp" android:layout_marginStart="4dp"
android:layout_marginEnd="4dp" android:layout_marginEnd="4dp"
app:layout_constraintTop_toBottomOf="@id/node_uri_textview" android:ellipsize="middle"
android:singleLine="true"
android:text="@string/trusted"
android:textColor="@color/oled_addressListColor"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/authenticated_textview" app:layout_constraintStart_toEndOf="@id/authenticated_textview"
android:singleLine="true" /> app:layout_constraintTop_toBottomOf="@id/node_uri_textview" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -14,11 +14,11 @@
android:id="@+id/enter_password_textview" android:id="@+id/enter_password_textview"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginTop="24dp"
android:layout_marginEnd="24dp"
android:layout_marginBottom="32dp" android:layout_marginBottom="32dp"
android:text="@string/enter_password" android:text="@string/enter_password"
android:layout_marginStart="24dp"
android:layout_marginEnd="24dp"
android:layout_marginTop="24dp"
android:textSize="32sp" android:textSize="32sp"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintBottom_toTopOf="@id/wallet_password_edittext" app:layout_constraintBottom_toTopOf="@id/wallet_password_edittext"
@ -30,9 +30,9 @@
android:id="@+id/wallet_password_edittext" android:id="@+id/wallet_password_edittext"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginBottom="32dp" android:layout_marginBottom="32dp"
android:background="@drawable/edittext_bg" android:background="@drawable/edittext_bg"
android:layout_marginStart="24dp"
android:hint="@string/password" android:hint="@string/password"
android:inputType="textPassword" android:inputType="textPassword"
app:layout_constraintBottom_toTopOf="@id/unlock_wallet_button" app:layout_constraintBottom_toTopOf="@id/unlock_wallet_button"
@ -47,10 +47,10 @@
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginEnd="24dp" android:layout_marginEnd="24dp"
android:background="@android:color/transparent" android:background="@android:color/transparent"
android:contentDescription="@string/paste_clipboard_into_passphrase_field"
android:minWidth="48dp" android:minWidth="48dp"
android:minHeight="48dp" android:minHeight="48dp"
android:src="@drawable/ic_content_paste_24dp" android:src="@drawable/ic_content_paste_24dp"
android:contentDescription="@string/paste_clipboard_into_passphrase_field"
app:layout_constraintBottom_toBottomOf="@id/wallet_password_edittext" app:layout_constraintBottom_toBottomOf="@id/wallet_password_edittext"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/wallet_password_edittext" app:layout_constraintStart_toEndOf="@id/wallet_password_edittext"
@ -60,11 +60,11 @@
android:id="@+id/unlock_wallet_button" android:id="@+id/unlock_wallet_button"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/button_bg"
android:text="@string/unlock"
android:layout_marginStart="24dp" android:layout_marginStart="24dp"
android:layout_marginEnd="24dp" android:layout_marginEnd="24dp"
android:layout_marginBottom="16dp" android:layout_marginBottom="16dp"
android:background="@drawable/button_bg"
android:text="@string/unlock"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/wallet_password_edittext" /> app:layout_constraintTop_toBottomOf="@id/wallet_password_edittext" />

View File

@ -6,6 +6,7 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@color/oled_dialogBackgroundColor" android:background="@color/oled_dialogBackgroundColor"
android:fitsSystemWindows="true"> android:fitsSystemWindows="true">
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content">
@ -14,22 +15,23 @@
android:id="@+id/send_monero_textview" android:id="@+id/send_monero_textview"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/send_monero" android:layout_marginStart="24dp"
android:layout_marginTop="24dp" android:layout_marginTop="24dp"
android:layout_marginEnd="24dp" android:layout_marginEnd="24dp"
android:layout_marginStart="24dp" android:text="@string/send_monero"
android:textSize="32sp" android:textSize="32sp"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintBottom_toTopOf="@id/selected_utxos_value_textview" app:layout_constraintBottom_toTopOf="@id/selected_utxos_value_textview"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<TextView <TextView
android:id="@+id/selected_utxos_value_textview" android:id="@+id/selected_utxos_value_textview"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="24dp"
android:layout_marginStart="24dp" android:layout_marginStart="24dp"
android:layout_marginEnd="24dp"
android:text="@string/selected_utxos_value" android:text="@string/selected_utxos_value"
android:textSize="16sp" android:textSize="16sp"
android:visibility="gone" android:visibility="gone"
@ -37,14 +39,15 @@
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/send_monero_textview" /> app:layout_constraintTop_toBottomOf="@id/send_monero_textview" />
<EditText <EditText
android:id="@+id/address_edittext" android:id="@+id/address_edittext"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
android:layout_marginBottom="4dp" android:layout_marginBottom="4dp"
android:background="@drawable/edittext_bg" android:background="@drawable/edittext_bg"
android:layout_marginStart="24dp"
android:ellipsize="middle" android:ellipsize="middle"
android:hint="@string/address" android:hint="@string/address"
android:singleLine="true" android:singleLine="true"
@ -53,17 +56,19 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/selected_utxos_value_textview" app:layout_constraintTop_toBottomOf="@id/selected_utxos_value_textview"
tools:visibility="visible" /> tools:visibility="visible" />
<TextView <TextView
android:id="@+id/donate_label_textview" android:id="@+id/donate_label_textview"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/donate_label"
android:layout_marginStart="24dp" android:layout_marginStart="24dp"
android:layout_marginBottom="16dp" android:layout_marginBottom="16dp"
android:text="@string/donate_label"
android:textSize="14sp" android:textSize="14sp"
app:layout_constraintBottom_toTopOf="@id/amount_edittext"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/address_edittext" app:layout_constraintTop_toBottomOf="@id/address_edittext" />
app:layout_constraintBottom_toTopOf="@id/amount_edittext"/>
<ImageButton <ImageButton
android:id="@+id/paste_address_imagebutton" android:id="@+id/paste_address_imagebutton"
android:layout_width="wrap_content" android:layout_width="wrap_content"
@ -85,10 +90,10 @@
android:id="@+id/scan_address_imagebutton" android:id="@+id/scan_address_imagebutton"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="24dp"
android:background="@android:color/transparent" android:background="@android:color/transparent"
android:minWidth="48dp" android:minWidth="48dp"
android:minHeight="48dp" android:minHeight="48dp"
android:layout_marginEnd="24dp"
android:src="@drawable/ic_scan" android:src="@drawable/ic_scan"
app:layout_constraintBottom_toBottomOf="@id/address_edittext" app:layout_constraintBottom_toBottomOf="@id/address_edittext"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
@ -101,9 +106,9 @@
android:id="@+id/amount_edittext" android:id="@+id/amount_edittext"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginEnd="8dp" android:layout_marginEnd="8dp"
android:layout_marginBottom="16dp" android:layout_marginBottom="16dp"
android:layout_marginStart="24dp"
android:background="@drawable/edittext_bg" android:background="@drawable/edittext_bg"
android:hint="@string/amount" android:hint="@string/amount"
android:inputType="numberDecimal" android:inputType="numberDecimal"
@ -116,11 +121,11 @@
android:id="@+id/sending_all_textview" android:id="@+id/sending_all_textview"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginEnd="12dp" android:layout_marginEnd="12dp"
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingBottom="12dp" android:paddingBottom="12dp"
android:text="@string/sending_all" android:text="@string/sending_all"
android:layout_marginStart="24dp"
android:textStyle="bold" android:textStyle="bold"
android:visibility="gone" android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@id/amount_edittext" app:layout_constraintBottom_toBottomOf="@id/amount_edittext"
@ -133,9 +138,9 @@
android:id="@+id/send_max_button" android:id="@+id/send_max_button"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="24dp"
android:background="@drawable/button_bg" android:background="@drawable/button_bg"
android:text="@string/send_max" android:text="@string/send_max"
android:layout_marginEnd="24dp"
app:layout_constraintBottom_toBottomOf="@id/amount_edittext" app:layout_constraintBottom_toBottomOf="@id/amount_edittext"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/amount_edittext" app:layout_constraintStart_toEndOf="@id/amount_edittext"
@ -146,56 +151,59 @@
android:id="@+id/tx_fee_radiogroup_label_textview" android:id="@+id/tx_fee_radiogroup_label_textview"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/fee_priority"
android:layout_marginStart="24dp" android:layout_marginStart="24dp"
android:text="@string/fee_priority"
android:textSize="16sp" android:textSize="16sp"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintBottom_toBottomOf="@id/tx_fee_radiogroup"
app:layout_constraintEnd_toStartOf="@id/tx_fee_radiogroup" app:layout_constraintEnd_toStartOf="@id/tx_fee_radiogroup"
app:layout_constraintTop_toTopOf="@id/tx_fee_radiogroup" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="@id/tx_fee_radiogroup"/> app:layout_constraintTop_toTopOf="@id/tx_fee_radiogroup" />
<RadioGroup <RadioGroup
android:id="@+id/tx_fee_radiogroup" android:id="@+id/tx_fee_radiogroup"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginEnd="24dp" android:layout_marginEnd="24dp"
app:layout_constraintTop_toBottomOf="@id/send_max_button" android:orientation="horizontal"
app:layout_constraintBottom_toTopOf="@id/create_tx_button" app:layout_constraintBottom_toTopOf="@id/create_tx_button"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/tx_fee_radiogroup_label_textview" app:layout_constraintStart_toEndOf="@id/tx_fee_radiogroup_label_textview"
app:layout_constraintEnd_toEndOf="parent"> app:layout_constraintTop_toBottomOf="@id/send_max_button">
<RadioButton <RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/low"
android:id="@+id/low_fee_radiobutton" android:id="@+id/low_fee_radiobutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true" android:checked="true"
android:text="@string/low"
android:textSize="16sp" /> android:textSize="16sp" />
<RadioButton <RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/medium"
android:id="@+id/med_fee_radiobutton" android:id="@+id/med_fee_radiobutton"
android:checked="false"
android:textSize="16sp"/>
<RadioButton
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/high"
android:id="@+id/high_fee_radiobutton"
android:checked="false" android:checked="false"
android:textSize="16sp"/> android:text="@string/medium"
android:textSize="16sp" />
<RadioButton
android:id="@+id/high_fee_radiobutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="false"
android:text="@string/high"
android:textSize="16sp" />
</RadioGroup> </RadioGroup>
<Button <Button
android:id="@+id/create_tx_button" android:id="@+id/create_tx_button"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginEnd="24dp"
android:background="@drawable/button_bg" android:background="@drawable/button_bg"
android:text="@string/create" android:text="@string/create"
android:layout_marginEnd="24dp"
android:layout_marginStart="24dp"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tx_fee_radiogroup_label_textview" app:layout_constraintTop_toBottomOf="@id/tx_fee_radiogroup_label_textview"
@ -207,15 +215,15 @@
android:id="@+id/address_pending_textview" android:id="@+id/address_pending_textview"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
android:layout_marginEnd="24dp"
android:ellipsize="middle" android:ellipsize="middle"
android:singleLine="true" android:singleLine="true"
android:text="@string/tx_address_text" android:text="@string/tx_address_text"
android:textSize="16sp" android:textSize="16sp"
android:textStyle="bold" android:textStyle="bold"
android:visibility="gone" android:visibility="gone"
android:layout_marginStart="24dp"
android:layout_marginEnd="24dp"
app:layout_constraintBottom_toTopOf="@id/amount_pending_textview" app:layout_constraintBottom_toTopOf="@id/amount_pending_textview"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
@ -226,13 +234,13 @@
android:id="@+id/amount_pending_textview" android:id="@+id/amount_pending_textview"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
android:layout_marginEnd="24dp"
android:text="@string/tx_amount_text" android:text="@string/tx_amount_text"
android:textSize="16sp" android:textSize="16sp"
android:textStyle="bold" android:textStyle="bold"
android:visibility="gone" android:visibility="gone"
android:layout_marginStart="24dp"
android:layout_marginEnd="24dp"
app:layout_constraintBottom_toTopOf="@id/fee_textview" app:layout_constraintBottom_toTopOf="@id/fee_textview"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
@ -243,13 +251,13 @@
android:id="@+id/fee_textview" android:id="@+id/fee_textview"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
android:layout_marginEnd="24dp"
android:text="@string/tx_fee_text" android:text="@string/tx_fee_text"
android:textSize="16sp" android:textSize="16sp"
android:textStyle="bold" android:textStyle="bold"
android:visibility="gone" android:visibility="gone"
android:layout_marginStart="24dp"
android:layout_marginEnd="24dp"
app:layout_constraintBottom_toTopOf="@id/send_tx_button" app:layout_constraintBottom_toTopOf="@id/send_tx_button"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
@ -260,13 +268,13 @@
android:id="@+id/send_tx_button" android:id="@+id/send_tx_button"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginStart="24dp" android:layout_marginStart="24dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="24dp" android:layout_marginEnd="24dp"
android:layout_marginBottom="16dp"
android:background="@drawable/button_bg" android:background="@drawable/button_bg"
android:text="@string/send" android:text="@string/send"
android:visibility="gone" android:visibility="gone"
android:layout_marginBottom="16dp"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/fee_textview" app:layout_constraintTop_toBottomOf="@id/fee_textview"

View File

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
@ -20,10 +19,10 @@
android:visibility="visible" android:visibility="visible"
app:indicatorInset="0dp" app:indicatorInset="0dp"
app:indicatorSize="30dp" app:indicatorSize="30dp"
app:trackThickness="4dp" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/> app:trackThickness="4dp" />
<TextView <TextView
android:id="@+id/tvConfirmations" android:id="@+id/tvConfirmations"
@ -33,42 +32,42 @@
android:paddingBottom="1dp" android:paddingBottom="1dp"
android:text="8" android:text="8"
android:visibility="visible" android:visibility="visible"
app:layout_constraintTop_toTopOf="@id/pbConfirmations"
app:layout_constraintBottom_toBottomOf="@id/pbConfirmations" app:layout_constraintBottom_toBottomOf="@id/pbConfirmations"
app:layout_constraintEnd_toEndOf="@id/pbConfirmations"
app:layout_constraintStart_toStartOf="@id/pbConfirmations" app:layout_constraintStart_toStartOf="@id/pbConfirmations"
app:layout_constraintEnd_toEndOf="@id/pbConfirmations"/> app:layout_constraintTop_toTopOf="@id/pbConfirmations" />
<TextView <TextView
android:id="@+id/tx_amount" android:id="@+id/tx_amount"
style="@style/MoneroText.PosAmount" style="@style/MoneroText.PosAmount"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
tools:text="+ 999.999999"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
app:layout_constraintBottom_toTopOf="@id/tx_failed" app:layout_constraintBottom_toTopOf="@id/tx_failed"
app:layout_constraintTop_toTopOf="@id/pbConfirmations" app:layout_constraintEnd_toStartOf="@id/tx_datetime"
app:layout_constraintStart_toEndOf="@id/pbConfirmations" app:layout_constraintStart_toEndOf="@id/pbConfirmations"
app:layout_constraintEnd_toStartOf="@id/tx_datetime"/> app:layout_constraintTop_toTopOf="@id/pbConfirmations"
tools:text="+ 999.999999" />
<TextView <TextView
android:id="@+id/tx_failed" android:id="@+id/tx_failed"
style="@style/MoneroText.PosFee" style="@style/MoneroText.PosFee"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:text="@string/tx_list_failed_text" android:text="@string/tx_list_failed_text"
android:visibility="gone" android:visibility="gone"
android:layout_marginStart="8dp"
app:layout_constraintBottom_toBottomOf="@id/pbConfirmations" app:layout_constraintBottom_toBottomOf="@id/pbConfirmations"
app:layout_constraintStart_toEndOf="@id/pbConfirmations" app:layout_constraintStart_toEndOf="@id/pbConfirmations"
app:layout_constraintTop_toBottomOf="@id/tx_amount"/> app:layout_constraintTop_toBottomOf="@id/tx_amount" />
<TextView <TextView
android:id="@+id/tx_datetime" android:id="@+id/tx_datetime"
style="@style/MoneroText.PosDate" style="@style/MoneroText.PosDate"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
tools:text="2017-05-22 21:32" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/> tools:text="2017-05-22 21:32" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
@ -15,48 +14,49 @@
android:background="@drawable/edittext_bg" android:background="@drawable/edittext_bg"
android:hint="@string/amount" android:hint="@string/amount"
android:inputType="numberDecimal" android:inputType="numberDecimal"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@id/address_edittext" app:layout_constraintBottom_toTopOf="@id/address_edittext"
app:layout_constraintEnd_toStartOf="@id/paste_amount_imagebutton" app:layout_constraintEnd_toStartOf="@id/paste_amount_imagebutton"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:visibility="visible" /> tools:visibility="visible" />
<TextView <TextView
android:id="@+id/sending_all_textview" android:id="@+id/sending_all_textview"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginEnd="24dp" android:layout_marginEnd="24dp"
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingBottom="12dp" android:paddingBottom="12dp"
android:text="@string/sending_all" android:text="@string/sending_all"
android:layout_marginStart="24dp"
android:textStyle="bold" android:textStyle="bold"
android:visibility="gone" android:visibility="gone"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@id/address_edittext" app:layout_constraintBottom_toTopOf="@id/address_edittext"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:visibility="gone" /> tools:visibility="gone" />
<TextView <TextView
android:id="@+id/to_address_label_textview" android:id="@+id/to_address_label_textview"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/to"
android:layout_marginStart="24dp" android:layout_marginStart="24dp"
android:text="@string/to"
android:textSize="14sp" android:textSize="14sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/address_edittext"
app:layout_constraintBottom_toBottomOf="@id/address_edittext" app:layout_constraintBottom_toBottomOf="@id/address_edittext"
app:layout_constraintEnd_toStartOf="@id/address_edittext"/> app:layout_constraintEnd_toStartOf="@id/address_edittext"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/address_edittext" />
<EditText <EditText
android:id="@+id/address_edittext" android:id="@+id/address_edittext"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:layout_marginBottom="4dp" android:layout_marginBottom="4dp"
android:background="@drawable/edittext_bg" android:background="@drawable/edittext_bg"
android:layout_marginStart="8dp"
android:ellipsize="middle" android:ellipsize="middle"
android:hint="@string/address" android:hint="@string/address"
android:singleLine="true" android:singleLine="true"
@ -64,15 +64,16 @@
app:layout_constraintStart_toEndOf="@id/to_address_label_textview" app:layout_constraintStart_toEndOf="@id/to_address_label_textview"
app:layout_constraintTop_toBottomOf="@id/amount_edittext" app:layout_constraintTop_toBottomOf="@id/amount_edittext"
tools:visibility="visible" /> tools:visibility="visible" />
<ImageButton <ImageButton
android:id="@+id/paste_amount_imagebutton" android:id="@+id/paste_amount_imagebutton"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="4dp" android:layout_marginStart="4dp"
android:background="@android:color/transparent" android:background="@android:color/transparent"
android:contentDescription="@string/paste_clipboard_into_amount_field"
android:minWidth="48dp" android:minWidth="48dp"
android:minHeight="48dp" android:minHeight="48dp"
android:contentDescription="@string/paste_clipboard_into_amount_field"
android:src="@drawable/ic_content_paste_24dp" android:src="@drawable/ic_content_paste_24dp"
app:layout_constraintBottom_toBottomOf="@id/amount_edittext" app:layout_constraintBottom_toBottomOf="@id/amount_edittext"
app:layout_constraintEnd_toStartOf="@id/remove_output_imagebutton" app:layout_constraintEnd_toStartOf="@id/remove_output_imagebutton"
@ -80,15 +81,16 @@
app:layout_constraintTop_toTopOf="@id/amount_edittext" app:layout_constraintTop_toTopOf="@id/amount_edittext"
tools:ignore="SpeakableTextPresentCheck" tools:ignore="SpeakableTextPresentCheck"
tools:visibility="visible" /> tools:visibility="visible" />
<ImageButton <ImageButton
android:id="@+id/paste_address_imagebutton" android:id="@+id/paste_address_imagebutton"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="4dp" android:layout_marginStart="4dp"
android:background="@android:color/transparent" android:background="@android:color/transparent"
android:contentDescription="@string/paste_clipboard_into_address_field"
android:minWidth="48dp" android:minWidth="48dp"
android:minHeight="48dp" android:minHeight="48dp"
android:contentDescription="@string/paste_clipboard_into_address_field"
android:src="@drawable/ic_content_paste_24dp" android:src="@drawable/ic_content_paste_24dp"
app:layout_constraintBottom_toBottomOf="@id/address_edittext" app:layout_constraintBottom_toBottomOf="@id/address_edittext"
app:layout_constraintEnd_toStartOf="@id/scan_address_imagebutton" app:layout_constraintEnd_toStartOf="@id/scan_address_imagebutton"
@ -96,31 +98,33 @@
app:layout_constraintTop_toTopOf="@id/address_edittext" app:layout_constraintTop_toTopOf="@id/address_edittext"
tools:ignore="SpeakableTextPresentCheck" tools:ignore="SpeakableTextPresentCheck"
tools:visibility="visible" /> tools:visibility="visible" />
<ImageButton <ImageButton
android:id="@+id/scan_address_imagebutton" android:id="@+id/scan_address_imagebutton"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="24dp"
android:background="@android:color/transparent" android:background="@android:color/transparent"
android:contentDescription="@string/scan_qr_code_for_address_field"
android:minWidth="48dp" android:minWidth="48dp"
android:minHeight="48dp" android:minHeight="48dp"
android:layout_marginEnd="24dp"
android:src="@drawable/ic_scan" android:src="@drawable/ic_scan"
android:contentDescription="@string/scan_qr_code_for_address_field"
app:layout_constraintBottom_toBottomOf="@id/address_edittext" app:layout_constraintBottom_toBottomOf="@id/address_edittext"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/paste_address_imagebutton" app:layout_constraintStart_toEndOf="@id/paste_address_imagebutton"
app:layout_constraintTop_toTopOf="@id/address_edittext" app:layout_constraintTop_toTopOf="@id/address_edittext"
tools:ignore="SpeakableTextPresentCheck" tools:ignore="SpeakableTextPresentCheck"
tools:visibility="visible" /> tools:visibility="visible" />
<ImageButton <ImageButton
android:id="@+id/remove_output_imagebutton" android:id="@+id/remove_output_imagebutton"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="24dp"
android:background="@android:color/transparent" android:background="@android:color/transparent"
android:contentDescription="@string/remove_recipient_from_transaction"
android:minWidth="48dp" android:minWidth="48dp"
android:minHeight="48dp" android:minHeight="48dp"
android:layout_marginEnd="24dp"
android:contentDescription="@string/remove_recipient_from_transaction"
android:src="@android:drawable/ic_delete" android:src="@android:drawable/ic_delete"
app:layout_constraintBottom_toBottomOf="@id/amount_edittext" app:layout_constraintBottom_toBottomOf="@id/amount_edittext"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"

View File

@ -1,145 +1,154 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:padding="12dp"
android:layout_marginBottom="8dp" android:layout_marginBottom="8dp"
android:background="@drawable/round_bg"> android:background="@drawable/round_bg"
android:padding="12dp">
<TextView <TextView
android:id="@+id/utxo_coin_label" android:id="@+id/utxo_coin_label"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="Coin" android:text="Coin"
android:textStyle="bold"
android:textSize="20sp"
android:textColor="@color/oled_addressListColor" android:textColor="@color/oled_addressListColor"
app:layout_constraintStart_toStartOf="parent" android:textSize="20sp"
app:layout_constraintEnd_toStartOf="@id/utxo_outpoint_textview" android:textStyle="bold"
app:layout_constraintBottom_toTopOf="@id/utxo_address_label" app:layout_constraintBottom_toTopOf="@id/utxo_address_label"
app:layout_constraintTop_toTopOf="parent"/> app:layout_constraintEnd_toStartOf="@id/utxo_outpoint_textview"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView <TextView
android:id="@+id/utxo_outpoint_textview" android:id="@+id/utxo_outpoint_textview"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="Outpoint"
android:ellipsize="middle"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:textStyle="bold" android:ellipsize="middle"
android:singleLine="true"
android:text="Outpoint"
android:textSize="14sp" android:textSize="14sp"
app:layout_constraintTop_toTopOf="parent" android:textStyle="bold"
app:layout_constraintStart_toEndOf="@id/utxo_coin_label"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toTopOf="@id/utxo_address_label" app:layout_constraintBottom_toTopOf="@id/utxo_address_label"
android:singleLine="true" /> app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/utxo_coin_label"
app:layout_constraintTop_toTopOf="parent" />
<TextView <TextView
android:id="@+id/utxo_address_label" android:id="@+id/utxo_address_label"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="Address"
android:textStyle="bold"
android:textSize="20sp"
android:layout_marginStart="16dp" android:layout_marginStart="16dp"
android:text="Address"
android:textColor="@color/oled_addressListColor" android:textColor="@color/oled_addressListColor"
app:layout_constraintStart_toStartOf="parent" android:textSize="20sp"
app:layout_constraintEnd_toStartOf="@id/utxo_address_textview"
android:textStyle="bold"
app:layout_constraintBottom_toTopOf="@id/utxo_pub_key_label" app:layout_constraintBottom_toTopOf="@id/utxo_pub_key_label"
app:layout_constraintTop_toBottomOf="@id/utxo_coin_label"/> app:layout_constraintEnd_toStartOf="@id/utxo_address_textview"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/utxo_coin_label" />
<TextView <TextView
android:id="@+id/utxo_address_textview" android:id="@+id/utxo_address_textview"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:ellipsize="middle"
android:singleLine="true"
android:text="Address" android:text="Address"
android:textSize="14sp" android:textSize="14sp"
android:ellipsize="middle"
android:layout_marginStart="8dp"
android:singleLine="true"
app:layout_constraintStart_toEndOf="@id/utxo_address_label"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toTopOf="@id/utxo_address_label" app:layout_constraintBottom_toTopOf="@id/utxo_address_label"
app:layout_constraintTop_toBottomOf="@id/utxo_address_label"/> app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/utxo_address_label"
app:layout_constraintTop_toBottomOf="@id/utxo_address_label" />
<TextView <TextView
android:id="@+id/utxo_pub_key_label" android:id="@+id/utxo_pub_key_label"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="Public Key"
android:textStyle="bold"
android:textSize="20sp"
android:layout_marginStart="16dp" android:layout_marginStart="16dp"
android:text="Public Key"
android:textColor="@color/oled_addressListColor" android:textColor="@color/oled_addressListColor"
app:layout_constraintStart_toStartOf="parent" android:textSize="20sp"
app:layout_constraintEnd_toStartOf="@id/utxo_pub_key_textview" android:textStyle="bold"
app:layout_constraintBottom_toTopOf="@id/utxo_amount_label" app:layout_constraintBottom_toTopOf="@id/utxo_amount_label"
app:layout_constraintTop_toBottomOf="@id/utxo_address_label"/> app:layout_constraintEnd_toStartOf="@id/utxo_pub_key_textview"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/utxo_address_label" />
<TextView <TextView
android:id="@+id/utxo_pub_key_textview" android:id="@+id/utxo_pub_key_textview"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="Public Key" android:layout_marginStart="8dp"
android:textSize="14sp"
android:ellipsize="middle" android:ellipsize="middle"
android:singleLine="true" android:singleLine="true"
android:layout_marginStart="8dp" android:text="Public Key"
app:layout_constraintStart_toEndOf="@id/utxo_pub_key_label" android:textSize="14sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toTopOf="@id/utxo_pub_key_label" app:layout_constraintBottom_toTopOf="@id/utxo_pub_key_label"
app:layout_constraintTop_toBottomOf="@id/utxo_pub_key_label"/> app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/utxo_pub_key_label"
app:layout_constraintTop_toBottomOf="@id/utxo_pub_key_label" />
<TextView <TextView
android:id="@+id/utxo_amount_label" android:id="@+id/utxo_amount_label"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="Amount"
android:textStyle="bold"
android:ellipsize="middle"
android:textSize="20sp"
android:layout_marginStart="16dp" android:layout_marginStart="16dp"
android:ellipsize="middle"
android:singleLine="true"
android:text="Amount"
android:textColor="@color/oled_addressListColor" android:textColor="@color/oled_addressListColor"
app:layout_constraintTop_toBottomOf="@id/utxo_pub_key_textview" android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintBottom_toTopOf="@id/utxo_amount_textview" app:layout_constraintBottom_toTopOf="@id/utxo_amount_textview"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@id/utxo_global_index_label" app:layout_constraintEnd_toStartOf="@id/utxo_global_index_label"
android:singleLine="true" /> app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/utxo_pub_key_textview" />
<TextView <TextView
android:id="@+id/utxo_amount_textview" android:id="@+id/utxo_amount_textview"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="Amount"
android:ellipsize="middle"
android:textSize="14sp"
android:layout_marginStart="32dp" android:layout_marginStart="32dp"
app:layout_constraintTop_toBottomOf="@id/utxo_amount_label" android:ellipsize="middle"
android:singleLine="true"
android:text="Amount"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@id/utxo_global_index_textview" app:layout_constraintEnd_toStartOf="@id/utxo_global_index_textview"
android:singleLine="true" /> app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/utxo_amount_label" />
<TextView <TextView
android:id="@+id/utxo_global_index_label" android:id="@+id/utxo_global_index_label"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="Global Index"
android:ellipsize="middle" android:ellipsize="middle"
android:gravity="end" android:gravity="end"
android:textStyle="bold" android:singleLine="true"
android:textSize="20sp" android:text="Global Index"
android:textColor="@color/oled_addressListColor" android:textColor="@color/oled_addressListColor"
app:layout_constraintTop_toBottomOf="@id/utxo_pub_key_textview" android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintBottom_toTopOf="@id/utxo_global_index_textview" app:layout_constraintBottom_toTopOf="@id/utxo_global_index_textview"
app:layout_constraintStart_toEndOf="@id/utxo_amount_label"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
android:singleLine="true" /> app:layout_constraintStart_toEndOf="@id/utxo_amount_label"
app:layout_constraintTop_toBottomOf="@id/utxo_pub_key_textview" />
<TextView <TextView
android:id="@+id/utxo_global_index_textview" android:id="@+id/utxo_global_index_textview"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="999999999999"
android:ellipsize="middle" android:ellipsize="middle"
android:gravity="end" android:gravity="end"
android:singleLine="true"
android:text="999999999999"
android:textSize="14sp" android:textSize="14sp"
app:layout_constraintTop_toBottomOf="@id/utxo_global_index_label"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/utxo_amount_textview"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
android:singleLine="true" /> app:layout_constraintStart_toEndOf="@id/utxo_amount_textview"
app:layout_constraintTop_toBottomOf="@id/utxo_global_index_label" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -4,9 +4,9 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@color/oled_dialogBackgroundColor"
android:fillViewport="true" android:fillViewport="true"
android:fitsSystemWindows="true" android:fitsSystemWindows="true"
android:background="@color/oled_dialogBackgroundColor"
android:padding="24dp"> android:padding="24dp">
@ -32,9 +32,9 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="32dp" android:layout_marginTop="32dp"
android:text="@string/wallet_seed_label"
android:textSize="24sp" android:textSize="24sp"
android:textStyle="bold" android:textStyle="bold"
android:text="@string/wallet_seed_label"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/recv_monero_textview" /> app:layout_constraintTop_toBottomOf="@id/recv_monero_textview" />
@ -44,24 +44,24 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="4dp" android:layout_marginTop="4dp"
android:textSize="12sp"
android:textColor="#f00"
android:text="@string/wallet_seed_desc" android:text="@string/wallet_seed_desc"
app:layout_constraintVertical_bias="0.0" android:textColor="#f00"
android:textSize="12sp"
app:layout_constraintBottom_toTopOf="@id/information_textview" app:layout_constraintBottom_toTopOf="@id/information_textview"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/wallet_seed_label_textview" /> app:layout_constraintTop_toBottomOf="@id/wallet_seed_label_textview"
app:layout_constraintVertical_bias="0.0" />
<TextView <TextView
android:id="@+id/wallet_seed_offset_textview" android:id="@+id/wallet_seed_offset_textview"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="4dp" android:layout_marginTop="4dp"
android:textSize="11sp"
android:textColor="#f80"
android:visibility="gone"
android:text="@string/wallet_seed_offset_desc" android:text="@string/wallet_seed_offset_desc"
android:textColor="#f80"
android:textSize="11sp"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/information_textview" /> app:layout_constraintTop_toBottomOf="@id/information_textview" />
@ -82,9 +82,9 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="32dp" android:layout_marginTop="32dp"
android:text="@string/wallet_viewkey_label"
android:textSize="24sp" android:textSize="24sp"
android:textStyle="bold" android:textStyle="bold"
android:text="@string/wallet_viewkey_label"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/wallet_seed_offset_textview" /> app:layout_constraintTop_toBottomOf="@id/wallet_seed_offset_textview" />
@ -94,14 +94,14 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="4dp" android:layout_marginTop="4dp"
android:textSize="12sp"
android:textColor="#f80"
android:text="@string/wallet_viewkey_desc" android:text="@string/wallet_viewkey_desc"
app:layout_constraintVertical_bias="0.0" android:textColor="#f80"
android:textSize="12sp"
app:layout_constraintBottom_toTopOf="@id/copy_viewkey_imagebutton"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toTopOf="@id/copy_viewkey_imagebutton" app:layout_constraintTop_toBottomOf="@id/wallet_viewkey_label_textview"
app:layout_constraintTop_toBottomOf="@id/wallet_viewkey_label_textview" /> app:layout_constraintVertical_bias="0.0" />
<TextView <TextView
android:id="@+id/viewkey_textview" android:id="@+id/viewkey_textview"
@ -109,10 +109,10 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="8dp" android:layout_marginEnd="8dp"
android:textSize="14sp" android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="@id/copy_viewkey_imagebutton"
app:layout_constraintEnd_toStartOf="@id/copy_viewkey_imagebutton" app:layout_constraintEnd_toStartOf="@id/copy_viewkey_imagebutton"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/copy_viewkey_imagebutton" app:layout_constraintTop_toTopOf="@id/copy_viewkey_imagebutton"
app:layout_constraintBottom_toBottomOf="@id/copy_viewkey_imagebutton"
tools:text="INFORMATION" /> tools:text="INFORMATION" />
<ImageButton <ImageButton
@ -120,26 +120,28 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@android:color/transparent" android:background="@android:color/transparent"
android:contentDescription="@string/copy_wallet_s_private_view_key"
android:minWidth="48dp" android:minWidth="48dp"
android:minHeight="48dp" android:minHeight="48dp"
android:contentDescription="@string/copy_wallet_s_private_view_key"
android:src="@drawable/ic_content_copy_24dp" android:src="@drawable/ic_content_copy_24dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintVertical_bias="0.0"
app:layout_constraintBottom_toTopOf="@id/wallet_restore_height_label_textview" app:layout_constraintBottom_toTopOf="@id/wallet_restore_height_label_textview"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/viewkey_textview" app:layout_constraintStart_toEndOf="@id/viewkey_textview"
app:layout_constraintTop_toBottomOf="@id/wallet_viewkey_desc_textview" /> app:layout_constraintTop_toBottomOf="@id/wallet_viewkey_desc_textview"
app:layout_constraintVertical_bias="0.0" />
<TextView <TextView
android:id="@+id/wallet_restore_height_label_textview" android:id="@+id/wallet_restore_height_label_textview"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
android:text="@string/wallet_restore_height_label"
android:textSize="24sp" android:textSize="24sp"
android:textStyle="bold" android:textStyle="bold"
android:text="@string/wallet_restore_height_label"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/copy_viewkey_imagebutton" /> app:layout_constraintTop_toBottomOf="@id/copy_viewkey_imagebutton" />
<TextView <TextView
android:id="@+id/restore_height_textview" android:id="@+id/restore_height_textview"
android:layout_width="0dp" android:layout_width="0dp"

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background"/> <background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@mipmap/ic_launcher_foreground"/> <foreground android:drawable="@mipmap/ic_launcher_foreground" />
</adaptive-icon> </adaptive-icon>

View File

@ -11,27 +11,23 @@
tools:layout="@layout/fragment_home"> tools:layout="@layout/fragment_home">
<action <action
android:id="@+id/nav_to_settings" android:id="@+id/nav_to_settings"
app:destination="@id/settings_fragment"> app:destination="@id/settings_fragment"></action>
</action>
<action <action
android:id="@+id/nav_to_receive" android:id="@+id/nav_to_receive"
app:destination="@id/receive_fragment"> app:destination="@id/receive_fragment"></action>
</action>
<action <action
android:id="@+id/nav_to_send" android:id="@+id/nav_to_send"
app:destination="@id/send_fragment"> app:destination="@id/send_fragment"></action>
</action>
<action <action
android:id="@+id/nav_to_onboarding" android:id="@+id/nav_to_onboarding"
app:destination="@id/onboarding_fragment"> app:destination="@id/onboarding_fragment"></action>
</action>
<action <action
android:id="@+id/nav_to_transaction" android:id="@+id/nav_to_transaction"
app:destination="@id/transaction_fragment"> app:destination="@id/transaction_fragment">
<argument <argument
android:name="nav_arg_txinfo" android:name="nav_arg_txinfo"
app:argType="net.mynero.wallet.model.TransactionInfo" app:argType="net.mynero.wallet.model.TransactionInfo"
app:nullable="true"/> app:nullable="true" />
</action> </action>
</fragment> </fragment>
<fragment <fragment
@ -41,21 +37,18 @@
tools:layout="@layout/fragment_settings"> tools:layout="@layout/fragment_settings">
<action <action
android:id="@+id/nav_to_utxos" android:id="@+id/nav_to_utxos"
app:destination="@id/utxos_fragment"> app:destination="@id/utxos_fragment"></action>
</action>
</fragment> </fragment>
<fragment <fragment
android:id="@+id/send_fragment" android:id="@+id/send_fragment"
android:name="net.mynero.wallet.fragment.send.SendFragment" android:name="net.mynero.wallet.fragment.send.SendFragment"
android:label="fragment_send_amount" android:label="fragment_send_amount"
tools:layout="@layout/fragment_send"> tools:layout="@layout/fragment_send"></fragment>
</fragment>
<fragment <fragment
android:id="@+id/receive_fragment" android:id="@+id/receive_fragment"
android:name="net.mynero.wallet.fragment.receive.ReceiveFragment" android:name="net.mynero.wallet.fragment.receive.ReceiveFragment"
android:label="fragment_send_amount" android:label="fragment_send_amount"
tools:layout="@layout/fragment_receive"> tools:layout="@layout/fragment_receive"></fragment>
</fragment>
<fragment <fragment
android:id="@+id/utxos_fragment" android:id="@+id/utxos_fragment"
android:name="net.mynero.wallet.fragment.utxos.UtxosFragment" android:name="net.mynero.wallet.fragment.utxos.UtxosFragment"
@ -68,8 +61,7 @@
tools:layout="@layout/fragment_onboarding"> tools:layout="@layout/fragment_onboarding">
<action <action
android:id="@+id/nav_to_home" android:id="@+id/nav_to_home"
app:destination="@id/main_fragment"> app:destination="@id/main_fragment"></action>
</action>
</fragment> </fragment>
<fragment <fragment
android:id="@+id/transaction_fragment" android:id="@+id/transaction_fragment"

View File

@ -80,10 +80,8 @@
<string name="node_port_hint">18081</string> <string name="node_port_hint">18081</string>
<string name="node_username_hint">Username (optional)</string> <string name="node_username_hint">Username (optional)</string>
<string name="node_password_hint">Passphrase</string> <string name="node_password_hint">Passphrase</string>
<string name="transaction">Transaction</string>
<string name="transaction_action_sent">You sent</string> <string name="transaction_action_sent">You sent</string>
<string name="transaction_action_recv">You received</string> <string name="transaction_action_recv">You received</string>
<string name="amount_label">Amount</string>
<string name="tx_amount_no_prefix">%1$s XMR</string> <string name="tx_amount_no_prefix">%1$s XMR</string>
<string name="tx_amount_no_prefix2">999.99999999999</string> <string name="tx_amount_no_prefix2">999.99999999999</string>
<string name="wallet_proxy_address_hint">127.0.0.1</string> <string name="wallet_proxy_address_hint">127.0.0.1</string>
@ -91,27 +89,21 @@
<string name="no_history_loading">Loading your wallet…</string> <string name="no_history_loading">Loading your wallet…</string>
<string name="no_history_nget_some_monero_in_here">No transactions to display.\nAcquire coins by doing jobs, selling products, mining it, or buying some peer-to-peer.</string> <string name="no_history_nget_some_monero_in_here">No transactions to display.\nAcquire coins by doing jobs, selling products, mining it, or buying some peer-to-peer.</string>
<string name="node_button_text">Node: %1$s</string> <string name="node_button_text">Node: %1$s</string>
<string name="connected">Connected</string>
<string name="disconnected">Disconnected</string>
<string name="version_mismatch">Version mismatch</string>
<string name="transaction_hash">Transaction Hash</string> <string name="transaction_hash">Transaction Hash</string>
<string name="transaction_hash_desc">in a transaction with id</string> <string name="transaction_hash_desc">in a transaction with id</string>
<string name="transaction_destination">Destination</string> <string name="transaction_destination">Destination</string>
<string name="transaction_destination_desc">to address</string> <string name="transaction_destination_desc">to address</string>
<string name="confirmations">Confirmations</string>
<string name="transaction_conf_desc">It has been confirmed</string> <string name="transaction_conf_desc">It has been confirmed</string>
<string name="transaction_conf_desc2_confirmed">times, and was mined in block</string> <string name="transaction_conf_desc2_confirmed">times, and was mined in block</string>
<string name="transaction_conf_desc2_unconfirmed">times, and is currently in the mempool</string> <string name="transaction_conf_desc2_unconfirmed">times, and is currently in the mempool</string>
<string name="transaction_conf_1_desc2_confirmed">time, and was mined in block</string> <string name="transaction_conf_1_desc2_confirmed">time, and was mined in block</string>
<string name="date">Date</string>
<string name="transaction_on_date_label">on</string> <string name="transaction_on_date_label">on</string>
<string name="node_selecting">Selecting node…</string>
<string name="node_selected">Using node: %1$s</string> <string name="node_selected">Using node: %1$s</string>
<string name="fee_priority">Fee priority:</string> <string name="fee_priority">Fee priority:</string>
<string name="low">Low</string> <string name="low">Low</string>
<string name="medium">Medium</string> <string name="medium">Medium</string>
<string name="high">High</string> <string name="high">High</string>
<string name="view_utxos">View outputs</string> <string name="view_utxos">View coins</string>
<string name="selected_utxos_value">Selected value: %1$s XMR</string> <string name="selected_utxos_value">Selected value: %1$s XMR</string>
<string name="selected_utxos_value_churning">Selected value: %1$s XMR\n\nThe anonymity benefits of churning are still being researched. Only proceed if you know what you are doing.</string> <string name="selected_utxos_value_churning">Selected value: %1$s XMR\n\nThe anonymity benefits of churning are still being researched. Only proceed if you know what you are doing.</string>
<string name="global_index_text">%1$d</string> <string name="global_index_text">%1$d</string>
@ -133,7 +125,6 @@
<string name="wallet_viewkey_label">Private view-key</string> <string name="wallet_viewkey_label">Private view-key</string>
<string name="wallet_viewkey_desc">Anyone with your private view-key can see all incoming transactions!</string> <string name="wallet_viewkey_desc">Anyone with your private view-key can see all incoming transactions!</string>
<string name="wallet_restore_height_label">Restore height</string> <string name="wallet_restore_height_label">Restore height</string>
<string name="block_height">Block Height</string>
<string name="use_password_as_seed_offset">Use passphrase as seed offset</string> <string name="use_password_as_seed_offset">Use passphrase as seed offset</string>
<string name="trusted_daemon">Trusted daemon</string> <string name="trusted_daemon">Trusted daemon</string>
<string name="use_bundled_tor">Let Mysu start and manage a Tor daemon</string> <string name="use_bundled_tor">Let Mysu start and manage a Tor daemon</string>