Compare commits
26 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
46dbc0659b | ||
![]() |
85622b3958 | ||
![]() |
5a63481c09 | ||
![]() |
1cb558d78e | ||
![]() |
942c80e38b | ||
![]() |
24ec848f0f | ||
![]() |
0d1b1da5f3 | ||
![]() |
0840d2f350 | ||
![]() |
c7d933ea9d | ||
![]() |
c9b1800309 | ||
![]() |
e7b0b5999e | ||
![]() |
47e1871693 | ||
![]() |
900eab70c8 | ||
![]() |
b11357f379 | ||
![]() |
eba0156a6d | ||
![]() |
bf64d8bd89 | ||
![]() |
2d74281b31 | ||
![]() |
668cefb357 | ||
![]() |
1f5061df38 | ||
![]() |
51445f5941 | ||
![]() |
8c01ec36e8 | ||
![]() |
3cf84c599d | ||
![]() |
ead8564688 | ||
![]() |
b71b3badd8 | ||
![]() |
5ad46e2f54 | ||
![]() |
9d6895b60f |
2
app/.gitignore
vendored
@@ -1,3 +1,5 @@
|
||||
.externalNativeBuild
|
||||
build
|
||||
app.iml
|
||||
prod
|
||||
alpha
|
||||
|
@@ -2,13 +2,14 @@ apply plugin: 'com.android.application'
|
||||
|
||||
android {
|
||||
compileSdkVersion 27
|
||||
buildToolsVersion '28.0.2'
|
||||
buildToolsVersion '28.0.3'
|
||||
defaultConfig {
|
||||
applicationId "com.m2049r.xmrwallet"
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 27
|
||||
versionCode 131
|
||||
versionName "1.8.1 'Bullets And Octane-Pirates'"
|
||||
versionCode 140
|
||||
versionName "1.9.0 'We Comin' Rougher'"
|
||||
|
||||
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
||||
externalNativeBuild {
|
||||
cmake {
|
||||
|
BIN
app/src/alpha/ic_launcher-web.png
Normal file
After Width: | Height: | Size: 244 KiB |
BIN
app/src/alpha/res/mipmap-hdpi/ic_launcher.png
Normal file
After Width: | Height: | Size: 8.0 KiB |
BIN
app/src/alpha/res/mipmap-mdpi/ic_launcher.png
Normal file
After Width: | Height: | Size: 4.4 KiB |
BIN
app/src/alpha/res/mipmap-xhdpi/ic_launcher.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
app/src/alpha/res/mipmap-xxhdpi/ic_launcher.png
Normal file
After Width: | Height: | Size: 28 KiB |
BIN
app/src/alpha/res/mipmap-xxxhdpi/ic_launcher.png
Normal file
After Width: | Height: | Size: 47 KiB |
@@ -787,7 +787,7 @@ Java_com_m2049r_xmrwallet_model_Wallet_getDeviceTypeJ(JNIEnv *env, jobject insta
|
||||
|
||||
//void cn_slow_hash(const void *data, size_t length, char *hash); // from crypto/hash-ops.h
|
||||
JNIEXPORT jbyteArray JNICALL
|
||||
Java_com_m2049r_xmrwallet_util_KeyStoreHelper_slowHash(JNIEnv *env, jobject clazz,
|
||||
Java_com_m2049r_xmrwallet_util_KeyStoreHelper_slowHash(JNIEnv *env, jclass clazz,
|
||||
jbyteArray data, jint brokenVariant) {
|
||||
char hash[HASH_SIZE];
|
||||
jsize size = env->GetArrayLength(data);
|
||||
@@ -813,13 +813,13 @@ Java_com_m2049r_xmrwallet_util_KeyStoreHelper_slowHash(JNIEnv *env, jobject claz
|
||||
}
|
||||
|
||||
JNIEXPORT jstring JNICALL
|
||||
Java_com_m2049r_xmrwallet_model_Wallet_getDisplayAmount(JNIEnv *env, jobject clazz,
|
||||
Java_com_m2049r_xmrwallet_model_Wallet_getDisplayAmount(JNIEnv *env, jclass clazz,
|
||||
jlong amount) {
|
||||
return env->NewStringUTF(Bitmonero::Wallet::displayAmount(amount).c_str());
|
||||
}
|
||||
|
||||
JNIEXPORT jlong JNICALL
|
||||
Java_com_m2049r_xmrwallet_model_Wallet_getAmountFromString(JNIEnv *env, jobject clazz,
|
||||
Java_com_m2049r_xmrwallet_model_Wallet_getAmountFromString(JNIEnv *env, jclass clazz,
|
||||
jstring amount) {
|
||||
const char *_amount = env->GetStringUTFChars(amount, NULL);
|
||||
uint64_t x = Bitmonero::Wallet::amountFromString(_amount);
|
||||
@@ -828,18 +828,18 @@ Java_com_m2049r_xmrwallet_model_Wallet_getAmountFromString(JNIEnv *env, jobject
|
||||
}
|
||||
|
||||
JNIEXPORT jlong JNICALL
|
||||
Java_com_m2049r_xmrwallet_model_Wallet_getAmountFromDouble(JNIEnv *env, jobject clazz,
|
||||
Java_com_m2049r_xmrwallet_model_Wallet_getAmountFromDouble(JNIEnv *env, jclass clazz,
|
||||
jdouble amount) {
|
||||
return Bitmonero::Wallet::amountFromDouble(amount);
|
||||
}
|
||||
|
||||
JNIEXPORT jstring JNICALL
|
||||
Java_com_m2049r_xmrwallet_model_Wallet_generatePaymentId(JNIEnv *env, jobject clazz) {
|
||||
Java_com_m2049r_xmrwallet_model_Wallet_generatePaymentId(JNIEnv *env, jclass clazz) {
|
||||
return env->NewStringUTF(Bitmonero::Wallet::genPaymentId().c_str());
|
||||
}
|
||||
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_com_m2049r_xmrwallet_model_Wallet_isPaymentIdValid(JNIEnv *env, jobject clazz,
|
||||
Java_com_m2049r_xmrwallet_model_Wallet_isPaymentIdValid(JNIEnv *env, jclass clazz,
|
||||
jstring payment_id) {
|
||||
const char *_payment_id = env->GetStringUTFChars(payment_id, NULL);
|
||||
bool isValid = Bitmonero::Wallet::paymentIdValid(_payment_id);
|
||||
@@ -848,7 +848,7 @@ Java_com_m2049r_xmrwallet_model_Wallet_isPaymentIdValid(JNIEnv *env, jobject cla
|
||||
}
|
||||
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_com_m2049r_xmrwallet_model_Wallet_isAddressValid(JNIEnv *env, jobject clazz,
|
||||
Java_com_m2049r_xmrwallet_model_Wallet_isAddressValid(JNIEnv *env, jclass clazz,
|
||||
jstring address, jint networkType) {
|
||||
const char *_address = env->GetStringUTFChars(address, NULL);
|
||||
Monero::NetworkType _networkType = static_cast<Monero::NetworkType>(networkType);
|
||||
@@ -858,7 +858,7 @@ Java_com_m2049r_xmrwallet_model_Wallet_isAddressValid(JNIEnv *env, jobject clazz
|
||||
}
|
||||
|
||||
JNIEXPORT jstring JNICALL
|
||||
Java_com_m2049r_xmrwallet_model_Wallet_getPaymentIdFromAddress(JNIEnv *env, jobject clazz,
|
||||
Java_com_m2049r_xmrwallet_model_Wallet_getPaymentIdFromAddress(JNIEnv *env, jclass clazz,
|
||||
jstring address,
|
||||
jint networkType) {
|
||||
Monero::NetworkType _networkType = static_cast<Monero::NetworkType>(networkType);
|
||||
@@ -869,7 +869,7 @@ Java_com_m2049r_xmrwallet_model_Wallet_getPaymentIdFromAddress(JNIEnv *env, jobj
|
||||
}
|
||||
|
||||
JNIEXPORT jlong JNICALL
|
||||
Java_com_m2049r_xmrwallet_model_Wallet_getMaximumAllowedAmount(JNIEnv *env, jobject clazz) {
|
||||
Java_com_m2049r_xmrwallet_model_Wallet_getMaximumAllowedAmount(JNIEnv *env, jclass clazz) {
|
||||
return Bitmonero::Wallet::maximumAllowedAmount();
|
||||
}
|
||||
|
||||
@@ -1311,7 +1311,7 @@ Java_com_m2049r_xmrwallet_model_PendingTransaction_getTxCount(JNIEnv *env, jobje
|
||||
//static void warning(const std::string &category, const std::string &str);
|
||||
//static void error(const std::string &category, const std::string &str);
|
||||
JNIEXPORT void JNICALL
|
||||
Java_com_m2049r_xmrwallet_model_WalletManager_initLogger(JNIEnv *env, jobject instance,
|
||||
Java_com_m2049r_xmrwallet_model_WalletManager_initLogger(JNIEnv *env, jclass clazz,
|
||||
jstring argv0,
|
||||
jstring default_log_base_name) {
|
||||
|
||||
@@ -1325,7 +1325,7 @@ Java_com_m2049r_xmrwallet_model_WalletManager_initLogger(JNIEnv *env, jobject in
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_com_m2049r_xmrwallet_model_WalletManager_logDebug(JNIEnv *env, jobject instance,
|
||||
Java_com_m2049r_xmrwallet_model_WalletManager_logDebug(JNIEnv *env, jclass clazz,
|
||||
jstring category, jstring message) {
|
||||
|
||||
const char *_category = env->GetStringUTFChars(category, NULL);
|
||||
@@ -1338,7 +1338,7 @@ Java_com_m2049r_xmrwallet_model_WalletManager_logDebug(JNIEnv *env, jobject inst
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_com_m2049r_xmrwallet_model_WalletManager_logInfo(JNIEnv *env, jobject instance,
|
||||
Java_com_m2049r_xmrwallet_model_WalletManager_logInfo(JNIEnv *env, jclass clazz,
|
||||
jstring category, jstring message) {
|
||||
|
||||
const char *_category = env->GetStringUTFChars(category, NULL);
|
||||
@@ -1351,7 +1351,7 @@ Java_com_m2049r_xmrwallet_model_WalletManager_logInfo(JNIEnv *env, jobject insta
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_com_m2049r_xmrwallet_model_WalletManager_logWarning(JNIEnv *env, jobject instance,
|
||||
Java_com_m2049r_xmrwallet_model_WalletManager_logWarning(JNIEnv *env, jclass clazz,
|
||||
jstring category, jstring message) {
|
||||
|
||||
const char *_category = env->GetStringUTFChars(category, NULL);
|
||||
@@ -1364,7 +1364,7 @@ Java_com_m2049r_xmrwallet_model_WalletManager_logWarning(JNIEnv *env, jobject in
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_com_m2049r_xmrwallet_model_WalletManager_logError(JNIEnv *env, jobject instance,
|
||||
Java_com_m2049r_xmrwallet_model_WalletManager_logError(JNIEnv *env, jclass clazz,
|
||||
jstring category, jstring message) {
|
||||
|
||||
const char *_category = env->GetStringUTFChars(category, NULL);
|
||||
@@ -1377,7 +1377,7 @@ Java_com_m2049r_xmrwallet_model_WalletManager_logError(JNIEnv *env, jobject inst
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_com_m2049r_xmrwallet_model_WalletManager_setLogLevel(JNIEnv *env, jobject instance,
|
||||
Java_com_m2049r_xmrwallet_model_WalletManager_setLogLevel(JNIEnv *env, jclass clazz,
|
||||
jint level) {
|
||||
Bitmonero::WalletManagerFactory::setLogLevel(level);
|
||||
}
|
||||
|
@@ -51,7 +51,6 @@ import com.m2049r.xmrwallet.dialog.CreditsFragment;
|
||||
import com.m2049r.xmrwallet.dialog.HelpFragment;
|
||||
import com.m2049r.xmrwallet.fragment.send.SendAddressWizardFragment;
|
||||
import com.m2049r.xmrwallet.fragment.send.SendFragment;
|
||||
import com.m2049r.xmrwallet.ledger.Ledger;
|
||||
import com.m2049r.xmrwallet.ledger.LedgerProgressDialog;
|
||||
import com.m2049r.xmrwallet.model.PendingTransaction;
|
||||
import com.m2049r.xmrwallet.model.TransactionInfo;
|
||||
@@ -91,6 +90,8 @@ public class WalletActivity extends BaseActivity implements WalletFragment.Liste
|
||||
|
||||
private String password;
|
||||
|
||||
private long streetMode = 0;
|
||||
|
||||
@Override
|
||||
public void onPasswordChanged(String newPassword) {
|
||||
password = newPassword;
|
||||
@@ -129,6 +130,27 @@ public class WalletActivity extends BaseActivity implements WalletFragment.Liste
|
||||
return synced;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isStreetMode() {
|
||||
return streetMode > 0;
|
||||
}
|
||||
|
||||
public void toggleStreetMode() {
|
||||
if (streetMode == 0) {
|
||||
streetMode = getWallet().getDaemonBlockChainHeight();
|
||||
} else {
|
||||
streetMode = 0;
|
||||
}
|
||||
Timber.e("streetMode=" + streetMode);
|
||||
updateAccountsBalance();
|
||||
forceUpdate();
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getStreetModeHeight() {
|
||||
return streetMode;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isWatchOnly() {
|
||||
return getWallet().isWatchOnly();
|
||||
@@ -196,7 +218,14 @@ public class WalletActivity extends BaseActivity implements WalletFragment.Liste
|
||||
MenuItem renameItem = menu.findItem(R.id.action_rename);
|
||||
if (renameItem != null)
|
||||
renameItem.setVisible(hasWallet() && getWallet().isSynchronized());
|
||||
return true;
|
||||
MenuItem streetmodeItem = menu.findItem(R.id.action_streetmode);
|
||||
if (streetmodeItem != null)
|
||||
if (isStreetMode()) {
|
||||
streetmodeItem.setIcon(R.drawable.gunther_csi_24dp);
|
||||
} else {
|
||||
streetmodeItem.setIcon(R.drawable.gunther_24dp);
|
||||
}
|
||||
return super.onPrepareOptionsMenu(menu);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -229,6 +258,15 @@ public class WalletActivity extends BaseActivity implements WalletFragment.Liste
|
||||
case R.id.action_rename:
|
||||
onAccountRename();
|
||||
return true;
|
||||
case R.id.action_streetmode:
|
||||
toggleStreetMode();
|
||||
if (isStreetMode()) {
|
||||
toolbar.setBackgroundResource(R.drawable.backgound_toolbar_streetmode);
|
||||
} else {
|
||||
showNet();
|
||||
}
|
||||
invalidateOptionsMenu();
|
||||
return true;
|
||||
default:
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
@@ -325,6 +363,7 @@ public class WalletActivity extends BaseActivity implements WalletFragment.Liste
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Wallet getWallet() {
|
||||
if (mBoundService == null) throw new IllegalStateException("WalletService not bound.");
|
||||
return mBoundService.getWallet();
|
||||
@@ -971,10 +1010,13 @@ public class WalletActivity extends BaseActivity implements WalletFragment.Liste
|
||||
// drawer stuff
|
||||
|
||||
void updateAccountsBalance() {
|
||||
final Wallet wallet = getWallet();
|
||||
final TextView tvBalance = (TextView) accountsView.getHeaderView(0).findViewById(R.id.tvBalance);
|
||||
tvBalance.setText(getString(R.string.accounts_balance,
|
||||
Helper.getDisplayAmount(wallet.getBalanceAll(), 5)));
|
||||
final TextView tvBalance = accountsView.getHeaderView(0).findViewById(R.id.tvBalance);
|
||||
if (!isStreetMode()) {
|
||||
tvBalance.setText(getString(R.string.accounts_balance,
|
||||
Helper.getDisplayAmount(getWallet().getBalanceAll(), 5)));
|
||||
} else {
|
||||
tvBalance.setText(null);
|
||||
}
|
||||
}
|
||||
|
||||
void updateAccountsHeader() {
|
||||
@@ -1131,4 +1173,16 @@ public class WalletActivity extends BaseActivity implements WalletFragment.Liste
|
||||
Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
|
||||
// @Override
|
||||
// public void invalidateOptionsMenu() {
|
||||
// super.invalidateOptionsMenu();
|
||||
// if (isStreetMode()) {
|
||||
// item.setIcon(R.drawable.gunther_csi_24dp);
|
||||
// toolbar.setBackgroundResource(R.drawable.backgound_toolbar_streetmode);
|
||||
// } else {
|
||||
// item.setIcon(R.drawable.gunther_24dp);
|
||||
// showNet();
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
@@ -33,6 +33,7 @@ import android.widget.ArrayAdapter;
|
||||
import android.widget.Button;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.Spinner;
|
||||
import android.widget.TextView;
|
||||
@@ -47,7 +48,10 @@ import com.m2049r.xmrwallet.util.Helper;
|
||||
import com.m2049r.xmrwallet.widget.Toolbar;
|
||||
|
||||
import java.text.NumberFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import timber.log.Timber;
|
||||
|
||||
@@ -56,6 +60,8 @@ public class WalletFragment extends Fragment
|
||||
private TransactionInfoAdapter adapter;
|
||||
private NumberFormat formatter = NumberFormat.getInstance();
|
||||
|
||||
private TextView tvStreetView;
|
||||
private LinearLayout llBalance;
|
||||
private FrameLayout flExchange;
|
||||
private TextView tvBalance;
|
||||
private TextView tvUnconfirmedAmount;
|
||||
@@ -85,28 +91,30 @@ public class WalletFragment extends Fragment
|
||||
Bundle savedInstanceState) {
|
||||
View view = inflater.inflate(R.layout.fragment_wallet, container, false);
|
||||
|
||||
flExchange = (FrameLayout) view.findViewById(R.id.flExchange);
|
||||
tvStreetView = view.findViewById(R.id.tvStreetView);
|
||||
llBalance = view.findViewById(R.id.llBalance);
|
||||
flExchange = view.findViewById(R.id.flExchange);
|
||||
((ProgressBar) view.findViewById(R.id.pbExchange)).getIndeterminateDrawable().
|
||||
setColorFilter(getResources().getColor(R.color.trafficGray),
|
||||
android.graphics.PorterDuff.Mode.MULTIPLY);
|
||||
|
||||
tvProgress = (TextView) view.findViewById(R.id.tvProgress);
|
||||
pbProgress = (ProgressBar) view.findViewById(R.id.pbProgress);
|
||||
tvBalance = (TextView) view.findViewById(R.id.tvBalance);
|
||||
tvBalance.setText(Helper.getDisplayAmount(0));
|
||||
tvUnconfirmedAmount = (TextView) view.findViewById(R.id.tvUnconfirmedAmount);
|
||||
tvUnconfirmedAmount.setText(getResources().getString(R.string.xmr_unconfirmed_amount, Helper.getDisplayAmount(0)));
|
||||
ivSynced = (ImageView) view.findViewById(R.id.ivSynced);
|
||||
tvProgress = view.findViewById(R.id.tvProgress);
|
||||
pbProgress = view.findViewById(R.id.pbProgress);
|
||||
tvBalance = view.findViewById(R.id.tvBalance);
|
||||
showBalance(Helper.getDisplayAmount(0));
|
||||
tvUnconfirmedAmount = view.findViewById(R.id.tvUnconfirmedAmount);
|
||||
showUnconfirmed(0);
|
||||
ivSynced = view.findViewById(R.id.ivSynced);
|
||||
|
||||
sCurrency = (Spinner) view.findViewById(R.id.sCurrency);
|
||||
sCurrency = view.findViewById(R.id.sCurrency);
|
||||
ArrayAdapter currencyAdapter = ArrayAdapter.createFromResource(getContext(), R.array.currency, R.layout.item_spinner_balance);
|
||||
currencyAdapter.setDropDownViewResource(R.layout.item_spinner_dropdown_item);
|
||||
sCurrency.setAdapter(currencyAdapter);
|
||||
|
||||
bSend = (Button) view.findViewById(R.id.bSend);
|
||||
bReceive = (Button) view.findViewById(R.id.bReceive);
|
||||
bSend = view.findViewById(R.id.bSend);
|
||||
bReceive = view.findViewById(R.id.bReceive);
|
||||
|
||||
RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.list);
|
||||
RecyclerView recyclerView = view.findViewById(R.id.list);
|
||||
|
||||
this.adapter = new TransactionInfoAdapter(getActivity(), this);
|
||||
recyclerView.setAdapter(adapter);
|
||||
@@ -145,6 +153,26 @@ public class WalletFragment extends Fragment
|
||||
return view;
|
||||
}
|
||||
|
||||
void showBalance(String balance) {
|
||||
tvBalance.setText(balance);
|
||||
if (!activityCallback.isStreetMode()) {
|
||||
llBalance.setVisibility(View.VISIBLE);
|
||||
tvStreetView.setVisibility(View.INVISIBLE);
|
||||
} else {
|
||||
llBalance.setVisibility(View.INVISIBLE);
|
||||
tvStreetView.setVisibility(View.VISIBLE);
|
||||
}
|
||||
}
|
||||
|
||||
void showUnconfirmed(double unconfirmedAmount) {
|
||||
if (!activityCallback.isStreetMode()) {
|
||||
String unconfirmed = Helper.getFormattedAmount(unconfirmedAmount, true);
|
||||
tvUnconfirmedAmount.setText(getResources().getString(R.string.xmr_unconfirmed_amount, unconfirmed));
|
||||
} else {
|
||||
tvUnconfirmedAmount.setText(null);
|
||||
}
|
||||
}
|
||||
|
||||
void updateBalance() {
|
||||
if (isExchanging) return; // wait for exchange to finish - it will fire this itself then.
|
||||
// at this point selection is XMR in case of error
|
||||
@@ -156,7 +184,7 @@ public class WalletFragment extends Fragment
|
||||
} else { // XMR
|
||||
displayB = Helper.getFormattedAmount(amountA, true);
|
||||
}
|
||||
tvBalance.setText(displayB);
|
||||
showBalance(displayB);
|
||||
}
|
||||
|
||||
String balanceCurrency = Helper.CRYPTO;
|
||||
@@ -165,9 +193,11 @@ public class WalletFragment extends Fragment
|
||||
private final ExchangeApi exchangeApi = Helper.getExchangeApi();
|
||||
|
||||
void refreshBalance() {
|
||||
double unconfirmedXmr = Double.parseDouble(Helper.getDisplayAmount(balance - unlockedBalance));
|
||||
showUnconfirmed(unconfirmedXmr);
|
||||
if (sCurrency.getSelectedItemPosition() == 0) { // XMR
|
||||
double amountXmr = Double.parseDouble(Wallet.getDisplayAmount(unlockedBalance)); // assume this cannot fail!
|
||||
tvBalance.setText(Helper.getFormattedAmount(amountXmr, true));
|
||||
showBalance(Helper.getFormattedAmount(amountXmr, true));
|
||||
} else { // not XMR
|
||||
String currency = (String) sCurrency.getSelectedItem();
|
||||
Timber.d(currency);
|
||||
@@ -223,7 +253,7 @@ public class WalletFragment extends Fragment
|
||||
public void exchangeFailed() {
|
||||
sCurrency.setSelection(0, true); // default to XMR
|
||||
double amountXmr = Double.parseDouble(Wallet.getDisplayAmount(unlockedBalance)); // assume this cannot fail!
|
||||
tvBalance.setText(Helper.getFormattedAmount(amountXmr, true));
|
||||
showBalance(Helper.getFormattedAmount(amountXmr, true));
|
||||
hideExchanging();
|
||||
}
|
||||
|
||||
@@ -259,7 +289,13 @@ public class WalletFragment extends Fragment
|
||||
public void onRefreshed(final Wallet wallet, final boolean full) {
|
||||
Timber.d("onRefreshed(%b)", full);
|
||||
if (full) {
|
||||
List<TransactionInfo> list = wallet.getHistory().getAll();
|
||||
List<TransactionInfo> list = new ArrayList<>();
|
||||
final long streetHeight = activityCallback.getStreetModeHeight();
|
||||
Timber.d("StreetHeight=%d", streetHeight);
|
||||
for (TransactionInfo info : wallet.getHistory().getAll()) {
|
||||
Timber.d("TxHeight=%d", info.blockheight);
|
||||
if (info.isPending || (info.blockheight >= streetHeight)) list.add(info);
|
||||
}
|
||||
adapter.setInfos(list);
|
||||
adapter.notifyDataSetChanged();
|
||||
}
|
||||
@@ -324,6 +360,7 @@ public class WalletFragment extends Fragment
|
||||
private String walletTitle = null;
|
||||
private String walletSubtitle = null;
|
||||
private long unlockedBalance = 0;
|
||||
private long balance = 0;
|
||||
|
||||
private int accountIdx = -1;
|
||||
|
||||
@@ -334,12 +371,9 @@ public class WalletFragment extends Fragment
|
||||
accountIdx = wallet.getAccountIndex();
|
||||
setActivityTitle(wallet);
|
||||
}
|
||||
long balance = wallet.getBalance();
|
||||
balance = wallet.getBalance();
|
||||
unlockedBalance = wallet.getUnlockedBalance();
|
||||
refreshBalance();
|
||||
double amountXmr = Double.parseDouble(Helper.getDisplayAmount(balance - unlockedBalance)); // assume this cannot fail!
|
||||
String unconfirmed = Helper.getFormattedAmount(amountXmr, true);
|
||||
tvUnconfirmedAmount.setText(getResources().getString(R.string.xmr_unconfirmed_amount, unconfirmed));
|
||||
String sync = "";
|
||||
if (!activityCallback.hasBoundService())
|
||||
throw new IllegalStateException("WalletService not bound.");
|
||||
@@ -386,6 +420,10 @@ public class WalletFragment extends Fragment
|
||||
|
||||
boolean isSynced();
|
||||
|
||||
boolean isStreetMode();
|
||||
|
||||
long getStreetModeHeight();
|
||||
|
||||
boolean isWatchOnly();
|
||||
|
||||
String getTxKey(String txId);
|
||||
@@ -394,6 +432,8 @@ public class WalletFragment extends Fragment
|
||||
|
||||
boolean hasWallet();
|
||||
|
||||
Wallet getWallet();
|
||||
|
||||
void setToolbarButton(int type);
|
||||
|
||||
void setTitle(String title, String subtitle);
|
||||
|
@@ -39,6 +39,7 @@ import com.m2049r.xmrwallet.R;
|
||||
import com.m2049r.xmrwallet.data.BarcodeData;
|
||||
import com.m2049r.xmrwallet.data.TxData;
|
||||
import com.m2049r.xmrwallet.data.TxDataBtc;
|
||||
import com.m2049r.xmrwallet.model.PendingTransaction;
|
||||
import com.m2049r.xmrwallet.model.Wallet;
|
||||
import com.m2049r.xmrwallet.util.BitcoinAddressValidator;
|
||||
import com.m2049r.xmrwallet.util.Helper;
|
||||
@@ -350,6 +351,8 @@ public class SendAddressWizardFragment extends SendWizardFragment {
|
||||
txData.setPaymentId(etPaymentId.getEditText().getText().toString());
|
||||
}
|
||||
txData.setUserNotes(new UserNotes(etNotes.getEditText().getText().toString()));
|
||||
txData.setPriority(PendingTransaction.Priority.Priority_Default);
|
||||
txData.setMixin(SendFragment.MIXIN);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@@ -149,8 +149,13 @@ public class SendAmountWizardFragment extends SendWizardFragment {
|
||||
Helper.hideKeyboard(getActivity());
|
||||
final long funds = getTotalFunds();
|
||||
maxFunds = 1.0 * funds / 1000000000000L;
|
||||
tvFunds.setText(getString(R.string.send_available,
|
||||
Wallet.getDisplayAmount(funds)));
|
||||
if (!sendListener.getActivityCallback().isStreetMode()) {
|
||||
tvFunds.setText(getString(R.string.send_available,
|
||||
Wallet.getDisplayAmount(funds)));
|
||||
} else {
|
||||
tvFunds.setText(getString(R.string.send_available,
|
||||
getString(R.string.unknown_amount)));
|
||||
}
|
||||
// getAmount is null if exchange is in progress
|
||||
if ((evAmount.getAmount() != null) && evAmount.getAmount().isEmpty()) {
|
||||
final BarcodeData data = sendListener.popBarcodeData();
|
||||
|
@@ -135,8 +135,13 @@ public class SendBtcAmountWizardFragment extends SendWizardFragment {
|
||||
Timber.d("onResumeFragment()");
|
||||
Helper.hideKeyboard(getActivity());
|
||||
final long funds = getTotalFunds();
|
||||
tvFunds.setText(getString(R.string.send_available,
|
||||
Wallet.getDisplayAmount(funds)));
|
||||
if (!sendListener.getActivityCallback().isStreetMode()) {
|
||||
tvFunds.setText(getString(R.string.send_available,
|
||||
Wallet.getDisplayAmount(funds)));
|
||||
} else {
|
||||
tvFunds.setText(getString(R.string.send_available,
|
||||
getString(R.string.unknown_amount)));
|
||||
}
|
||||
if ((evAmount.getAmount() == null) || evAmount.getAmount().isEmpty()) {
|
||||
final BarcodeData data = sendListener.popBarcodeData();
|
||||
if ((data != null) && (data.amount != null)) {
|
||||
@@ -178,8 +183,15 @@ public class SendBtcAmountWizardFragment extends SendWizardFragment {
|
||||
double availableXmr = 1.0 * funds / 1000000000000L;
|
||||
maxBtc = Math.min(maxBtc, availableXmr * orderParameters.getPrice());
|
||||
|
||||
String availBtcString = df.format(availableXmr * orderParameters.getPrice());
|
||||
String availXmrString = df.format(availableXmr);
|
||||
String availBtcString;
|
||||
String availXmrString;
|
||||
if (!sendListener.getActivityCallback().isStreetMode()) {
|
||||
availBtcString = df.format(availableXmr * orderParameters.getPrice());
|
||||
availXmrString = df.format(availableXmr);
|
||||
} else {
|
||||
availBtcString = getString(R.string.unknown_amount);
|
||||
availXmrString = availBtcString;
|
||||
}
|
||||
tvFunds.setText(getString(R.string.send_available_btc,
|
||||
availXmrString,
|
||||
availBtcString));
|
||||
|
@@ -58,11 +58,12 @@ import timber.log.Timber;
|
||||
public class SendFragment extends Fragment
|
||||
implements SendAddressWizardFragment.Listener,
|
||||
SendAmountWizardFragment.Listener,
|
||||
SendSettingsWizardFragment.Listener,
|
||||
SendConfirmWizardFragment.Listener,
|
||||
SendSuccessWizardFragment.Listener,
|
||||
OnBackPressedListener, OnUriScannedListener {
|
||||
|
||||
final static public int MIXIN = 10;
|
||||
|
||||
private Listener activityCallback;
|
||||
|
||||
public interface Listener {
|
||||
@@ -70,6 +71,8 @@ public class SendFragment extends Fragment
|
||||
|
||||
long getTotalFunds();
|
||||
|
||||
boolean isStreetMode();
|
||||
|
||||
void onPrepareSend(String tag, TxData data);
|
||||
|
||||
boolean verifyWalletPassword(String password);
|
||||
@@ -301,10 +304,9 @@ public class SendFragment extends Fragment
|
||||
public class SpendPagerAdapter extends FragmentStatePagerAdapter {
|
||||
private static final int POS_ADDRESS = 0;
|
||||
private static final int POS_AMOUNT = 1;
|
||||
private static final int POS_SETTINGS = 2;
|
||||
private static final int POS_CONFIRM = 3;
|
||||
private static final int POS_SUCCESS = 4;
|
||||
private int numPages = 4;
|
||||
private static final int POS_CONFIRM = 2;
|
||||
private static final int POS_SUCCESS = 3;
|
||||
private int numPages = 3;
|
||||
|
||||
SparseArray<WeakReference<SendWizardFragment>> myFragments = new SparseArray<>();
|
||||
|
||||
@@ -355,8 +357,6 @@ public class SendFragment extends Fragment
|
||||
return SendAddressWizardFragment.newInstance(SendFragment.this);
|
||||
case POS_AMOUNT:
|
||||
return SendAmountWizardFragment.newInstance(SendFragment.this);
|
||||
case POS_SETTINGS:
|
||||
return SendSettingsWizardFragment.newInstance(SendFragment.this);
|
||||
case POS_CONFIRM:
|
||||
return SendConfirmWizardFragment.newInstance(SendFragment.this);
|
||||
case POS_SUCCESS:
|
||||
@@ -370,8 +370,6 @@ public class SendFragment extends Fragment
|
||||
return SendAddressWizardFragment.newInstance(SendFragment.this);
|
||||
case POS_AMOUNT:
|
||||
return SendBtcAmountWizardFragment.newInstance(SendFragment.this);
|
||||
case POS_SETTINGS:
|
||||
return SendSettingsWizardFragment.newInstance(SendFragment.this);
|
||||
case POS_CONFIRM:
|
||||
return SendBtcConfirmWizardFragment.newInstance(SendFragment.this);
|
||||
case POS_SUCCESS:
|
||||
@@ -393,8 +391,6 @@ public class SendFragment extends Fragment
|
||||
return getString(R.string.send_address_title);
|
||||
case POS_AMOUNT:
|
||||
return getString(R.string.send_amount_title);
|
||||
case POS_SETTINGS:
|
||||
return getString(R.string.send_settings_title);
|
||||
case POS_CONFIRM:
|
||||
return getString(R.string.send_confirm_title);
|
||||
case POS_SUCCESS:
|
||||
@@ -407,7 +403,8 @@ public class SendFragment extends Fragment
|
||||
@Override
|
||||
public int getItemPosition(Object object) {
|
||||
Timber.d("getItemPosition %s", String.valueOf(object));
|
||||
if ((object instanceof SendAddressWizardFragment) || (object instanceof SendSettingsWizardFragment)) {
|
||||
if (object instanceof SendAddressWizardFragment) {
|
||||
// keep these pages
|
||||
return POSITION_UNCHANGED;
|
||||
} else {
|
||||
return POSITION_NONE;
|
||||
|
@@ -1,101 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2017 m2049r
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.m2049r.xmrwallet.fragment.send;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.text.InputType;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.inputmethod.EditorInfo;
|
||||
import android.widget.EditText;
|
||||
import android.widget.Spinner;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.m2049r.xmrwallet.R;
|
||||
import com.m2049r.xmrwallet.data.TxData;
|
||||
import com.m2049r.xmrwallet.model.PendingTransaction;
|
||||
import com.m2049r.xmrwallet.util.Helper;
|
||||
import com.m2049r.xmrwallet.util.UserNotes;
|
||||
|
||||
import timber.log.Timber;
|
||||
|
||||
public class SendSettingsWizardFragment extends SendWizardFragment {
|
||||
final static public int MIXIN = 10;
|
||||
|
||||
public static SendSettingsWizardFragment newInstance(Listener listener) {
|
||||
SendSettingsWizardFragment instance = new SendSettingsWizardFragment();
|
||||
instance.setSendListener(listener);
|
||||
return instance;
|
||||
}
|
||||
|
||||
Listener sendListener;
|
||||
|
||||
public SendSettingsWizardFragment setSendListener(Listener listener) {
|
||||
this.sendListener = listener;
|
||||
return this;
|
||||
}
|
||||
|
||||
interface Listener {
|
||||
TxData getTxData();
|
||||
}
|
||||
|
||||
final static PendingTransaction.Priority Priorities[] =
|
||||
{PendingTransaction.Priority.Priority_Default,
|
||||
PendingTransaction.Priority.Priority_Low,
|
||||
PendingTransaction.Priority.Priority_Medium,
|
||||
PendingTransaction.Priority.Priority_High}; // must match the layout XML
|
||||
|
||||
private Spinner sPriority;
|
||||
private EditText etDummy;
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
|
||||
Timber.d("onCreateView() %s", (String.valueOf(savedInstanceState)));
|
||||
|
||||
View view = inflater.inflate(
|
||||
R.layout.fragment_send_settings, container, false);
|
||||
|
||||
sPriority = (Spinner) view.findViewById(R.id.sPriority);
|
||||
|
||||
etDummy = (EditText) view.findViewById(R.id.etDummy);
|
||||
etDummy.setRawInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
|
||||
|
||||
return view;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onValidateFields() {
|
||||
if (sendListener != null) {
|
||||
TxData txData = sendListener.getTxData();
|
||||
txData.setPriority(Priorities[sPriority.getSelectedItemPosition()]);
|
||||
txData.setMixin(MIXIN);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResumeFragment() {
|
||||
super.onResumeFragment();
|
||||
Timber.d("onResumeFragment()");
|
||||
Helper.hideKeyboard(getActivity());
|
||||
etDummy.requestFocus();
|
||||
}
|
||||
}
|
@@ -178,7 +178,7 @@ public class WalletManager {
|
||||
public native boolean verifyWalletPassword(String keys_file_name, String password, boolean watch_only);
|
||||
|
||||
public boolean verifyWalletPasswordOnly(String keys_file_name, String password) {
|
||||
return queryWalletDevice(keys_file_name, password) != Wallet.Device.Device_Undefined;
|
||||
return queryWalletDeviceJ(keys_file_name, password) >= 0;
|
||||
}
|
||||
|
||||
public Wallet.Device queryWalletDevice(String keys_file_name, String password) {
|
||||
|
@@ -33,21 +33,25 @@ import com.m2049r.xmrwallet.dialog.HelpFragment;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import timber.log.Timber;
|
||||
|
||||
public class Notice {
|
||||
private static final String PREFS_NAME = "notice";
|
||||
private static List<Notice> notices = null;
|
||||
|
||||
private static final String NOTICE_SHOW_XMRTO_ENABLED_LOGIN = "notice_xmrto_enabled_login";
|
||||
private static final String NOTICE_SHOW_XMRTO_ENABLED_SEND = "notice_xmrto_enabled_send";
|
||||
private static final String NOTICE_SHOW_CRAZYPASS = "notice_crazypass_enabled_login";
|
||||
private static final String NOTICE_SHOW_LEDGER = "notice_ledger_enabled_login";
|
||||
private static final String NOTICE_SHOW_STREET = "notice_streetmode_login";
|
||||
|
||||
private static void init() {
|
||||
synchronized (Notice.class) {
|
||||
if (notices != null) return;
|
||||
notices = new ArrayList<>();
|
||||
notices.add(
|
||||
new Notice(NOTICE_SHOW_STREET,
|
||||
R.string.info_streetmode_enabled,
|
||||
R.string.help_wallet,
|
||||
1)
|
||||
);
|
||||
notices.add(
|
||||
new Notice(NOTICE_SHOW_XMRTO_ENABLED_SEND,
|
||||
R.string.info_xmrto_enabled,
|
||||
@@ -60,12 +64,6 @@ public class Notice {
|
||||
R.string.help_xmrto,
|
||||
1)
|
||||
);
|
||||
notices.add(
|
||||
new Notice(NOTICE_SHOW_CRAZYPASS,
|
||||
R.string.info_crazypass_enabled,
|
||||
R.string.help_details,
|
||||
2)
|
||||
);
|
||||
notices.add(
|
||||
new Notice(NOTICE_SHOW_LEDGER,
|
||||
R.string.info_ledger_enabled,
|
||||
|
@@ -95,6 +95,8 @@ public class RestoreHeight {
|
||||
blockheight.put("2018-07-01", 1606715L);
|
||||
blockheight.put("2018-08-01", 1629017L);
|
||||
blockheight.put("2018-09-01", 1651347L);
|
||||
blockheight.put("2018-10-01", 1673031L);
|
||||
blockheight.put("2018-11-01", 1695128L);
|
||||
}
|
||||
|
||||
public long getHeight(String date) {
|
||||
|
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:drawable="@drawable/gradient_street" />
|
||||
<item
|
||||
android:height="?attr/actionBarSize"
|
||||
android:drawable="@drawable/texture_cash" />
|
||||
</layer-list>
|
9
app/src/main/res/drawable/gradient_street.xml
Normal file
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
<gradient
|
||||
android:angle="45"
|
||||
android:endColor="@color/moneroStreetA"
|
||||
android:startColor="@color/moneroStreetB"
|
||||
android:type="linear" />
|
||||
</shape>
|
BIN
app/src/main/res/drawable/gunther_csi_24dp.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
@@ -53,7 +53,7 @@
|
||||
app:activeDot="0"
|
||||
app:dotSize="12dp"
|
||||
app:inactiveColor="@color/dotGray"
|
||||
app:numberDots="4" />
|
||||
app:numberDots="3" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/bNext"
|
||||
|
@@ -1,51 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout 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="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<EditText
|
||||
android:id="@+id/etDummy"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="16sp"
|
||||
android:layout_marginTop="16sp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
style="@style/MoneroLabel.Caps.Gray.Small"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center|end"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:text="@string/label_send_settings_advanced"
|
||||
android:textAlignment="textEnd" />
|
||||
|
||||
<Spinner
|
||||
android:id="@+id/sPriority"
|
||||
style="@style/MoneroSpinner"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:entries="@array/priority"
|
||||
android:textAlignment="center" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
style="@style/MoneroFab"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="start"
|
||||
android:drawablePadding="8dp"
|
||||
android:drawableStart="@drawable/ic_info_outline_gray_24dp"
|
||||
android:gravity="center"
|
||||
android:text="@string/info_send_prio_fees" />
|
||||
|
||||
</LinearLayout>
|
@@ -12,58 +12,74 @@
|
||||
android:layout_margin="8dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
<FrameLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/flExchange"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginEnd="0dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:visibility="gone">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:src="@drawable/ic_statsup" />
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/pbExchange"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:indeterminate="true" />
|
||||
</FrameLayout>
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvBalance"
|
||||
android:id="@+id/tvStreetView"
|
||||
style="@style/MoneroText.Balance"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:visibility="visible"
|
||||
tools:text="1099700.23001" />
|
||||
android:layout_gravity="center"
|
||||
android:text="@string/text_streetmode"
|
||||
android:visibility="invisible" />
|
||||
|
||||
<Spinner
|
||||
android:id="@+id/sCurrency"
|
||||
android:layout_width="wrap_content"
|
||||
<LinearLayout
|
||||
android:id="@+id/llBalance"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:entries="@array/currency"
|
||||
android:gravity="center"
|
||||
android:minWidth="80dp"
|
||||
android:paddingBottom="2dp"
|
||||
android:paddingEnd="4dp"
|
||||
android:paddingStart="4dp"
|
||||
android:paddingTop="0dp"
|
||||
tools:listitem="@layout/item_spinner_balance" />
|
||||
</LinearLayout>
|
||||
android:orientation="horizontal"
|
||||
android:visibility="visible">
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/flExchange"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginEnd="0dp"
|
||||
android:visibility="gone">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:src="@drawable/ic_statsup" />
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/pbExchange"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:indeterminate="true" />
|
||||
</FrameLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvBalance"
|
||||
style="@style/MoneroText.Balance"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:visibility="visible"
|
||||
tools:text="1099700.23001" />
|
||||
|
||||
<Spinner
|
||||
android:id="@+id/sCurrency"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:entries="@array/currency"
|
||||
android:gravity="center"
|
||||
android:minWidth="80dp"
|
||||
android:paddingStart="4dp"
|
||||
android:paddingTop="0dp"
|
||||
android:paddingEnd="4dp"
|
||||
android:paddingBottom="2dp"
|
||||
tools:listitem="@layout/item_spinner_balance" />
|
||||
</LinearLayout>
|
||||
</FrameLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvUnconfirmedAmount"
|
||||
@@ -127,10 +143,10 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom"
|
||||
android:layout_marginBottom="12dp"
|
||||
android:layout_marginLeft="4dp"
|
||||
android:layout_marginRight="4dp"
|
||||
android:layout_marginTop="12dp"
|
||||
android:layout_marginRight="4dp"
|
||||
android:layout_marginBottom="12dp"
|
||||
android:orientation="horizontal"
|
||||
android:weightSum="2">
|
||||
|
||||
@@ -143,8 +159,8 @@
|
||||
android:layout_weight="1"
|
||||
android:drawableStart="@drawable/ic_hand"
|
||||
android:enabled="false"
|
||||
android:paddingEnd="16dp"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingEnd="16dp"
|
||||
android:text="@string/label_wallet_receive"
|
||||
android:visibility="invisible" />
|
||||
|
||||
@@ -157,8 +173,8 @@
|
||||
android:layout_weight="1"
|
||||
android:drawableStart="@drawable/ic_send"
|
||||
android:enabled="false"
|
||||
android:paddingEnd="16dp"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingEnd="16dp"
|
||||
android:text="@string/label_wallet_send"
|
||||
android:visibility="invisible" />
|
||||
|
||||
|
@@ -1,26 +1,30 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<item
|
||||
android:id="@+id/action_info"
|
||||
android:icon="@drawable/ic_info_white_24dp"
|
||||
android:title="@string/menu_info" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_receive"
|
||||
android:icon="@drawable/ic_monero_qr_24dp"
|
||||
android:orderInCategory="100"
|
||||
android:title="@string/menu_receive" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_rename"
|
||||
android:orderInCategory="200"
|
||||
android:title="@string/menu_rename" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_backup"
|
||||
android:orderInCategory="300"
|
||||
android:title="@string/menu_backup" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_archive"
|
||||
android:orderInCategory="400"
|
||||
android:title="@string/menu_archive" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_info"
|
||||
android:icon="@drawable/ic_info_white_24dp"
|
||||
android:orderInCategory="500"
|
||||
android:title="@string/menu_info" />
|
||||
|
||||
</menu>
|
@@ -3,31 +3,35 @@
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<item
|
||||
android:id="@+id/action_credits"
|
||||
android:icon="@drawable/ic_favorite_white_24dp"
|
||||
android:orderInCategory="10"
|
||||
android:title="@string/label_credits"
|
||||
android:id="@+id/action_streetmode"
|
||||
android:checkable="true"
|
||||
android:icon="@drawable/gunther_24dp"
|
||||
android:orderInCategory="100"
|
||||
android:title="@string/menu_streetmode"
|
||||
app:showAsAction="ifRoom" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_info"
|
||||
android:icon="@drawable/ic_info_white_24dp"
|
||||
android:orderInCategory="100"
|
||||
android:title="@string/menu_info"
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_rename"
|
||||
android:icon="@drawable/ic_edit_white_24dp"
|
||||
android:orderInCategory="100"
|
||||
android:orderInCategory="200"
|
||||
android:title="@string/menu_rename"
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_help_wallet"
|
||||
android:icon="@drawable/ic_help_white_24dp"
|
||||
android:orderInCategory="200"
|
||||
android:orderInCategory="300"
|
||||
android:title="@string/menu_help"
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_credits"
|
||||
android:orderInCategory="400"
|
||||
android:title="@string/label_credits"
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_info"
|
||||
android:orderInCategory="500"
|
||||
android:title="@string/menu_info"
|
||||
app:showAsAction="never" />
|
||||
|
||||
</menu>
|
@@ -121,22 +121,6 @@
|
||||
die App sauber und ordentlich deinstallieren</p>
|
||||
]]></string>
|
||||
|
||||
<string name="help_wallet"><![CDATA[
|
||||
<h1>Das Wallet</h1>
|
||||
<h2>Scannen</h2>
|
||||
Weil Monero gerne Dinge geheim hält, wird nach jedem Öffnen einer Monerujo Wallet die Blockchain gescannt
|
||||
um zu überprüfen ob neue Moneroj zu dieser Wallet gesendet wurden. Dies speichert ausschließlich Informationen
|
||||
die zur Wallet auf diesem Gerät gehören. Manchmal kann dies etwas länger dauern, falls die letzte Synchronisierung
|
||||
eine Weile her ist.
|
||||
<h2>Das Saldo</h2>
|
||||
<p><b>Hilfe! Mein Wallet Saldo ist verschwunden oder ist unbestätigt!</b><br/>
|
||||
Keine Panik! Wenn du Gelder von deiner Wallet sendest wird ein Teil deines Saldos kurzzeitig als unbestätigt angezeigt.
|
||||
Dies geschieht aufgrund der zugrunde liegenden Technologie und wie Monero auf der Blockchain bewegt werden.
|
||||
Lies mehr darüber auf https://getmonero.org/resources/moneropedia/change.html
|
||||
<h2>Transaktionsliste</h2>
|
||||
<p>Eine Liste deiner Transaktionen. In View Wallets werden nur die eingehenden Transaktionen angezeigt.</p>
|
||||
]]></string>
|
||||
|
||||
<string name="help_tx_details"><![CDATA[
|
||||
<h1>Transaktionsdetails</h1>
|
||||
<h2>Ziel</h2>
|
||||
@@ -165,17 +149,6 @@
|
||||
<h2>Zahlungs-ID</h2>
|
||||
<p>Du kannst eine Zahlungs-ID benutzen um den Grund einer Transaktion zwischen zwei Parteien zu identifizieren. Dies ist optional
|
||||
und nicht öffentlich einsehbar. Zum Beispiel kann ein Unternehmen damit Zahlungen und Verkäufe miteinander verbinden.<p>
|
||||
<h2>Ringgröße</h2>
|
||||
<p>Es gibt verschiedene Ringgrößen in Monerujo aus denen du wählen kannst. Falls du ein neuer Nutzer bist
|
||||
empfehlen wir bei der Standard Ringgröße zu bleiben (aktuell 7). Die Ringgröße zu erhöhen erhöht die Anzahl der Signaturen in einer Ring-Signatur,
|
||||
was theoretisch das Erraten der richtigen Signatur erschwert. Eine höhere Ringgröße lässt eine Transaktion jedoch
|
||||
auf der Blockchain auch herausstechen.</p>
|
||||
<h2>Priorität</h2>
|
||||
<p>Diese Einstellung bestimmt wie zügig deine Transaktion in einem Block auf der Blockchain verarbeitet wird.
|
||||
Eine höhere Priorität bedeutet eine höhere Transaktionsgebühr, eine niedrige Priorität bedeutet eine
|
||||
niedrigere Transaktionsgebühr. Bitte bedenke, dass eine Transaktion mit einer niedrigen Priorität unter Umständen
|
||||
eine Weile benötigt bis sie auf der Blockchain verarbeitet wird. Die Standard-Priorität
|
||||
ist \"Mittel\".</p>
|
||||
<h1>BTC Senden</h1>
|
||||
<h2>XMR.TO</h2>
|
||||
<p>XMR.TO ist ein Drittanbieter-Service welcher als Wechselservice von Monero zu Bitcoin fungiert.
|
||||
@@ -238,4 +211,25 @@
|
||||
Du kannst auch ein Datum im Format JJJJ-MM-DD eingeben. Falls du nicht sicher bist, gib ein
|
||||
ungefähres Datum oder Blockhöhe, <em>bevor</em> du diese Adresse zum ersten Mal benutzt hast, ein.<p>
|
||||
]]></string>
|
||||
|
||||
<string name="help_wallet"><![CDATA[
|
||||
<h1>Das Wallet</h1>
|
||||
<h2>Street Mode</h2>
|
||||
<p>Street mode can be enabled/disabled in the menu or Gunther\'s head icon. In this mode, your
|
||||
balance is not shown on any screen so you can safely use your wallet on the street, a pub or
|
||||
other public place. Previous transactions are also hidden. New transactions will be shown, so
|
||||
you can see that you have sent/received sweet Moneroj!</p>
|
||||
<h2>Scannen</h2>
|
||||
Weil Monero gerne Dinge geheim hält, wird nach jedem Öffnen einer Monerujo Wallet die Blockchain gescannt
|
||||
um zu überprüfen ob neue Moneroj zu dieser Wallet gesendet wurden. Dies speichert ausschließlich Informationen
|
||||
die zur Wallet auf diesem Gerät gehören. Manchmal kann dies etwas länger dauern, falls die letzte Synchronisierung
|
||||
eine Weile her ist.
|
||||
<h2>Das Saldo</h2>
|
||||
<p><b>Hilfe! Mein Wallet Saldo ist verschwunden oder ist unbestätigt!</b><br/>
|
||||
Keine Panik! Wenn du Gelder von deiner Wallet sendest wird ein Teil deines Saldos kurzzeitig als unbestätigt angezeigt.
|
||||
Dies geschieht aufgrund der zugrunde liegenden Technologie und wie Monero auf der Blockchain bewegt werden.
|
||||
Lies mehr darüber auf https://getmonero.org/resources/moneropedia/change.html
|
||||
<h2>Transaktionsliste</h2>
|
||||
<p>Eine Liste deiner Transaktionen. In View Wallets werden nur die eingehenden Transaktionen angezeigt.</p>
|
||||
]]></string>
|
||||
</resources>
|
||||
|
@@ -6,7 +6,6 @@
|
||||
|
||||
<string name="menu_share">Teilen</string>
|
||||
<string name="menu_help">Hilfe</string>
|
||||
<string name="menu_info">Details</string>
|
||||
<string name="menu_receive">Empfangen</string>
|
||||
<string name="menu_rename">Umbenennen …</string>
|
||||
<string name="menu_archive">Archivieren</string>
|
||||
@@ -235,7 +234,6 @@
|
||||
<string name="send_available">Verfügbar: %1$s XMR</string>
|
||||
<string name="send_address_title">Adresse</string>
|
||||
<string name="send_amount_title">Betrag</string>
|
||||
<string name="send_settings_title">Einstellungen</string>
|
||||
<string name="send_confirm_title">Bestätigen</string>
|
||||
<string name="send_success_title">Fertig</string>
|
||||
|
||||
@@ -356,4 +354,8 @@
|
||||
<string name="nfc_tag_tap">NFC verfügbar!</string>
|
||||
|
||||
<string name="status_wallet_connect_wrongversion">Node version incompatible - please upgrade!</string>
|
||||
|
||||
<string name="menu_info">Details</string><!--Changed to: Show Secrets!-->
|
||||
<string name="menu_streetmode">Street Mode</string>
|
||||
<string name="info_streetmode_enabled">Street Mode enabled, tap for more info.</string>
|
||||
</resources>
|
||||
|
@@ -99,23 +99,6 @@
|
||||
εφαρμογή εξερεύνησης αρχείων ή μια εφαρμογή ασφαλούς διαγραφής.</p>
|
||||
]]></string>
|
||||
|
||||
<string name="help_wallet"><![CDATA[
|
||||
<h1>Το Πορτοφόλι</h1>
|
||||
<h2>Σάρωση</h2>
|
||||
Επειδή το Monero θέλει να κρατάει τα πράγματα ιδιωτικά, κάθε φορά που ανοίγεις ένα πορτοφόλι
|
||||
Monerujo πρέπει να σαρώσουμε όλο το blockchain για να βρεθούν νέα ληφθέντα Moneroj στο πορτοφόλι σας, αυτό
|
||||
αποθηκεύει μόνο πληροφορίες στο τηλέφωνό σου που ανιστοιχούν στο πορτοφόλι σου. Μερικές φορές
|
||||
μπορεί να χρειαστεί λίγος χρόνος γιατί δεν έχεις συγχρονίσει για μεγάλο χρονικό διάστημα.
|
||||
<h2>Το Υπόλοιπο</h2>
|
||||
<p><b>Βοήθεια! Το υπόλοιπο του πορτοφολιού μου εξαφανίστηκε ή ειναι μη επιβεβαιωμένο!</b><br/>
|
||||
Μην πανικοβάλεσαι! Όταν στέλνεις κεφάλαια από το πορτοφόλι σου, ένα μέρος
|
||||
του υπολοίπου σου θα δείχνει για λίγο ως μη επιβεβαιωμένο.
|
||||
Αυτό συμβαίνει σαν αποτέλεσμα του πως το Monero ανταλλάσεται στο blockchain και το πως δουλεύουν τα ρέστα.
|
||||
Διάβασε περισσότερα για τα ρέστα εδώ(Αγγλικά) https://getmonero.org/resources/moneropedia/change.html
|
||||
<h2>Λίστα Συναλλαγών</h2>
|
||||
<p>Μια λίστα απο τις συναλλαγές του πορτοφολιού. Στα πορτοφόλια παρακολούθησης φαίνοντε μόνο οι εισερχόμενες συναλλαγές.</p>
|
||||
]]></string>
|
||||
|
||||
<string name="help_tx_details"><![CDATA[
|
||||
<h1>Λεπτομέρειες Συναλλαγής</h1>
|
||||
<h2>Προορισμός</h2>
|
||||
@@ -146,18 +129,6 @@
|
||||
<p>Μπορείς να χρησιμοποιήσεις ένα ID Πληρωμής(Payment ID) για να προσδιορίσεις τον λόγο που στέλνεις Monero
|
||||
ανάμεσα σε δύο ενδιαφερόμενους αυτό είναι προεραιτικό και ιδωτικό. Για παράδειγμα μπορεί να επιτρέψει σε μια επιχείρηση
|
||||
να κανονίσει την συναλλαγή σου με ένα αντικείμενο που αγόρασες.<p>
|
||||
<h2>Μέγεθος Δακτύλιου(Ring size)</h2>
|
||||
<p>Υπάρχει ένας αριθμός επιλογών μεγέθους δακτύλιου που μπορείς να διαλέξεις στο Monerujo. Αν είσαι νέος χρήστης
|
||||
προτείνουμε να επιλέγεις ένα μέγεθος δακτύλιου 7. Αυξάνοντας τον αριθμό δακτυλίου πάνω από 7 αυξάνει
|
||||
το ποσό των υπογραφόντων σε μια υπογραφη δακτυλίου, προσφέροντας θεωρητικά εύλογα αυξημένη
|
||||
δυσπιστία. Ωστόσο η επιλογή μεγαλύτερου μεγέθους δακτυλίου μπορεί να κάνει την συναλλαγή σου να ξεχωρίζει
|
||||
στο blockchain.</p>
|
||||
<h2>Προτεραιότητα</h2>
|
||||
<p>Αυτή η επιλογή καθορίζει την ταχύτητα με την οποία η συναλλαγή σου θα συμπεριληφθει στο
|
||||
blockchain. Μια επιλογή υψηλής προτεραιότητας θα έχει σαν άμεση συνέπεια υψηλότερα κόμιστρα συναλλαγής
|
||||
και το αντίστροφο είναι αληθές για μια συναλλαγή χαμηλής προτεραιότητας. Σημειωτέον ότι αν στείλεις την συναλλαγή
|
||||
με χαμηλή προτεραιότητα μπορεί να πάρει ώρες μέχρι να συμπεριληφθεί στο blockchain. Η προεπιλεγμένη προτεραιότητα
|
||||
είναι η \"Μέτρια\".</p>
|
||||
<h1>Αποστολή BTC</h1>
|
||||
<h2>XMR.TO</h2>
|
||||
<p>Το XMR.TO είναι τρίτος πάροχος που δρα σαν ανταλλακτήριο από Monero σε Bitcoin.
|
||||
@@ -224,4 +195,26 @@
|
||||
field \"Restore Height\". You can also use a date in the format YYYY-MM-DD. If you are not sure,
|
||||
enter an approximate date/blockheight <em>before</em> you first used this wallet address.</p>
|
||||
]]></string>
|
||||
|
||||
<string name="help_wallet"><![CDATA[
|
||||
<h1>Το Πορτοφόλι</h1>
|
||||
<h2>Street Mode</h2>
|
||||
<p>Street mode can be enabled/disabled in the menu or Gunther\'s head icon. In this mode, your
|
||||
balance is not shown on any screen so you can safely use your wallet on the street, a pub or
|
||||
other public place. Previous transactions are also hidden. New transactions will be shown, so
|
||||
you can see that you have sent/received sweet Moneroj!</p>
|
||||
<h2>Σάρωση</h2>
|
||||
Επειδή το Monero θέλει να κρατάει τα πράγματα ιδιωτικά, κάθε φορά που ανοίγεις ένα πορτοφόλι
|
||||
Monerujo πρέπει να σαρώσουμε όλο το blockchain για να βρεθούν νέα ληφθέντα Moneroj στο πορτοφόλι σας, αυτό
|
||||
αποθηκεύει μόνο πληροφορίες στο τηλέφωνό σου που ανιστοιχούν στο πορτοφόλι σου. Μερικές φορές
|
||||
μπορεί να χρειαστεί λίγος χρόνος γιατί δεν έχεις συγχρονίσει για μεγάλο χρονικό διάστημα.
|
||||
<h2>Το Υπόλοιπο</h2>
|
||||
<p><b>Βοήθεια! Το υπόλοιπο του πορτοφολιού μου εξαφανίστηκε ή ειναι μη επιβεβαιωμένο!</b><br/>
|
||||
Μην πανικοβάλεσαι! Όταν στέλνεις κεφάλαια από το πορτοφόλι σου, ένα μέρος
|
||||
του υπολοίπου σου θα δείχνει για λίγο ως μη επιβεβαιωμένο.
|
||||
Αυτό συμβαίνει σαν αποτέλεσμα του πως το Monero ανταλλάσεται στο blockchain και το πως δουλεύουν τα ρέστα.
|
||||
Διάβασε περισσότερα για τα ρέστα εδώ(Αγγλικά) https://getmonero.org/resources/moneropedia/change.html
|
||||
<h2>Λίστα Συναλλαγών</h2>
|
||||
<p>Μια λίστα απο τις συναλλαγές του πορτοφολιού. Στα πορτοφόλια παρακολούθησης φαίνοντε μόνο οι εισερχόμενες συναλλαγές.</p>
|
||||
]]></string>
|
||||
</resources>
|
||||
|
@@ -6,7 +6,6 @@
|
||||
|
||||
<string name="menu_share">Μοιράσου</string>
|
||||
<string name="menu_help">Βοήθεια</string>
|
||||
<string name="menu_info">Λεπτομέριες</string>
|
||||
<string name="menu_receive">Λήψη</string>
|
||||
<string name="menu_rename">Μετονομασία …</string>
|
||||
<string name="menu_archive">Αρχειοθέτησε</string>
|
||||
@@ -209,7 +208,6 @@
|
||||
<string name="send_available">Υπόλοιπο: %1$s XMR</string>
|
||||
<string name="send_address_title">Διεύθυνση</string>
|
||||
<string name="send_amount_title">Ποσό</string>
|
||||
<string name="send_settings_title">Ρυθμίσεις</string>
|
||||
<string name="send_confirm_title">Επιβεβαίωση</string>
|
||||
<string name="send_success_title">Έγινε</string>
|
||||
|
||||
@@ -355,4 +353,8 @@
|
||||
<string name="send_address_hint">Receiver\'s XMR/BTC Address or OpenAlias</string>
|
||||
|
||||
<string name="status_wallet_connect_wrongversion">Node version incompatible - please upgrade!</string>
|
||||
|
||||
<string name="menu_info">Λεπτομέριες</string><!--Changed to: Show Secrets!-->
|
||||
<string name="menu_streetmode">Street Mode</string>
|
||||
<string name="info_streetmode_enabled">Street Mode enabled, tap for more info.</string>
|
||||
</resources>
|
||||
|
@@ -136,24 +136,6 @@
|
||||
deberás borrarlas con un explorador de archivos o una aplicacin de borrado seguro.</p>
|
||||
]]></string>
|
||||
|
||||
<string name="help_wallet"><![CDATA[
|
||||
<h1>El monedero</h1>
|
||||
<h2>Escaneado</h2>
|
||||
Como a Monero le gusta mantener las cosas privadas, cada vez que abres una cartera de
|
||||
Monerujo es necesario escanear la cadena de bloques para ver si nuevos moneroj han sido
|
||||
enviados a tu dirección. Esto solo almacena en tu teléfono las transacciones que pertenecen a tu
|
||||
monedero. Esto puede llevar un rato si hace tiempo que no sincronizas.
|
||||
<h2>Saldo</h2>
|
||||
<p><b>¡Ayuda! ¡El saldo de mi monedero ha desaparecido o aparece sin confirmar!</b><br/>
|
||||
¡No entres en pánico! Cuando envias fondos a tu monedero, parte de tu saldo se mostrará
|
||||
temporalmente como sin confirmar.
|
||||
Esto es debido a como funcionan las transacciones y su cambio en Monero. Todo está bien.
|
||||
Puedes leer más al respecto en https://getmonero.org/resources/moneropedia/change.html
|
||||
<h2>Lista de transacciones</h2>
|
||||
<p>Es una lista con las transacciones del monedero. Ten en cuenta que en monederos de solo vista, únicamente se
|
||||
mostrarán las transacciones entrantes y no las salientes, por lo tanto la suma no es indicativa de los fondos disponibles.</p>
|
||||
]]></string>
|
||||
|
||||
<string name="help_tx_details"><![CDATA[
|
||||
<h1>Detalles de la transacción</h1>
|
||||
<h2>Destinatario</h2>
|
||||
@@ -182,19 +164,6 @@
|
||||
Al ser Monero ofuscado por naturaleza, puedes usar un ID de Pago para identificar un envío de Monero entre
|
||||
dos partes. Esto es completamente opcional y privado. Por ejemplo, esto permitiría que un
|
||||
negocio pueda asociar inequívocamente tu transacción con un producto que has comprado.</p>
|
||||
<h2>Tamaño del anillo</h2>
|
||||
<p>Hay varios tamaños de anillo (ring size) para elegir en Monerujo. Si eres un
|
||||
usuario principiante te recomendamos que simplemente utilices un tamaño de anillo de 7.
|
||||
Aumentar el tamaño de anillo por encima de 7 incrementa el número de firmantes en una firma
|
||||
de anillo, lo cual teóricamente proporciona una mayor negación plausible. Pero configurar
|
||||
tamaños de anillo altos también puede provocar que tu transacción quede fuera de la
|
||||
cadena de bloques.</p>
|
||||
<h2>Prioridad</h2>
|
||||
<p>Este ajuste determina la velocidad a la que tu transacción será incluída en la cadena
|
||||
de bloques. Una configuración de alta prioridad tendrá una mayor
|
||||
comisión de transacción, y lo opuesto en el caso de una prioridad baja. Por favor,
|
||||
ten en cuenta que si configuras tu transacción con una baja prioridad puede llevar horas
|
||||
hasta que sea incluída en la cadena de bloques. La prioridad por defecto es \"Media\".</p>
|
||||
<h1>Enviar BTC</h1>
|
||||
<h2>XMR.TO</h2>
|
||||
<p>XMR.TO es un servicio de terceros que actúa como casa de cambio de Monero a Bitcoin.
|
||||
@@ -263,4 +232,27 @@
|
||||
field \"Restore Height\". You can also use a date in the format YYYY-MM-DD. If you are not sure,
|
||||
enter an approximate date/blockheight <em>before</em> you first used this wallet address.</p>
|
||||
]]></string>
|
||||
|
||||
<string name="help_wallet"><![CDATA[
|
||||
<h1>El monedero</h1>
|
||||
<h2>Street Mode</h2>
|
||||
<p>Street mode can be enabled/disabled in the menu or Gunther\'s head icon. In this mode, your
|
||||
balance is not shown on any screen so you can safely use your wallet on the street, a pub or
|
||||
other public place. Previous transactions are also hidden. New transactions will be shown, so
|
||||
you can see that you have sent/received sweet Moneroj!</p>
|
||||
<h2>Escaneado</h2>
|
||||
Como a Monero le gusta mantener las cosas privadas, cada vez que abres una cartera de
|
||||
Monerujo es necesario escanear la cadena de bloques para ver si nuevos moneroj han sido
|
||||
enviados a tu dirección. Esto solo almacena en tu teléfono las transacciones que pertenecen a tu
|
||||
monedero. Esto puede llevar un rato si hace tiempo que no sincronizas.
|
||||
<h2>Saldo</h2>
|
||||
<p><b>¡Ayuda! ¡El saldo de mi monedero ha desaparecido o aparece sin confirmar!</b><br/>
|
||||
¡No entres en pánico! Cuando envias fondos a tu monedero, parte de tu saldo se mostrará
|
||||
temporalmente como sin confirmar.
|
||||
Esto es debido a como funcionan las transacciones y su cambio en Monero. Todo está bien.
|
||||
Puedes leer más al respecto en https://getmonero.org/resources/moneropedia/change.html
|
||||
<h2>Lista de transacciones</h2>
|
||||
<p>Es una lista con las transacciones del monedero. Ten en cuenta que en monederos de solo vista, únicamente se
|
||||
mostrarán las transacciones entrantes y no las salientes, por lo tanto la suma no es indicativa de los fondos disponibles.</p>
|
||||
]]></string>
|
||||
</resources>
|
||||
|