mirror of
https://codeberg.org/r4v3r23/mysu.git
synced 2024-11-14 01:21:54 +00:00
0.5.6.1: Remove retry system in connection handling, reword "View outputs" to "View coins", reformat code
This commit is contained in:
parent
ae4e7cb65c
commit
5733197cb0
49 changed files with 1136 additions and 994 deletions
|
@ -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 {
|
||||
|
|
|
@ -235,7 +235,7 @@ std::vector<std::string> java2cpp(JNIEnv *env, jobject arrayList) {
|
|||
|
||||
jlong getElement(JNIEnv *env, jlongArray arr_j, int element) {
|
||||
jlong result;
|
||||
env->GetLongArrayRegion(arr_j, element,1, &result);
|
||||
env->GetLongArrayRegion(arr_j, element, 1, &result);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -326,9 +326,9 @@ extern "C"
|
|||
/**********************************/
|
||||
JNIEXPORT jlong JNICALL
|
||||
Java_net_mynero_wallet_model_WalletManager_createWalletJ(JNIEnv *env, jobject instance,
|
||||
jstring path, jstring password,
|
||||
jstring language,
|
||||
jint networkType) {
|
||||
jstring path, jstring password,
|
||||
jstring language,
|
||||
jint networkType) {
|
||||
const char *_path = env->GetStringUTFChars(path, nullptr);
|
||||
const char *_password = env->GetStringUTFChars(password, nullptr);
|
||||
const char *_language = env->GetStringUTFChars(language, nullptr);
|
||||
|
@ -349,9 +349,10 @@ 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 language,
|
||||
jint networkType) {
|
||||
jstring path, jstring password,
|
||||
jstring passpharse,
|
||||
jstring language,
|
||||
jint networkType) {
|
||||
std::string seed_words;
|
||||
std::string err;
|
||||
bool _polyseedCreate = Monero::Wallet::createPolyseed(seed_words, err);
|
||||
|
@ -384,8 +385,8 @@ Java_net_mynero_wallet_model_WalletManager_createWalletPolyseedJ(JNIEnv *env, jo
|
|||
|
||||
JNIEXPORT jlong JNICALL
|
||||
Java_net_mynero_wallet_model_WalletManager_openWalletJ(JNIEnv *env, jobject instance,
|
||||
jstring path, jstring password,
|
||||
jint networkType) {
|
||||
jstring path, jstring password,
|
||||
jint networkType) {
|
||||
const char *_path = env->GetStringUTFChars(path, nullptr);
|
||||
const char *_password = env->GetStringUTFChars(password, nullptr);
|
||||
Monero::NetworkType _networkType = static_cast<Monero::NetworkType>(networkType);
|
||||
|
@ -403,10 +404,10 @@ Java_net_mynero_wallet_model_WalletManager_openWalletJ(JNIEnv *env, jobject inst
|
|||
|
||||
JNIEXPORT jlong JNICALL
|
||||
Java_net_mynero_wallet_model_WalletManager_recoveryWalletJ(JNIEnv *env, jobject instance,
|
||||
jstring path, jstring password,
|
||||
jstring mnemonic, jstring offset,
|
||||
jint networkType,
|
||||
jlong restoreHeight) {
|
||||
jstring path, jstring password,
|
||||
jstring mnemonic, jstring offset,
|
||||
jint networkType,
|
||||
jlong restoreHeight) {
|
||||
const char *_path = env->GetStringUTFChars(path, nullptr);
|
||||
const char *_password = env->GetStringUTFChars(password, nullptr);
|
||||
const char *_mnemonic = env->GetStringUTFChars(mnemonic, nullptr);
|
||||
|
@ -432,9 +433,9 @@ Java_net_mynero_wallet_model_WalletManager_recoveryWalletJ(JNIEnv *env, jobject
|
|||
|
||||
JNIEXPORT jlong JNICALL
|
||||
Java_net_mynero_wallet_model_WalletManager_recoveryWalletPolyseedJ(JNIEnv *env, jobject instance,
|
||||
jstring path, jstring password,
|
||||
jstring mnemonic, jstring offset,
|
||||
jint networkType) {
|
||||
jstring path, jstring password,
|
||||
jstring mnemonic, jstring offset,
|
||||
jint networkType) {
|
||||
const char *_path = env->GetStringUTFChars(path, nullptr);
|
||||
const char *_password = env->GetStringUTFChars(password, nullptr);
|
||||
const char *_mnemonic = env->GetStringUTFChars(mnemonic, nullptr);
|
||||
|
@ -459,13 +460,13 @@ Java_net_mynero_wallet_model_WalletManager_recoveryWalletPolyseedJ(JNIEnv *env,
|
|||
|
||||
JNIEXPORT jlong JNICALL
|
||||
Java_net_mynero_wallet_model_WalletManager_createWalletFromKeysJ(JNIEnv *env, jobject instance,
|
||||
jstring path, jstring password,
|
||||
jstring language,
|
||||
jint networkType,
|
||||
jlong restoreHeight,
|
||||
jstring addressString,
|
||||
jstring viewKeyString,
|
||||
jstring spendKeyString) {
|
||||
jstring path, jstring password,
|
||||
jstring language,
|
||||
jint networkType,
|
||||
jlong restoreHeight,
|
||||
jstring addressString,
|
||||
jstring viewKeyString,
|
||||
jstring spendKeyString) {
|
||||
const char *_path = env->GetStringUTFChars(path, nullptr);
|
||||
const char *_password = env->GetStringUTFChars(password, nullptr);
|
||||
const char *_language = env->GetStringUTFChars(language, nullptr);
|
||||
|
@ -499,12 +500,12 @@ Java_net_mynero_wallet_model_WalletManager_createWalletFromKeysJ(JNIEnv *env, jo
|
|||
|
||||
JNIEXPORT jlong JNICALL
|
||||
Java_net_mynero_wallet_model_WalletManager_createWalletFromDeviceJ(JNIEnv *env, jobject instance,
|
||||
jstring path,
|
||||
jstring password,
|
||||
jint networkType,
|
||||
jstring deviceName,
|
||||
jlong restoreHeight,
|
||||
jstring subaddressLookahead) {
|
||||
jstring path,
|
||||
jstring password,
|
||||
jint networkType,
|
||||
jstring deviceName,
|
||||
jlong restoreHeight,
|
||||
jstring subaddressLookahead) {
|
||||
const char *_path = env->GetStringUTFChars(path, nullptr);
|
||||
const char *_password = env->GetStringUTFChars(password, nullptr);
|
||||
Monero::NetworkType _networkType = static_cast<Monero::NetworkType>(networkType);
|
||||
|
@ -529,7 +530,7 @@ Java_net_mynero_wallet_model_WalletManager_createWalletFromDeviceJ(JNIEnv *env,
|
|||
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_net_mynero_wallet_model_WalletManager_walletExists(JNIEnv *env, jobject instance,
|
||||
jstring path) {
|
||||
jstring path) {
|
||||
const char *_path = env->GetStringUTFChars(path, nullptr);
|
||||
bool exists =
|
||||
Monero::WalletManagerFactory::getWalletManager()->walletExists(std::string(_path));
|
||||
|
@ -539,9 +540,9 @@ Java_net_mynero_wallet_model_WalletManager_walletExists(JNIEnv *env, jobject ins
|
|||
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_net_mynero_wallet_model_WalletManager_verifyWalletPassword(JNIEnv *env, jobject instance,
|
||||
jstring keys_file_name,
|
||||
jstring password,
|
||||
jboolean watch_only) {
|
||||
jstring keys_file_name,
|
||||
jstring password,
|
||||
jboolean watch_only) {
|
||||
const char *_keys_file_name = env->GetStringUTFChars(keys_file_name, nullptr);
|
||||
const char *_password = env->GetStringUTFChars(password, nullptr);
|
||||
bool passwordOk =
|
||||
|
@ -555,8 +556,8 @@ Java_net_mynero_wallet_model_WalletManager_verifyWalletPassword(JNIEnv *env, job
|
|||
//virtual int queryWalletHardware(const std::string &keys_file_name, const std::string &password) const = 0;
|
||||
JNIEXPORT jint JNICALL
|
||||
Java_net_mynero_wallet_model_WalletManager_queryWalletDeviceJ(JNIEnv *env, jobject instance,
|
||||
jstring keys_file_name,
|
||||
jstring password) {
|
||||
jstring keys_file_name,
|
||||
jstring password) {
|
||||
const char *_keys_file_name = env->GetStringUTFChars(keys_file_name, nullptr);
|
||||
const char *_password = env->GetStringUTFChars(password, nullptr);
|
||||
Monero::Wallet::Device device_type;
|
||||
|
@ -572,7 +573,7 @@ Java_net_mynero_wallet_model_WalletManager_queryWalletDeviceJ(JNIEnv *env, jobje
|
|||
|
||||
JNIEXPORT jobject JNICALL
|
||||
Java_net_mynero_wallet_model_WalletManager_findWallets(JNIEnv *env, jobject instance,
|
||||
jstring path) {
|
||||
jstring path) {
|
||||
const char *_path = env->GetStringUTFChars(path, nullptr);
|
||||
std::vector<std::string> walletPaths =
|
||||
Monero::WalletManagerFactory::getWalletManager()->findWallets(std::string(_path));
|
||||
|
@ -584,7 +585,7 @@ Java_net_mynero_wallet_model_WalletManager_findWallets(JNIEnv *env, jobject inst
|
|||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_net_mynero_wallet_model_WalletManager_setDaemonAddressJ(JNIEnv *env, jobject instance,
|
||||
jstring address) {
|
||||
jstring address) {
|
||||
const char *_address = env->GetStringUTFChars(address, nullptr);
|
||||
Monero::WalletManagerFactory::getWalletManager()->setDaemonAddress(std::string(_address));
|
||||
env->ReleaseStringUTFChars(address, _address);
|
||||
|
@ -593,7 +594,7 @@ Java_net_mynero_wallet_model_WalletManager_setDaemonAddressJ(JNIEnv *env, jobjec
|
|||
// returns whether the daemon can be reached, and its version number
|
||||
JNIEXPORT jint JNICALL
|
||||
Java_net_mynero_wallet_model_WalletManager_getDaemonVersion(JNIEnv *env,
|
||||
jobject instance) {
|
||||
jobject instance) {
|
||||
uint32_t version;
|
||||
bool isConnected =
|
||||
Monero::WalletManagerFactory::getWalletManager()->connected(&version);
|
||||
|
@ -608,7 +609,7 @@ Java_net_mynero_wallet_model_WalletManager_getBlockchainHeight(JNIEnv *env, jobj
|
|||
|
||||
JNIEXPORT jlong JNICALL
|
||||
Java_net_mynero_wallet_model_WalletManager_getBlockchainTargetHeight(JNIEnv *env,
|
||||
jobject instance) {
|
||||
jobject instance) {
|
||||
return Monero::WalletManagerFactory::getWalletManager()->blockchainTargetHeight();
|
||||
}
|
||||
|
||||
|
@ -634,9 +635,9 @@ Java_net_mynero_wallet_model_WalletManager_isMining(JNIEnv *env, jobject instanc
|
|||
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_net_mynero_wallet_model_WalletManager_startMining(JNIEnv *env, jobject instance,
|
||||
jstring address,
|
||||
jboolean background_mining,
|
||||
jboolean ignore_battery) {
|
||||
jstring address,
|
||||
jboolean background_mining,
|
||||
jboolean ignore_battery) {
|
||||
const char *_address = env->GetStringUTFChars(address, nullptr);
|
||||
bool success =
|
||||
Monero::WalletManagerFactory::getWalletManager()->startMining(std::string(_address),
|
||||
|
@ -653,8 +654,8 @@ Java_net_mynero_wallet_model_WalletManager_stopMining(JNIEnv *env, jobject insta
|
|||
|
||||
JNIEXPORT jstring JNICALL
|
||||
Java_net_mynero_wallet_model_WalletManager_resolveOpenAlias(JNIEnv *env, jobject instance,
|
||||
jstring address,
|
||||
jboolean dnssec_valid) {
|
||||
jstring address,
|
||||
jboolean dnssec_valid) {
|
||||
const char *_address = env->GetStringUTFChars(address, nullptr);
|
||||
bool _dnssec_valid = (bool) dnssec_valid;
|
||||
std::string resolvedAlias =
|
||||
|
@ -667,7 +668,7 @@ Java_net_mynero_wallet_model_WalletManager_resolveOpenAlias(JNIEnv *env, jobject
|
|||
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_net_mynero_wallet_model_WalletManager_setProxyJ(JNIEnv *env, jobject instance,
|
||||
jstring address) {
|
||||
jstring address) {
|
||||
const char *_address = env->GetStringUTFChars(address, nullptr);
|
||||
bool rc =
|
||||
Monero::WalletManagerFactory::getWalletManager()->setProxy(std::string(_address));
|
||||
|
@ -680,7 +681,7 @@ Java_net_mynero_wallet_model_WalletManager_setProxyJ(JNIEnv *env, jobject instan
|
|||
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_net_mynero_wallet_model_WalletManager_closeJ(JNIEnv *env, jobject instance,
|
||||
jobject walletInstance) {
|
||||
jobject walletInstance) {
|
||||
Monero::Wallet *wallet = getHandle<Monero::Wallet>(env, walletInstance);
|
||||
bool closeSuccess = Monero::WalletManagerFactory::getWalletManager()->closeWallet(wallet,
|
||||
false);
|
||||
|
@ -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);
|
||||
|
||||
|
@ -764,7 +767,7 @@ Java_net_mynero_wallet_model_Wallet_getSeedLanguage(JNIEnv *env, jobject instanc
|
|||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_net_mynero_wallet_model_Wallet_setSeedLanguage(JNIEnv *env, jobject instance,
|
||||
jstring language) {
|
||||
jstring language) {
|
||||
const char *_language = env->GetStringUTFChars(language, nullptr);
|
||||
Monero::Wallet *wallet = getHandle<Monero::Wallet>(env, instance);
|
||||
wallet->setSeedLanguage(std::string(_language));
|
||||
|
@ -800,7 +803,7 @@ Java_net_mynero_wallet_model_Wallet_statusWithErrorString(JNIEnv *env, jobject i
|
|||
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_net_mynero_wallet_model_Wallet_setPassword(JNIEnv *env, jobject instance,
|
||||
jstring password) {
|
||||
jstring password) {
|
||||
const char *_password = env->GetStringUTFChars(password, nullptr);
|
||||
Monero::Wallet *wallet = getHandle<Monero::Wallet>(env, instance);
|
||||
bool success = wallet->setPassword(std::string(_password));
|
||||
|
@ -810,8 +813,8 @@ Java_net_mynero_wallet_model_Wallet_setPassword(JNIEnv *env, jobject instance,
|
|||
|
||||
JNIEXPORT jstring JNICALL
|
||||
Java_net_mynero_wallet_model_Wallet_getAddressJ(JNIEnv *env, jobject instance,
|
||||
jint accountIndex,
|
||||
jint addressIndex) {
|
||||
jint accountIndex,
|
||||
jint addressIndex) {
|
||||
Monero::Wallet *wallet = getHandle<Monero::Wallet>(env, instance);
|
||||
return env->NewStringUTF(
|
||||
wallet->address((uint32_t) accountIndex, (uint32_t) addressIndex).c_str());
|
||||
|
@ -834,7 +837,7 @@ Java_net_mynero_wallet_model_Wallet_nettype(JNIEnv *env, jobject instance) {
|
|||
|
||||
JNIEXPORT jstring JNICALL
|
||||
Java_net_mynero_wallet_model_Wallet_getIntegratedAddress(JNIEnv *env, jobject instance,
|
||||
jstring payment_id) {
|
||||
jstring payment_id) {
|
||||
const char *_payment_id = env->GetStringUTFChars(payment_id, nullptr);
|
||||
Monero::Wallet *wallet = getHandle<Monero::Wallet>(env, instance);
|
||||
std::string address = wallet->integratedAddress(_payment_id);
|
||||
|
@ -856,7 +859,7 @@ Java_net_mynero_wallet_model_Wallet_getSecretSpendKey(JNIEnv *env, jobject insta
|
|||
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_net_mynero_wallet_model_Wallet_store(JNIEnv *env, jobject instance,
|
||||
jstring path) {
|
||||
jstring path) {
|
||||
const char *_path = env->GetStringUTFChars(path, nullptr);
|
||||
Monero::Wallet *wallet = getHandle<Monero::Wallet>(env, instance);
|
||||
bool success = wallet->store(std::string(_path));
|
||||
|
@ -877,10 +880,10 @@ Java_net_mynero_wallet_model_Wallet_getFilename(JNIEnv *env, jobject instance) {
|
|||
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_net_mynero_wallet_model_Wallet_initJ(JNIEnv *env, jobject instance,
|
||||
jstring daemon_address,
|
||||
jlong upper_transaction_size_limit,
|
||||
jstring daemon_username, jstring daemon_password,
|
||||
jstring proxy) {
|
||||
jstring daemon_address,
|
||||
jlong upper_transaction_size_limit,
|
||||
jstring daemon_username, jstring daemon_password,
|
||||
jstring proxy) {
|
||||
const char *_daemon_address = env->GetStringUTFChars(daemon_address, nullptr);
|
||||
const char *_daemon_username = env->GetStringUTFChars(daemon_username, nullptr);
|
||||
const char *_daemon_password = env->GetStringUTFChars(daemon_password, nullptr);
|
||||
|
@ -901,7 +904,7 @@ Java_net_mynero_wallet_model_Wallet_initJ(JNIEnv *env, jobject instance,
|
|||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_net_mynero_wallet_model_Wallet_setRestoreHeight(JNIEnv *env, jobject instance,
|
||||
jlong height) {
|
||||
jlong height) {
|
||||
Monero::Wallet *wallet = getHandle<Monero::Wallet>(env, instance);
|
||||
wallet->setRefreshFromBlockHeight((uint64_t) height);
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -939,7 +943,7 @@ Java_net_mynero_wallet_model_Wallet_isTrustedDaemonJ(JNIEnv *env, jobject instan
|
|||
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_net_mynero_wallet_model_Wallet_setProxyJ(JNIEnv *env, jobject instance,
|
||||
jstring address) {
|
||||
jstring address) {
|
||||
const char *_address = env->GetStringUTFChars(address, nullptr);
|
||||
Monero::Wallet *wallet = getHandle<Monero::Wallet>(env, instance);
|
||||
bool rc = wallet->setProxy(std::string(_address));
|
||||
|
@ -949,7 +953,7 @@ Java_net_mynero_wallet_model_Wallet_setProxyJ(JNIEnv *env, jobject instance,
|
|||
|
||||
JNIEXPORT jlong JNICALL
|
||||
Java_net_mynero_wallet_model_Wallet_getBalance(JNIEnv *env, jobject instance,
|
||||
jint accountIndex) {
|
||||
jint accountIndex) {
|
||||
Monero::Wallet *wallet = getHandle<Monero::Wallet>(env, instance);
|
||||
return wallet->balance((uint32_t) accountIndex);
|
||||
}
|
||||
|
@ -962,7 +966,7 @@ Java_net_mynero_wallet_model_Wallet_getBalanceAll(JNIEnv *env, jobject instance)
|
|||
|
||||
JNIEXPORT jlong JNICALL
|
||||
Java_net_mynero_wallet_model_Wallet_getUnlockedBalance(JNIEnv *env, jobject instance,
|
||||
jint accountIndex) {
|
||||
jint accountIndex) {
|
||||
Monero::Wallet *wallet = getHandle<Monero::Wallet>(env, instance);
|
||||
return wallet->unlockedBalance((uint32_t) accountIndex);
|
||||
}
|
||||
|
@ -987,7 +991,7 @@ Java_net_mynero_wallet_model_Wallet_getBlockChainHeightJ(JNIEnv *env, jobject in
|
|||
|
||||
JNIEXPORT jlong JNICALL
|
||||
Java_net_mynero_wallet_model_Wallet_getApproximateBlockChainHeight(JNIEnv *env,
|
||||
jobject instance) {
|
||||
jobject instance) {
|
||||
Monero::Wallet *wallet = getHandle<Monero::Wallet>(env, instance);
|
||||
return wallet->approximateBlockChainHeight();
|
||||
}
|
||||
|
@ -1000,7 +1004,7 @@ Java_net_mynero_wallet_model_Wallet_getDaemonBlockChainHeightJ(JNIEnv *env, jobj
|
|||
|
||||
JNIEXPORT jlong JNICALL
|
||||
Java_net_mynero_wallet_model_Wallet_getDaemonBlockChainTargetHeight(JNIEnv *env,
|
||||
jobject instance) {
|
||||
jobject instance) {
|
||||
Monero::Wallet *wallet = getHandle<Monero::Wallet>(env, instance);
|
||||
return wallet->daemonBlockChainTargetHeight();
|
||||
}
|
||||
|
@ -1020,13 +1024,13 @@ Java_net_mynero_wallet_model_Wallet_getDeviceTypeJ(JNIEnv *env, jobject instance
|
|||
|
||||
JNIEXPORT jstring JNICALL
|
||||
Java_net_mynero_wallet_model_Wallet_getDisplayAmount(JNIEnv *env, jclass clazz,
|
||||
jlong amount) {
|
||||
jlong amount) {
|
||||
return env->NewStringUTF(Monero::Wallet::displayAmount(amount).c_str());
|
||||
}
|
||||
|
||||
JNIEXPORT jlong JNICALL
|
||||
Java_net_mynero_wallet_model_Wallet_getAmountFromString(JNIEnv *env, jclass clazz,
|
||||
jstring amount) {
|
||||
jstring amount) {
|
||||
const char *_amount = env->GetStringUTFChars(amount, nullptr);
|
||||
uint64_t x = Monero::Wallet::amountFromString(_amount);
|
||||
env->ReleaseStringUTFChars(amount, _amount);
|
||||
|
@ -1035,7 +1039,7 @@ Java_net_mynero_wallet_model_Wallet_getAmountFromString(JNIEnv *env, jclass claz
|
|||
|
||||
JNIEXPORT jlong JNICALL
|
||||
Java_net_mynero_wallet_model_Wallet_getAmountFromDouble(JNIEnv *env, jclass clazz,
|
||||
jdouble amount) {
|
||||
jdouble amount) {
|
||||
return Monero::Wallet::amountFromDouble(amount);
|
||||
}
|
||||
|
||||
|
@ -1046,7 +1050,7 @@ Java_net_mynero_wallet_model_Wallet_generatePaymentId(JNIEnv *env, jclass clazz)
|
|||
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_net_mynero_wallet_model_Wallet_isPaymentIdValid(JNIEnv *env, jclass clazz,
|
||||
jstring payment_id) {
|
||||
jstring payment_id) {
|
||||
const char *_payment_id = env->GetStringUTFChars(payment_id, nullptr);
|
||||
bool isValid = Monero::Wallet::paymentIdValid(_payment_id);
|
||||
env->ReleaseStringUTFChars(payment_id, _payment_id);
|
||||
|
@ -1055,7 +1059,7 @@ Java_net_mynero_wallet_model_Wallet_isPaymentIdValid(JNIEnv *env, jclass clazz,
|
|||
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_net_mynero_wallet_model_Wallet_isAddressValid(JNIEnv *env, jclass clazz,
|
||||
jstring address, jint networkType) {
|
||||
jstring address, jint networkType) {
|
||||
const char *_address = env->GetStringUTFChars(address, nullptr);
|
||||
Monero::NetworkType _networkType = static_cast<Monero::NetworkType>(networkType);
|
||||
bool isValid = Monero::Wallet::addressValid(_address, _networkType);
|
||||
|
@ -1065,8 +1069,8 @@ Java_net_mynero_wallet_model_Wallet_isAddressValid(JNIEnv *env, jclass clazz,
|
|||
|
||||
JNIEXPORT jstring JNICALL
|
||||
Java_net_mynero_wallet_model_Wallet_getPaymentIdFromAddress(JNIEnv *env, jclass clazz,
|
||||
jstring address,
|
||||
jint networkType) {
|
||||
jstring address,
|
||||
jint networkType) {
|
||||
Monero::NetworkType _networkType = static_cast<Monero::NetworkType>(networkType);
|
||||
const char *_address = env->GetStringUTFChars(address, nullptr);
|
||||
std::string payment_id = Monero::Wallet::paymentIdFromAddress(_address, _networkType);
|
||||
|
@ -1118,10 +1122,10 @@ Java_net_mynero_wallet_model_Wallet_rescanBlockchainAsyncJ(JNIEnv *env, jobject
|
|||
|
||||
JNIEXPORT jlong JNICALL
|
||||
Java_net_mynero_wallet_model_Wallet_createTransactionJ(JNIEnv *env, jobject instance,
|
||||
jstring dst_addr, jstring payment_id,
|
||||
jlong amount, jint mixin_count,
|
||||
jint priority,
|
||||
jint accountIndex, jobject key_images) {
|
||||
jstring dst_addr, jstring payment_id,
|
||||
jlong amount, jint mixin_count,
|
||||
jint priority,
|
||||
jint accountIndex, jobject key_images) {
|
||||
const std::set<std::string> _key_images = java2cpp_set(env, key_images);
|
||||
const char *_dst_addr = env->GetStringUTFChars(dst_addr, nullptr);
|
||||
const char *_payment_id = env->GetStringUTFChars(payment_id, nullptr);
|
||||
|
@ -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,
|
||||
jlongArray amounts, jint mixin_count,
|
||||
jint priority,
|
||||
jint accountIndex, jobject key_images) {
|
||||
jobject dst_addrs,
|
||||
jstring payment_id,
|
||||
jlongArray amounts, jint mixin_count,
|
||||
jint priority,
|
||||
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,
|
||||
_priority,
|
||||
(uint32_t) accountIndex, {}, _key_images);
|
||||
_dst_amounts,
|
||||
(uint32_t) mixin_count,
|
||||
_priority,
|
||||
(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);
|
||||
|
@ -1174,10 +1184,10 @@ Java_net_mynero_wallet_model_Wallet_estimateTransactionFee(JNIEnv *env, jobject
|
|||
|
||||
JNIEXPORT jlong JNICALL
|
||||
Java_net_mynero_wallet_model_Wallet_createSweepTransaction(JNIEnv *env, jobject instance,
|
||||
jstring dst_addr, jstring payment_id,
|
||||
jint mixin_count,
|
||||
jint priority,
|
||||
jint accountIndex, jobject key_images) {
|
||||
jstring dst_addr, jstring payment_id,
|
||||
jint mixin_count,
|
||||
jint priority,
|
||||
jint accountIndex, jobject key_images) {
|
||||
const std::set<std::string> _key_images = java2cpp_set(env, key_images);
|
||||
const char *_dst_addr = env->GetStringUTFChars(dst_addr, nullptr);
|
||||
const char *_payment_id = env->GetStringUTFChars(payment_id, nullptr);
|
||||
|
@ -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);
|
||||
|
@ -1199,7 +1210,7 @@ Java_net_mynero_wallet_model_Wallet_createSweepTransaction(JNIEnv *env, jobject
|
|||
|
||||
JNIEXPORT jlong JNICALL
|
||||
Java_net_mynero_wallet_model_Wallet_createSweepUnmixableTransactionJ(JNIEnv *env,
|
||||
jobject instance) {
|
||||
jobject instance) {
|
||||
Monero::Wallet *wallet = getHandle<Monero::Wallet>(env, instance);
|
||||
Monero::PendingTransaction *tx = wallet->createSweepUnmixableTransaction();
|
||||
return reinterpret_cast<jlong>(tx);
|
||||
|
@ -1210,7 +1221,7 @@ Java_net_mynero_wallet_model_Wallet_createSweepUnmixableTransactionJ(JNIEnv *env
|
|||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_net_mynero_wallet_model_Wallet_disposeTransaction(JNIEnv *env, jobject instance,
|
||||
jobject pendingTransaction) {
|
||||
jobject pendingTransaction) {
|
||||
Monero::Wallet *wallet = getHandle<Monero::Wallet>(env, instance);
|
||||
Monero::PendingTransaction *_pendingTransaction =
|
||||
getHandle<Monero::PendingTransaction>(env, pendingTransaction);
|
||||
|
@ -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) {
|
||||
|
@ -1303,7 +1315,7 @@ Java_net_mynero_wallet_model_Wallet_getHistoryJ(JNIEnv *env, jobject instance) {
|
|||
|
||||
JNIEXPORT jlong JNICALL
|
||||
Java_net_mynero_wallet_model_Wallet_setListenerJ(JNIEnv *env, jobject instance,
|
||||
jobject javaListener) {
|
||||
jobject javaListener) {
|
||||
Monero::Wallet *wallet = getHandle<Monero::Wallet>(env, instance);
|
||||
wallet->setListener(nullptr); // clear old listener
|
||||
// delete old listener
|
||||
|
@ -1337,7 +1349,7 @@ Java_net_mynero_wallet_model_Wallet_setDefaultMixin(JNIEnv *env, jobject instanc
|
|||
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_net_mynero_wallet_model_Wallet_setUserNote(JNIEnv *env, jobject instance,
|
||||
jstring txid, jstring note) {
|
||||
jstring txid, jstring note) {
|
||||
|
||||
const char *_txid = env->GetStringUTFChars(txid, nullptr);
|
||||
const char *_note = env->GetStringUTFChars(note, nullptr);
|
||||
|
@ -1354,7 +1366,7 @@ Java_net_mynero_wallet_model_Wallet_setUserNote(JNIEnv *env, jobject instance,
|
|||
|
||||
JNIEXPORT jstring JNICALL
|
||||
Java_net_mynero_wallet_model_Wallet_getUserNote(JNIEnv *env, jobject instance,
|
||||
jstring txid) {
|
||||
jstring txid) {
|
||||
|
||||
const char *_txid = env->GetStringUTFChars(txid, nullptr);
|
||||
|
||||
|
@ -1368,7 +1380,7 @@ Java_net_mynero_wallet_model_Wallet_getUserNote(JNIEnv *env, jobject instance,
|
|||
|
||||
JNIEXPORT jstring JNICALL
|
||||
Java_net_mynero_wallet_model_Wallet_getTxKey(JNIEnv *env, jobject instance,
|
||||
jstring txid) {
|
||||
jstring txid) {
|
||||
|
||||
const char *_txid = env->GetStringUTFChars(txid, nullptr);
|
||||
|
||||
|
@ -1383,7 +1395,7 @@ Java_net_mynero_wallet_model_Wallet_getTxKey(JNIEnv *env, jobject instance,
|
|||
//virtual void addSubaddressAccount(const std::string& label) = 0;
|
||||
JNIEXPORT void JNICALL
|
||||
Java_net_mynero_wallet_model_Wallet_addAccount(JNIEnv *env, jobject instance,
|
||||
jstring label) {
|
||||
jstring label) {
|
||||
|
||||
const char *_label = env->GetStringUTFChars(label, nullptr);
|
||||
|
||||
|
@ -1396,7 +1408,7 @@ Java_net_mynero_wallet_model_Wallet_addAccount(JNIEnv *env, jobject instance,
|
|||
//virtual std::string getSubaddressLabel(uint32_t accountIndex, uint32_t addressIndex) const = 0;
|
||||
JNIEXPORT jstring JNICALL
|
||||
Java_net_mynero_wallet_model_Wallet_getSubaddressLabel(JNIEnv *env, jobject instance,
|
||||
jint accountIndex, jint addressIndex) {
|
||||
jint accountIndex, jint addressIndex) {
|
||||
|
||||
Monero::Wallet *wallet = getHandle<Monero::Wallet>(env, instance);
|
||||
|
||||
|
@ -1409,8 +1421,8 @@ Java_net_mynero_wallet_model_Wallet_getSubaddressLabel(JNIEnv *env, jobject inst
|
|||
//virtual void setSubaddressLabel(uint32_t accountIndex, uint32_t addressIndex, const std::string &label) = 0;
|
||||
JNIEXPORT void JNICALL
|
||||
Java_net_mynero_wallet_model_Wallet_setSubaddressLabel(JNIEnv *env, jobject instance,
|
||||
jint accountIndex, jint addressIndex,
|
||||
jstring label) {
|
||||
jint accountIndex, jint addressIndex,
|
||||
jstring label) {
|
||||
|
||||
const char *_label = env->GetStringUTFChars(label, nullptr);
|
||||
|
||||
|
@ -1430,7 +1442,7 @@ Java_net_mynero_wallet_model_Wallet_getNumAccounts(JNIEnv *env, jobject instance
|
|||
//virtual size_t numSubaddresses(uint32_t accountIndex) const = 0;
|
||||
JNIEXPORT jint JNICALL
|
||||
Java_net_mynero_wallet_model_Wallet_getNumSubaddresses(JNIEnv *env, jobject instance,
|
||||
jint accountIndex) {
|
||||
jint accountIndex) {
|
||||
Monero::Wallet *wallet = getHandle<Monero::Wallet>(env, instance);
|
||||
return static_cast<jint>(wallet->numSubaddresses(accountIndex));
|
||||
}
|
||||
|
@ -1438,8 +1450,8 @@ Java_net_mynero_wallet_model_Wallet_getNumSubaddresses(JNIEnv *env, jobject inst
|
|||
//virtual void addSubaddress(uint32_t accountIndex, const std::string &label) = 0;
|
||||
JNIEXPORT void JNICALL
|
||||
Java_net_mynero_wallet_model_Wallet_addSubaddress(JNIEnv *env, jobject instance,
|
||||
jint accountIndex,
|
||||
jstring label) {
|
||||
jint accountIndex,
|
||||
jstring label) {
|
||||
|
||||
const char *_label = env->GetStringUTFChars(label, nullptr);
|
||||
Monero::Wallet *wallet = getHandle<Monero::Wallet>(env, instance);
|
||||
|
@ -1579,7 +1591,7 @@ Java_net_mynero_wallet_model_PendingTransaction_getErrorString(JNIEnv *env, jobj
|
|||
// commit transaction or save to file if filename is provided.
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_net_mynero_wallet_model_PendingTransaction_commit(JNIEnv *env, jobject instance,
|
||||
jstring filename, jboolean overwrite) {
|
||||
jstring filename, jboolean overwrite) {
|
||||
|
||||
const char *_filename = env->GetStringUTFChars(filename, nullptr);
|
||||
|
||||
|
@ -1635,8 +1647,8 @@ Java_net_mynero_wallet_model_PendingTransaction_getTxCount(JNIEnv *env, jobject
|
|||
//static void error(const std::string &category, const std::string &str);
|
||||
JNIEXPORT void JNICALL
|
||||
Java_net_mynero_wallet_model_WalletManager_initLogger(JNIEnv *env, jclass clazz,
|
||||
jstring argv0,
|
||||
jstring default_log_base_name) {
|
||||
jstring argv0,
|
||||
jstring default_log_base_name) {
|
||||
|
||||
const char *_argv0 = env->GetStringUTFChars(argv0, nullptr);
|
||||
const char *_default_log_base_name = env->GetStringUTFChars(default_log_base_name, nullptr);
|
||||
|
@ -1649,7 +1661,7 @@ Java_net_mynero_wallet_model_WalletManager_initLogger(JNIEnv *env, jclass clazz,
|
|||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_net_mynero_wallet_model_WalletManager_logDebug(JNIEnv *env, jclass clazz,
|
||||
jstring category, jstring message) {
|
||||
jstring category, jstring message) {
|
||||
|
||||
const char *_category = env->GetStringUTFChars(category, nullptr);
|
||||
const char *_message = env->GetStringUTFChars(message, nullptr);
|
||||
|
@ -1662,7 +1674,7 @@ Java_net_mynero_wallet_model_WalletManager_logDebug(JNIEnv *env, jclass clazz,
|
|||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_net_mynero_wallet_model_WalletManager_logInfo(JNIEnv *env, jclass clazz,
|
||||
jstring category, jstring message) {
|
||||
jstring category, jstring message) {
|
||||
|
||||
const char *_category = env->GetStringUTFChars(category, nullptr);
|
||||
const char *_message = env->GetStringUTFChars(message, nullptr);
|
||||
|
@ -1675,7 +1687,7 @@ Java_net_mynero_wallet_model_WalletManager_logInfo(JNIEnv *env, jclass clazz,
|
|||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_net_mynero_wallet_model_WalletManager_logWarning(JNIEnv *env, jclass clazz,
|
||||
jstring category, jstring message) {
|
||||
jstring category, jstring message) {
|
||||
|
||||
const char *_category = env->GetStringUTFChars(category, nullptr);
|
||||
const char *_message = env->GetStringUTFChars(message, nullptr);
|
||||
|
@ -1688,7 +1700,7 @@ Java_net_mynero_wallet_model_WalletManager_logWarning(JNIEnv *env, jclass clazz,
|
|||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_net_mynero_wallet_model_WalletManager_logError(JNIEnv *env, jclass clazz,
|
||||
jstring category, jstring message) {
|
||||
jstring category, jstring message) {
|
||||
|
||||
const char *_category = env->GetStringUTFChars(category, nullptr);
|
||||
const char *_message = env->GetStringUTFChars(message, nullptr);
|
||||
|
@ -1701,7 +1713,7 @@ Java_net_mynero_wallet_model_WalletManager_logError(JNIEnv *env, jclass clazz,
|
|||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_net_mynero_wallet_model_WalletManager_setLogLevel(JNIEnv *env, jclass clazz,
|
||||
jint level) {
|
||||
jint level) {
|
||||
Monero::WalletManagerFactory::setLogLevel(level);
|
||||
}
|
||||
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -107,7 +107,7 @@ class NodeSelectionAdapter(val listener: NodeSelectionAdapterListener?) :
|
|||
if (node.password.isNotEmpty()) {
|
||||
authTextView.visibility = View.VISIBLE
|
||||
}
|
||||
if(node.trusted) {
|
||||
if (node.trusted) {
|
||||
trustedTextView.visibility = View.VISIBLE
|
||||
}
|
||||
val nodeAnonymityNetworkImageView =
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
@ -177,13 +171,13 @@ class HomeFragment : Fragment(), TxInfoAdapterListener {
|
|||
val samouraiTorManager = ProxyService.instance?.samouraiTorManager
|
||||
samouraiTorManager?.getTorStateLiveData()?.observe(viewLifecycleOwner) {
|
||||
samouraiTorManager.getProxy()?.address()?.let { socketAddress ->
|
||||
if(socketAddress.toString().isEmpty()) return@let
|
||||
if(ProxyService.instance?.usingProxy == true && ProxyService.instance?.useBundledTor == true) {
|
||||
if (socketAddress.toString().isEmpty()) return@let
|
||||
if (ProxyService.instance?.usingProxy == true && ProxyService.instance?.useBundledTor == true) {
|
||||
val proxyString = socketAddress.toString().substring(1)
|
||||
val address = proxyString.split(":")[0]
|
||||
val port = proxyString.split(":")[1]
|
||||
|
||||
if(WalletManager.instance?.proxy != proxyString)
|
||||
if (WalletManager.instance?.proxy != proxyString)
|
||||
refreshProxy(address, port)
|
||||
}
|
||||
}
|
||||
|
@ -193,7 +187,7 @@ class HomeFragment : Fragment(), TxInfoAdapterListener {
|
|||
private fun refreshProxy(proxyAddress: String, proxyPort: String) {
|
||||
val cachedProxyAddress = ProxyService.instance?.proxyAddress
|
||||
val cachedProxyPort = ProxyService.instance?.proxyPort
|
||||
if((proxyAddress != cachedProxyAddress) || (proxyPort != cachedProxyPort)) {
|
||||
if ((proxyAddress != cachedProxyAddress) || (proxyPort != cachedProxyPort)) {
|
||||
ProxyService.instance?.updateProxy(proxyAddress, proxyPort)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -163,13 +163,14 @@ 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 ->
|
||||
samouraiTorManager.getProxy()?.address()?.let { socketAddress ->
|
||||
if(socketAddress.toString().isEmpty()) return@let
|
||||
if(mViewModel?.useProxy?.value == true && mViewModel?.useBundledTor?.value == true) {
|
||||
if (socketAddress.toString().isEmpty()) return@let
|
||||
if (mViewModel?.useProxy?.value == true && mViewModel?.useBundledTor?.value == true) {
|
||||
torIcon?.visibility = View.VISIBLE
|
||||
indicatorCircle?.visibility = View.INVISIBLE
|
||||
val proxyString = socketAddress.toString().substring(1)
|
||||
|
@ -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 -> {}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -52,13 +52,13 @@ class OnboardingViewModel : ViewModel() {
|
|||
_creatingWallet,
|
||||
ProxyService.instance?.samouraiTorManager?.getTorStateLiveData()
|
||||
) { seedType, useProxy, proxyAddress, proxyPort, useBundledTor, passphrase, confirmedPassphrase, creatingWallet, torState ->
|
||||
if(seedType == null || useProxy == null || proxyAddress == null || proxyPort == null || useBundledTor == null || passphrase == null || confirmedPassphrase == null || creatingWallet == null) return@combineLiveDatas false
|
||||
if((passphrase.isNotEmpty() || confirmedPassphrase.isNotEmpty()) && passphrase != confirmedPassphrase) return@combineLiveDatas false
|
||||
if(creatingWallet) return@combineLiveDatas false
|
||||
if(seedType == SeedType.POLYSEED && (passphrase.isEmpty() || confirmedPassphrase.isEmpty())) return@combineLiveDatas false
|
||||
if(useProxy && (proxyAddress.isEmpty() || proxyPort.isEmpty()) && !useBundledTor) return@combineLiveDatas false
|
||||
if (seedType == null || useProxy == null || proxyAddress == null || proxyPort == null || useBundledTor == null || passphrase == null || confirmedPassphrase == null || creatingWallet == null) return@combineLiveDatas false
|
||||
if ((passphrase.isNotEmpty() || confirmedPassphrase.isNotEmpty()) && passphrase != confirmedPassphrase) return@combineLiveDatas false
|
||||
if (creatingWallet) return@combineLiveDatas false
|
||||
if (seedType == SeedType.POLYSEED && (passphrase.isEmpty() || confirmedPassphrase.isEmpty())) return@combineLiveDatas false
|
||||
if (useProxy && (proxyAddress.isEmpty() || proxyPort.isEmpty()) && !useBundledTor) return@combineLiveDatas false
|
||||
val progress = torState?.progressIndicator ?: 0
|
||||
if(useBundledTor && progress < 100 && useProxy) return@combineLiveDatas false
|
||||
if (useBundledTor && progress < 100 && useProxy) return@combineLiveDatas false
|
||||
|
||||
return@combineLiveDatas true
|
||||
}
|
||||
|
@ -227,24 +227,25 @@ class OnboardingViewModel : ViewModel() {
|
|||
|
||||
fun setProxyAddress(address: String) {
|
||||
_proxyAddress.value = address
|
||||
if(address.isEmpty()) PrefService.instance?.deleteProxy()
|
||||
if (address.isEmpty()) PrefService.instance?.deleteProxy()
|
||||
val port = _proxyPort.value ?: return
|
||||
ProxyService.instance?.updateProxy(address, port)
|
||||
}
|
||||
|
||||
fun setProxyPort(port: String) {
|
||||
_proxyPort.value = port
|
||||
if(port.isEmpty()) PrefService.instance?.deleteProxy()
|
||||
if (port.isEmpty()) PrefService.instance?.deleteProxy()
|
||||
val address = _proxyAddress.value ?: return
|
||||
ProxyService.instance?.updateProxy(address, port)
|
||||
}
|
||||
|
||||
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) {
|
||||
if (useBundled && ProxyService.instance?.usingProxy == true) {
|
||||
samouraiTorManager?.start()
|
||||
} else {
|
||||
samouraiTorManager?.stop()
|
||||
|
@ -256,7 +257,7 @@ class OnboardingViewModel : ViewModel() {
|
|||
PrefService.instance?.edit()?.putBoolean(Constants.PREF_USES_PROXY, useProxy)?.apply()
|
||||
|
||||
val samouraiTorManager = ProxyService.instance?.samouraiTorManager
|
||||
if(useProxy && ProxyService.instance?.useBundledTor == true) {
|
||||
if (useProxy && ProxyService.instance?.useBundledTor == true) {
|
||||
samouraiTorManager?.start()
|
||||
} else {
|
||||
samouraiTorManager?.stop()
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
@ -161,7 +163,7 @@ class SettingsFragment : Fragment(), PasswordListener, NodeSelectionDialogListen
|
|||
|
||||
private fun bindObservers() {
|
||||
mViewModel?.useProxy?.observe(viewLifecycleOwner) { b ->
|
||||
val visibility = if(b) View.VISIBLE else View.GONE
|
||||
val visibility = if (b) View.VISIBLE else View.GONE
|
||||
proxySettingsLayout?.visibility = visibility
|
||||
|
||||
val useBundledTor = mViewModel?.useBundledTor?.value == true
|
||||
|
@ -173,19 +175,20 @@ class SettingsFragment : Fragment(), PasswordListener, NodeSelectionDialogListen
|
|||
|
||||
mViewModel?.useBundledTor?.observe(viewLifecycleOwner) { isChecked ->
|
||||
val usingProxy = mViewModel?.useProxy?.value == true
|
||||
val visibility = if(usingProxy) View.VISIBLE else View.GONE
|
||||
val visibility = if (usingProxy) View.VISIBLE else View.GONE
|
||||
walletProxyPortEditText?.visibility = if (isChecked) View.GONE else visibility
|
||||
walletProxyAddressEditText?.visibility = if (isChecked) View.GONE else visibility
|
||||
}
|
||||
|
||||
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 ->
|
||||
samouraiTorManager.getProxy()?.address()?.let { socketAddress ->
|
||||
if(socketAddress.toString().isEmpty()) return@let
|
||||
if(mViewModel?.useProxy?.value == true && mViewModel?.useBundledTor?.value == true) {
|
||||
if (socketAddress.toString().isEmpty()) return@let
|
||||
if (mViewModel?.useProxy?.value == true && mViewModel?.useBundledTor?.value == true) {
|
||||
torIcon?.visibility = View.VISIBLE
|
||||
indicatorCircle?.visibility = View.INVISIBLE
|
||||
val proxyString = socketAddress.toString().substring(1)
|
||||
|
@ -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 -> {}
|
||||
}
|
||||
}
|
||||
|
@ -224,7 +229,7 @@ class SettingsFragment : Fragment(), PasswordListener, NodeSelectionDialogListen
|
|||
val savedProxyAddress = ProxyService.instance?.proxyAddress
|
||||
val savedProxyPort = ProxyService.instance?.proxyPort
|
||||
|
||||
if(proxyAddress != savedProxyAddress || proxyPort != savedProxyPort)
|
||||
if (proxyAddress != savedProxyAddress || proxyPort != savedProxyPort)
|
||||
ProxyService.instance?.updateProxy(proxyAddress, proxyPort)
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
@ -26,7 +23,7 @@ class SettingsViewModel : ViewModel() {
|
|||
PrefService.instance?.edit()?.putBoolean(Constants.PREF_USES_PROXY, use)?.apply()
|
||||
|
||||
val samouraiTorManager = ProxyService.instance?.samouraiTorManager
|
||||
if(use && ProxyService.instance?.useBundledTor == true) {
|
||||
if (use && ProxyService.instance?.useBundledTor == true) {
|
||||
samouraiTorManager?.start()
|
||||
} else {
|
||||
samouraiTorManager?.stop()
|
||||
|
@ -38,7 +35,7 @@ class SettingsViewModel : ViewModel() {
|
|||
PrefService.instance?.edit()?.putBoolean(Constants.PREF_USE_BUNDLED_TOR, use)?.apply()
|
||||
|
||||
val samouraiTorManager = ProxyService.instance?.samouraiTorManager
|
||||
if(use && ProxyService.instance?.usingProxy == true) {
|
||||
if (use && ProxyService.instance?.usingProxy == true) {
|
||||
samouraiTorManager?.start()
|
||||
} else {
|
||||
samouraiTorManager?.stop()
|
||||
|
|
|
@ -1,14 +1,6 @@
|
|||
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
|
||||
}
|
||||
var state: EnumTorState = EnumTorState.OFF
|
||||
var progressIndicator: Int = 0
|
||||
}
|
|
@ -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
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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()
|
||||
if (heightDiff >= 2) {
|
||||
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")
|
||||
wallet.startRefresh()
|
||||
triesLeft--
|
||||
} else {
|
||||
Timber.d("refreshed() On connection fail")
|
||||
listener?.onConnectionFail()
|
||||
}
|
||||
private fun tryRestartConnection() {
|
||||
Timber.d("refreshed() Starting connection retry")
|
||||
wallet.init(0)
|
||||
wallet.startRefresh()
|
||||
}
|
||||
|
||||
private fun refresh(walletSynced: Boolean) {
|
||||
|
|
|
@ -81,12 +81,12 @@ class PrefService(application: MoneroApplication) : ServiceBase(null) {
|
|||
}
|
||||
|
||||
fun saveProxy(address: String, port: String): String? {
|
||||
if(address.isEmpty() || port.isEmpty()) {
|
||||
if (address.isEmpty() || port.isEmpty()) {
|
||||
deleteProxy()
|
||||
return null
|
||||
}
|
||||
val proxyAddress = "$address:$port"
|
||||
if(proxyAddress == ":") return null
|
||||
if (proxyAddress == ":") return null
|
||||
Log.d("PrefService", "Setting proxy. proxyAddress=$proxyAddress")
|
||||
edit()?.putString(Constants.PREF_PROXY, proxyAddress)?.apply()
|
||||
return proxyAddress
|
||||
|
|
|
@ -15,7 +15,7 @@ class ProxyService(application: Application) : ServiceBase(null) {
|
|||
instance = this
|
||||
samouraiTorManager = SamouraiTorManager(application, TorKmpManager(application))
|
||||
|
||||
if(useBundledTor && usingProxy) {
|
||||
if (useBundledTor && usingProxy) {
|
||||
samouraiTorManager?.start()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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,11 +25,11 @@ 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
|
||||
|
||||
class TorKmpManager(application : Application) {
|
||||
class TorKmpManager(application: Application) {
|
||||
|
||||
private val TAG = "TorListener"
|
||||
|
||||
|
@ -61,11 +60,15 @@ class TorKmpManager(application : Application) {
|
|||
put(socks.set(AorDorPort.Value(PortProxy(9263))))
|
||||
|
||||
// Set Flags
|
||||
socks.setFlags(setOf(
|
||||
Ports.Socks.Flag.OnionTrafficOnly
|
||||
)).setIsolationFlags(setOf(
|
||||
Ports.IsolationFlag.IsolateClientAddr,
|
||||
)).set(AorDorPort.Value(PortProxy(9264)))
|
||||
socks.setFlags(
|
||||
setOf(
|
||||
Ports.Socks.Flag.OnionTrafficOnly
|
||||
)
|
||||
).setIsolationFlags(
|
||||
setOf(
|
||||
Ports.IsolationFlag.IsolateClientAddr,
|
||||
)
|
||||
).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(
|
||||
// Use a unix domain socket to communicate via IPC instead of over TCP
|
||||
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(
|
||||
// Use a unix domain socket to communicate via IPC instead of over TCP
|
||||
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()
|
||||
}
|
||||
|
||||
|
||||
|
@ -231,7 +248,7 @@ class TorKmpManager(application : Application) {
|
|||
}
|
||||
}
|
||||
|
||||
private inner class TorListener: TorManagerEvent.Listener() {
|
||||
private inner class TorListener : TorManagerEvent.Listener() {
|
||||
private val _eventLines: MutableLiveData<String> = MutableLiveData("")
|
||||
val eventLines: LiveData<String> = _eventLines
|
||||
private val events: MutableList<String> = ArrayList(50)
|
||||
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -2,10 +2,10 @@
|
|||
<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"/>
|
||||
android:top="12dp" />
|
||||
<solid android:color="@color/oled_dialogBackgroundColor" />
|
||||
<corners android:radius="16dp" />
|
||||
</shape>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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: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"/>
|
||||
android:viewportHeight="108">
|
||||
<path
|
||||
android:fillColor="#3DDC84"
|
||||
android:pathData="M0,0h108v108h-108z" />
|
||||
<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>
|
||||
|
|
|
@ -6,5 +6,5 @@
|
|||
android:viewportHeight="24.0">
|
||||
<path
|
||||
android:fillColor="#ffffff"
|
||||
android:pathData="M17.65,6.35C16.2,4.9 14.21,4 12,4c-4.42,0 -7.99,3.58 -7.99,8s3.57,8 7.99,8c3.73,0 6.84,-2.55 7.73,-6h-2.08c-0.82,2.33 -3.04,4 -5.65,4 -3.31,0 -6,-2.69 -6,-6s2.69,-6 6,-6c1.66,0 3.14,0.69 4.22,1.78L13,11h7V4l-2.35,2.35z"/>
|
||||
android:pathData="M17.65,6.35C16.2,4.9 14.21,4 12,4c-4.42,0 -7.99,3.58 -7.99,8s3.57,8 7.99,8c3.73,0 6.84,-2.55 7.73,-6h-2.08c-0.82,2.33 -3.04,4 -5.65,4 -3.31,0 -6,-2.69 -6,-6s2.69,-6 6,-6c1.66,0 3.14,0.69 4.22,1.78L13,11h7V4l-2.35,2.35z" />
|
||||
</vector>
|
|
@ -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,26 +75,26 @@
|
|||
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_constraintTop_toBottomOf="@id/address_edittext"/>
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/address_edittext" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/add_node_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"
|
||||
|
|
|
@ -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_constraintTop_toTopOf="parent"/>
|
||||
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>
|
||||
|
|
|
@ -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" />
|
||||
|
|
|
@ -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,26 +75,26 @@
|
|||
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_constraintTop_toBottomOf="@id/address_edittext"/>
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/address_edittext" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/username_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"
|
||||
|
|
|
@ -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"
|
||||
|
@ -97,19 +99,20 @@
|
|||
android:text="@string/no_history_nget_some_monero_in_here"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@id/monerochan_imageview"
|
||||
app:layout_constraintTop_toTopOf="@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"
|
||||
|
|
|
@ -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"/>
|
||||
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_constraintTop_toBottomOf="@id/wallet_restore_height_edittext"/>
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/wallet_restore_height_edittext" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
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_constraintTop_toBottomOf="@id/tor_onboarding_switch"/>
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/tor_onboarding_switch" />
|
||||
|
||||
<EditText
|
||||
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" />
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -4,227 +4,232 @@
|
|||
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:textSize="32sp"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintEnd_toStartOf="@id/top_controls"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/top_controls"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="24dp"
|
||||
app:layout_constraintBottom_toBottomOf="@id/send_monero_textview"
|
||||
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"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/button_bg"
|
||||
android:text="@string/send_max"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@id/add_output_button"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:visibility="visible" />
|
||||
<TextView
|
||||
android:id="@+id/send_monero_textview"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
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"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/add_output_button"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@android:color/transparent"
|
||||
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"
|
||||
tools:ignore="SpeakableTextPresentCheck"
|
||||
tools:visibility="visible"
|
||||
app:tint="@color/oled_textColorPrimary" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<!-- CREATE LAYOUT -->
|
||||
<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_marginTop="8dp"
|
||||
android:text="@string/selected_utxos_value"
|
||||
android:textSize="14sp"
|
||||
android:visibility="invisible"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/send_monero_textview" />
|
||||
|
||||
|
||||
<TextView
|
||||
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:textSize="16sp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@id/tx_fee_radiogroup"
|
||||
app:layout_constraintTop_toTopOf="@id/tx_fee_radiogroup"
|
||||
app:layout_constraintBottom_toBottomOf="@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_constraintBottom_toTopOf="@id/create_tx_button"
|
||||
app:layout_constraintStart_toEndOf="@id/tx_fee_radiogroup_label_textview"
|
||||
app:layout_constraintEnd_toEndOf="parent">
|
||||
<RadioButton
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="48dp"
|
||||
android:text="@string/low"
|
||||
android:id="@+id/low_fee_radiobutton"
|
||||
android:checked="true"
|
||||
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:textSize="16sp"/>
|
||||
</RadioGroup>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/top_controls"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="24dp"
|
||||
app:layout_constraintBottom_toBottomOf="@id/send_monero_textview"
|
||||
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/create_tx_button"
|
||||
android:layout_width="match_parent"
|
||||
android:id="@+id/send_max_button"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/button_bg"
|
||||
android:text="@string/create"
|
||||
android:layout_marginTop="24dp"
|
||||
android:layout_marginEnd="24dp"
|
||||
android:layout_marginStart="24dp"
|
||||
android:layout_marginBottom="24dp"
|
||||
android:text="@string/send_max"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@id/add_output_button"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<ScrollView
|
||||
<ImageButton
|
||||
android:id="@+id/add_output_button"
|
||||
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:src="@android:drawable/ic_input_add"
|
||||
app:layout_constraintBottom_toBottomOf="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" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<!-- CREATE LAYOUT -->
|
||||
<TextView
|
||||
android:id="@+id/selected_utxos_value_textview"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="24dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginEnd="24dp"
|
||||
android:text="@string/selected_utxos_value"
|
||||
android:textSize="14sp"
|
||||
android:visibility="invisible"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/send_monero_textview" />
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tx_fee_radiogroup_label_textview"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="24dp"
|
||||
android:text="@string/fee_priority"
|
||||
android:textSize="16sp"
|
||||
app:layout_constraintBottom_toBottomOf="@id/tx_fee_radiogroup"
|
||||
app:layout_constraintEnd_toStartOf="@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:layout_marginStart="8dp"
|
||||
android:layout_marginEnd="24dp"
|
||||
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">
|
||||
|
||||
<RadioButton
|
||||
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:id="@+id/med_fee_radiobutton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="48dp"
|
||||
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>
|
||||
|
||||
<Button
|
||||
android:id="@+id/create_tx_button"
|
||||
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="24dp"
|
||||
android:background="@drawable/button_bg"
|
||||
android:text="@string/create"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<ScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:fillViewport="true"
|
||||
android:fitsSystemWindows="true"
|
||||
app:layout_constraintBottom_toTopOf="@id/tx_fee_radiogroup"
|
||||
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:fillViewport="true"
|
||||
android:fitsSystemWindows="true"
|
||||
app:layout_constraintBottom_toTopOf="@id/tx_fee_radiogroup"
|
||||
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:layout_marginTop="8dp"
|
||||
android:clickable="false"
|
||||
android:clipToPadding="false"
|
||||
android:orientation="vertical"
|
||||
android:paddingBottom="128dp">
|
||||
|
||||
</LinearLayout>
|
||||
</ScrollView>
|
||||
<!-- SEND LAYOUT -->
|
||||
<TextView
|
||||
android:id="@+id/address_pending_textview"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
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"
|
||||
tools:visibility="gone" />
|
||||
</LinearLayout>
|
||||
</ScrollView>
|
||||
<!-- SEND LAYOUT -->
|
||||
<TextView
|
||||
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"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/send_monero_textview"
|
||||
tools:visibility="gone" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/amount_pending_textview"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
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"
|
||||
tools:visibility="gone" />
|
||||
<TextView
|
||||
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"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/address_pending_textview"
|
||||
tools:visibility="gone" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/fee_textview"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
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"
|
||||
tools:visibility="gone" />
|
||||
<TextView
|
||||
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"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/amount_pending_textview"
|
||||
tools:visibility="gone" />
|
||||
|
||||
<com.ncorti.slidetoact.SlideToActView
|
||||
android:id="@+id/send_tx_slider"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
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"
|
||||
app:area_margin="10dp"
|
||||
app:border_radius="20dp"
|
||||
app:inner_color="@android:color/white"
|
||||
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>
|
||||
<com.ncorti.slidetoact.SlideToActView
|
||||
android:id="@+id/send_tx_slider"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="32dp"
|
||||
android:layout_marginEnd="32dp"
|
||||
android:layout_marginBottom="24dp"
|
||||
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"
|
||||
app:text_size="18sp"
|
||||
tools:visibility="visible" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
@ -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_constraintTop_toTopOf="parent"/>
|
||||
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"
|
||||
|
|
|
@ -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,63 +25,63 @@
|
|||
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"/>
|
||||
app:layout_constraintTop_toBottomOf="@id/transaction_action_textview" />
|
||||
|
||||
<TextView
|
||||
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_constraintTop_toBottomOf="@id/transaction_action_textview"/>
|
||||
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_constraintTop_toBottomOf="@id/transaction_amount_textview"/>
|
||||
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_constraintTop_toBottomOf="@id/copy_txaddress_imagebutton"/>
|
||||
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,75 +133,75 @@
|
|||
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_constraintTop_toBottomOf="@id/copy_txhash_imagebutton"/>
|
||||
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_constraintTop_toBottomOf="@id/transaction_date_label_textview"/>
|
||||
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_constraintTop_toBottomOf="@id/transaction_date_textview"/>
|
||||
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_constraintTop_toBottomOf="@id/transaction_conf_label_textview"/>
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/transaction_conf_label_textview" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/transaction_conf_label2_textview"
|
||||
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_constraintTop_toBottomOf="@id/transaction_conf_textview"/>
|
||||
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_constraintTop_toBottomOf="@id/transaction_conf_label2_textview"/>
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/transaction_conf_label2_textview" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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_constraintTop_toTopOf="parent"/>
|
||||
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>
|
||||
|
|
|
@ -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" />
|
||||
|
|
|
@ -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,56 +151,59 @@
|
|||
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:textSize="16sp"/>
|
||||
android:text="@string/medium"
|
||||
android:textSize="16sp" />
|
||||
|
||||
<RadioButton
|
||||
android:id="@+id/high_fee_radiobutton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:checked="false"
|
||||
android:text="@string/high"
|
||||
android:textSize="16sp" />
|
||||
</RadioGroup>
|
||||
|
||||
<Button
|
||||
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"
|
||||
|
|
|
@ -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,42 +32,42 @@
|
|||
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"/>
|
||||
app:layout_constraintTop_toBottomOf="@id/tx_amount" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tx_datetime"
|
||||
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>
|
|
@ -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"
|
||||
|
|
|
@ -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_constraintTop_toTopOf="parent"/>
|
||||
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_constraintTop_toBottomOf="@id/utxo_coin_label"/>
|
||||
app:layout_constraintEnd_toStartOf="@id/utxo_address_textview"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/utxo_coin_label" />
|
||||
|
||||
<TextView
|
||||
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_constraintTop_toBottomOf="@id/utxo_address_label"/>
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@id/utxo_address_label"
|
||||
app:layout_constraintTop_toBottomOf="@id/utxo_address_label" />
|
||||
|
||||
<TextView
|
||||
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_constraintTop_toBottomOf="@id/utxo_address_label"/>
|
||||
app:layout_constraintEnd_toStartOf="@id/utxo_pub_key_textview"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/utxo_address_label" />
|
||||
|
||||
<TextView
|
||||
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_constraintTop_toBottomOf="@id/utxo_pub_key_label"/>
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@id/utxo_pub_key_label"
|
||||
app:layout_constraintTop_toBottomOf="@id/utxo_pub_key_label" />
|
||||
|
||||
<TextView
|
||||
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>
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@drawable/ic_launcher_background"/>
|
||||
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
|
||||
<background android:drawable="@drawable/ic_launcher_background" />
|
||||
<foreground android:drawable="@mipmap/ic_launcher_foreground" />
|
||||
</adaptive-icon>
|
|
@ -11,27 +11,23 @@
|
|||
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">
|
||||
<argument
|
||||
android:name="nav_arg_txinfo"
|
||||
app:argType="net.mynero.wallet.model.TransactionInfo"
|
||||
app:nullable="true"/>
|
||||
app:nullable="true" />
|
||||
</action>
|
||||
</fragment>
|
||||
<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"
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Reference in a new issue