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"
minSdkVersion 21
targetSdkVersion 34
versionCode 50600
versionName "0.5.6 'Fluorine Fermi'"
versionCode 50601
versionName "0.5.6.1 'Fluorine Fermi'"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
externalNativeBuild {
cmake {

View File

@ -349,7 +349,8 @@ Java_net_mynero_wallet_model_WalletManager_createWalletJ(JNIEnv *env, jobject in
JNIEXPORT jlong JNICALL
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,
jint networkType) {
std::string seed_words;
@ -728,7 +729,8 @@ Java_net_mynero_wallet_model_Wallet_getSeed(JNIEnv *env, jobject instance, jstri
}
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);
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
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);
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();
}
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);
if (trusted) {
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,
amount, (uint32_t) mixin_count,
_priority,
(uint32_t) accountIndex, {}, _key_images);
(uint32_t) accountIndex, {},
_key_images);
env->ReleaseStringUTFChars(dst_addr, _dst_addr);
env->ReleaseStringUTFChars(payment_id, _payment_id);
@ -1141,10 +1146,12 @@ Java_net_mynero_wallet_model_Wallet_createTransactionJ(JNIEnv *env, jobject inst
JNIEXPORT jlong JNICALL
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,
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::vector<std::string> _dst_addrs = java2cpp(env, dst_addrs);
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::PendingTransaction *tx = wallet->createTransactionMultDest(_dst_addrs, _payment_id,
_dst_amounts, (uint32_t) mixin_count,
_dst_amounts,
(uint32_t) mixin_count,
_priority,
(uint32_t) accountIndex, {}, _key_images);
(uint32_t) accountIndex, {},
_key_images);
env->ReleaseStringUTFChars(payment_id, _payment_id);
return reinterpret_cast<jlong>(tx);
@ -1165,7 +1174,8 @@ Java_net_mynero_wallet_model_Wallet_createTransactionMultDestJ(JNIEnv *env, jobj
JNIEXPORT jlong JNICALL
Java_net_mynero_wallet_model_Wallet_estimateTransactionFee(JNIEnv *env, jobject instance,
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::Wallet *wallet = getHandle<Monero::Wallet>(env, instance);
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,
empty, (uint32_t) mixin_count,
_priority,
(uint32_t) accountIndex, {}, _key_images);
(uint32_t) accountIndex, {},
_key_images);
env->ReleaseStringUTFChars(dst_addr, _dst_addr);
env->ReleaseStringUTFChars(payment_id, _payment_id);
@ -1281,7 +1292,8 @@ Java_net_mynero_wallet_model_Coins_refreshJ(JNIEnv *env, jobject instance) {
}
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);
const char *_publicKey = env->GetStringUTFChars(publicKey, nullptr);
if (frozen) {

View File

@ -4,11 +4,7 @@ import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.FragmentActivity
import androidx.lifecycle.Observer
import androidx.lifecycle.lifecycleScope
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.PasswordListener
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.util.Constants
import net.mynero.wallet.util.UriData
import timber.log.Timber
import java.io.File
class MainActivity : AppCompatActivity(), MoneroHandlerThread.Listener, PasswordListener {

View File

@ -1,18 +1,13 @@
package net.mynero.wallet.fragment.dialog
import android.app.Activity
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import android.widget.Toast
import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import net.mynero.wallet.R
import net.mynero.wallet.adapter.NodeSelectionAdapter
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.Companion.fromJson
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.PrefService
import net.mynero.wallet.util.Constants

View File

@ -9,9 +9,7 @@ import android.widget.Button
import android.widget.ImageView
import android.widget.ProgressBar
import android.widget.TextView
import android.widget.Toast
import androidx.fragment.app.Fragment
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope
import androidx.navigation.NavDirections
@ -24,9 +22,7 @@ import net.mynero.wallet.MainActivity
import net.mynero.wallet.R
import net.mynero.wallet.adapter.TransactionInfoAdapter
import net.mynero.wallet.adapter.TransactionInfoAdapter.TxInfoAdapterListener
import net.mynero.wallet.model.EnumTorState
import net.mynero.wallet.model.TransactionInfo
import net.mynero.wallet.model.Wallet
import net.mynero.wallet.model.WalletManager
import net.mynero.wallet.service.BalanceService
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.PrefService
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 timber.log.Timber
class HomeFragment : Fragment(), TxInfoAdapterListener {
private var startHeight: Long = 0
@ -82,7 +75,8 @@ class HomeFragment : Fragment(), TxInfoAdapterListener {
ProxyService.instance?.proxyChangeEvents?.observe(viewLifecycleOwner) { proxy ->
lifecycleScope.launch(Dispatchers.IO) {
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?.wallet?.setProxy(finalProxy)
WalletManager.instance?.wallet?.init(0)

View File

@ -163,7 +163,8 @@ class OnboardingFragment : Fragment(), NodeSelectionDialogListener, AddNodeListe
}
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)
samouraiTorManager?.getTorStateLiveData()?.observe(viewLifecycleOwner) { state ->
@ -187,10 +188,12 @@ class OnboardingFragment : Fragment(), NodeSelectionDialogListener, AddNodeListe
torIcon?.visibility = View.INVISIBLE
indicatorCircle?.visibility = View.INVISIBLE
}
EnumTorState.STARTING, EnumTorState.STOPPING -> {
torIcon?.visibility = View.INVISIBLE
indicatorCircle?.visibility = View.VISIBLE
}
else -> {}
}
}

View File

@ -241,7 +241,8 @@ class OnboardingViewModel : ViewModel() {
fun setUseBundledTor(useBundled: Boolean) {
_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
if (useBundled && ProxyService.instance?.usingProxy == true) {

View File

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

View File

@ -1,7 +1,6 @@
package net.mynero.wallet.fragment.settings
import android.os.Bundle
import android.util.Patterns
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
@ -10,12 +9,10 @@ import android.widget.CheckBox
import android.widget.CompoundButton
import android.widget.EditText
import android.widget.ImageView
import android.widget.Switch
import android.widget.Toast
import androidx.activity.OnBackPressedCallback
import androidx.appcompat.widget.SwitchCompat
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.widget.addTextChangedListener
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider
import androidx.navigation.fragment.NavHostFragment
@ -84,13 +81,18 @@ class SettingsFragment : Fragment(), PasswordListener, NodeSelectionDialogListen
val cachedUsingBundledTor = ProxyService.instance?.useBundledTor == true
val useProxyVisibility = if (cachedUsingProxy) View.VISIBLE else View.GONE
walletProxyPortEditText?.visibility = if (cachedUsingBundledTor) View.GONE else useProxyVisibility
walletProxyAddressEditText?.visibility = if (cachedUsingBundledTor) View.GONE else useProxyVisibility
walletProxyPortEditText?.visibility =
if (cachedUsingBundledTor) View.GONE else useProxyVisibility
walletProxyAddressEditText?.visibility =
if (cachedUsingBundledTor) View.GONE else useProxyVisibility
proxySettingsLayout?.visibility = useProxyVisibility
streetModeSwitch?.isChecked = PrefService.instance?.getBoolean(Constants.PREF_STREET_MODE, false) == true
monerochanSwitch?.isChecked = PrefService.instance?.getBoolean(Constants.PREF_MONEROCHAN, true) == true
donationSwitch?.isChecked = PrefService.instance?.getBoolean(Constants.PREF_DONATE_PER_TX, false) == true
streetModeSwitch?.isChecked =
PrefService.instance?.getBoolean(Constants.PREF_STREET_MODE, 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
torSwitch?.isChecked = cachedUsingProxy
updateProxy(cachedProxyAddress, cachedProxyPort)
@ -179,7 +181,8 @@ class SettingsFragment : Fragment(), PasswordListener, NodeSelectionDialogListen
}
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)
samouraiTorManager?.getTorStateLiveData()?.observe(viewLifecycleOwner) { state ->
@ -203,10 +206,12 @@ class SettingsFragment : Fragment(), PasswordListener, NodeSelectionDialogListen
torIcon?.visibility = View.INVISIBLE
indicatorCircle?.visibility = View.INVISIBLE
}
EnumTorState.STARTING, EnumTorState.STOPPING -> {
torIcon?.visibility = View.INVISIBLE
indicatorCircle?.visibility = View.VISIBLE
}
else -> {}
}
}

View File

@ -1,11 +1,8 @@
package net.mynero.wallet.fragment.settings
import android.util.Patterns
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
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.ProxyService
import net.mynero.wallet.util.Constants

View File

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

View File

@ -1,12 +1,7 @@
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.livedata.SingleLiveEvent
import net.mynero.wallet.model.WalletManager
import net.mynero.wallet.util.Constants
class DaemonService(thread: MoneroHandlerThread) : ServiceBase(thread) {
val daemonChangeEvents: SingleLiveEvent<Node> = SingleLiveEvent()

View File

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

View File

@ -5,7 +5,10 @@ import androidx.lifecycle.MutableLiveData
import net.mynero.wallet.model.TorState
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> {
return torKmpManager.torStateLiveData
}

View File

@ -5,7 +5,6 @@ import android.util.Log
import android.widget.Toast
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import net.mynero.wallet.model.TorState
import io.matthewnelson.kmp.tor.KmpTorLoaderAndroid
import io.matthewnelson.kmp.tor.TorConfigProviderAndroid
import io.matthewnelson.kmp.tor.common.address.*
@ -26,7 +25,7 @@ import io.matthewnelson.kmp.tor.manager.common.state.isStarting
import io.matthewnelson.kmp.tor.manager.common.state.isStopping
import kotlinx.coroutines.*
import net.mynero.wallet.model.EnumTorState
import java.lang.Exception
import net.mynero.wallet.model.TorState
import java.net.InetSocketAddress
import java.net.Proxy
@ -61,11 +60,15 @@ class TorKmpManager(application : Application) {
put(socks.set(AorDorPort.Value(PortProxy(9263))))
// Set Flags
socks.setFlags(setOf(
socks.setFlags(
setOf(
Ports.Socks.Flag.OnionTrafficOnly
)).setIsolationFlags(setOf(
)
).setIsolationFlags(
setOf(
Ports.IsolationFlag.IsolateClientAddr,
)).set(AorDorPort.Value(PortProxy(9264)))
)
).set(AorDorPort.Value(PortProxy(9264)))
put(socks)
// reset our socks object to defaults
@ -142,23 +145,36 @@ class TorKmpManager(application : Application) {
addSegment("test_service")
}
// Add Hidden services
put(HiddenService()
.setPorts(ports = setOf(
put(
HiddenService()
.setPorts(
ports = setOf(
// 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)
}),
))
)
)
.setMaxStreams(maxStreams = HiddenService.MaxStreams(value = 2))
.setMaxStreamsCloseCircuit(value = TorF.True)
.set(FileSystemDir(path = hsPath))
)
put(HiddenService()
.setPorts(ports = setOf(
HiddenService.Ports(virtualPort = Port(80), targetPort = Port(1030)), // http
HiddenService.Ports(virtualPort = Port(443), targetPort = Port(1030)) // https
))
.setPorts(
ports = setOf(
HiddenService.Ports(
virtualPort = Port(80),
targetPort = Port(1030)
), // http
HiddenService.Ports(
virtualPort = Port(443),
targetPort = Port(1030)
) // https
)
)
.set(FileSystemDir(path =
workDir.builder {
addSegment(HiddenService.DEFAULT_PARENT_DIR_NAME)
@ -176,7 +192,11 @@ class TorKmpManager(application : Application) {
}
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
@ -192,12 +212,9 @@ class TorKmpManager(application : Application) {
}
val torStateLiveData: MutableLiveData<TorState> = MutableLiveData()
get() = field
var torState: TorState = TorState()
get() = field
var proxy: Proxy? = null
get() = field
init {
manager.debug(true)
@ -210,7 +227,7 @@ class TorKmpManager(application : Application) {
}
fun isStarting(): Boolean {
return manager.state.isStarting();
return manager.state.isStarting()
}
@ -313,7 +330,8 @@ class TorKmpManager(application : Application) {
} else {
info.socksInfoToProxyAddressOrNull()?.firstOrNull()?.let { proxyAddress ->
@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)
}
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,6 +1,5 @@
<?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:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
@ -20,10 +19,10 @@
android:visibility="visible"
app:indicatorInset="0dp"
app:indicatorSize="30dp"
app:trackThickness="4dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
app:trackThickness="4dp" />
<TextView
android:id="@+id/tvConfirmations"
@ -33,31 +32,31 @@
android:paddingBottom="1dp"
android:text="8"
android:visibility="visible"
app:layout_constraintTop_toTopOf="@id/pbConfirmations"
app:layout_constraintBottom_toBottomOf="@id/pbConfirmations"
app:layout_constraintEnd_toEndOf="@id/pbConfirmations"
app:layout_constraintStart_toStartOf="@id/pbConfirmations"
app:layout_constraintEnd_toEndOf="@id/pbConfirmations"/>
app:layout_constraintTop_toTopOf="@id/pbConfirmations" />
<TextView
android:id="@+id/tx_amount"
style="@style/MoneroText.PosAmount"
android:layout_width="0dp"
android:layout_height="wrap_content"
tools:text="+ 999.999999"
android:layout_marginStart="8dp"
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_constraintEnd_toStartOf="@id/tx_datetime"/>
app:layout_constraintTop_toTopOf="@id/pbConfirmations"
tools:text="+ 999.999999" />
<TextView
android:id="@+id/tx_failed"
style="@style/MoneroText.PosFee"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:text="@string/tx_list_failed_text"
android:visibility="gone"
android:layout_marginStart="8dp"
app:layout_constraintBottom_toBottomOf="@id/pbConfirmations"
app:layout_constraintStart_toEndOf="@id/pbConfirmations"
app:layout_constraintTop_toBottomOf="@id/tx_amount" />
@ -67,8 +66,8 @@
style="@style/MoneroText.PosDate"
android:layout_width="0dp"
android:layout_height="wrap_content"
tools:text="2017-05-22 21:32"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
tools:text="2017-05-22 21:32" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

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

View File

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

View File

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

View File

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

View File

@ -80,10 +80,8 @@
<string name="node_port_hint">18081</string>
<string name="node_username_hint">Username (optional)</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_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_prefix2">999.99999999999</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_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="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_desc">in a transaction with id</string>
<string name="transaction_destination">Destination</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_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_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="node_selecting">Selecting node…</string>
<string name="node_selected">Using node: %1$s</string>
<string name="fee_priority">Fee priority:</string>
<string name="low">Low</string>
<string name="medium">Medium</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_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>
@ -133,7 +125,6 @@
<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_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="trusted_daemon">Trusted daemon</string>
<string name="use_bundled_tor">Let Mysu start and manage a Tor daemon</string>