1
mirror of https://github.com/m2049r/xmrwallet synced 2025-09-04 00:53:36 +02:00

Compare commits

...

26 Commits

Author SHA1 Message Date
m2049r
46dbc0659b vital fixes to translations (#460) 2018-11-03 17:24:11 +01:00
m2049r
85622b3958 bump version 2018-11-03 17:17:02 +01:00
m2049r
5a63481c09 correct static jni methods (#459) 2018-11-03 16:59:16 +01:00
m2049r
1cb558d78e streetmode hides all balances & previous transactions (#458) 2018-11-03 16:45:34 +01:00
Hans
942c80e38b Estonian translations (#447)
* Create about.xml

* Create help.xml

* Create strings.xml
2018-11-03 16:11:25 +01:00
m2049r
24ec848f0f 2018-11-01 height 2018-11-03 11:06:49 +01:00
m2049r
0d1b1da5f3 remove v9 notice (#457) 2018-11-03 09:45:39 +01:00
jaro Lee
0840d2f350 Update strings.xml (#445)
new strings translated , few old strings tuned
2018-10-31 12:25:01 +01:00
hrumag
c7d933ea9d [strings_it.xml] Correct some translations (#450)
"subaddress" => "sottoindirizzo"
"balance => "saldo"
Fix '/n' with '\n'
2018-10-31 12:24:42 +01:00
vp1111
c9b1800309 Translation to Brazilian Portuguese (pt-rBR). (#455)
* Translation to Brazilian Portuguese (pt-rBR).

* adopted some of shigutso's suggestions

* adopted some of netrik's suggestions
2018-10-31 12:24:12 +01:00
m2049r
e7b0b5999e remove help for ringsize & priority (#448) 2018-10-18 09:10:21 +02:00
m2049r
47e1871693 update buildToolsVersion 2018-10-17 22:23:43 +02:00
m2049r
900eab70c8 update gradle 2018-10-16 22:27:01 +02:00
m2049r
b11357f379 bump version 2018-10-13 10:05:52 +02:00
m2049r
eba0156a6d info/warn about v9 upgrade (#442) 2018-10-13 10:05:17 +02:00
m2049r
bf64d8bd89 add 2018-10-01 height (#441) 2018-10-13 10:04:30 +02:00
m2049r
2d74281b31 bump version 2018-10-12 23:05:14 +02:00
m2049r
668cefb357 explicit check pw (#439)
also, revert device type query changes
2018-10-12 23:03:53 +02:00
0140454
1f5061df38 Update zh-rTW translation for node version warning (#437) 2018-10-11 17:41:59 +02:00
m2049r
51445f5941 Fix build (#435) 2018-10-10 21:12:18 +02:00
m2049r
8c01ec36e8 deal with illegal values for device type (#434) 2018-10-10 21:11:59 +02:00
m2049r
3cf84c599d ignore build directories 2018-10-10 08:01:56 +02:00
m2049r
ead8564688 bump version 2018-10-09 19:38:06 +02:00
m2049r
b71b3badd8 remove settings & fix prio to default (#433) 2018-10-09 19:33:29 +02:00
ProkhorZ
5ad46e2f54 Add node version warning (#432)
for monero v0.13 upgrade.
2018-10-09 07:59:49 +02:00
m2049r
9d6895b60f adding missing resources 2018-10-08 23:10:25 +02:00
68 changed files with 2074 additions and 780 deletions

2
app/.gitignore vendored
View File

@@ -1,3 +1,5 @@
.externalNativeBuild
build
app.iml
prod
alpha

View File

@@ -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 {

Binary file not shown.

After

Width:  |  Height:  |  Size: 244 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

View File

@@ -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);
}

View File

@@ -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();
// }
// }
}

View File

@@ -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);

View File

@@ -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;
}

View File

@@ -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();

View File

@@ -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));

View File

@@ -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;

View File

@@ -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();
}
}

View File

@@ -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) {

View File

@@ -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,

View File

@@ -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) {

View File

@@ -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>

View 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>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -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"

View File

@@ -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>

View File

@@ -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" />

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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 &#8230;</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>

View File

@@ -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>

View File

@@ -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">Μετονομασία &#8230;</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>

View File

@@ -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>

Some files were not shown because too many files have changed in this diff Show More