mirror of
https://github.com/m2049r/xmrwallet
synced 2025-09-07 11:35:59 +02:00
Compare commits
10 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
a4b9a7c6fb | ||
![]() |
9f01155cb7 | ||
![]() |
08e8a48138 | ||
![]() |
551c3b9fb6 | ||
![]() |
2258cb7096 | ||
![]() |
6d61841cf3 | ||
![]() |
c65508d288 | ||
![]() |
2c3f582672 | ||
![]() |
f46ba75771 | ||
![]() |
0ce5f2b6ca |
@@ -155,6 +155,18 @@ add_library(net STATIC IMPORTED)
|
|||||||
set_target_properties(net PROPERTIES IMPORTED_LOCATION
|
set_target_properties(net PROPERTIES IMPORTED_LOCATION
|
||||||
${EXTERNAL_LIBS_DIR}/monero/lib/${ANDROID_ABI}/libnet.a)
|
${EXTERNAL_LIBS_DIR}/monero/lib/${ANDROID_ABI}/libnet.a)
|
||||||
|
|
||||||
|
add_library(hardforks STATIC IMPORTED)
|
||||||
|
set_target_properties(hardforks PROPERTIES IMPORTED_LOCATION
|
||||||
|
${EXTERNAL_LIBS_DIR}/monero/lib/${ANDROID_ABI}/libhardforks.a)
|
||||||
|
|
||||||
|
add_library(randomx STATIC IMPORTED)
|
||||||
|
set_target_properties(randomx PROPERTIES IMPORTED_LOCATION
|
||||||
|
${EXTERNAL_LIBS_DIR}/monero/lib/${ANDROID_ABI}/librandomx.a)
|
||||||
|
|
||||||
|
add_library(rpc_base STATIC IMPORTED)
|
||||||
|
set_target_properties(rpc_base PROPERTIES IMPORTED_LOCATION
|
||||||
|
${EXTERNAL_LIBS_DIR}/monero/lib/${ANDROID_ABI}/librpc_base.a)
|
||||||
|
|
||||||
#############
|
#############
|
||||||
# System
|
# System
|
||||||
#############
|
#############
|
||||||
@@ -188,6 +200,9 @@ target_link_libraries( monerujo
|
|||||||
device_trezor
|
device_trezor
|
||||||
multisig
|
multisig
|
||||||
version
|
version
|
||||||
|
randomx
|
||||||
|
hardforks
|
||||||
|
rpc_base
|
||||||
|
|
||||||
boost_chrono
|
boost_chrono
|
||||||
boost_date_time
|
boost_date_time
|
||||||
|
@@ -7,8 +7,8 @@ android {
|
|||||||
applicationId "com.m2049r.xmrwallet"
|
applicationId "com.m2049r.xmrwallet"
|
||||||
minSdkVersion 21
|
minSdkVersion 21
|
||||||
targetSdkVersion 28
|
targetSdkVersion 28
|
||||||
versionCode 183
|
versionCode 193
|
||||||
versionName "1.11.13 'Chernushka'"
|
versionName "1.12.3 'Caerbannog'"
|
||||||
|
|
||||||
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
||||||
externalNativeBuild {
|
externalNativeBuild {
|
||||||
|
@@ -266,6 +266,7 @@ public class NodeFragment extends Fragment
|
|||||||
seedList.add(new NodeInfo(new InetSocketAddress("198.74.231.92", 18080)));
|
seedList.add(new NodeInfo(new InetSocketAddress("198.74.231.92", 18080)));
|
||||||
seedList.add(new NodeInfo(new InetSocketAddress("195.154.123.123", 18080)));
|
seedList.add(new NodeInfo(new InetSocketAddress("195.154.123.123", 18080)));
|
||||||
seedList.add(new NodeInfo(new InetSocketAddress("212.83.172.165", 18080)));
|
seedList.add(new NodeInfo(new InetSocketAddress("212.83.172.165", 18080)));
|
||||||
|
seedList.add(new NodeInfo(new InetSocketAddress("192.110.160.146", 18080)));
|
||||||
d.seedPeers(seedList);
|
d.seedPeers(seedList);
|
||||||
d.awaitTermination(NODES_TO_FIND);
|
d.awaitTermination(NODES_TO_FIND);
|
||||||
}
|
}
|
||||||
|
@@ -235,8 +235,10 @@ public class NodeInfo extends Node {
|
|||||||
String rpcVersion = json.getString("jsonrpc");
|
String rpcVersion = json.getString("jsonrpc");
|
||||||
if (!RPC_VERSION.equals(rpcVersion))
|
if (!RPC_VERSION.equals(rpcVersion))
|
||||||
return false;
|
return false;
|
||||||
final JSONObject header = json.getJSONObject(
|
final JSONObject result = json.getJSONObject("result");
|
||||||
"result").getJSONObject("block_header");
|
if (!result.has("credits")) // introduced in monero v0.15.0
|
||||||
|
return false;
|
||||||
|
final JSONObject header = result.getJSONObject("block_header");
|
||||||
height = header.getLong("height");
|
height = header.getLong("height");
|
||||||
timestamp = header.getLong("timestamp");
|
timestamp = header.getLong("timestamp");
|
||||||
majorVersion = header.getInt("major_version");
|
majorVersion = header.getInt("major_version");
|
||||||
|
@@ -140,28 +140,12 @@ public class SendAddressWizardFragment extends SendWizardFragment {
|
|||||||
next = null;
|
next = null;
|
||||||
} else {
|
} else {
|
||||||
// maybe a bip72 or 70 URI
|
// maybe a bip72 or 70 URI
|
||||||
String bip70 = PaymentProtocolHelper.getBip70(enteredAddress);
|
final String bip70 = PaymentProtocolHelper.getBip70(enteredAddress);
|
||||||
if (bip70 != null) {
|
if (bip70 != null) {
|
||||||
// looks good - resolve through xmr.to
|
// looks good - resolve through xmr.to
|
||||||
processBip70(bip70);
|
processBip70(bip70);
|
||||||
next = null;
|
|
||||||
} else if (checkAddress()) {
|
|
||||||
if (llPaymentId.getVisibility() == View.VISIBLE) {
|
|
||||||
next = etPaymentId;
|
|
||||||
} else {
|
|
||||||
next = etNotes;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (next != null) {
|
|
||||||
final View focus = next;
|
|
||||||
etAddress.post(new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
focus.requestFocus();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -176,6 +160,7 @@ public class SendAddressWizardFragment extends SendWizardFragment {
|
|||||||
Timber.d("isIntegratedAddress");
|
Timber.d("isIntegratedAddress");
|
||||||
etPaymentId.getEditText().getText().clear();
|
etPaymentId.getEditText().getText().clear();
|
||||||
llPaymentId.setVisibility(View.INVISIBLE);
|
llPaymentId.setVisibility(View.INVISIBLE);
|
||||||
|
etAddress.setError(getString(R.string.info_paymentid_integrated));
|
||||||
tvPaymentIdIntegrated.setVisibility(View.VISIBLE);
|
tvPaymentIdIntegrated.setVisibility(View.VISIBLE);
|
||||||
llXmrTo.setVisibility(View.INVISIBLE);
|
llXmrTo.setVisibility(View.INVISIBLE);
|
||||||
sendListener.setMode(SendFragment.Mode.XMR);
|
sendListener.setMode(SendFragment.Mode.XMR);
|
||||||
@@ -208,10 +193,21 @@ public class SendAddressWizardFragment extends SendWizardFragment {
|
|||||||
if (clip == null) return;
|
if (clip == null) return;
|
||||||
// clean it up
|
// clean it up
|
||||||
final String address = clip.replaceAll("[^0-9A-Z-a-z]", "");
|
final String address = clip.replaceAll("[^0-9A-Z-a-z]", "");
|
||||||
if (Wallet.isAddressValid(address) || BitcoinAddressValidator.validate(address))
|
if (Wallet.isAddressValid(address) || BitcoinAddressValidator.validate(address)) {
|
||||||
etAddress.getEditText().setText(address);
|
final EditText et = etAddress.getEditText();
|
||||||
else
|
et.setText(address);
|
||||||
Toast.makeText(getActivity(), getString(R.string.send_address_invalid), Toast.LENGTH_SHORT).show();
|
et.setSelection(et.getText().length());
|
||||||
|
etAddress.requestFocus();
|
||||||
|
} else {
|
||||||
|
final String bip70 = PaymentProtocolHelper.getBip70(clip);
|
||||||
|
if (bip70 != null) {
|
||||||
|
final EditText et = etAddress.getEditText();
|
||||||
|
et.setText(clip);
|
||||||
|
et.setSelection(et.getText().length());
|
||||||
|
processBip70(bip70);
|
||||||
|
} else
|
||||||
|
Toast.makeText(getActivity(), getString(R.string.send_address_invalid), Toast.LENGTH_SHORT).show();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -248,7 +244,10 @@ public class SendAddressWizardFragment extends SendWizardFragment {
|
|||||||
bPaymentId.setOnClickListener(new View.OnClickListener() {
|
bPaymentId.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
etPaymentId.getEditText().setText((Wallet.generatePaymentId()));
|
final EditText et = etPaymentId.getEditText();
|
||||||
|
et.setText((Wallet.generatePaymentId()));
|
||||||
|
et.setSelection(et.getText().length());
|
||||||
|
etPaymentId.requestFocus();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -259,7 +258,6 @@ public class SendAddressWizardFragment extends SendWizardFragment {
|
|||||||
if ((event != null && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER) && (event.getAction() == KeyEvent.ACTION_DOWN))
|
if ((event != null && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER) && (event.getAction() == KeyEvent.ACTION_DOWN))
|
||||||
|| (actionId == EditorInfo.IME_ACTION_DONE)) {
|
|| (actionId == EditorInfo.IME_ACTION_DONE)) {
|
||||||
etDummy.requestFocus();
|
etDummy.requestFocus();
|
||||||
Helper.hideKeyboard(getActivity());
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@@ -277,7 +275,6 @@ public class SendAddressWizardFragment extends SendWizardFragment {
|
|||||||
etDummy = view.findViewById(R.id.etDummy);
|
etDummy = view.findViewById(R.id.etDummy);
|
||||||
etDummy.setRawInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
|
etDummy.setRawInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
|
||||||
etDummy.requestFocus();
|
etDummy.requestFocus();
|
||||||
Helper.hideKeyboard(getActivity());
|
|
||||||
|
|
||||||
View tvNfc = view.findViewById(R.id.tvNfc);
|
View tvNfc = view.findViewById(R.id.tvNfc);
|
||||||
NfcManager manager = (NfcManager) getContext().getSystemService(Context.NFC_SERVICE);
|
NfcManager manager = (NfcManager) getContext().getSystemService(Context.NFC_SERVICE);
|
||||||
@@ -551,7 +548,6 @@ public class SendAddressWizardFragment extends SendWizardFragment {
|
|||||||
public void onResumeFragment() {
|
public void onResumeFragment() {
|
||||||
super.onResumeFragment();
|
super.onResumeFragment();
|
||||||
Timber.d("onResumeFragment()");
|
Timber.d("onResumeFragment()");
|
||||||
Helper.hideKeyboard(getActivity());
|
|
||||||
etDummy.requestFocus();
|
etDummy.requestFocus();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -21,8 +21,6 @@ import android.view.LayoutInflater;
|
|||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.widget.ImageButton;
|
import android.widget.ImageButton;
|
||||||
import android.widget.ImageView;
|
|
||||||
import android.widget.LinearLayout;
|
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import com.m2049r.xmrwallet.R;
|
import com.m2049r.xmrwallet.R;
|
||||||
@@ -30,8 +28,7 @@ import com.m2049r.xmrwallet.data.BarcodeData;
|
|||||||
import com.m2049r.xmrwallet.data.TxData;
|
import com.m2049r.xmrwallet.data.TxData;
|
||||||
import com.m2049r.xmrwallet.model.Wallet;
|
import com.m2049r.xmrwallet.model.Wallet;
|
||||||
import com.m2049r.xmrwallet.util.Helper;
|
import com.m2049r.xmrwallet.util.Helper;
|
||||||
import com.m2049r.xmrwallet.widget.ExchangeTextView;
|
import com.m2049r.xmrwallet.widget.ExchangeEditText;
|
||||||
import com.m2049r.xmrwallet.widget.NumberPadView;
|
|
||||||
|
|
||||||
import timber.log.Timber;
|
import timber.log.Timber;
|
||||||
|
|
||||||
@@ -59,8 +56,7 @@ public class SendAmountWizardFragment extends SendWizardFragment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private TextView tvFunds;
|
private TextView tvFunds;
|
||||||
private ExchangeTextView evAmount;
|
private ExchangeEditText etAmount;
|
||||||
private View llAmount;
|
|
||||||
private View rlSweep;
|
private View rlSweep;
|
||||||
private ImageButton ibSweep;
|
private ImageButton ibSweep;
|
||||||
|
|
||||||
@@ -75,12 +71,9 @@ public class SendAmountWizardFragment extends SendWizardFragment {
|
|||||||
View view = inflater.inflate(R.layout.fragment_send_amount, container, false);
|
View view = inflater.inflate(R.layout.fragment_send_amount, container, false);
|
||||||
|
|
||||||
tvFunds = view.findViewById(R.id.tvFunds);
|
tvFunds = view.findViewById(R.id.tvFunds);
|
||||||
|
etAmount = view.findViewById(R.id.etAmount);
|
||||||
evAmount = view.findViewById(R.id.evAmount);
|
|
||||||
((NumberPadView) view.findViewById(R.id.numberPad)).setListener(evAmount);
|
|
||||||
|
|
||||||
rlSweep = view.findViewById(R.id.rlSweep);
|
rlSweep = view.findViewById(R.id.rlSweep);
|
||||||
llAmount = view.findViewById(R.id.llAmount);
|
|
||||||
view.findViewById(R.id.ivSweep).setOnClickListener(new View.OnClickListener() {
|
view.findViewById(R.id.ivSweep).setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
@@ -97,8 +90,7 @@ public class SendAmountWizardFragment extends SendWizardFragment {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Helper.hideKeyboard(getActivity());
|
etAmount.requestFocus();
|
||||||
|
|
||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -107,11 +99,11 @@ public class SendAmountWizardFragment extends SendWizardFragment {
|
|||||||
private void sweepAll(boolean spendAllMode) {
|
private void sweepAll(boolean spendAllMode) {
|
||||||
if (spendAllMode) {
|
if (spendAllMode) {
|
||||||
ibSweep.setVisibility(View.INVISIBLE);
|
ibSweep.setVisibility(View.INVISIBLE);
|
||||||
llAmount.setVisibility(View.GONE);
|
etAmount.setVisibility(View.GONE);
|
||||||
rlSweep.setVisibility(View.VISIBLE);
|
rlSweep.setVisibility(View.VISIBLE);
|
||||||
} else {
|
} else {
|
||||||
ibSweep.setVisibility(View.VISIBLE);
|
ibSweep.setVisibility(View.VISIBLE);
|
||||||
llAmount.setVisibility(View.VISIBLE);
|
etAmount.setVisibility(View.VISIBLE);
|
||||||
rlSweep.setVisibility(View.GONE);
|
rlSweep.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
this.spendAllMode = spendAllMode;
|
this.spendAllMode = spendAllMode;
|
||||||
@@ -124,12 +116,12 @@ public class SendAmountWizardFragment extends SendWizardFragment {
|
|||||||
sendListener.getTxData().setAmount(Wallet.SWEEP_ALL);
|
sendListener.getTxData().setAmount(Wallet.SWEEP_ALL);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (!evAmount.validate(maxFunds)) {
|
if (!etAmount.validate(maxFunds)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sendListener != null) {
|
if (sendListener != null) {
|
||||||
String xmr = evAmount.getAmount();
|
String xmr = etAmount.getAmount();
|
||||||
if (xmr != null) {
|
if (xmr != null) {
|
||||||
sendListener.getTxData().setAmount(Wallet.getAmountFromString(xmr));
|
sendListener.getTxData().setAmount(Wallet.getAmountFromString(xmr));
|
||||||
} else {
|
} else {
|
||||||
@@ -146,7 +138,7 @@ public class SendAmountWizardFragment extends SendWizardFragment {
|
|||||||
public void onResumeFragment() {
|
public void onResumeFragment() {
|
||||||
super.onResumeFragment();
|
super.onResumeFragment();
|
||||||
Timber.d("onResumeFragment()");
|
Timber.d("onResumeFragment()");
|
||||||
Helper.hideKeyboard(getActivity());
|
Helper.showKeyboard(getActivity());
|
||||||
final long funds = getTotalFunds();
|
final long funds = getTotalFunds();
|
||||||
maxFunds = 1.0 * funds / 1000000000000L;
|
maxFunds = 1.0 * funds / 1000000000000L;
|
||||||
if (!sendListener.getActivityCallback().isStreetMode()) {
|
if (!sendListener.getActivityCallback().isStreetMode()) {
|
||||||
@@ -157,10 +149,10 @@ public class SendAmountWizardFragment extends SendWizardFragment {
|
|||||||
getString(R.string.unknown_amount)));
|
getString(R.string.unknown_amount)));
|
||||||
}
|
}
|
||||||
// getAmount is null if exchange is in progress
|
// getAmount is null if exchange is in progress
|
||||||
if ((evAmount.getAmount() != null) && evAmount.getAmount().isEmpty()) {
|
if ((etAmount.getAmount() != null) && etAmount.getAmount().isEmpty()) {
|
||||||
final BarcodeData data = sendListener.popBarcodeData();
|
final BarcodeData data = sendListener.popBarcodeData();
|
||||||
if ((data != null) && (data.amount != null)) {
|
if ((data != null) && (data.amount != null)) {
|
||||||
evAmount.setAmount(data.amount);
|
etAmount.setAmount(data.amount);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -31,8 +31,7 @@ import com.m2049r.xmrwallet.data.TxDataBtc;
|
|||||||
import com.m2049r.xmrwallet.model.Wallet;
|
import com.m2049r.xmrwallet.model.Wallet;
|
||||||
import com.m2049r.xmrwallet.util.Helper;
|
import com.m2049r.xmrwallet.util.Helper;
|
||||||
import com.m2049r.xmrwallet.util.OkHttpHelper;
|
import com.m2049r.xmrwallet.util.OkHttpHelper;
|
||||||
import com.m2049r.xmrwallet.widget.ExchangeBtcTextView;
|
import com.m2049r.xmrwallet.widget.ExchangeBtcEditText;
|
||||||
import com.m2049r.xmrwallet.widget.NumberPadView;
|
|
||||||
import com.m2049r.xmrwallet.widget.SendProgressView;
|
import com.m2049r.xmrwallet.widget.SendProgressView;
|
||||||
import com.m2049r.xmrwallet.xmrto.XmrToError;
|
import com.m2049r.xmrwallet.xmrto.XmrToError;
|
||||||
import com.m2049r.xmrwallet.xmrto.XmrToException;
|
import com.m2049r.xmrwallet.xmrto.XmrToException;
|
||||||
@@ -62,8 +61,7 @@ public class SendBtcAmountWizardFragment extends SendWizardFragment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private TextView tvFunds;
|
private TextView tvFunds;
|
||||||
private ExchangeBtcTextView evAmount;
|
private ExchangeBtcEditText etAmount;
|
||||||
private NumberPadView numberPad;
|
|
||||||
|
|
||||||
private TextView tvXmrToParms;
|
private TextView tvXmrToParms;
|
||||||
private SendProgressView evParams;
|
private SendProgressView evParams;
|
||||||
@@ -86,24 +84,20 @@ public class SendBtcAmountWizardFragment extends SendWizardFragment {
|
|||||||
|
|
||||||
tvXmrToParms = view.findViewById(R.id.tvXmrToParms);
|
tvXmrToParms = view.findViewById(R.id.tvXmrToParms);
|
||||||
|
|
||||||
evAmount = view.findViewById(R.id.evAmount);
|
etAmount = view.findViewById(R.id.etAmount);
|
||||||
numberPad = view.findViewById(R.id.numberPad);
|
etAmount.requestFocus();
|
||||||
numberPad.setListener(evAmount);
|
|
||||||
|
|
||||||
Helper.hideKeyboard(getActivity());
|
|
||||||
|
|
||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onValidateFields() {
|
public boolean onValidateFields() {
|
||||||
if (!evAmount.validate(maxBtc, minBtc)) {
|
if (!etAmount.validate(maxBtc, minBtc)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (sendListener != null) {
|
if (sendListener != null) {
|
||||||
TxDataBtc txDataBtc = (TxDataBtc) sendListener.getTxData();
|
TxDataBtc txDataBtc = (TxDataBtc) sendListener.getTxData();
|
||||||
String btcString = evAmount.getAmount();
|
String btcString = etAmount.getAmount();
|
||||||
if (btcString != null) {
|
if (btcString != null) {
|
||||||
try {
|
try {
|
||||||
double btc = Double.parseDouble(btcString);
|
double btc = Double.parseDouble(btcString);
|
||||||
@@ -122,10 +116,12 @@ public class SendBtcAmountWizardFragment extends SendWizardFragment {
|
|||||||
|
|
||||||
private void setBip70Mode() {
|
private void setBip70Mode() {
|
||||||
TxDataBtc txDataBtc = (TxDataBtc) sendListener.getTxData();
|
TxDataBtc txDataBtc = (TxDataBtc) sendListener.getTxData();
|
||||||
if (txDataBtc.getBip70() != null) {
|
if (txDataBtc.getBip70() == null) {
|
||||||
numberPad.setVisibility(View.INVISIBLE);
|
etAmount.setEditable(true);
|
||||||
|
Helper.showKeyboard(getActivity());
|
||||||
} else {
|
} else {
|
||||||
numberPad.setVisibility(View.VISIBLE);
|
etAmount.setEditable(false);
|
||||||
|
Helper.hideKeyboard(getActivity());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -141,7 +137,6 @@ public class SendBtcAmountWizardFragment extends SendWizardFragment {
|
|||||||
public void onResumeFragment() {
|
public void onResumeFragment() {
|
||||||
super.onResumeFragment();
|
super.onResumeFragment();
|
||||||
Timber.d("onResumeFragment()");
|
Timber.d("onResumeFragment()");
|
||||||
Helper.hideKeyboard(getActivity());
|
|
||||||
final long funds = getTotalFunds();
|
final long funds = getTotalFunds();
|
||||||
if (!sendListener.getActivityCallback().isStreetMode()) {
|
if (!sendListener.getActivityCallback().isStreetMode()) {
|
||||||
tvFunds.setText(getString(R.string.send_available,
|
tvFunds.setText(getString(R.string.send_available,
|
||||||
@@ -153,7 +148,7 @@ public class SendBtcAmountWizardFragment extends SendWizardFragment {
|
|||||||
final BarcodeData data = sendListener.popBarcodeData();
|
final BarcodeData data = sendListener.popBarcodeData();
|
||||||
if (data != null) {
|
if (data != null) {
|
||||||
if (data.amount != null) {
|
if (data.amount != null) {
|
||||||
evAmount.setAmount(data.amount);
|
etAmount.setAmount(data.amount);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
setBip70Mode();
|
setBip70Mode();
|
||||||
@@ -171,7 +166,7 @@ public class SendBtcAmountWizardFragment extends SendWizardFragment {
|
|||||||
getView().post(new Runnable() {
|
getView().post(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
evAmount.setRate(1.0d / orderParameters.getPrice());
|
etAmount.setRate(1.0d / orderParameters.getPrice());
|
||||||
NumberFormat df = NumberFormat.getInstance(Locale.US);
|
NumberFormat df = NumberFormat.getInstance(Locale.US);
|
||||||
df.setMaximumFractionDigits(6);
|
df.setMaximumFractionDigits(6);
|
||||||
String min = df.format(orderParameters.getLowerLimit());
|
String min = df.format(orderParameters.getLowerLimit());
|
||||||
@@ -211,7 +206,7 @@ public class SendBtcAmountWizardFragment extends SendWizardFragment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void processOrderParmsError(final Exception ex) {
|
private void processOrderParmsError(final Exception ex) {
|
||||||
evAmount.setRate(0);
|
etAmount.setRate(0);
|
||||||
orderParameters = null;
|
orderParameters = null;
|
||||||
maxBtc = 0;
|
maxBtc = 0;
|
||||||
minBtc = 0;
|
minBtc = 0;
|
||||||
|
@@ -19,9 +19,12 @@
|
|||||||
package com.m2049r.xmrwallet.widget;
|
package com.m2049r.xmrwallet.widget;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.text.Editable;
|
||||||
|
import android.text.TextWatcher;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.widget.ArrayAdapter;
|
import android.widget.ArrayAdapter;
|
||||||
|
import android.widget.EditText;
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
import android.widget.Spinner;
|
import android.widget.Spinner;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
@@ -31,8 +34,7 @@ import com.m2049r.xmrwallet.util.Helper;
|
|||||||
|
|
||||||
import timber.log.Timber;
|
import timber.log.Timber;
|
||||||
|
|
||||||
public class ExchangeBtcTextView extends LinearLayout
|
public class ExchangeBtcEditText extends LinearLayout {
|
||||||
implements NumberPadView.NumberPadListener {
|
|
||||||
|
|
||||||
String btcAmount = null;
|
String btcAmount = null;
|
||||||
String xmrAmount = null;
|
String xmrAmount = null;
|
||||||
@@ -67,7 +69,7 @@ public class ExchangeBtcTextView extends LinearLayout
|
|||||||
}
|
}
|
||||||
|
|
||||||
void shakeAmountField() {
|
void shakeAmountField() {
|
||||||
tvAmountA.startAnimation(Helper.getShakeAnimation(getContext()));
|
etAmountA.startAnimation(Helper.getShakeAnimation(getContext()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void shakeExchangeField() {
|
void shakeExchangeField() {
|
||||||
@@ -86,31 +88,35 @@ public class ExchangeBtcTextView extends LinearLayout
|
|||||||
|
|
||||||
public void setAmount(String btcAmount) {
|
public void setAmount(String btcAmount) {
|
||||||
this.btcAmount = btcAmount;
|
this.btcAmount = btcAmount;
|
||||||
tvAmountA.setText(btcAmount);
|
etAmountA.setText(btcAmount);
|
||||||
xmrAmount = null;
|
xmrAmount = null;
|
||||||
exchange();
|
exchange();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setEditable(boolean editable) {
|
||||||
|
etAmountA.setEnabled(editable);
|
||||||
|
}
|
||||||
|
|
||||||
public String getAmount() {
|
public String getAmount() {
|
||||||
return btcAmount;
|
return btcAmount;
|
||||||
}
|
}
|
||||||
|
|
||||||
TextView tvAmountA;
|
EditText etAmountA;
|
||||||
TextView tvAmountB;
|
TextView tvAmountB;
|
||||||
Spinner sCurrencyA;
|
Spinner sCurrencyA;
|
||||||
Spinner sCurrencyB;
|
Spinner sCurrencyB;
|
||||||
|
|
||||||
public ExchangeBtcTextView(Context context) {
|
public ExchangeBtcEditText(Context context) {
|
||||||
super(context);
|
super(context);
|
||||||
initializeViews(context);
|
initializeViews(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ExchangeBtcTextView(Context context, AttributeSet attrs) {
|
public ExchangeBtcEditText(Context context, AttributeSet attrs) {
|
||||||
super(context, attrs);
|
super(context, attrs);
|
||||||
initializeViews(context);
|
initializeViews(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ExchangeBtcTextView(Context context,
|
public ExchangeBtcEditText(Context context,
|
||||||
AttributeSet attrs,
|
AttributeSet attrs,
|
||||||
int defStyle) {
|
int defStyle) {
|
||||||
super(context, attrs, defStyle);
|
super(context, attrs, defStyle);
|
||||||
@@ -125,13 +131,28 @@ public class ExchangeBtcTextView extends LinearLayout
|
|||||||
private void initializeViews(Context context) {
|
private void initializeViews(Context context) {
|
||||||
LayoutInflater inflater = (LayoutInflater) context
|
LayoutInflater inflater = (LayoutInflater) context
|
||||||
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
|
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
|
||||||
inflater.inflate(R.layout.view_exchange_btc_text, this);
|
inflater.inflate(R.layout.view_exchange_btc_edit, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onFinishInflate() {
|
protected void onFinishInflate() {
|
||||||
super.onFinishInflate();
|
super.onFinishInflate();
|
||||||
tvAmountA = findViewById(R.id.tvAmountA);
|
etAmountA = findViewById(R.id.etAmountA);
|
||||||
|
etAmountA.addTextChangedListener(new TextWatcher() {
|
||||||
|
@Override
|
||||||
|
public void afterTextChanged(Editable s) {
|
||||||
|
exchange();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
tvAmountB = findViewById(R.id.tvAmountB);
|
tvAmountB = findViewById(R.id.tvAmountB);
|
||||||
sCurrencyA = findViewById(R.id.sCurrencyA);
|
sCurrencyA = findViewById(R.id.sCurrencyA);
|
||||||
sCurrencyB = findViewById(R.id.sCurrencyB);
|
sCurrencyB = findViewById(R.id.sCurrencyB);
|
||||||
@@ -146,12 +167,14 @@ public class ExchangeBtcTextView extends LinearLayout
|
|||||||
new String[]{"XMR"});
|
new String[]{"XMR"});
|
||||||
sCurrencyB.setAdapter(xmrAdapter);
|
sCurrencyB.setAdapter(xmrAdapter);
|
||||||
sCurrencyB.setEnabled(false);
|
sCurrencyB.setEnabled(false);
|
||||||
|
etAmountA.setFocusable(true);
|
||||||
|
etAmountA.setFocusableInTouchMode(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
double xmrBtcRate = 0;
|
double xmrBtcRate = 0;
|
||||||
|
|
||||||
public void exchange() {
|
public void exchange() {
|
||||||
btcAmount = tvAmountA.getText().toString();
|
btcAmount = etAmountA.getText().toString();
|
||||||
if (!btcAmount.isEmpty() && (xmrBtcRate > 0)) {
|
if (!btcAmount.isEmpty() && (xmrBtcRate > 0)) {
|
||||||
double xmr = xmrBtcRate * Double.parseDouble(btcAmount);
|
double xmr = xmrBtcRate * Double.parseDouble(btcAmount);
|
||||||
xmrAmount = Helper.getFormattedAmount(xmr, true);
|
xmrAmount = Helper.getFormattedAmount(xmr, true);
|
||||||
@@ -161,38 +184,4 @@ public class ExchangeBtcTextView extends LinearLayout
|
|||||||
tvAmountB.setText(getResources().getString(R.string.send_amount_btc_xmr, xmrAmount));
|
tvAmountB.setText(getResources().getString(R.string.send_amount_btc_xmr, xmrAmount));
|
||||||
Timber.d("%s BTC =%f> %s XMR", btcAmount, xmrBtcRate, xmrAmount);
|
Timber.d("%s BTC =%f> %s XMR", btcAmount, xmrBtcRate, xmrAmount);
|
||||||
}
|
}
|
||||||
|
|
||||||
// deal with attached numpad
|
|
||||||
@Override
|
|
||||||
public void onDigitPressed(final int digit) {
|
|
||||||
tvAmountA.append(String.valueOf(digit));
|
|
||||||
exchange();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onPointPressed() {
|
|
||||||
//TODO locale?
|
|
||||||
if (tvAmountA.getText().toString().indexOf('.') == -1) {
|
|
||||||
if (tvAmountA.getText().toString().isEmpty()) {
|
|
||||||
tvAmountA.append("0");
|
|
||||||
}
|
|
||||||
tvAmountA.append(".");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onBackSpacePressed() {
|
|
||||||
String entry = tvAmountA.getText().toString();
|
|
||||||
int length = entry.length();
|
|
||||||
if (length > 0) {
|
|
||||||
tvAmountA.setText(entry.substring(0, entry.length() - 1));
|
|
||||||
exchange();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onClearAll() {
|
|
||||||
tvAmountA.setText(null);
|
|
||||||
exchange();
|
|
||||||
}
|
|
||||||
}
|
}
|
@@ -21,11 +21,13 @@ package com.m2049r.xmrwallet.widget;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.Looper;
|
import android.os.Looper;
|
||||||
|
import android.text.Editable;
|
||||||
|
import android.text.TextWatcher;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.AdapterView;
|
import android.widget.AdapterView;
|
||||||
import android.widget.ImageButton;
|
import android.widget.EditText;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
import android.widget.ProgressBar;
|
import android.widget.ProgressBar;
|
||||||
@@ -43,10 +45,7 @@ import java.util.Locale;
|
|||||||
|
|
||||||
import timber.log.Timber;
|
import timber.log.Timber;
|
||||||
|
|
||||||
public class ExchangeTextView extends LinearLayout
|
public class ExchangeEditText extends LinearLayout {
|
||||||
implements NumberPadView.NumberPadListener {
|
|
||||||
|
|
||||||
private static String MAX = "\u221E";
|
|
||||||
|
|
||||||
String xmrAmount = null;
|
String xmrAmount = null;
|
||||||
String notXmrAmount = null;
|
String notXmrAmount = null;
|
||||||
@@ -89,7 +88,7 @@ public class ExchangeTextView extends LinearLayout
|
|||||||
}
|
}
|
||||||
|
|
||||||
void shakeAmountField() {
|
void shakeAmountField() {
|
||||||
tvAmountA.startAnimation(Helper.getShakeAnimation(getContext()));
|
etAmountA.startAnimation(Helper.getShakeAnimation(getContext()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void shakeExchangeField() {
|
void shakeExchangeField() {
|
||||||
@@ -99,7 +98,7 @@ public class ExchangeTextView extends LinearLayout
|
|||||||
public void setAmount(String xmrAmount) {
|
public void setAmount(String xmrAmount) {
|
||||||
if (xmrAmount != null) {
|
if (xmrAmount != null) {
|
||||||
setCurrencyA(0);
|
setCurrencyA(0);
|
||||||
tvAmountA.setText(xmrAmount);
|
etAmountA.setText(xmrAmount);
|
||||||
setXmr(xmrAmount);
|
setXmr(xmrAmount);
|
||||||
this.notXmrAmount = null;
|
this.notXmrAmount = null;
|
||||||
doExchange();
|
doExchange();
|
||||||
@@ -114,7 +113,7 @@ public class ExchangeTextView extends LinearLayout
|
|||||||
return xmrAmount;
|
return xmrAmount;
|
||||||
}
|
}
|
||||||
|
|
||||||
TextView tvAmountA;
|
EditText etAmountA;
|
||||||
TextView tvAmountB;
|
TextView tvAmountB;
|
||||||
Spinner sCurrencyA;
|
Spinner sCurrencyA;
|
||||||
Spinner sCurrencyB;
|
Spinner sCurrencyB;
|
||||||
@@ -146,17 +145,17 @@ public class ExchangeTextView extends LinearLayout
|
|||||||
return sCurrencyB.getSelectedItemPosition();
|
return sCurrencyB.getSelectedItemPosition();
|
||||||
}
|
}
|
||||||
|
|
||||||
public ExchangeTextView(Context context) {
|
public ExchangeEditText(Context context) {
|
||||||
super(context);
|
super(context);
|
||||||
initializeViews(context);
|
initializeViews(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ExchangeTextView(Context context, AttributeSet attrs) {
|
public ExchangeEditText(Context context, AttributeSet attrs) {
|
||||||
super(context, attrs);
|
super(context, attrs);
|
||||||
initializeViews(context);
|
initializeViews(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ExchangeTextView(Context context,
|
public ExchangeEditText(Context context,
|
||||||
AttributeSet attrs,
|
AttributeSet attrs,
|
||||||
int defStyle) {
|
int defStyle) {
|
||||||
super(context, attrs, defStyle);
|
super(context, attrs, defStyle);
|
||||||
@@ -171,13 +170,28 @@ public class ExchangeTextView extends LinearLayout
|
|||||||
private void initializeViews(Context context) {
|
private void initializeViews(Context context) {
|
||||||
LayoutInflater inflater = (LayoutInflater) context
|
LayoutInflater inflater = (LayoutInflater) context
|
||||||
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
|
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
|
||||||
inflater.inflate(R.layout.view_exchange_text, this);
|
inflater.inflate(R.layout.view_exchange_edit, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onFinishInflate() {
|
protected void onFinishInflate() {
|
||||||
super.onFinishInflate();
|
super.onFinishInflate();
|
||||||
tvAmountA = findViewById(R.id.tvAmountA);
|
etAmountA = findViewById(R.id.etAmountA);
|
||||||
|
etAmountA.addTextChangedListener(new TextWatcher() {
|
||||||
|
@Override
|
||||||
|
public void afterTextChanged(Editable s) {
|
||||||
|
doExchange();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
tvAmountB = findViewById(R.id.tvAmountB);
|
tvAmountB = findViewById(R.id.tvAmountB);
|
||||||
sCurrencyA = findViewById(R.id.sCurrencyA);
|
sCurrencyA = findViewById(R.id.sCurrencyA);
|
||||||
sCurrencyB = findViewById(R.id.sCurrencyB);
|
sCurrencyB = findViewById(R.id.sCurrencyB);
|
||||||
@@ -317,7 +331,7 @@ public class ExchangeTextView extends LinearLayout
|
|||||||
|
|
||||||
boolean prepareExchange() {
|
boolean prepareExchange() {
|
||||||
Timber.d("prepareExchange()");
|
Timber.d("prepareExchange()");
|
||||||
String enteredAmount = tvAmountA.getText().toString();
|
String enteredAmount = etAmountA.getText().toString();
|
||||||
if (!enteredAmount.isEmpty()) {
|
if (!enteredAmount.isEmpty()) {
|
||||||
String cleanAmount = "";
|
String cleanAmount = "";
|
||||||
if (getCurrencyA() == 0) {
|
if (getCurrencyA() == 0) {
|
||||||
@@ -426,37 +440,4 @@ public class ExchangeTextView extends LinearLayout
|
|||||||
public void setOnFailedExchangeListener(OnFailedExchangeListener listener) {
|
public void setOnFailedExchangeListener(OnFailedExchangeListener listener) {
|
||||||
onFailedExchangeListener = listener;
|
onFailedExchangeListener = listener;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onDigitPressed(final int digit) {
|
|
||||||
tvAmountA.append(String.valueOf(digit));
|
|
||||||
doExchange();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onPointPressed() {
|
|
||||||
//TODO locale?
|
|
||||||
if (tvAmountA.getText().toString().indexOf('.') == -1) {
|
|
||||||
if (tvAmountA.getText().toString().isEmpty()) {
|
|
||||||
tvAmountA.append("0");
|
|
||||||
}
|
|
||||||
tvAmountA.append(".");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onBackSpacePressed() {
|
|
||||||
String entry = tvAmountA.getText().toString();
|
|
||||||
int length = entry.length();
|
|
||||||
if (length > 0) {
|
|
||||||
tvAmountA.setText(entry.substring(0, entry.length() - 1));
|
|
||||||
doExchange();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onClearAll() {
|
|
||||||
tvAmountA.setText(null);
|
|
||||||
doExchange();
|
|
||||||
}
|
|
||||||
}
|
}
|
@@ -48,18 +48,9 @@ import java.util.Locale;
|
|||||||
|
|
||||||
import timber.log.Timber;
|
import timber.log.Timber;
|
||||||
|
|
||||||
// TODO combine this with ExchangeTextView
|
public class ExchangeView extends LinearLayout {
|
||||||
|
String xmrAmount = null;
|
||||||
public class ExchangeView extends LinearLayout
|
String notXmrAmount = null;
|
||||||
implements NumberPadView.NumberPadListener {
|
|
||||||
|
|
||||||
public void enableSoftKeyboard(final boolean isEnabled) {
|
|
||||||
etAmount.getEditText().setShowSoftInputOnFocus(isEnabled);
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean focus() {
|
|
||||||
return etAmount.requestFocus();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void enable(boolean enable) {
|
public void enable(boolean enable) {
|
||||||
etAmount.setEnabled(enable);
|
etAmount.setEnabled(enable);
|
||||||
@@ -67,9 +58,6 @@ public class ExchangeView extends LinearLayout
|
|||||||
sCurrencyB.setEnabled(enable);
|
sCurrencyB.setEnabled(enable);
|
||||||
}
|
}
|
||||||
|
|
||||||
String xmrAmount = null;
|
|
||||||
String notXmrAmount = null;
|
|
||||||
|
|
||||||
void setXmr(String xmr) {
|
void setXmr(String xmr) {
|
||||||
xmrAmount = xmr;
|
xmrAmount = xmr;
|
||||||
if (onNewAmountListener != null) {
|
if (onNewAmountListener != null) {
|
||||||
@@ -482,31 +470,4 @@ public class ExchangeView extends LinearLayout
|
|||||||
public void setOnFailedExchangeListener(OnFailedExchangeListener listener) {
|
public void setOnFailedExchangeListener(OnFailedExchangeListener listener) {
|
||||||
onFailedExchangeListener = listener;
|
onFailedExchangeListener = listener;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onDigitPressed(final int digit) {
|
|
||||||
etAmount.getEditText().append(String.valueOf(digit));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onPointPressed() {
|
|
||||||
//TODO locale?
|
|
||||||
if (etAmount.getEditText().getText().toString().indexOf('.') == -1) {
|
|
||||||
etAmount.getEditText().append(".");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onBackSpacePressed() {
|
|
||||||
Editable editable = etAmount.getEditText().getText();
|
|
||||||
int length = editable.length();
|
|
||||||
if (length > 0) {
|
|
||||||
editable.delete(length - 1, length);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onClearAll() {
|
|
||||||
etAmount.getEditText().getText().clear();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -1,87 +0,0 @@
|
|||||||
package com.m2049r.xmrwallet.widget;
|
|
||||||
|
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.support.annotation.Nullable;
|
|
||||||
import android.util.AttributeSet;
|
|
||||||
import android.view.View;
|
|
||||||
import android.widget.LinearLayout;
|
|
||||||
|
|
||||||
import com.m2049r.xmrwallet.R;
|
|
||||||
|
|
||||||
public class NumberPadView extends LinearLayout
|
|
||||||
implements View.OnClickListener, View.OnLongClickListener {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onClick(final View view) {
|
|
||||||
if (listener == null) {
|
|
||||||
throw new IllegalArgumentException("NumberPadListener has to be set, use setListener() to set it.");
|
|
||||||
}
|
|
||||||
switch (view.getId()) {
|
|
||||||
case R.id.numberPadPoint:
|
|
||||||
listener.onPointPressed();
|
|
||||||
break;
|
|
||||||
case R.id.numberPadBackSpace:
|
|
||||||
listener.onBackSpacePressed();
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
if (view.getTag() != null) {
|
|
||||||
listener.onDigitPressed(Integer.parseInt(view.getTag().toString()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onLongClick(final View view) {
|
|
||||||
if (view.getId() == R.id.numberPadBackSpace) {
|
|
||||||
listener.onClearAll();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setListener(final NumberPadListener listener) {
|
|
||||||
this.listener = listener;
|
|
||||||
}
|
|
||||||
|
|
||||||
public interface NumberPadListener {
|
|
||||||
void onDigitPressed(final int digit);
|
|
||||||
|
|
||||||
void onBackSpacePressed();
|
|
||||||
|
|
||||||
void onPointPressed();
|
|
||||||
|
|
||||||
void onClearAll();
|
|
||||||
}
|
|
||||||
|
|
||||||
private NumberPadListener listener;
|
|
||||||
|
|
||||||
public NumberPadView(final Context context) {
|
|
||||||
this(context, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
public NumberPadView(final Context context,
|
|
||||||
@Nullable final AttributeSet attrs) {
|
|
||||||
this(context, attrs, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
public NumberPadView(final Context context, @Nullable final AttributeSet attrs,
|
|
||||||
final int defStyleAttr) {
|
|
||||||
super(context, attrs, defStyleAttr);
|
|
||||||
final View view = View.inflate(context, R.layout.view_number_pad, this);
|
|
||||||
setOrientation(VERTICAL);
|
|
||||||
view.findViewById(R.id.numberPad0).setOnClickListener(this);
|
|
||||||
view.findViewById(R.id.numberPad1).setOnClickListener(this);
|
|
||||||
view.findViewById(R.id.numberPad2).setOnClickListener(this);
|
|
||||||
view.findViewById(R.id.numberPad3).setOnClickListener(this);
|
|
||||||
view.findViewById(R.id.numberPad4).setOnClickListener(this);
|
|
||||||
view.findViewById(R.id.numberPad5).setOnClickListener(this);
|
|
||||||
view.findViewById(R.id.numberPad6).setOnClickListener(this);
|
|
||||||
view.findViewById(R.id.numberPad7).setOnClickListener(this);
|
|
||||||
view.findViewById(R.id.numberPad8).setOnClickListener(this);
|
|
||||||
view.findViewById(R.id.numberPad9).setOnClickListener(this);
|
|
||||||
view.findViewById(R.id.numberPadPoint).setOnClickListener(this);
|
|
||||||
view.findViewById(R.id.numberPadBackSpace).setOnClickListener(this);
|
|
||||||
view.findViewById(R.id.numberPadBackSpace).setOnLongClickListener(this);
|
|
||||||
}
|
|
||||||
}
|
|
@@ -18,11 +18,13 @@
|
|||||||
|
|
||||||
<android.support.design.widget.TextInputLayout
|
<android.support.design.widget.TextInputLayout
|
||||||
android:id="@+id/etWalletName"
|
android:id="@+id/etWalletName"
|
||||||
|
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
app:counterEnabled="true"
|
app:counterEnabled="true"
|
||||||
app:counterMaxLength="20"
|
app:counterMaxLength="20"
|
||||||
|
android:layout_marginEnd="4dp"
|
||||||
app:errorEnabled="true">
|
app:errorEnabled="true">
|
||||||
|
|
||||||
<android.support.design.widget.TextInputEditText
|
<android.support.design.widget.TextInputEditText
|
||||||
@@ -39,7 +41,9 @@
|
|||||||
|
|
||||||
<android.support.design.widget.TextInputLayout
|
<android.support.design.widget.TextInputLayout
|
||||||
android:id="@+id/etWalletPassword"
|
android:id="@+id/etWalletPassword"
|
||||||
|
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
|
android:layout_marginStart="4dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="1">
|
android:layout_weight="1">
|
||||||
|
|
||||||
@@ -78,6 +82,7 @@
|
|||||||
|
|
||||||
<android.support.design.widget.TextInputLayout
|
<android.support.design.widget.TextInputLayout
|
||||||
android:id="@+id/etWalletMnemonic"
|
android:id="@+id/etWalletMnemonic"
|
||||||
|
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
@@ -95,6 +100,7 @@
|
|||||||
|
|
||||||
<android.support.design.widget.TextInputLayout
|
<android.support.design.widget.TextInputLayout
|
||||||
android:id="@+id/etWalletAddress"
|
android:id="@+id/etWalletAddress"
|
||||||
|
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
@@ -115,6 +121,7 @@
|
|||||||
|
|
||||||
<android.support.design.widget.TextInputLayout
|
<android.support.design.widget.TextInputLayout
|
||||||
android:id="@+id/etWalletViewKey"
|
android:id="@+id/etWalletViewKey"
|
||||||
|
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
@@ -134,6 +141,7 @@
|
|||||||
|
|
||||||
<android.support.design.widget.TextInputLayout
|
<android.support.design.widget.TextInputLayout
|
||||||
android:id="@+id/etWalletSpendKey"
|
android:id="@+id/etWalletSpendKey"
|
||||||
|
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
@@ -153,6 +161,7 @@
|
|||||||
|
|
||||||
<android.support.design.widget.TextInputLayout
|
<android.support.design.widget.TextInputLayout
|
||||||
android:id="@+id/etWalletRestoreHeight"
|
android:id="@+id/etWalletRestoreHeight"
|
||||||
|
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
|
@@ -84,16 +84,17 @@
|
|||||||
android:id="@+id/evAmount"
|
android:id="@+id/evAmount"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginBottom="16dp"
|
|
||||||
android:layout_marginTop="16dp"
|
android:layout_marginTop="16dp"
|
||||||
|
android:layout_marginBottom="16dp"
|
||||||
android:orientation="vertical" />
|
android:orientation="vertical" />
|
||||||
|
|
||||||
<android.support.design.widget.TextInputLayout
|
<android.support.design.widget.TextInputLayout
|
||||||
android:id="@+id/etNotes"
|
android:id="@+id/etNotes"
|
||||||
|
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
<EditText
|
<android.support.design.widget.TextInputEditText
|
||||||
style="@style/MoneroEdit"
|
style="@style/MoneroEdit"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
@@ -101,7 +102,6 @@
|
|||||||
android:imeOptions="actionDone"
|
android:imeOptions="actionDone"
|
||||||
android:inputType="textMultiLine"
|
android:inputType="textMultiLine"
|
||||||
android:textAlignment="textStart" />
|
android:textAlignment="textStart" />
|
||||||
|
|
||||||
</android.support.design.widget.TextInputLayout>
|
</android.support.design.widget.TextInputLayout>
|
||||||
|
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
@@ -128,8 +128,8 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
android:drawablePadding="4dp"
|
|
||||||
android:drawableStart="@drawable/ic_info_outline_gray_24dp"
|
android:drawableStart="@drawable/ic_info_outline_gray_24dp"
|
||||||
|
android:drawablePadding="4dp"
|
||||||
android:text="@string/label_receive_info_gen_qr_code"
|
android:text="@string/label_receive_info_gen_qr_code"
|
||||||
android:textAlignment="center"
|
android:textAlignment="center"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
@@ -149,8 +149,8 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_alignParentBottom="true"
|
android:layout_alignParentBottom="true"
|
||||||
android:layout_centerHorizontal="true"
|
android:layout_centerHorizontal="true"
|
||||||
android:drawablePadding="8dp"
|
|
||||||
android:drawableStart="@drawable/ic_nfc_black_24dp"
|
android:drawableStart="@drawable/ic_nfc_black_24dp"
|
||||||
|
android:drawablePadding="8dp"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:text="@string/nfc_tag_tap"
|
android:text="@string/nfc_tag_tap"
|
||||||
android:visibility="visible" />
|
android:visibility="visible" />
|
||||||
|
@@ -29,6 +29,7 @@
|
|||||||
android:orientation="horizontal">
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<android.support.design.widget.TextInputLayout
|
<android.support.design.widget.TextInputLayout
|
||||||
|
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox"
|
||||||
android:id="@+id/etAddress"
|
android:id="@+id/etAddress"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
@@ -75,7 +76,7 @@
|
|||||||
android:drawableStart="@drawable/ic_check_gray_24dp"
|
android:drawableStart="@drawable/ic_check_gray_24dp"
|
||||||
android:drawablePadding="8dp"
|
android:drawablePadding="8dp"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:text="@string/info_paymentid_intergrated"
|
android:text="@string/info_paymentid_integrated"
|
||||||
android:textSize="18sp"
|
android:textSize="18sp"
|
||||||
android:visibility="invisible" />
|
android:visibility="invisible" />
|
||||||
|
|
||||||
@@ -118,6 +119,7 @@
|
|||||||
android:visibility="visible">
|
android:visibility="visible">
|
||||||
|
|
||||||
<android.support.design.widget.TextInputLayout
|
<android.support.design.widget.TextInputLayout
|
||||||
|
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox"
|
||||||
android:id="@+id/etPaymentId"
|
android:id="@+id/etPaymentId"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
@@ -153,11 +155,12 @@
|
|||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
|
|
||||||
<android.support.design.widget.TextInputLayout
|
<android.support.design.widget.TextInputLayout
|
||||||
|
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox"
|
||||||
android:id="@+id/etNotes"
|
android:id="@+id/etNotes"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
<EditText
|
<android.support.design.widget.TextInputEditText
|
||||||
style="@style/MoneroEdit"
|
style="@style/MoneroEdit"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
@@ -27,35 +27,19 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_alignParentEnd="true"
|
android:layout_alignParentEnd="true"
|
||||||
android:paddingEnd="12dp"
|
|
||||||
android:paddingStart="12dp"
|
android:paddingStart="12dp"
|
||||||
|
android:paddingEnd="12dp"
|
||||||
android:src="@drawable/ic_all_inclusive_24dp"
|
android:src="@drawable/ic_all_inclusive_24dp"
|
||||||
android:visibility="visible" />
|
android:visibility="visible" />
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<com.m2049r.xmrwallet.widget.ExchangeEditText
|
||||||
android:id="@+id/llAmount"
|
android:id="@+id/etAmount"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical"
|
android:layout_marginTop="16dp"
|
||||||
android:visibility="visible">
|
android:layout_marginBottom="16dp"
|
||||||
|
android:orientation="vertical" />
|
||||||
<com.m2049r.xmrwallet.widget.ExchangeTextView
|
|
||||||
android:id="@+id/evAmount"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginBottom="16dp"
|
|
||||||
android:layout_marginTop="16dp"
|
|
||||||
android:orientation="vertical" />
|
|
||||||
|
|
||||||
<com.m2049r.xmrwallet.widget.NumberPadView
|
|
||||||
android:id="@+id/numberPad"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:background="@color/white"
|
|
||||||
android:gravity="center" />
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
android:id="@+id/rlSweep"
|
android:id="@+id/rlSweep"
|
||||||
|
@@ -53,19 +53,11 @@
|
|||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
|
|
||||||
<com.m2049r.xmrwallet.widget.ExchangeBtcTextView
|
<com.m2049r.xmrwallet.widget.ExchangeBtcEditText
|
||||||
android:id="@+id/evAmount"
|
android:id="@+id/etAmount"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginBottom="16dp"
|
android:layout_marginBottom="16dp"
|
||||||
android:layout_marginTop="16dp"
|
android:layout_marginTop="16dp"
|
||||||
android:orientation="vertical" />
|
android:orientation="vertical" />
|
||||||
|
|
||||||
<com.m2049r.xmrwallet.widget.NumberPadView
|
|
||||||
android:id="@+id/numberPad"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:background="@color/white"
|
|
||||||
android:gravity="center" />
|
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
<ScrollView 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"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
@@ -225,14 +226,20 @@
|
|||||||
android:padding="8sp"
|
android:padding="8sp"
|
||||||
android:text="@string/tx_notes" />
|
android:text="@string/tx_notes" />
|
||||||
|
|
||||||
<EditText
|
<android.support.design.widget.TextInputLayout
|
||||||
android:id="@+id/etTxNotes"
|
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox"
|
||||||
style="@style/MoneroEdit"
|
android:layout_width="match_parent"
|
||||||
android:layout_width="wrap_content"
|
android:layout_height="wrap_content">
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:backgroundTint="@color/moneroGray"
|
<android.support.design.widget.TextInputEditText
|
||||||
android:hint="@string/tx_notes_hint"
|
android:id="@+id/etTxNotes"
|
||||||
android:inputType="textMultiLine" />
|
style="@style/MoneroEdit"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:backgroundTint="@color/moneroGray"
|
||||||
|
android:hint="@string/tx_notes_hint"
|
||||||
|
android:inputType="textMultiLine" />
|
||||||
|
</android.support.design.widget.TextInputLayout>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
|
|
||||||
<TableRow>
|
<TableRow>
|
||||||
|
@@ -12,6 +12,7 @@
|
|||||||
|
|
||||||
<android.support.design.widget.TextInputLayout
|
<android.support.design.widget.TextInputLayout
|
||||||
android:id="@+id/etWalletPasswordA"
|
android:id="@+id/etWalletPasswordA"
|
||||||
|
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
app:errorEnabled="true">
|
app:errorEnabled="true">
|
||||||
@@ -28,6 +29,7 @@
|
|||||||
|
|
||||||
<android.support.design.widget.TextInputLayout
|
<android.support.design.widget.TextInputLayout
|
||||||
android:id="@+id/etWalletPasswordB"
|
android:id="@+id/etWalletPasswordB"
|
||||||
|
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/section_top"
|
android:layout_marginTop="@dimen/section_top"
|
||||||
|
@@ -8,8 +8,8 @@
|
|||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="16dp"
|
|
||||||
android:layout_marginStart="16dp"
|
android:layout_marginStart="16dp"
|
||||||
|
android:layout_marginTop="16dp"
|
||||||
android:layout_marginEnd="16dp"
|
android:layout_marginEnd="16dp"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
@@ -22,6 +22,7 @@
|
|||||||
|
|
||||||
<android.support.design.widget.TextInputLayout
|
<android.support.design.widget.TextInputLayout
|
||||||
android:id="@+id/etNodeHost"
|
android:id="@+id/etNodeHost"
|
||||||
|
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="8"
|
android:layout_weight="8"
|
||||||
@@ -41,6 +42,7 @@
|
|||||||
|
|
||||||
<android.support.design.widget.TextInputLayout
|
<android.support.design.widget.TextInputLayout
|
||||||
android:id="@+id/etNodePort"
|
android:id="@+id/etNodePort"
|
||||||
|
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="2"
|
android:layout_weight="2"
|
||||||
@@ -61,6 +63,7 @@
|
|||||||
|
|
||||||
<android.support.design.widget.TextInputLayout
|
<android.support.design.widget.TextInputLayout
|
||||||
android:id="@+id/etNodeName"
|
android:id="@+id/etNodeName"
|
||||||
|
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/data_top">
|
android:layout_marginTop="@dimen/data_top">
|
||||||
@@ -85,6 +88,7 @@
|
|||||||
|
|
||||||
<android.support.design.widget.TextInputLayout
|
<android.support.design.widget.TextInputLayout
|
||||||
android:id="@+id/etNodeUser"
|
android:id="@+id/etNodeUser"
|
||||||
|
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="1">
|
android:layout_weight="1">
|
||||||
@@ -103,6 +107,7 @@
|
|||||||
|
|
||||||
<android.support.design.widget.TextInputLayout
|
<android.support.design.widget.TextInputLayout
|
||||||
android:id="@+id/etNodePass"
|
android:id="@+id/etNodePass"
|
||||||
|
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="1">
|
android:layout_weight="1">
|
||||||
@@ -142,8 +147,8 @@
|
|||||||
style="@style/MoneroText.Medium"
|
style="@style/MoneroText.Medium"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="4dp"
|
|
||||||
android:layout_alignBaseline="@+id/tvResultLabel"
|
android:layout_alignBaseline="@+id/tvResultLabel"
|
||||||
|
android:layout_marginStart="4dp"
|
||||||
android:layout_toEndOf="@+id/tvResultLabel"
|
android:layout_toEndOf="@+id/tvResultLabel"
|
||||||
android:textAlignment="textStart"
|
android:textAlignment="textStart"
|
||||||
tools:text="Blockheight: 1710998 (v9), Ping: 187ms" />
|
tools:text="Blockheight: 1710998 (v9), Ping: 187ms" />
|
||||||
|
@@ -20,12 +20,13 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginBottom="16dp"
|
android:layout_marginBottom="16dp"
|
||||||
android:textColor="@color/colorAccent"
|
|
||||||
android:labelFor="@+id/etSeed"
|
android:labelFor="@+id/etSeed"
|
||||||
android:text="@string/prompt_ledger_seed_warn" />
|
android:text="@string/prompt_ledger_seed_warn"
|
||||||
|
android:textColor="@color/colorAccent" />
|
||||||
|
|
||||||
<android.support.design.widget.TextInputLayout
|
<android.support.design.widget.TextInputLayout
|
||||||
android:id="@+id/etSeed"
|
android:id="@+id/etSeed"
|
||||||
|
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
app:errorEnabled="true">
|
app:errorEnabled="true">
|
||||||
@@ -42,6 +43,7 @@
|
|||||||
|
|
||||||
<android.support.design.widget.TextInputLayout
|
<android.support.design.widget.TextInputLayout
|
||||||
android:id="@+id/etPassphrase"
|
android:id="@+id/etPassphrase"
|
||||||
|
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
app:errorEnabled="true">
|
app:errorEnabled="true">
|
||||||
|
@@ -8,10 +8,11 @@
|
|||||||
|
|
||||||
<android.support.design.widget.TextInputLayout
|
<android.support.design.widget.TextInputLayout
|
||||||
android:id="@+id/etPassword"
|
android:id="@+id/etPassword"
|
||||||
|
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
app:passwordToggleEnabled="true"
|
app:errorEnabled="true"
|
||||||
app:errorEnabled="true">
|
app:passwordToggleEnabled="true">
|
||||||
|
|
||||||
<android.support.design.widget.TextInputEditText
|
<android.support.design.widget.TextInputEditText
|
||||||
style="@style/MoneroEdit"
|
style="@style/MoneroEdit"
|
||||||
|
@@ -1,25 +1,32 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:padding="8dp" >
|
android:padding="8dp">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/tvRenameLabel"
|
android:id="@+id/tvRenameLabel"
|
||||||
style="@style/MoneroLabel"
|
style="@style/MoneroLabel"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/prompt_rename"
|
|
||||||
android:labelFor="@+id/etRename"
|
android:labelFor="@+id/etRename"
|
||||||
|
android:text="@string/prompt_rename"
|
||||||
android:textAppearance="?android:attr/textAppearanceLarge" />
|
android:textAppearance="?android:attr/textAppearanceLarge" />
|
||||||
|
|
||||||
<EditText
|
<android.support.design.widget.TextInputLayout
|
||||||
android:id="@+id/etRename"
|
android:id="@+id/etPassword"
|
||||||
style="@style/MoneroEdit"
|
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content">
|
||||||
android:imeOptions="normal"
|
|
||||||
android:inputType="text" />
|
|
||||||
|
|
||||||
|
<android.support.design.widget.TextInputEditText
|
||||||
|
android:id="@+id/etRename"
|
||||||
|
style="@style/MoneroEdit"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:imeOptions="normal"
|
||||||
|
android:inputType="text" />
|
||||||
|
</android.support.design.widget.TextInputLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
@@ -21,6 +21,7 @@
|
|||||||
|
|
||||||
<com.m2049r.xmrwallet.widget.CTextInputLayout
|
<com.m2049r.xmrwallet.widget.CTextInputLayout
|
||||||
android:id="@+id/etAmount"
|
android:id="@+id/etAmount"
|
||||||
|
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="16dp"
|
android:layout_marginStart="16dp"
|
||||||
|
@@ -17,19 +17,27 @@
|
|||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:textAlignment="center" />
|
android:textAlignment="center" />
|
||||||
|
|
||||||
<TextView
|
<android.support.design.widget.TextInputLayout
|
||||||
android:id="@+id/tvAmountA"
|
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox"
|
||||||
style="@style/MoneroText.Balance.Orange"
|
android:layout_width="match_parent"
|
||||||
android:layout_width="0dp"
|
android:layout_height="wrap_content">
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_gravity="center|start"
|
|
||||||
android:layout_marginStart="16dp"
|
|
||||||
android:layout_weight="3"
|
|
||||||
android:hint="@string/send_amount_hint"
|
|
||||||
android:padding="4dp"
|
|
||||||
android:singleLine="true"
|
|
||||||
tools:text="87.00000" />
|
|
||||||
|
|
||||||
|
<android.support.design.widget.TextInputEditText
|
||||||
|
android:id="@+id/etAmountA"
|
||||||
|
style="@style/MoneroText.Balance.Orange"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center|start"
|
||||||
|
android:layout_marginStart="16dp"
|
||||||
|
android:layout_weight="3"
|
||||||
|
android:hint="@string/send_amount_hint"
|
||||||
|
android:imeOptions="actionDone"
|
||||||
|
android:inputType="numberDecimal"
|
||||||
|
android:padding="4dp"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:textAlignment="textStart"
|
||||||
|
tools:text="87.00000" />
|
||||||
|
</android.support.design.widget.TextInputLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
@@ -18,19 +18,26 @@
|
|||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:textAlignment="center" />
|
android:textAlignment="center" />
|
||||||
|
|
||||||
<TextView
|
<android.support.design.widget.TextInputLayout
|
||||||
android:id="@+id/tvAmountA"
|
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox"
|
||||||
style="@style/MoneroText.Balance.Orange"
|
android:layout_width="match_parent"
|
||||||
android:layout_width="0dp"
|
android:layout_height="wrap_content">
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_gravity="center|start"
|
|
||||||
android:layout_marginStart="16dp"
|
|
||||||
android:layout_weight="3"
|
|
||||||
android:hint="@string/send_amount_hint"
|
|
||||||
android:padding="4dp"
|
|
||||||
android:singleLine="true"
|
|
||||||
tools:text="87.00000" />
|
|
||||||
|
|
||||||
|
<android.support.design.widget.TextInputEditText
|
||||||
|
android:id="@+id/etAmountA"
|
||||||
|
style="@style/MoneroText.Balance.Orange"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center|start"
|
||||||
|
android:layout_marginStart="16dp"
|
||||||
|
android:layout_weight="3"
|
||||||
|
android:imeOptions="actionDone"
|
||||||
|
android:inputType="numberDecimal"
|
||||||
|
android:padding="4dp"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:textAlignment="textStart"
|
||||||
|
tools:text="87.00000" />
|
||||||
|
</android.support.design.widget.TextInputLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
@@ -57,7 +64,6 @@
|
|||||||
android:layout_gravity="center|start"
|
android:layout_gravity="center|start"
|
||||||
android:layout_marginStart="16dp"
|
android:layout_marginStart="16dp"
|
||||||
android:layout_weight="3"
|
android:layout_weight="3"
|
||||||
android:hint="@string/send_amount_hint"
|
|
||||||
android:padding="4dp"
|
android:padding="4dp"
|
||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
tools:text="87.00000" />
|
tools:text="87.00000" />
|
||||||
@@ -66,8 +72,8 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
android:layout_marginEnd="0sp"
|
android:layout_marginStart="8sp"
|
||||||
android:layout_marginStart="8sp">
|
android:layout_marginEnd="0sp">
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/evExchange"
|
android:id="@+id/evExchange"
|
@@ -1,144 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<merge xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:orientation="vertical"
|
|
||||||
tools:showIn="LinearLayout">
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="0dp"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:gravity="center">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/numberPad1"
|
|
||||||
style="@style/MoneroLabel.NumPad"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:tag="1"
|
|
||||||
android:text="1" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/numberPad2"
|
|
||||||
style="@style/MoneroLabel.NumPad"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:tag="2"
|
|
||||||
android:text="2" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/numberPad3"
|
|
||||||
style="@style/MoneroLabel.NumPad"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:tag="3"
|
|
||||||
android:text="3" />
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="0dp"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:gravity="center">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/numberPad4"
|
|
||||||
style="@style/MoneroLabel.NumPad"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:tag="4"
|
|
||||||
android:text="4" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/numberPad5"
|
|
||||||
style="@style/MoneroLabel.NumPad"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:tag="5"
|
|
||||||
android:text="5" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/numberPad6"
|
|
||||||
style="@style/MoneroLabel.NumPad"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:tag="6"
|
|
||||||
android:text="6" />
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="0dp"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:gravity="center">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/numberPad7"
|
|
||||||
style="@style/MoneroLabel.NumPad"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:tag="7"
|
|
||||||
android:text="7" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/numberPad8"
|
|
||||||
style="@style/MoneroLabel.NumPad"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:tag="8"
|
|
||||||
android:text="8" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/numberPad9"
|
|
||||||
style="@style/MoneroLabel.NumPad"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:tag="9"
|
|
||||||
android:text="9" />
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="0dp"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:gravity="center">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/numberPadPoint"
|
|
||||||
style="@style/MoneroLabel.NumPad"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:text="." />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/numberPad0"
|
|
||||||
style="@style/MoneroLabel.NumPad"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:tag="0"
|
|
||||||
android:text="0" />
|
|
||||||
|
|
||||||
<ImageView
|
|
||||||
android:id="@+id/numberPadBackSpace"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="36sp"
|
|
||||||
android:layout_gravity="center"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:background="?android:attr/selectableItemBackgroundBorderless"
|
|
||||||
android:src="@drawable/ic_backspace_black_36dp" />
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
</merge>
|
|
@@ -19,19 +19,19 @@
|
|||||||
ús i divulgació de la informació personal que rebem dels usuaris de la nostra
|
ús i divulgació de la informació personal que rebem dels usuaris de la nostra
|
||||||
aplicació (monerujo: Monero Wallet).
|
aplicació (monerujo: Monero Wallet).
|
||||||
</p>
|
</p>
|
||||||
<p>Mitjançant l'ús d'aquesta aplicació vostè accepta la recopilació i l’ús de la informació d’acord amb aquesta política.
|
<p>Mitjançant l’ús d’aquesta aplicació vostè accepta la recopilació i l’ús de la informació d’acord amb aquesta política.
|
||||||
</p>
|
</p>
|
||||||
<h2>Dades Recopilades</h2>
|
<h2>Dades Recopilades</h2>
|
||||||
<p>Les dades personals són qualsevol tipus de dades que puguin identificar un individu.
|
<p>Les dades personals són qualsevol tipus de dades que puguin identificar un individu.
|
||||||
</p>
|
</p>
|
||||||
<p>Les claus i les adreces públiques de Monero són recollides i processades per l’aplicació de forma local per tal de processar les transaccions i transmetre-les a la xarxa Monero de forma encriptada.
|
<p>Les claus i les adreces públiques de Monero són recollides i processades per l’aplicació de forma local per tal de processar les transaccions i transmetre-les a la xarxa Monero de forma encriptada.
|
||||||
</p>
|
</p>
|
||||||
<p>L'aplicació no recopila altres dades personals.</p>
|
<p>L’aplicació no recopila altres dades personals.</p>
|
||||||
<p>Si utilitzeu la funcionalitat d'intercanvi (opcional), monerujo obté el canvi
|
<p>Si utilitzeu la funcionalitat d’intercanvi (opcional), monerujo obté el canvi
|
||||||
a través de l’API pública de coinmarketcap.com.
|
a través de l’API pública de coinmarketcap.com.
|
||||||
Consulteu la seva política de privacitat a https://coinmarketcap.com/privacy per a més detalls sobre com es recullen les dades de les vostres peticions</p>
|
Consulteu la seva política de privacitat a https://coinmarketcap.com/privacy per a més detalls sobre com es recullen les dades de les vostres peticions</p>
|
||||||
<p>Si utilitzeu l’aplicació per pagar a adreces BTC, utilitzareu el servei XMR.TO.
|
<p>Si utilitzeu l’aplicació per pagar a adreces BTC, utilitzareu el servei XMR.TO.
|
||||||
Consulteu la seva política de privacitat a https://xmr.to/ per obtenir més informació. Monerujo els envia l'adreça de destinació de BTC i la quantitat. La vostra IP també podrà ser recollida.</p>
|
Consulteu la seva política de privacitat a https://xmr.to/ per obtenir més informació. Monerujo els envia l’adreça de destinació de BTC i la quantitat. La vostra IP també podrà ser recollida.</p>
|
||||||
<h2>Permisos de la App</h2>
|
<h2>Permisos de la App</h2>
|
||||||
<ul>
|
<ul>
|
||||||
<li>INTERNET : Connectar a la xarxa Monero mitjançant un Node Daemon de Monero</li>
|
<li>INTERNET : Connectar a la xarxa Monero mitjançant un Node Daemon de Monero</li>
|
||||||
|
@@ -10,7 +10,7 @@
|
|||||||
Aquestes són les úniques dades necessàries per a recuperar el vostre portamonedes i obtenir accés total als vostres fons.
|
Aquestes són les úniques dades necessàries per a recuperar el vostre portamonedes i obtenir accés total als vostres fons.
|
||||||
Mantenir-la segura i privada és molt important ja que permet que <em> qualsevol persona</em> tingui accés total als vostres fons!.</p>
|
Mantenir-la segura i privada és molt important ja que permet que <em> qualsevol persona</em> tingui accés total als vostres fons!.</p>
|
||||||
<p>Si perdeu la contrasenya del portamonedes encara podrieu recuperar-lo amb la llavor Mnemotècnica.</p>
|
<p>Si perdeu la contrasenya del portamonedes encara podrieu recuperar-lo amb la llavor Mnemotècnica.</p>
|
||||||
<p>La llavor Mnemotècnica tampoc no es pot canviar mai, i si és robada o compromesa d'alguna manera haureu de traslladar els vostres fons a un nou portamonedes (amb una nova llavor mnemotècnica). Per tant, es recomana que feu còpies de seguretat de la vostra llavor mnemotècnica escrivint-la i emmagatzemant-la a <em> múltiple </em> llocs de forma segura.</p>
|
<p>La llavor Mnemotècnica tampoc no es pot canviar mai, i si és robada o compromesa d’alguna manera haureu de traslladar els vostres fons a un nou portamonedes (amb una nova llavor mnemotècnica). Per tant, es recomana que feu còpies de seguretat de la vostra llavor mnemotècnica escrivint-la i emmagatzemant-la a <em> múltiple </em> llocs de forma segura.</p>
|
||||||
]]></string>
|
]]></string>
|
||||||
|
|
||||||
<string name="help_create_seed"><![CDATA[
|
<string name="help_create_seed"><![CDATA[
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
<p>Introduïu un nom i contrasenya únics del portamonedes.
|
<p>Introduïu un nom i contrasenya únics del portamonedes.
|
||||||
La contrasenya s’utilitza per protegir les dades del seu portamonedes en el dispositiu. Utilitzeu una contrasenya sòlida - encara millor si utiliza una frase.</p>
|
La contrasenya s’utilitza per protegir les dades del seu portamonedes en el dispositiu. Utilitzeu una contrasenya sòlida - encara millor si utiliza una frase.</p>
|
||||||
<p>Introduïu la Llavor en el camp \"Llavor Mnemotècnica\".<p>
|
<p>Introduïu la Llavor en el camp \"Llavor Mnemotècnica\".<p>
|
||||||
<p>Introduïu el número de bloc de la primera transacció realitzada en aquesta adreça en el camp "Restaurar Alçada". També podeu utilitzar una data en el format AAAA-MM-DD. Si no esteu segurs, introduïu una data / alçada de bloc aproximada <em> abans </em> d'haver fer servir aquesta adreça del portamonedes.</p>
|
<p>Introduïu el número de bloc de la primera transacció realitzada en aquesta adreça en el camp "Restaurar Alçada". També podeu utilitzar una data en el format AAAA-MM-DD. Si no esteu segurs, introduïu una data / alçada de bloc aproximada <em> abans </em> d’haver fer servir aquesta adreça del portamonedes.</p>
|
||||||
]]></string>
|
]]></string>
|
||||||
|
|
||||||
<string name="help_create_ledger"><![CDATA[
|
<string name="help_create_ledger"><![CDATA[
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
<p>Si voleu recuperar el vostre portamonedes desde un dispositiu Ledger Nano S!</p>
|
<p>Si voleu recuperar el vostre portamonedes desde un dispositiu Ledger Nano S!</p>
|
||||||
<p>Les vostres claus secretes no surten mai del dispositiu Ledger, de manera que necessiteu que estigui connectat sempre que vulgueu accedir aal vostre portamonedes.</p>
|
<p>Les vostres claus secretes no surten mai del dispositiu Ledger, de manera que necessiteu que estigui connectat sempre que vulgueu accedir aal vostre portamonedes.</p>
|
||||||
<p>Introduïu un nom i contrasenya únics del portamonedes. La contrasenya s’utilitza per protegir les dades de la seva cartera al dispositiu Android. Utilitzeu una contrasenya sòlida - encara millor si utiliza una frase.</p>
|
<p>Introduïu un nom i contrasenya únics del portamonedes. La contrasenya s’utilitza per protegir les dades de la seva cartera al dispositiu Android. Utilitzeu una contrasenya sòlida - encara millor si utiliza una frase.</p>
|
||||||
<p>Introduïu el número de bloc de la primera transacció realitzada en aquesta adreça en el camp "Restaurar Alçada". També podeu utilitzar una data en el format AAAA-MM-DD. Si no esteu segurs, introduïu una data / alçada de bloc aproximada <em> abans </em> d'haver fer servir aquesta adreça del portamonedes.</p>
|
<p>Introduïu el número de bloc de la primera transacció realitzada en aquesta adreça en el camp "Restaurar Alçada". També podeu utilitzar una data en el format AAAA-MM-DD. Si no esteu segurs, introduïu una data / alçada de bloc aproximada <em> abans </em> d’haver fer servir aquesta adreça del portamonedes.</p>
|
||||||
]]></string>
|
]]></string>
|
||||||
|
|
||||||
<string name="help_create_keys"><![CDATA[
|
<string name="help_create_keys"><![CDATA[
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
<p>Introduïu un nom i contrasenya únics del portamonedes. La contrasenya s’utilitza per protegir les dades de la seva cartera al dispositiu. Utilitzeu una contrasenya sòlida - encara millor si utiliza una frase.<p>
|
<p>Introduïu un nom i contrasenya únics del portamonedes. La contrasenya s’utilitza per protegir les dades de la seva cartera al dispositiu. Utilitzeu una contrasenya sòlida - encara millor si utiliza una frase.<p>
|
||||||
<p>Introduïu la vostra Adreça Monero en el camp \"Adreça Pública\" i ompliu \"Clau de Visualització\" i \"Clau de Despesa\" </p>
|
<p>Introduïu la vostra Adreça Monero en el camp \"Adreça Pública\" i ompliu \"Clau de Visualització\" i \"Clau de Despesa\" </p>
|
||||||
<p>Introduïu el número de bloc de la primera transacció realitzada en aquesta adreça en el
|
<p>Introduïu el número de bloc de la primera transacció realitzada en aquesta adreça en el
|
||||||
camp "Restaurar Alçada". També podeu utilitzar una data en el format AAAA-MM-DD. Si no esteu segurs, introduïu una data / alçada de bloc aproximada <em> abans </em> d'haver fer servir aquesta adreça del portamonedes.</p>
|
camp "Restaurar Alçada". També podeu utilitzar una data en el format AAAA-MM-DD. Si no esteu segurs, introduïu una data / alçada de bloc aproximada <em> abans </em> d’haver fer servir aquesta adreça del portamonedes.</p>
|
||||||
]]></string>
|
]]></string>
|
||||||
|
|
||||||
<string name="help_create_view"><![CDATA[
|
<string name="help_create_view"><![CDATA[
|
||||||
@@ -44,7 +44,7 @@
|
|||||||
<p>Si només voleu monitoritzar les transaccions entrants del portamonedes!</p>
|
<p>Si només voleu monitoritzar les transaccions entrants del portamonedes!</p>
|
||||||
<p>Introduïu un nom i contrasenya únics del portamonedes. La contrasenya s’utilitza per protegir les dades de la seva cartera al dispositiu. Utilitzeu una contrasenya sòlida - encara millor si utiliza una frase.<p>
|
<p>Introduïu un nom i contrasenya únics del portamonedes. La contrasenya s’utilitza per protegir les dades de la seva cartera al dispositiu. Utilitzeu una contrasenya sòlida - encara millor si utiliza una frase.<p>
|
||||||
<p>Introduïu la vostra Adreça Monero en el camp \"Adreça Pública\" i ompliu \"Clau de Visualització\".</p>
|
<p>Introduïu la vostra Adreça Monero en el camp \"Adreça Pública\" i ompliu \"Clau de Visualització\".</p>
|
||||||
<p>Introduïu el número de bloc de la primera transacció realitzada en aquesta adreça en el camp "Restaurar Alçada". També podeu utilitzar una data en el format AAAA-MM-DD. Si no esteu segurs, introduïu una data / alçada de bloc aproximada <em> abans </em> d'haver fer servir aquesta adreça del portamonedes.</p>
|
<p>Introduïu el número de bloc de la primera transacció realitzada en aquesta adreça en el camp "Restaurar Alçada". També podeu utilitzar una data en el format AAAA-MM-DD. Si no esteu segurs, introduïu una data / alçada de bloc aproximada <em> abans </em> d’haver fer servir aquesta adreça del portamonedes.</p>
|
||||||
]]></string>
|
]]></string>
|
||||||
|
|
||||||
<string name="help_details"><![CDATA[
|
<string name="help_details"><![CDATA[
|
||||||
@@ -54,14 +54,14 @@
|
|||||||
<h2>Clau Mnemotècnica</h2>
|
<h2>Clau Mnemotècnica</h2>
|
||||||
Aquestes són les úniques dades necessàries per a recuperar el vostre portamonedes i obtenir accés total als vostres fons.
|
Aquestes són les úniques dades necessàries per a recuperar el vostre portamonedes i obtenir accés total als vostres fons.
|
||||||
Mantenir-la segura i privada és molt important ja que permet que <em> qualsevol persona</em> tingui accés total als vostres fons! Si no us heu escrit en cap lloc segur, feu-ho!
|
Mantenir-la segura i privada és molt important ja que permet que <em> qualsevol persona</em> tingui accés total als vostres fons! Si no us heu escrit en cap lloc segur, feu-ho!
|
||||||
<h2>Contrasenya de Recuperació d'Arxius del Portamonedes</h2>
|
<h2>Contrasenya de Recuperació d’Arxius del Portamonedes</h2>
|
||||||
Assegureu-vos que heu escrit aquesta contrasenya. Si restabliu el dispositiu o desinstal·leu l’aplicació, la necessitarà per tornar a accedir al seu portamonedes.<br/>
|
Assegureu-vos que heu escrit aquesta contrasenya. Si restabliu el dispositiu o desinstal·leu l’aplicació, la necessitarà per tornar a accedir al seu portamonedes.<br/>
|
||||||
<h3>CrAzYsenya</h3>
|
<h3>CrAzYsenya</h3>
|
||||||
Si la contrasenya que es mostra aquí és de 52 caràcters alfanumèrics en grups de 4 - felicitats!
|
Si la contrasenya que es mostra aquí és de 52 caràcters alfanumèrics en grups de 4 - felicitats!
|
||||||
Els fitxers del portamonedes estan protegits amb una clau de 256 bits generada per la funció de seguretat del vostre dispositiu basades en la contrasenya que heu triat (durant la creació o al canviar-la). Això ho fa extremadament difícil de piratejar!<br/>
|
Els fitxers del portamonedes estan protegits amb una clau de 256 bits generada per la funció de seguretat del vostre dispositiu basades en la contrasenya que heu triat (durant la creació o al canviar-la). Això ho fa extremadament difícil de piratejar!<br/>
|
||||||
Aquesta opció és obligatoria per a tots els nous portamonedes.
|
Aquesta opció és obligatoria per a tots els nous portamonedes.
|
||||||
<h3>Contrasenya de Llegat</h3>
|
<h3>Contrasenya de Llegat</h3>
|
||||||
Si veieu la vostra contrasenya aquí, els fitxers del portamonedes no estan tan segurs com quan s'utilitza la CrAzYsenya. Per solucionar-ho, seleccioneu \"Canviar Contrasenya\" des del menú. Després d'entrar una nova contrasenya (potser fins i tot la mateixa que abans) l’aplicació generarà una CrAzYsenya per a protegir els vostres arxius del portamonedes. Anoteu-la!
|
Si veieu la vostra contrasenya aquí, els fitxers del portamonedes no estan tan segurs com quan s’utilitza la CrAzYsenya. Per solucionar-ho, seleccioneu \"Canviar Contrasenya\" des del menú. Després d’entrar una nova contrasenya (potser fins i tot la mateixa que abans) l’aplicació generarà una CrAzYsenya per a protegir els vostres arxius del portamonedes. Anoteu-la!
|
||||||
<h3>CrAzYsenya del Portamonedes</h3>
|
<h3>CrAzYsenya del Portamonedes</h3>
|
||||||
Si mai necessiteu tornar a instal·lar Monerujo (per exemple, després de restablir el telèfon o canviar-lo per un de nou) o voleu utilitzar els arxius del portamonedes en un altre dispositiu o PC, cal que ho feu utilitzant aquesta Contrasenya de Recuperació (CrAzYsenya) per tornar a accedir al vostre portamonedes. <br/>
|
Si mai necessiteu tornar a instal·lar Monerujo (per exemple, després de restablir el telèfon o canviar-lo per un de nou) o voleu utilitzar els arxius del portamonedes en un altre dispositiu o PC, cal que ho feu utilitzant aquesta Contrasenya de Recuperació (CrAzYsenya) per tornar a accedir al vostre portamonedes. <br/>
|
||||||
En seleccionar \"Canviar Contrasenya\" des del menú, podeu triar una nova contrasenya. Aneu amb compte que això generarà una nova Contrasenya de Recuperació (CrAzYsenya). Anoteu-la!
|
En seleccionar \"Canviar Contrasenya\" des del menú, podeu triar una nova contrasenya. Aneu amb compte que això generarà una nova Contrasenya de Recuperació (CrAzYsenya). Anoteu-la!
|
||||||
@@ -76,10 +76,10 @@
|
|||||||
<h2>Node</h2>
|
<h2>Node</h2>
|
||||||
<p>Monerujo utilitza un node remot per comunicar-se amb la xarxa Monero sense necessitat
|
<p>Monerujo utilitza un node remot per comunicar-se amb la xarxa Monero sense necessitat
|
||||||
de descarregar i emmagatzemar una còpia de tota la blockchain sencera. Podeu trobar una llista dels nodes remots més populars o aprendre a configurar el vostre propi node remot aquí https://moneroworld.com/<p>
|
de descarregar i emmagatzemar una còpia de tota la blockchain sencera. Podeu trobar una llista dels nodes remots més populars o aprendre a configurar el vostre propi node remot aquí https://moneroworld.com/<p>
|
||||||
<p>Monerujo té alguns Nodes remots incorporats. Se'n recorda dels últims cinc nodes empleats.</p>
|
<p>Monerujo té alguns Nodes remots incorporats. Se’n recorda dels últims cinc nodes empleats.</p>
|
||||||
<h2>Portamonedes</h2>
|
<h2>Portamonedes</h2>
|
||||||
<p>Aquí podeu veure els portamonedes. Es troben a la carpeta <tt> monerujo </tt>
|
<p>Aquí podeu veure els portamonedes. Es troben a la carpeta <tt> monerujo </tt>
|
||||||
dins l’emmagatzematge intern del dispositiu. Podeu utilitzar una aplicació d’exploració d'arxius per veure'ls. Haurieu de fer còpies de seguretat d’aquesta carpeta de manera regular en un emmagatzematge extern al dispositiu en cas que el vostre dispositiu exploti o el robin.</p>
|
dins l’emmagatzematge intern del dispositiu. Podeu utilitzar una aplicació d’exploració d’arxius per veure’ls. Haurieu de fer còpies de seguretat d’aquesta carpeta de manera regular en un emmagatzematge extern al dispositiu en cas que el vostre dispositiu exploti o el robin.</p>
|
||||||
<p>Seleccioneu una portamonedes per obrir-lo o premeu el botó "+" per crear-ne un de nou.
|
<p>Seleccioneu una portamonedes per obrir-lo o premeu el botó "+" per crear-ne un de nou.
|
||||||
O seleccioneu una de les operacions del portamonedes:</p>
|
O seleccioneu una de les operacions del portamonedes:</p>
|
||||||
<h3>Detalls</h3>
|
<h3>Detalls</h3>
|
||||||
@@ -92,13 +92,13 @@
|
|||||||
<p>Feu una còpia del portamonedes en la carpeta <tt> backups </tt> dins del <tt> monerujo </tt>
|
<p>Feu una còpia del portamonedes en la carpeta <tt> backups </tt> dins del <tt> monerujo </tt>
|
||||||
per a sobreescriure còpies anteriors.</p>
|
per a sobreescriure còpies anteriors.</p>
|
||||||
<h3>Arxiu</h3>
|
<h3>Arxiu</h3>
|
||||||
<p>Feu una còpia de seguretat i a continuació elimineu el portamonedes. La còpia es mantindrà a la carpeta <tt> backups </tt>. Si ja no necessiteu les vostres còpies de seguretat les haureu d’eliminar amb un explorador d'arxius o una aplicació segura.</p>
|
<p>Feu una còpia de seguretat i a continuació elimineu el portamonedes. La còpia es mantindrà a la carpeta <tt> backups </tt>. Si ja no necessiteu les vostres còpies de seguretat les haureu d’eliminar amb un explorador d’arxius o una aplicació segura.</p>
|
||||||
]]></string>
|
]]></string>
|
||||||
|
|
||||||
<string name="help_tx_details"><![CDATA[
|
<string name="help_tx_details"><![CDATA[
|
||||||
<h1>Detalls de Transacció</h1>
|
<h1>Detalls de Transacció</h1>
|
||||||
<h2>Destí</h2>
|
<h2>Destí</h2>
|
||||||
Aquesta és l'adreça pública del portamonedes on esteu enviant els Monero.
|
Aquesta és l’adreça pública del portamonedes on esteu enviant els Monero.
|
||||||
<h2>ID de Pagament</h2>
|
<h2>ID de Pagament</h2>
|
||||||
Podeu utilitzar un ID de pagament per identificar el motiu pel qual heu enviat a Monero entre dues parts. Això és totalment opcional i privat. Per exemple, això pot permetre a una empresa associar la transacció amb un article que heu comprat.
|
Podeu utilitzar un ID de pagament per identificar el motiu pel qual heu enviat a Monero entre dues parts. Això és totalment opcional i privat. Per exemple, això pot permetre a una empresa associar la transacció amb un article que heu comprat.
|
||||||
<h2>ID de Transacció</h2>
|
<h2>ID de Transacció</h2>
|
||||||
@@ -112,7 +112,7 @@
|
|||||||
<string name="help_send"><![CDATA[
|
<string name="help_send"><![CDATA[
|
||||||
<h1>Enviar</h1>
|
<h1>Enviar</h1>
|
||||||
<h2>Adreça del Receptor</h2>
|
<h2>Adreça del Receptor</h2>
|
||||||
<p>Aquesta és l'adreça pública del portamonedes a la qual esteu enviant Moneroj. Podeu copiar-la al porta-retalls, escanejar un codi QR o introduir-la manualment. Assegureu- vos de confirmar-ho a consciencia i que no estigueu enviant monedes a la direcció incorrecta.</p>
|
<p>Aquesta és l’adreça pública del portamonedes a la qual esteu enviant Moneroj. Podeu copiar-la al porta-retalls, escanejar un codi QR o introduir-la manualment. Assegureu- vos de confirmar-ho a consciencia i que no estigueu enviant monedes a la direcció incorrecta.</p>
|
||||||
<p>A més d’utilitzar una adreça XMR, també podeu utilitzar
|
<p>A més d’utilitzar una adreça XMR, també podeu utilitzar
|
||||||
<ul>
|
<ul>
|
||||||
<li>un OpenAlias per XMR o BTC</li>
|
<li>un OpenAlias per XMR o BTC</li>
|
||||||
@@ -125,7 +125,7 @@
|
|||||||
<h1>Enviant BTC</h1>
|
<h1>Enviant BTC</h1>
|
||||||
<h2>XMR.TO</h2>
|
<h2>XMR.TO</h2>
|
||||||
<p>XMR.TO és un servei de tercers que fa proporciona el canvi de Monero a Bitcoin.
|
<p>XMR.TO és un servei de tercers que fa proporciona el canvi de Monero a Bitcoin.
|
||||||
Nosaltres fem servir l'API XMR.TO per integrar els pagaments de Bitcoin a Monerujo. Si us plau, doneu un cop d'ull a https://xmr.to i decidiu vosaltres mateixos si és una cosa que volgueu utilitzar. L'equip de Monerujo no està associat amb XMR.TO i no pot oferir assistència amb el seu servei.</p>
|
Nosaltres fem servir l’API XMR.TO per integrar els pagaments de Bitcoin a Monerujo. Si us plau, doneu un cop d’ull a https://xmr.to i decidiu vosaltres mateixos si és una cosa que volgueu utilitzar. L’equip de Monerujo no està associat amb XMR.TO i no pot oferir assistència amb el seu servei.</p>
|
||||||
<h2>Tipus de Canvi XMR.TO<h2>
|
<h2>Tipus de Canvi XMR.TO<h2>
|
||||||
<p>A la pantalla \"Quantitat\" es mostraran els paràmetres actuals del servei XMR.TO. Aquests
|
<p>A la pantalla \"Quantitat\" es mostraran els paràmetres actuals del servei XMR.TO. Aquests
|
||||||
inclouen el tipus de canvi actual, així com els límits de BTC superiors i inferiors. Tingueu en compte que la tarifa no està garantida en aquell mateix moment. També veureu
|
inclouen el tipus de canvi actual, així com els límits de BTC superiors i inferiors. Tingueu en compte que la tarifa no està garantida en aquell mateix moment. També veureu
|
||||||
@@ -147,7 +147,7 @@
|
|||||||
<h1>Enviant BTC</h1>
|
<h1>Enviant BTC</h1>
|
||||||
<h2>XMR.TO</h2>
|
<h2>XMR.TO</h2>
|
||||||
<p>XMR.TO és un servei de tercers que fa proporciona el canvi de Monero a Bitcoin.
|
<p>XMR.TO és un servei de tercers que fa proporciona el canvi de Monero a Bitcoin.
|
||||||
Nosaltres fem servir l'API XMR.TO per integrar els pagaments de Bitcoin a Monerujo. Si us plau, doneu un cop d'ull a https://xmr.to i decidiu vosaltres mateixos si és una cosa que volgueu utilitzar. L'equip de Monerujo no està associat amb XMR.TO i no pot oferir assistència amb el seu servei.</p>
|
Nosaltres fem servir l’API XMR.TO per integrar els pagaments de Bitcoin a Monerujo. Si us plau, doneu un cop d’ull a https://xmr.to i decidiu vosaltres mateixos si és una cosa que volgueu utilitzar. L’equip de Monerujo no està associat amb XMR.TO i no pot oferir assistència amb el seu servei.</p>
|
||||||
<h2>Tipus de Canvi XMR.TO<h2>
|
<h2>Tipus de Canvi XMR.TO<h2>
|
||||||
<p>A la pantalla \"Quantitat\" es mostraran els paràmetres actuals del servei XMR.TO. Aquests
|
<p>A la pantalla \"Quantitat\" es mostraran els paràmetres actuals del servei XMR.TO. Aquests
|
||||||
inclouen el tipus de canvi actual, així com els límits de BTC superiors i inferiors. Tingueu en compte que la tarifa no està garantida en aquell mateix moment. També veureu
|
inclouen el tipus de canvi actual, així com els límits de BTC superiors i inferiors. Tingueu en compte que la tarifa no està garantida en aquell mateix moment. També veureu
|
||||||
@@ -170,7 +170,7 @@
|
|||||||
<h2>Mode de carrer</h2>
|
<h2>Mode de carrer</h2>
|
||||||
<p>El mode de carrer es pot habilitar / desactivar des del menú o a la icona principal de Gunther. En aquest mode, el vostre balanç no es mostra a cap pantalla perquè pugueu utilitzar la vostra cartera amb seguretat al carrer, al pub o qualsevol lloc públic. Les transaccions anteriors també estan ocultes. Es mostraran les noves transaccions perquè pogueu veure que heu enviat / rebut els vostres estimats Moneroj!</p>
|
<p>El mode de carrer es pot habilitar / desactivar des del menú o a la icona principal de Gunther. En aquest mode, el vostre balanç no es mostra a cap pantalla perquè pugueu utilitzar la vostra cartera amb seguretat al carrer, al pub o qualsevol lloc públic. Les transaccions anteriors també estan ocultes. Es mostraran les noves transaccions perquè pogueu veure que heu enviat / rebut els vostres estimats Moneroj!</p>
|
||||||
<h2>Escanejant</h2>
|
<h2>Escanejant</h2>
|
||||||
Perquè a Monero li agrada mantenir les coses privades, cada cop que obri un portamonedes Monerujo hem d'escanejar la blockchain per veure si s'han enviat nous moneroj al seu portamonedes. Això només emmagatzema l'informació al telèfon que pertany al seu portamonedes. De vegades pot trigar una estona perquè no s’ha sincronitzat en molt de temps.
|
Perquè a Monero li agrada mantenir les coses privades, cada cop que obri un portamonedes Monerujo hem d’escanejar la blockchain per veure si s’han enviat nous moneroj al seu portamonedes. Això només emmagatzema l’informació al telèfon que pertany al seu portamonedes. De vegades pot trigar una estona perquè no s’ha sincronitzat en molt de temps.
|
||||||
<h2>El Balanç</h2>
|
<h2>El Balanç</h2>
|
||||||
<p><b>Ajuda! El balanç del meu portamonedes ha desaparegut o consta com a no confirmat!</b><br/>
|
<p><b>Ajuda! El balanç del meu portamonedes ha desaparegut o consta com a no confirmat!</b><br/>
|
||||||
No patiu! Quan envieu fons desde el vostre portamonedes part del balanç apareixerà com a no confirmat de forma temporal.
|
No patiu! Quan envieu fons desde el vostre portamonedes part del balanç apareixerà com a no confirmat de forma temporal.
|
||||||
@@ -199,8 +199,8 @@
|
|||||||
es mostra al costat de cada node.</p>
|
es mostra al costat de cada node.</p>
|
||||||
<p>Es pot marcar qualsevol node de la llista per utilitzar-lo més endevant.
|
<p>Es pot marcar qualsevol node de la llista per utilitzar-lo més endevant.
|
||||||
Es descartaràn els nodes que no hagin estat seleccionats.<p>
|
Es descartaràn els nodes que no hagin estat seleccionats.<p>
|
||||||
<p>Monerujo escollirà el node òptim (marcat) cada vegada que l'utilitzeu.
|
<p>Monerujo escollirà el node òptim (marcat) cada vegada que l’utilitzeu.
|
||||||
Això ho fa mitjançant la comprovació de l'alçada de bloc (com d'actualitzat
|
Això ho fa mitjançant la comprovació de l’alçada de bloc (com d’actualitzat
|
||||||
està el node?), així com el temps de resposta (què tan ràpidament respon el node a les peticions?).</p>
|
està el node?), així com el temps de resposta (què tan ràpidament respon el node a les peticions?).</p>
|
||||||
<p>La llista s’ordena per aquestes característiques, de manera que el node superior seria el que Monerujo
|
<p>La llista s’ordena per aquestes característiques, de manera que el node superior seria el que Monerujo
|
||||||
triaria ara mateix. La part inferior de la llista mostraria els nodes més lents o no disponibles.</p>
|
triaria ara mateix. La part inferior de la llista mostraria els nodes més lents o no disponibles.</p>
|
||||||
@@ -209,15 +209,15 @@
|
|||||||
que introduïu els detalls del node al següent diàleg.
|
que introduïu els detalls del node al següent diàleg.
|
||||||
El "Adreça" és el nom del servidor o adreça IP del node - aquesta és la única
|
El "Adreça" és el nom del servidor o adreça IP del node - aquesta és la única
|
||||||
entrada obligatòria.
|
entrada obligatòria.
|
||||||
Introduïu el "Port" si el node s'executa en un port no predeterminat (per exemple, 18089).
|
Introduïu el "Port" si el node s’executa en un port no predeterminat (per exemple, 18089).
|
||||||
També podeu anomenar opcionalment el node, de manera que el pugueu identificar més fàcilment més endavant.
|
També podeu anomenar opcionalment el node, de manera que el pugueu identificar més fàcilment més endavant.
|
||||||
Alguns nodes necessiten credencials per utilitzar-los. Introduïu el nom d’usuari i
|
Alguns nodes necessiten credencials per utilitzar-los. Introduïu el nom d’usuari i
|
||||||
contrasenya proporcionats als camps corresponents. Ara podeu "Test" aquesta configuració.
|
contrasenya proporcionats als camps corresponents. Ara podeu "Test" aquesta configuració.
|
||||||
Els "Resultats de les Proves" mostraran l'alçada de bloc, el temps de resposta i l'IP real.
|
Els "Resultats de les Proves" mostraran l’alçada de bloc, el temps de resposta i l’IP real.
|
||||||
El resultat també pot ser un error - generalment perquè el nom del servidor proporcionat no és
|
El resultat també pot ser un error - generalment perquè el nom del servidor proporcionat no és
|
||||||
accessible dins d'un temps raonable o les credencials són incorrectes.
|
accessible dins d’un temps raonable o les credencials són incorrectes.
|
||||||
O la combinació de nom del servidor/port no apunta cap a un node real de Monero!
|
O la combinació de nom del servidor/port no apunta cap a un node real de Monero!
|
||||||
Un cop aprovada la prova (sense error), ja estás llest per prémer "D'acord" per desar iamp;
|
Un cop aprovada la prova (sense error), ja estás llest per prémer "D’acord" per desar iamp;
|
||||||
marcar aquest node.</p>
|
marcar aquest node.</p>
|
||||||
<h2>Escanejar Nodes</h2>
|
<h2>Escanejar Nodes</h2>
|
||||||
<p>A més, podeu escanejar la xarxa per buscar nodes. Monerujo començarà
|
<p>A més, podeu escanejar la xarxa per buscar nodes. Monerujo començarà
|
||||||
|
@@ -58,7 +58,7 @@
|
|||||||
|
|
||||||
<string name="send_available_btc">Balanç: %2$s BTC (%1$s XMR)</string>
|
<string name="send_available_btc">Balanç: %2$s BTC (%1$s XMR)</string>
|
||||||
|
|
||||||
<string name="info_paymentid_intergrated">ID de pagment integrat</string>
|
<string name="info_paymentid_integrated">✔ ID de pagment integrat</string>
|
||||||
<string name="info_prepare_tx">Preparant la seva transacció</string>
|
<string name="info_prepare_tx">Preparant la seva transacció</string>
|
||||||
|
|
||||||
<string name="label_send_progress_xmrto_create">Creant ordre XMR.TO</string>
|
<string name="label_send_progress_xmrto_create">Creant ordre XMR.TO</string>
|
||||||
@@ -170,14 +170,14 @@
|
|||||||
<string name="generate_fingerprint_warn"><![CDATA[
|
<string name="generate_fingerprint_warn"><![CDATA[
|
||||||
<strong>Autenticació d’empremta digitals</strong>
|
<strong>Autenticació d’empremta digitals</strong>
|
||||||
<p>Amb l’autenticació d’empremta digital habilitada podeu veure el balanç del portamonedes i rebre fons
|
<p>Amb l’autenticació d’empremta digital habilitada podeu veure el balanç del portamonedes i rebre fons
|
||||||
sense la necessitat d'introduir la contrasenya.</p>
|
sense la necessitat d’introduir la contrasenya.</p>
|
||||||
<p>Per a més seguretat, monerujo encara us demanarà que introduïu la contrasenya per
|
<p>Per a més seguretat, monerujo encara us demanarà que introduïu la contrasenya per
|
||||||
veure els detalls del portamonedes o enviar fons.</p>
|
veure els detalls del portamonedes o enviar fons.</p>
|
||||||
<strong>Advertència de seguretat</strong>
|
<strong>Advertència de seguretat</strong>
|
||||||
<p>Finalment, monerujo vol recordar-li que qualsevol que pugui obtenir la seva empremta digital serà
|
<p>Finalment, monerujo vol recordar-li que qualsevol que pugui obtenir la seva empremta digital serà
|
||||||
capaç d’observar el balanç del seu portamonedes.</p>
|
capaç d’observar el balanç del seu portamonedes.</p>
|
||||||
<p>Per exemple, un usuari maliciós del vostre voltant pot obrir la vostra cartera quan esteu dormint.</p>
|
<p>Per exemple, un usuari maliciós del vostre voltant pot obrir la vostra cartera quan esteu dormint.</p>
|
||||||
<strong>Esteu segurs d'habilitar aquesta funcionalitat?</strong>
|
<strong>Esteu segurs d’habilitar aquesta funcionalitat?</strong>
|
||||||
]]></string>
|
]]></string>
|
||||||
<string name="generate_bad_passwordB">La contrasenya no coincideix</string>
|
<string name="generate_bad_passwordB">La contrasenya no coincideix</string>
|
||||||
<string name="generate_empty_passwordB">La contrasenya no pot estar buida</string>
|
<string name="generate_empty_passwordB">La contrasenya no pot estar buida</string>
|
||||||
|
@@ -59,7 +59,7 @@
|
|||||||
|
|
||||||
<string name="send_available_btc">Guthaben: %2$s BTC (%1$s XMR)</string>
|
<string name="send_available_btc">Guthaben: %2$s BTC (%1$s XMR)</string>
|
||||||
|
|
||||||
<string name="info_paymentid_intergrated">Zahlungs-ID integriert</string>
|
<string name="info_paymentid_integrated">✔ Zahlungs-ID integriert</string>
|
||||||
<string name="info_prepare_tx">Bereite deine Transaktion vor</string>
|
<string name="info_prepare_tx">Bereite deine Transaktion vor</string>
|
||||||
|
|
||||||
<string name="label_send_progress_xmrto_create">Erstelle XMR.TO-Auftrag</string>
|
<string name="label_send_progress_xmrto_create">Erstelle XMR.TO-Auftrag</string>
|
||||||
|
@@ -57,7 +57,7 @@
|
|||||||
|
|
||||||
<string name="send_available_btc">Σύνολο: %2$s BTC (%1$s XMR)</string>
|
<string name="send_available_btc">Σύνολο: %2$s BTC (%1$s XMR)</string>
|
||||||
|
|
||||||
<string name="info_paymentid_intergrated">ID πληρωμής ενσωματωμένο</string>
|
<string name="info_paymentid_integrated">✔ ID πληρωμής ενσωματωμένο</string>
|
||||||
<string name="info_prepare_tx">Προετοιμασία της συναλλαγής σου</string>
|
<string name="info_prepare_tx">Προετοιμασία της συναλλαγής σου</string>
|
||||||
|
|
||||||
<string name="label_send_progress_xmrto_create">Δημιουργία εντολής με XMR.TO</string>
|
<string name="label_send_progress_xmrto_create">Δημιουργία εντολής με XMR.TO</string>
|
||||||
|
@@ -58,7 +58,7 @@
|
|||||||
|
|
||||||
<string name="send_available_btc">Saldo: %2$s BTC (%1$s XMR)</string>
|
<string name="send_available_btc">Saldo: %2$s BTC (%1$s XMR)</string>
|
||||||
|
|
||||||
<string name="info_paymentid_intergrated">Paga-ID integriĝis</string>
|
<string name="info_paymentid_integrated">✔ Paga-ID integriĝis</string>
|
||||||
<string name="info_prepare_tx">Preparante vian transakcion</string>
|
<string name="info_prepare_tx">Preparante vian transakcion</string>
|
||||||
|
|
||||||
<string name="label_send_progress_xmrto_create">Kreante mendon al XMR.TO</string>
|
<string name="label_send_progress_xmrto_create">Kreante mendon al XMR.TO</string>
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user