Updated on 2026-08-14

This commit is contained in:
Tangem 2019-09-11 14:29:27 +03:00
parent 858f609667
commit 9bb8931709
84 changed files with 619 additions and 659 deletions

2
.idea/navEditor.xml generated
View file

@ -313,7 +313,7 @@
</option> </option>
<option name="myPositions"> <option name="myPositions">
<map> <map>
<entry key="action_purgeFragment_to_loadedWalletFragment"> <entry key="action_purgeFragment_to_mainFragment">
<value> <value>
<LayoutPositions /> <LayoutPositions />
</value> </value>

View file

@ -43,7 +43,7 @@ public class ConfirmWithFingerprintTask extends AsyncTask<Void, Void, Boolean> {
onCancelled(); onCancelled();
if (!success) { if (!success) {
Toast.makeText(pinSaveFragment.getContext(), R.string.pin_save_fail, Toast.LENGTH_LONG).show(); Toast.makeText(pinSaveFragment.getContext(), R.string.pin_save_notification_failed, Toast.LENGTH_LONG).show();
} else { } else {
pinSaveFragment.getFingerprintHelper().startAuth(pinSaveFragment.getFingerprintManager(), pinSaveFragment.getCryptoObject()); pinSaveFragment.getFingerprintHelper().startAuth(pinSaveFragment.getFingerprintManager(), pinSaveFragment.getCryptoObject());
} }

View file

@ -3,13 +3,13 @@ package com.tangem.data.network;
import android.util.Log; import android.util.Log;
import com.tangem.App; import com.tangem.App;
import com.tangem.wallet.TangemContext;
import com.tangem.data.Blockchain; import com.tangem.data.Blockchain;
import com.tangem.wallet.R;
import com.tangem.wallet.TangemContext;
import com.tangem.wallet.bch.BitcoinCashNode; import com.tangem.wallet.bch.BitcoinCashNode;
import com.tangem.wallet.btc.BitcoinNode; import com.tangem.wallet.btc.BitcoinNode;
import com.tangem.wallet.btc.BitcoinNodeTestNet; import com.tangem.wallet.btc.BitcoinNodeTestNet;
import com.tangem.wallet.ltc.LitecoinNode; import com.tangem.wallet.ltc.LitecoinNode;
import com.tangem.wallet.R;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.IOException; import java.io.IOException;
@ -32,7 +32,6 @@ import java.util.Random;
import javax.net.ssl.HostnameVerifier; import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext; import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory; import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager; import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager; import javax.net.ssl.X509TrustManager;
@ -139,7 +138,7 @@ public class ServerApiElectrum {
requestsCount--; requestsCount--;
Log.e(TAG, "requestData " + electrumRequest.getMethod() + " onError " + e.getMessage()); Log.e(TAG, "requestData " + electrumRequest.getMethod() + " onError " + e.getMessage());
Log.e(TAG, String.format("%d requests left in processing",requestsCount)); Log.e(TAG, String.format("%d requests left in processing",requestsCount));
electrumRequest.setError(ctx.getString(R.string.cannot_obtain_data_from_blockchain)); electrumRequest.setError(ctx.getString(R.string.loaded_wallet_error_obtaining_blockchain_data));
//setErrorOccurred(e.getMessage());//; //setErrorOccurred(e.getMessage());//;
responseListener.onFail(electrumRequest); responseListener.onFail(electrumRequest);
} }
@ -252,18 +251,18 @@ public class ServerApiElectrum {
if( (electrumRequest.getError()!=null && electrumRequest.getError().startsWith(ERROR_STARTS_WITH_CODE_32601)) ) if( (electrumRequest.getError()!=null && electrumRequest.getError().startsWith(ERROR_STARTS_WITH_CODE_32601)) )
{ {
// method unknown error??? // method unknown error???
electrumRequest.setError(App.Companion.getInstance().getString(R.string.cannot_obtain_data_from_blockchain)); electrumRequest.setError(App.Companion.getInstance().getString(R.string.loaded_wallet_error_obtaining_blockchain_data));
electrumRequest.answerData=null; electrumRequest.answerData=null;
} }
} else { } else {
electrumRequest.setError(App.Companion.getInstance().getString(R.string.cannot_obtain_data_from_blockchain_no_answer)); electrumRequest.setError(App.Companion.getInstance().getString(R.string.loaded_wallet_error_blockchain_empty_answer));
Log.i(TAG, ">> <NULL>"); Log.i(TAG, ">> <NULL>");
} }
} catch (ConnectException e) { } catch (ConnectException e) {
//e.printStackTrace(); //e.printStackTrace();
//responseListener.onFail(e.getMessage()); //responseListener.onFail(e.getMessage());
electrumRequest.setError(App.Companion.getInstance().getString(R.string.cannot_obtain_data_from_blockchain_no_connection)); electrumRequest.setError(App.Companion.getInstance().getString(R.string.loaded_wallet_error_blockchain_connection_refused));
Log.e(TAG, "doElectrumRequestTcp " + electrumRequest.getMethod() + " ConnectException " + e.getMessage()); Log.e(TAG, "doElectrumRequestTcp " + electrumRequest.getMethod() + " ConnectException " + e.getMessage());
} finally { } finally {
Log.i(TAG, "doElectrumRequestTcp " + electrumRequest.getMethod() + " socket.close"); Log.i(TAG, "doElectrumRequestTcp " + electrumRequest.getMethod() + " socket.close");
@ -274,13 +273,13 @@ public class ServerApiElectrum {
{ {
e.printStackTrace(); e.printStackTrace();
Log.e(TAG,"Can't close socket"); Log.e(TAG,"Can't close socket");
electrumRequest.setError(App.Companion.getInstance().getString(R.string.cannot_obtain_data_from_blockchain_communication_error)); electrumRequest.setError(App.Companion.getInstance().getString(R.string.loaded_wallet_error_blockchain_communication_error));
} }
} }
} catch (IOException e) { } catch (IOException e) {
//e.printStackTrace(); //e.printStackTrace();
//responseListener.onFail(e.getMessage()); //responseListener.onFail(e.getMessage());
electrumRequest.setError(App.Companion.getInstance().getString(R.string.cannot_obtain_data_from_blockchain_communication_error)); electrumRequest.setError(App.Companion.getInstance().getString(R.string.loaded_wallet_error_blockchain_communication_error));
Log.e(TAG, "doElectrumRequestTcp " + electrumRequest.getMethod() + " IOException " + e.getMessage()); Log.e(TAG, "doElectrumRequestTcp " + electrumRequest.getMethod() + " IOException " + e.getMessage());
} }
} }
@ -343,17 +342,17 @@ public class ServerApiElectrum {
if( (electrumRequest.getError()!=null && electrumRequest.getError().startsWith(ERROR_STARTS_WITH_CODE_32601)) ) if( (electrumRequest.getError()!=null && electrumRequest.getError().startsWith(ERROR_STARTS_WITH_CODE_32601)) )
{ {
// method unknown error??? // method unknown error???
electrumRequest.setError(App.Companion.getInstance().getString(R.string.cannot_obtain_data_from_blockchain)); electrumRequest.setError(App.Companion.getInstance().getString(R.string.loaded_wallet_error_obtaining_blockchain_data));
electrumRequest.answerData=null; electrumRequest.answerData=null;
} }
} else { } else {
electrumRequest.setError(App.Companion.getInstance().getString(R.string.cannot_obtain_data_from_blockchain_no_answer)); electrumRequest.setError(App.Companion.getInstance().getString(R.string.loaded_wallet_error_blockchain_empty_answer));
Log.i(TAG, ">> <NULL>"); Log.i(TAG, ">> <NULL>");
} }
} catch (ConnectException e) { } catch (ConnectException e) {
e.printStackTrace(); e.printStackTrace();
electrumRequest.setError(App.Companion.getInstance().getString(R.string.cannot_obtain_data_from_blockchain_no_connection)); electrumRequest.setError(App.Companion.getInstance().getString(R.string.loaded_wallet_error_blockchain_connection_refused));
Log.e(TAG, "doElectrumRequestSsl " + electrumRequest.getMethod() + " ConnectException " + e.getMessage()); Log.e(TAG, "doElectrumRequestSsl " + electrumRequest.getMethod() + " ConnectException " + e.getMessage());
} finally { } finally {
Log.i(TAG, "doElectrumRequestSsl " + electrumRequest.getMethod() + " socket.close"); Log.i(TAG, "doElectrumRequestSsl " + electrumRequest.getMethod() + " socket.close");
@ -362,7 +361,7 @@ public class ServerApiElectrum {
} }
catch (Exception e) catch (Exception e)
{ {
electrumRequest.setError(App.Companion.getInstance().getString(R.string.cannot_obtain_data_from_blockchain_communication_error)); electrumRequest.setError(App.Companion.getInstance().getString(R.string.loaded_wallet_error_blockchain_communication_error));
e.printStackTrace(); e.printStackTrace();
Log.e(TAG, "Can't close ssl socket"); Log.e(TAG, "Can't close ssl socket");
} }
@ -370,11 +369,11 @@ public class ServerApiElectrum {
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
electrumRequest.setError(App.Companion.getInstance().getString(R.string.cannot_obtain_data_from_blockchain_communication_error)); electrumRequest.setError(App.Companion.getInstance().getString(R.string.loaded_wallet_error_blockchain_communication_error));
Log.e(TAG, "doElectrumRequestSsl " + electrumRequest.getMethod() + " IOException " + e.getMessage()); Log.e(TAG, "doElectrumRequestSsl " + electrumRequest.getMethod() + " IOException " + e.getMessage());
} }
} catch (NoSuchAlgorithmException | KeyManagementException e) { } catch (NoSuchAlgorithmException | KeyManagementException e) {
electrumRequest.setError(App.Companion.getInstance().getString(R.string.cannot_obtain_data_from_blockchain)); electrumRequest.setError(App.Companion.getInstance().getString(R.string.loaded_wallet_error_obtaining_blockchain_data));
Log.e(TAG, e.getMessage()); Log.e(TAG, e.getMessage());
} }
} }

View file

@ -114,7 +114,7 @@ public class ServerApiStellar {
requestsCount--; requestsCount--;
LOG.e(TAG, "requestData " + stellarRequest.getClass().getSimpleName() + " onError " + e.getMessage()); LOG.e(TAG, "requestData " + stellarRequest.getClass().getSimpleName() + " onError " + e.getMessage());
LOG.e(TAG, String.format("%d requests left in processing", requestsCount)); LOG.e(TAG, String.format("%d requests left in processing", requestsCount));
stellarRequest.setError(ctx.getString(R.string.cannot_obtain_data_from_blockchain)); stellarRequest.setError(ctx.getString(R.string.loaded_wallet_error_obtaining_blockchain_data));
//setErrorOccurred(e.getMessage());//; //setErrorOccurred(e.getMessage());//;
listener.onFail(stellarRequest); listener.onFail(stellarRequest);
} }
@ -161,7 +161,7 @@ public class ServerApiStellar {
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
stellarRequest.setError(App.Companion.getInstance().getString(R.string.cannot_obtain_data_from_blockchain_communication_error)); stellarRequest.setError(App.Companion.getInstance().getString(R.string.loaded_wallet_error_blockchain_communication_error));
throw e; throw e;
} }
} }

View file

@ -13,8 +13,8 @@ import java.util.*
class ToastHelper { class ToastHelper {
fun showSnackbarUpdateVersion(context: Context, vg: ViewGroup, versionName: String) { fun showSnackbarUpdateVersion(context: Context, vg: ViewGroup, versionName: String) {
Snackbar.make(vg, String.format(context.getString(R.string.new_app_version), versionName), Snackbar.LENGTH_INDEFINITE) Snackbar.make(vg, String.format(context.getString(R.string.main_screen_new_version_toast), versionName), Snackbar.LENGTH_INDEFINITE)
.setAction(R.string.update) { .setAction(R.string.main_screen_btn_update) {
try { try {
val intent = Intent(Intent.ACTION_VIEW) val intent = Intent(Intent.ACTION_VIEW)
intent.data = Uri.parse(Constant.URL_TANGEM) intent.data = Uri.parse(Constant.URL_TANGEM)
@ -29,7 +29,7 @@ class ToastHelper {
val snackbar = Snackbar.make(vg, message, Snackbar.LENGTH_INDEFINITE) val snackbar = Snackbar.make(vg, message, Snackbar.LENGTH_INDEFINITE)
val snackView = snackbar.view val snackView = snackbar.view
snackView.setBackgroundColor(context.resources.getColor(R.color.msg_okay)) snackView.setBackgroundColor(context.resources.getColor(R.color.msg_okay))
snackbar.setAction(R.string.ok) { snackbar.setAction(R.string.general_ok) {
snackbar.dismiss() snackbar.dismiss()
} }
snackbar.show() snackbar.show()
@ -39,7 +39,7 @@ class ToastHelper {
val snackbar = Snackbar.make(vg, message, Snackbar.LENGTH_INDEFINITE) val snackbar = Snackbar.make(vg, message, Snackbar.LENGTH_INDEFINITE)
val snackView = snackbar.view val snackView = snackbar.view
snackView.setBackgroundColor(context.resources.getColor(R.color.msg_err)) snackView.setBackgroundColor(context.resources.getColor(R.color.msg_err))
snackbar.setAction(R.string.ok) { snackbar.setAction(R.string.general_ok) {
snackbar.dismiss() snackbar.dismiss()
} }
snackbar.show() snackbar.show()

View file

@ -18,9 +18,9 @@ class NoExtendedLengthSupportDialog : DialogFragment() {
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
return AlertDialog.Builder(activity) return AlertDialog.Builder(activity)
.setIcon(R.drawable.tangem_logo_small_new) .setIcon(R.drawable.tangem_logo_small_new)
.setTitle(R.string.warning) .setTitle(R.string.dialog_warning)
.setMessage(message) .setMessage(message)
.setPositiveButton(R.string.got_it) { _, _ -> NoExtendedLengthSupportDialog.allReadyShowed = false } .setPositiveButton(R.string.dialog_btn_got_it) { _, _ -> NoExtendedLengthSupportDialog.allReadyShowed = false }
.create() .create()
} }

View file

@ -38,11 +38,11 @@ public class PINSwapWarningDialog extends DialogFragment {
public Dialog onCreateDialog(Bundle savedInstanceState) { public Dialog onCreateDialog(Bundle savedInstanceState) {
return new AlertDialog.Builder(getActivity()) return new AlertDialog.Builder(getActivity())
.setIcon(R.drawable.tangem_logo_small_new) .setIcon(R.drawable.tangem_logo_small_new)
.setTitle(R.string.your_money_is_at_risk) .setTitle(R.string.dialog_title_money_is_at_risk)
.setMessage(message) .setMessage(message)
.setCancelable(true) .setCancelable(true)
.setNegativeButton(R.string.cancel, (dialog, which) -> dismiss()) .setNegativeButton(R.string.general_cancel, (dialog, which) -> dismiss())
.setPositiveButton(R.string.contin, (dialog, whichButton) -> mOnPositiveButton.onRefresh()) .setPositiveButton(R.string.general_continue, (dialog, whichButton) -> mOnPositiveButton.onRefresh())
.create(); .create();
} }

View file

@ -16,9 +16,9 @@ class RootFoundDialog : DialogFragment() {
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
return AlertDialog.Builder(activity) return AlertDialog.Builder(activity)
.setIcon(R.drawable.tangem_logo_small_new) .setIcon(R.drawable.tangem_logo_small_new)
.setTitle(R.string.device_is_rooted) .setTitle(R.string.dialog_device_is_rooted)
.setCancelable(false) .setCancelable(false)
.setPositiveButton(R.string.got_it, null) .setPositiveButton(R.string.dialog_btn_got_it, null)
.create() .create()
} }

View file

@ -11,12 +11,12 @@ import android.view.WindowManager;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import com.tangem.util.UtilHelper;
import com.tangem.wallet.R;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.DialogFragment; import androidx.fragment.app.DialogFragment;
import com.tangem.util.UtilHelper;
import com.tangem.wallet.R;
/** /**
* Created by dvol on 06.03.2018. * Created by dvol on 06.03.2018.
*/ */
@ -49,9 +49,9 @@ public class ShowQRCodeDialog extends DialogFragment {
return new AlertDialog.Builder(getActivity()) return new AlertDialog.Builder(getActivity())
.setIcon(R.drawable.tangem_logo_small_new) .setIcon(R.drawable.tangem_logo_small_new)
.setTitle(R.string.show_wallet_qr_code) .setTitle(R.string.loaded_wallet_dialog_show_qr)
.setView(v) .setView(v)
.setPositiveButton(R.string.ok, (dialog,which)->dismiss() ) .setPositiveButton(R.string.general_ok, (dialog, which)->dismiss() )
.create(); .create();
} }

View file

@ -67,7 +67,7 @@ public class WaitSecurityDelayDialog extends DialogFragment {
}, 1000, 1000); }, 1000, 1000);
return new AlertDialog.Builder(getActivity()) return new AlertDialog.Builder(getActivity())
.setIcon(R.drawable.tangem_logo_small_new) .setIcon(R.drawable.tangem_logo_small_new)
.setTitle(R.string.security_delay) .setTitle(R.string.dialog_security_delay)
.setView(v) .setView(v)
.setCancelable(false) .setCancelable(false)
.create(); .create();
@ -79,6 +79,9 @@ public class WaitSecurityDelayDialog extends DialogFragment {
} }
public static void onReadBeforeRequest(final FragmentActivity activity, final int timeout) { public static void onReadBeforeRequest(final FragmentActivity activity, final int timeout) {
if (activity == null) return;
Log.e(TAG, "onReadBeforeRequest callback(" + timeout + ")");
activity.runOnUiThread(() -> { activity.runOnUiThread(() -> {
if (timerToShowDelayDialog != null || timeout < delayBeforeShowDialog + minRemainingDelayToShowDialog) if (timerToShowDelayDialog != null || timeout < delayBeforeShowDialog + minRemainingDelayToShowDialog)
return; return;
@ -98,45 +101,32 @@ public class WaitSecurityDelayDialog extends DialogFragment {
} }
public static void onReadAfterRequest(final Activity activity) { public static void onReadAfterRequest(final Activity activity) {
activity.runOnUiThread(() -> {
if (timerToShowDelayDialog == null) return; if (timerToShowDelayDialog == null) return;
timerToShowDelayDialog.cancel(); timerToShowDelayDialog.cancel();
timerToShowDelayDialog = null; timerToShowDelayDialog = null;
});
} }
public static void onReadWait(final FragmentActivity activity, final int msec) { public static void onReadWait(final FragmentActivity activity, final int msec) {
Log.e(TAG, "onReadWait callback(" + msec + ")"); Log.e(TAG, "onReadWait callback(" + msec + ")");
activity.runOnUiThread(() -> {
Log.e(TAG, "onReadWait on ui thread(" + msec + ")");
if (timerToShowDelayDialog != null) { if (timerToShowDelayDialog != null) {
timerToShowDelayDialog.cancel(); timerToShowDelayDialog.cancel();
timerToShowDelayDialog = null; timerToShowDelayDialog = null;
} }
if (msec == 0) { if (msec == 0 && instance != null) {
if (instance != null) {
if (instance.isAdded()) {
instance.dismissAllowingStateLoss();
instance = null;
} else {
Log.e(TAG, "onReadWait(0) with not added dialog");
// instance.progressBar.postDelayed(() -> {
// Log.e(TAG, "onReadWait(0) dismiss delayed");
try { try {
instance.dismissAllowingStateLoss(); instance.dismissAllowingStateLoss();
instance = null; instance = null;
} } catch (Exception e) {
catch (Exception e)
{
e.printStackTrace(); e.printStackTrace();
} }
// }, 10000);
}
}
return;
} }
if (activity == null) return;
activity.runOnUiThread(() -> {
Log.e(TAG, "onReadWait on ui thread(" + msec + ")");
if (instance == null) { if (instance == null) {
if (msec > delayBeforeShowDialog + minRemainingDelayToShowDialog) { if (msec > delayBeforeShowDialog + minRemainingDelayToShowDialog) {
instance = new WaitSecurityDelayDialog(); instance = new WaitSecurityDelayDialog();

View file

@ -4,8 +4,8 @@ import android.annotation.SuppressLint
import android.app.AlertDialog import android.app.AlertDialog
import android.app.Dialog import android.app.Dialog
import android.os.Bundle import android.os.Bundle
import androidx.appcompat.app.AppCompatDialogFragment
import android.widget.ProgressBar import android.widget.ProgressBar
import androidx.appcompat.app.AppCompatDialogFragment
import com.tangem.ui.event.ReadAfterRequest import com.tangem.ui.event.ReadAfterRequest
import com.tangem.ui.event.ReadBeforeRequest import com.tangem.ui.event.ReadBeforeRequest
import com.tangem.ui.event.ReadWait import com.tangem.ui.event.ReadWait
@ -54,7 +54,7 @@ class WaitSecurityDelayDialogNew : AppCompatDialogFragment() {
return AlertDialog.Builder(activity) return AlertDialog.Builder(activity)
.setIcon(R.drawable.tangem_logo_small_new) .setIcon(R.drawable.tangem_logo_small_new)
.setTitle(R.string.security_delay) .setTitle(R.string.dialog_security_delay)
.setView(v) .setView(v)
.setCancelable(false) .setCancelable(false)
.create() .create()

View file

@ -78,6 +78,8 @@ abstract class BaseFragment : Fragment() {
findNavController(this).navigate(destination, data) findNavController(this).navigate(destination, data)
} catch (e: IllegalArgumentException) { } catch (e: IllegalArgumentException) {
Log.w(this::class.java.simpleName, e.message) Log.w(this::class.java.simpleName, e.message)
} catch (e: IllegalStateException) {
Log.w(this::class.java.simpleName, e.message)
} }
} }

View file

@ -29,15 +29,15 @@ class LogoFragment : BaseFragment() {
clLogoContainer.setOnClickListener { hide() } clLogoContainer.setOnClickListener { hide() }
// set beta version name // set beta version name
if (BuildConfig.DEBUG) if (BuildConfig.DEBUG)
tvAppVersion.text = String.format(getString(R.string.version_name_debug), BuildConfig.VERSION_NAME, BuildConfig.VERSION_CODE) tvAppVersion.text = String.format(getString(R.string.splash_version_name_debug), BuildConfig.VERSION_NAME, BuildConfig.VERSION_CODE)
else else
tvAppVersion.text = String.format(getString(R.string.version_name_release), BuildConfig.VERSION_NAME) tvAppVersion.text = String.format(getString(R.string.splash_version_name_release), BuildConfig.VERSION_NAME)
// set flavor app name // set flavor app name
when (BuildConfig.FLAVOR) { when (BuildConfig.FLAVOR) {
Constant.FLAVOR_TANGEM_CARDANO -> { Constant.FLAVOR_TANGEM_CARDANO -> {
tvExtension.visibility = View.VISIBLE tvExtension.visibility = View.VISIBLE
tvExtension.text = getString(R.string.cardano) tvExtension.text = getString(R.string.splash_cardano)
} }
else -> { else -> {
tvExtension.visibility = View.GONE tvExtension.visibility = View.GONE

View file

@ -74,9 +74,9 @@ class MainFragment : BaseFragment(), NavigationResultListener, NfcAdapter.Reader
// set phone name // set phone name
if (nfcDeviceAntenna.fullName != "") if (nfcDeviceAntenna.fullName != "")
tvNFCHint.text = String.format(getString(R.string.scan_banknote), nfcDeviceAntenna.fullName) tvNFCHint.text = String.format(getString(R.string.main_screen_scan_banknote), nfcDeviceAntenna.fullName)
else else
tvNFCHint.text = String.format(getString(R.string.scan_banknote), getString(R.string.phone)) tvNFCHint.text = String.format(getString(R.string.main_screen_scan_banknote), getString(R.string.main_screen_phone))
// set listeners // set listeners
fab.setOnClickListener { showMenu(it) } fab.setOnClickListener { showMenu(it) }
@ -162,17 +162,13 @@ class MainFragment : BaseFragment(), NavigationResultListener, NfcAdapter.Reader
cardInfo.getBundle(EXTRA_TANGEM_CARD)?.let { card.loadFromBundle(it) } cardInfo.getBundle(EXTRA_TANGEM_CARD)?.let { card.loadFromBundle(it) }
val ctx = TangemContext(card) val ctx = TangemContext(card)
when { when {
card.status == TangemCard.Status.Loaded -> lastTag?.let { card.status == TangemCard.Status.Loaded -> lastTag?.let {
val engineCoin = CoinEngineFactory.create(ctx) val engineCoin = CoinEngineFactory.create(ctx)
if (engineCoin != null) { if (engineCoin != null) {
engineCoin.defineWallet() engineCoin.defineWallet()
// val bundle = Bundle()
// bundle.putParcelable(Constant.EXTRA_LAST_DISCOVERED_TAG, lastTag)
// ctx.saveToBundle(bundle)
// (activity as MainActivity).navController.navigate(R.id.loadedWallet, bundle)
val bundle = Bundle() val bundle = Bundle()
bundle.putParcelable(Constant.EXTRA_LAST_DISCOVERED_TAG, lastTag) bundle.putParcelable(Constant.EXTRA_LAST_DISCOVERED_TAG, lastTag)
ctx.saveToBundle(bundle) ctx.saveToBundle(bundle)
@ -185,8 +181,8 @@ class MainFragment : BaseFragment(), NavigationResultListener, NfcAdapter.Reader
val bundle = Bundle().apply { ctx.saveToBundle(this) } val bundle = Bundle().apply { ctx.saveToBundle(this) }
navigateToDestination(R.id.action_main_to_emptyWalletFragment, bundle) navigateToDestination(R.id.action_main_to_emptyWalletFragment, bundle)
} }
card.status == TangemCard.Status.Purged -> Toast.makeText(context, R.string.erased_wallet, Toast.LENGTH_SHORT).show() card.status == TangemCard.Status.Purged -> Toast.makeText(context, R.string.main_screen_erased_wallet, Toast.LENGTH_SHORT).show()
card.status == TangemCard.Status.NotPersonalized -> Toast.makeText(context, R.string.not_personalized, Toast.LENGTH_SHORT).show() card.status == TangemCard.Status.NotPersonalized -> Toast.makeText(context, R.string.main_screen_not_personalized, Toast.LENGTH_SHORT).show()
else -> { else -> {
// val bundle = Bundle() // val bundle = Bundle()
@ -202,7 +198,7 @@ class MainFragment : BaseFragment(), NavigationResultListener, NfcAdapter.Reader
} else { } else {
// remove last UIDs because of error and no card read // remove last UIDs because of error and no card read
rlProgressBar.post { rlProgressBar.post {
Toast.makeText(context, R.string.try_to_scan_again, Toast.LENGTH_SHORT).show() context?.let { Toast.makeText(it, R.string.general_notification_scan_again, Toast.LENGTH_SHORT).show() }
unsuccessReadCount++ unsuccessReadCount++
if (cardProtocol.error is CardProtocol.TangemException_InvalidPIN) { if (cardProtocol.error is CardProtocol.TangemException_InvalidPIN) {

View file

@ -165,7 +165,7 @@ class PurgeFragment : BaseFragment(), NfcAdapter.ReaderCallback, CardProtocol.No
val data = bundleOf( val data = bundleOf(
EXTRA_TANGEM_CARD_UID to cardProtocol.card.uid, EXTRA_TANGEM_CARD_UID to cardProtocol.card.uid,
EXTRA_TANGEM_CARD to cardProtocol.card.asBundle, EXTRA_TANGEM_CARD to cardProtocol.card.asBundle,
Constant.EXTRA_MESSAGE to getString(R.string.cannot_erase_wallet) Constant.EXTRA_MESSAGE to getString(R.string.nfc_error_cannot_erase_wallet)
) )
navigateBackWithResult(RESULT_INVALID_PIN, data) navigateBackWithResult(RESULT_INVALID_PIN, data)
return@postDelayed return@postDelayed
@ -179,7 +179,7 @@ class PurgeFragment : BaseFragment(), NfcAdapter.ReaderCallback, CardProtocol.No
if (!NoExtendedLengthSupportDialog.allReadyShowed) if (!NoExtendedLengthSupportDialog.allReadyShowed)
NoExtendedLengthSupportDialog().show(activity!!.supportFragmentManager, NoExtendedLengthSupportDialog.TAG) NoExtendedLengthSupportDialog().show(activity!!.supportFragmentManager, NoExtendedLengthSupportDialog.TAG)
} else } else
Toast.makeText(context, R.string.try_to_scan_again, Toast.LENGTH_LONG).show() Toast.makeText(context, R.string.general_notification_scan_again_to_verify, Toast.LENGTH_LONG).show()
progressBar?.progress = 100 progressBar?.progress = 100
progressBar?.progressTintList = ColorStateList.valueOf(Color.RED) progressBar?.progressTintList = ColorStateList.valueOf(Color.RED)

View file

@ -56,7 +56,7 @@ class SendTransactionFragment : BaseFragment(), NfcAdapter.ReaderCallback {
val callback = object : OnBackPressedCallback(true) { val callback = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() { override fun handleOnBackPressed() {
Toast.makeText(context, R.string.please_wait, Toast.LENGTH_LONG).show() Toast.makeText(context, R.string.send_transaction_notification_wait, Toast.LENGTH_LONG).show()
} }
} }
@ -76,13 +76,13 @@ class SendTransactionFragment : BaseFragment(), NfcAdapter.ReaderCallback {
EventBus.getDefault().post(transactionFinishWithSuccess) EventBus.getDefault().post(transactionFinishWithSuccess)
val data = Bundle() val data = Bundle()
data.putString(Constant.EXTRA_MESSAGE, getString(R.string.transaction_has_been_successfully_signed)) data.putString(Constant.EXTRA_MESSAGE, getString(R.string.send_transaction_success))
navigateBackWithResult(Activity.RESULT_OK, data, R.id.loadedWalletFragment) navigateBackWithResult(Activity.RESULT_OK, data, R.id.loadedWalletFragment)
} }
private fun finishWithError(message: String) { private fun finishWithError(message: String) {
val data = Bundle() val data = Bundle()
data.putString(Constant.EXTRA_MESSAGE, String.format(getString(R.string.try_again_failed_to_send_transaction), message)) data.putString(Constant.EXTRA_MESSAGE, String.format(getString(R.string.send_transaction_error_failed_to_send), message))
navigateBackWithResult(Activity.RESULT_CANCELED, data, R.id.loadedWalletFragment) navigateBackWithResult(Activity.RESULT_CANCELED, data, R.id.loadedWalletFragment)
} }

View file

@ -32,7 +32,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
} }
private fun initToolbar() { private fun initToolbar() {
toolbar?.setTitle(R.string.settings) toolbar?.setTitle(R.string.settings_title)
toolbar?.setNavigationIcon(android.R.drawable.ic_menu_close_clear_cancel) toolbar?.setNavigationIcon(android.R.drawable.ic_menu_close_clear_cancel)
(activity as AppCompatActivity).setSupportActionBar(toolbar) (activity as AppCompatActivity).setSupportActionBar(toolbar)
toolbar?.setNavigationOnClickListener { toolbar?.setNavigationOnClickListener {

View file

@ -58,7 +58,7 @@ class VerifyCardFragment : BaseFragment(), NavigationResultListener, NfcAdapter.
val callback = object : OnBackPressedCallback(true) { val callback = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() { override fun handleOnBackPressed() {
val data = prepareResultIntent() val data = prepareResultIntent()
data.putExtra(Constant.EXTRA_MODIFICATION, getString(R.string.update)) data.putExtra(Constant.EXTRA_MODIFICATION, getString(R.string.main_screen_btn_update))
navigateUp() navigateUp()
} }
} }
@ -76,7 +76,7 @@ class VerifyCardFragment : BaseFragment(), NavigationResultListener, NfcAdapter.
btnOk.setOnClickListener { btnOk.setOnClickListener {
val data = prepareResultIntent() val data = prepareResultIntent()
data.putExtra(Constant.EXTRA_MODIFICATION, getString(R.string.update)) data.putExtra(Constant.EXTRA_MODIFICATION, getString(R.string.main_screen_btn_update))
navigateUp() navigateUp()
} }
} }
@ -154,9 +154,9 @@ class VerifyCardFragment : BaseFragment(), NavigationResultListener, NfcAdapter.
} }
val bundle = Bundle() val bundle = Bundle()
if (!CardProtocol.isDefaultPIN(newPIN) || !CardProtocol.isDefaultPIN2(newPIN2)) if (!CardProtocol.isDefaultPIN(newPIN) || !CardProtocol.isDefaultPIN2(newPIN2))
bundle.putString(Constant.EXTRA_MESSAGE, getString(R.string.if_you_forget)) bundle.putString(Constant.EXTRA_MESSAGE, getString(R.string.loaded_wallet_warning_dont_forget_pin))
else else
bundle.putString(Constant.EXTRA_MESSAGE, getString(R.string.if_you_use_default)) bundle.putString(Constant.EXTRA_MESSAGE, getString(R.string.loaded_wallet_warning_default_pin))
pinSwapWarningDialog.arguments = bundle pinSwapWarningDialog.arguments = bundle
activity?.supportFragmentManager?.let { pinSwapWarningDialog.show(it, PINSwapWarningDialog.TAG) } activity?.supportFragmentManager?.let { pinSwapWarningDialog.show(it, PINSwapWarningDialog.TAG) }
} }
@ -254,11 +254,11 @@ class VerifyCardFragment : BaseFragment(), NavigationResultListener, NfcAdapter.
tvManufacturerInfo.text = ctx.card!!.manufacturer.officialName tvManufacturerInfo.text = ctx.card!!.manufacturer.officialName
if (ctx.card!!.isManufacturerConfirmed && ctx.card!!.isCardPublicKeyValid) { if (ctx.card!!.isManufacturerConfirmed && ctx.card!!.isCardPublicKeyValid) {
tvCardIdentity.setText(R.string.attested) tvCardIdentity.setText(R.string.details_attested)
tvCardIdentity.setTextColor(ContextCompat.getColor(context!!, R.color.confirmed)) tvCardIdentity.setTextColor(ContextCompat.getColor(context!!, R.color.confirmed))
} else { } else {
tvCardIdentity.setText(R.string.not_confirmed) tvCardIdentity.setText(R.string.details_not_confirmed)
tvCardIdentity.setTextColor(ContextCompat.getColor(context!!, R.color.not_confirmed)) tvCardIdentity.setTextColor(ContextCompat.getColor(context!!, R.color.not_confirmed))
} }
@ -281,9 +281,9 @@ class VerifyCardFragment : BaseFragment(), NavigationResultListener, NfcAdapter.
ivBlockchain.setImageResource(Blockchain.getLogoImageResource(ctx.card!!.blockchainID, ctx.card!!.tokenSymbol)) ivBlockchain.setImageResource(Blockchain.getLogoImageResource(ctx.card!!.blockchainID, ctx.card!!.tokenSymbol))
if (ctx.card!!.isReusable!!) if (ctx.card!!.isReusable!!)
tvReusable.setText(R.string.reusable) tvReusable.setText(R.string.details_reusable)
else else
tvReusable.setText(R.string.one_off_banknote) tvReusable.setText(R.string.details_one_off_banknote)
var s = "" var s = ""
for (signingM in ctx.card!!.allowedSigningMethod) { for (signingM in ctx.card!!.allowedSigningMethod) {
@ -306,15 +306,15 @@ class VerifyCardFragment : BaseFragment(), NavigationResultListener, NfcAdapter.
when { when {
ctx.card!!.remainingSignatures == 0 -> { ctx.card!!.remainingSignatures == 0 -> {
tvRemainingSignatures.setTextColor(ContextCompat.getColor(context!!, R.color.not_confirmed)) tvRemainingSignatures.setTextColor(ContextCompat.getColor(context!!, R.color.not_confirmed))
tvRemainingSignatures.setText(R.string.none) tvRemainingSignatures.setText(R.string.details_none)
} }
ctx.card!!.remainingSignatures == 1 -> { ctx.card!!.remainingSignatures == 1 -> {
tvRemainingSignatures.setTextColor(ContextCompat.getColor(context!!, R.color.not_confirmed)) tvRemainingSignatures.setTextColor(ContextCompat.getColor(context!!, R.color.not_confirmed))
tvRemainingSignatures.setText(R.string.last_one) tvRemainingSignatures.setText(R.string.details_last_one)
} }
ctx.card!!.remainingSignatures > 1000 -> { ctx.card!!.remainingSignatures > 1000 -> {
tvRemainingSignatures.setTextColor(ContextCompat.getColor(context!!, R.color.confirmed)) tvRemainingSignatures.setTextColor(ContextCompat.getColor(context!!, R.color.confirmed))
tvRemainingSignatures.setText(R.string.unlimited) tvRemainingSignatures.setText(R.string.details_unlimited)
} }
else -> { else -> {
tvRemainingSignatures.setTextColor(ContextCompat.getColor(context!!, R.color.confirmed)) tvRemainingSignatures.setTextColor(ContextCompat.getColor(context!!, R.color.confirmed))
@ -365,41 +365,41 @@ class VerifyCardFragment : BaseFragment(), NavigationResultListener, NfcAdapter.
if (ctx.card!!.useDefaultPIN1()) { if (ctx.card!!.useDefaultPIN1()) {
imgPIN.setImageResource(R.drawable.unlock_pin1) imgPIN.setImageResource(R.drawable.unlock_pin1)
imgPIN.setOnClickListener { Toast.makeText(context, R.string.this_banknote_protected_default_PIN1_code, Toast.LENGTH_LONG).show() } imgPIN.setOnClickListener { Toast.makeText(context, R.string.details_protected_by_default_pin_1, Toast.LENGTH_LONG).show() }
} else { } else {
imgPIN.setImageResource(R.drawable.lock_pin1) imgPIN.setImageResource(R.drawable.lock_pin1)
imgPIN.setOnClickListener { Toast.makeText(context, R.string.this_banknote_protected_user_PIN1_code, Toast.LENGTH_LONG).show() } imgPIN.setOnClickListener { Toast.makeText(context, R.string.details_protected_by_user_pin_1, Toast.LENGTH_LONG).show() }
} }
if (ctx.card!!.pauseBeforePIN2 > 0 && (ctx.card!!.useDefaultPIN2()!! || !ctx.card!!.useSmartSecurityDelay())) { if (ctx.card!!.pauseBeforePIN2 > 0 && (ctx.card!!.useDefaultPIN2()!! || !ctx.card!!.useSmartSecurityDelay())) {
imgPIN2orSecurityDelay.setImageResource(R.drawable.timer) imgPIN2orSecurityDelay.setImageResource(R.drawable.timer)
imgPIN2orSecurityDelay.setOnClickListener { Toast.makeText(context, String.format(getString(R.string.this_banknote_will_enforce), ctx.card!!.pauseBeforePIN2 / 1000.0), Toast.LENGTH_LONG).show() } imgPIN2orSecurityDelay.setOnClickListener { Toast.makeText(context, String.format(getString(R.string.details_security_delay), ctx.card!!.pauseBeforePIN2 / 1000.0), Toast.LENGTH_LONG).show() }
} else if (ctx.card!!.useDefaultPIN2()!!) { } else if (ctx.card!!.useDefaultPIN2()!!) {
imgPIN2orSecurityDelay.setImageResource(R.drawable.unlock_pin2) imgPIN2orSecurityDelay.setImageResource(R.drawable.unlock_pin2)
imgPIN2orSecurityDelay.setOnClickListener { Toast.makeText(context, R.string.this_banknote_protected_default_PIN2_code, Toast.LENGTH_LONG).show() } imgPIN2orSecurityDelay.setOnClickListener { Toast.makeText(context, R.string.details_protected_by_default_pin_2, Toast.LENGTH_LONG).show() }
} else { } else {
imgPIN2orSecurityDelay.setImageResource(R.drawable.lock_pin2) imgPIN2orSecurityDelay.setImageResource(R.drawable.lock_pin2)
imgPIN2orSecurityDelay.setOnClickListener { Toast.makeText(context, R.string.this_banknote_protected_user_PIN2_code, Toast.LENGTH_LONG).show() } imgPIN2orSecurityDelay.setOnClickListener { Toast.makeText(context, R.string.details_protected_by_user_pin_2, Toast.LENGTH_LONG).show() }
} }
if (ctx.card!!.useDevelopersFirmware()!!) { if (ctx.card!!.useDevelopersFirmware()!!) {
imgDeveloperVersion.setImageResource(R.drawable.ic_developer_version) imgDeveloperVersion.setImageResource(R.drawable.ic_developer_version)
imgDeveloperVersion.visibility = View.VISIBLE imgDeveloperVersion.visibility = View.VISIBLE
imgDeveloperVersion.setOnClickListener { Toast.makeText(context, R.string.unlocked_banknote_only_development_use, Toast.LENGTH_LONG).show() } imgDeveloperVersion.setOnClickListener { Toast.makeText(context, R.string.details_unlocked_banknote, Toast.LENGTH_LONG).show() }
} else } else
imgDeveloperVersion.visibility = View.INVISIBLE imgDeveloperVersion.visibility = View.INVISIBLE
if (ctx.card!!.status == TangemCard.Status.Loaded) { if (ctx.card!!.status == TangemCard.Status.Loaded) {
tvWallet.text = ctx.coinData!!.shortWalletString tvWallet.text = ctx.coinData!!.shortWalletString
if (ctx.card!!.isWalletPublicKeyValid) { if (ctx.card!!.isWalletPublicKeyValid) {
tvWalletIdentity.setText(R.string.possession_proved) tvWalletIdentity.setText(R.string.details_possession_proved)
tvWalletIdentity.setTextColor(ContextCompat.getColor(context!!, R.color.confirmed)) tvWalletIdentity.setTextColor(ContextCompat.getColor(context!!, R.color.confirmed))
} else { } else {
tvWalletIdentity.setText(R.string.possession_not_proved) tvWalletIdentity.setText(R.string.details_possession_not_proved)
tvWalletIdentity.setTextColor(ContextCompat.getColor(context!!, R.color.not_confirmed)) tvWalletIdentity.setTextColor(ContextCompat.getColor(context!!, R.color.not_confirmed))
} }
} else { } else {
tvWallet!!.setText(R.string.not_available) tvWallet!!.setText(R.string.details_not_available)
tvWalletIdentity.setText(R.string.no_data_string) tvWalletIdentity.setText(R.string.no_data_string)
} }
} catch (e: Exception) { } catch (e: Exception) {
@ -466,7 +466,7 @@ class VerifyCardFragment : BaseFragment(), NavigationResultListener, NfcAdapter.
if (!engine!!.hasBalanceInfo()) { if (!engine!!.hasBalanceInfo()) {
return return
} else if (engine.isBalanceNotZero) { } else if (engine.isBalanceNotZero) {
Toast.makeText(context, R.string.cannot_erase_wallet_with_non_zero_balance, Toast.LENGTH_LONG).show() Toast.makeText(context, R.string.general_error_cannot_erase_wallet_with_non_zero_balance, Toast.LENGTH_LONG).show()
return return
} }

View file

@ -58,7 +58,7 @@ class PrepareCryptonitOtherApiWithdrawalFragment : BaseFragment(), NavigationRes
cryptonit.requestCryptoWithdrawal(ctx.blockchain.currency, dblAmount.toString(), ctx.coinData!!.wallet) cryptonit.requestCryptoWithdrawal(ctx.blockchain.currency, dblAmount.toString(), ctx.coinData!!.wallet)
} catch (e: Exception) { } catch (e: Exception) {
etAmount.error = getString(R.string.unknown_amount_format) etAmount.error = getString(R.string.prepare_transaction_error_unknown_amount_format)
} }
//Toast.makeText(this, strAmount, Toast.LENGTH_LONG).show() //Toast.makeText(this, strAmount, Toast.LENGTH_LONG).show()

View file

@ -88,7 +88,7 @@ class PrepareCryptonitWithdrawalFragment : BaseFragment(), NfcAdapter.ReaderCall
cryptonit.requestWithdrawCoins(ctx.blockchain.currency, dblAmount, ctx.coinData!!.wallet) cryptonit.requestWithdrawCoins(ctx.blockchain.currency, dblAmount, ctx.coinData!!.wallet)
} catch (e: Exception) { } catch (e: Exception) {
etAmount.error = getString(R.string.unknown_amount_format) etAmount.error = getString(R.string.prepare_transaction_error_unknown_amount_format)
} }
} }

View file

@ -78,7 +78,7 @@ class PrepareKrakenWithdrawalFragment : BaseFragment(), NavigationResultListener
kraken.requestWithdrawInfo(ctx.blockchain.currency, dblAmount.toString(), ctx.coinData!!.wallet) kraken.requestWithdrawInfo(ctx.blockchain.currency, dblAmount.toString(), ctx.coinData!!.wallet)
} catch (e: Exception) { } catch (e: Exception) {
etAmount.error = getString(R.string.unknown_amount_format) etAmount.error = getString(R.string.prepare_transaction_error_unknown_amount_format)
} }
} }
@ -153,7 +153,7 @@ class PrepareKrakenWithdrawalFragment : BaseFragment(), NavigationResultListener
val builder = AlertDialog.Builder(context) val builder = AlertDialog.Builder(context)
// Set a title for alert dialog // Set a title for alert dialog
builder.setTitle(R.string.please_confirm_withdraw) builder.setTitle(R.string.kraken_please_confirm_withdraw)
// Set a message for alert dialog // Set a message for alert dialog
builder.setMessage(String.format("Continue with fee %s %s?", fee!!.toString().trimEnd('0'), ctx.blockchain.currency)) builder.setMessage(String.format("Continue with fee %s %s?", fee!!.toString().trimEnd('0'), ctx.blockchain.currency))
@ -174,20 +174,20 @@ class PrepareKrakenWithdrawalFragment : BaseFragment(), NavigationResultListener
kraken.requestWithdraw(ctx.blockchain.currency, dblAmount.toString(), ctx.coinData!!.wallet) kraken.requestWithdraw(ctx.blockchain.currency, dblAmount.toString(), ctx.coinData!!.wallet)
} catch (e: Exception) { } catch (e: Exception) {
etAmount.error = getString(R.string.unknown_amount_format) etAmount.error = getString(R.string.prepare_transaction_error_unknown_amount_format)
} }
} }
DialogInterface.BUTTON_NEGATIVE -> { DialogInterface.BUTTON_NEGATIVE -> {
Toast.makeText(context, R.string.operation_canceled, Toast.LENGTH_LONG).show() Toast.makeText(context, R.string.kraken_operation_canceled, Toast.LENGTH_LONG).show()
} }
} }
} }
// Set the alert dialog positive/yes button // Set the alert dialog positive/yes button
builder.setPositiveButton(R.string.yes, dialogClickListener) builder.setPositiveButton(R.string.general_yes, dialogClickListener)
// Set the alert dialog negative/no button // Set the alert dialog negative/no button
builder.setNegativeButton(R.string.no, dialogClickListener) builder.setNegativeButton(R.string.general_no, dialogClickListener)
// Initialize the AlertDialog using builder object // Initialize the AlertDialog using builder object

View file

@ -101,25 +101,25 @@ class PinRequestFragment : BaseFragment(), NfcAdapter.ReaderCallback, Fingerprin
if (mode == Mode.RequestNewPIN) if (mode == Mode.RequestNewPIN)
if (PINStorage.haveEncryptedPIN()) { if (PINStorage.haveEncryptedPIN()) {
allowFingerprint = true allowFingerprint = true
tvPinPrompt.setText(R.string.enter_new_pin_or_use_fingerprint_scanner) tvPinPrompt.setText(R.string.pin_request_enter_new_pin_or_use_fingerprint_scanner)
} else } else
tvPinPrompt.setText(R.string.enter_new_pin) tvPinPrompt.setText(R.string.pin_request_enter_new_pin)
else if (mode == Mode.ConfirmNewPIN) else if (mode == Mode.ConfirmNewPIN)
tvPinPrompt.setText(R.string.confirm_new_pin) tvPinPrompt.setText(R.string.pin_request_confirm_new_pin)
else if (mode == Mode.RequestPIN) else if (mode == Mode.RequestPIN)
if (PINStorage.haveEncryptedPIN()) { if (PINStorage.haveEncryptedPIN()) {
allowFingerprint = true allowFingerprint = true
tvPinPrompt.setText(R.string.enter_pin_or_use_fingerprint_scanner) tvPinPrompt.setText(R.string.pin_request_enter_pin_or_use_fingerprint_scanner)
} else } else
tvPinPrompt.setText(R.string.enter_pin) tvPinPrompt.setText(R.string.pin_request_enter_pin)
else if (mode == Mode.RequestNewPIN2) else if (mode == Mode.RequestNewPIN2)
if (PINStorage.haveEncryptedPIN2()) { if (PINStorage.haveEncryptedPIN2()) {
allowFingerprint = true allowFingerprint = true
tvPinPrompt.setText(R.string.enter_new_pin_2_or_use_fingerprint_scanner) tvPinPrompt.setText(R.string.pin_request_prompt_new_pin_2_or_fingerprint)
} else } else
tvPinPrompt.setText(R.string.enter_new_pin_2) tvPinPrompt.setText(R.string.pin_request_new_pin_2)
else if (mode == Mode.ConfirmNewPIN2) else if (mode == Mode.ConfirmNewPIN2)
tvPinPrompt.setText(R.string.confirm_new_pin_2) tvPinPrompt.setText(R.string.pin_request_confirm_new_pin_2)
else if (mode == Mode.RequestPIN2) { else if (mode == Mode.RequestPIN2) {
val uid = arguments?.getString(EXTRA_TANGEM_CARD_UID) val uid = arguments?.getString(EXTRA_TANGEM_CARD_UID)
val card = TangemCard(uid) val card = TangemCard(uid)
@ -134,9 +134,9 @@ class PinRequestFragment : BaseFragment(), NfcAdapter.ReaderCallback, Fingerprin
if (PINStorage.haveEncryptedPIN2()) { if (PINStorage.haveEncryptedPIN2()) {
allowFingerprint = true allowFingerprint = true
tvPinPrompt.setText(R.string.enter_pin_2_or_use_fingerprint_scanner) tvPinPrompt.setText(R.string.pin_request_enter_pin_2_or_use_fingerprint_scanner)
} else } else
tvPinPrompt.setText(R.string.enter_pin_2) tvPinPrompt.setText(R.string.pin_request_prompt_enter_pin_2)
} }
if (!allowFingerprint) if (!allowFingerprint)
@ -287,13 +287,13 @@ class PinRequestFragment : BaseFragment(), NfcAdapter.ReaderCallback, Fingerprin
if (mode == Mode.ConfirmNewPIN) { if (mode == Mode.ConfirmNewPIN) {
if (pin != arguments?.getString(Constant.EXTRA_NEW_PIN)) { if (pin != arguments?.getString(Constant.EXTRA_NEW_PIN)) {
tvPin!!.error = getString(R.string.error_pin_confirmation_failed) tvPin!!.error = getString(R.string.pin_request_error_pin_confirmation_failed)
focusView = tvPin focusView = tvPin
cancel = true cancel = true
} }
} else if (mode == Mode.ConfirmNewPIN2) { } else if (mode == Mode.ConfirmNewPIN2) {
if (pin != arguments?.getString(Constant.EXTRA_NEW_PIN_2)) { if (pin != arguments?.getString(Constant.EXTRA_NEW_PIN_2)) {
tvPin!!.error = getString(R.string.error_pin_confirmation_failed) tvPin!!.error = getString(R.string.pin_request_error_pin_confirmation_failed)
focusView = tvPin focusView = tvPin
cancel = true cancel = true
} }

View file

@ -64,9 +64,9 @@ class PinSaveFragment : BaseFragment(), FingerprintHelper.FingerprintHelperListe
usePIN2 = arguments?.getBoolean(Constant.EXTRA_PIN2, false) ?: false usePIN2 = arguments?.getBoolean(Constant.EXTRA_PIN2, false) ?: false
if (usePIN2) if (usePIN2)
tvPinPrompt.text = getString(R.string.enter_pin2_and_use_fingerprint_to_save_it) tvPinPrompt.text = getString(R.string.pin_save_title_enter_pin2_and_save)
else else
tvPinPrompt.text = getString(R.string.enter_pin_and_use_fingerprint_to_save_it) tvPinPrompt.text = getString(R.string.pin_save_title_enter_pin_and_save)
if (usePIN2) { if (usePIN2) {
cbUseFingerprint.isChecked = true cbUseFingerprint.isChecked = true
@ -352,17 +352,17 @@ class PinSaveFragment : BaseFragment(), FingerprintHelper.FingerprintHelperListe
fingerprintManager = activity?.getSystemService(Context.FINGERPRINT_SERVICE) as FingerprintManager fingerprintManager = activity?.getSystemService(Context.FINGERPRINT_SERVICE) as FingerprintManager
if (!keyguardManager.isKeyguardSecure) { if (!keyguardManager.isKeyguardSecure) {
Toast.makeText(context, R.string.user_has_not_enabled_lock_screen, Toast.LENGTH_LONG).show() Toast.makeText(context, R.string.pin_save_toast_lock_screen_not_enabled, Toast.LENGTH_LONG).show()
return false return false
} }
if (ActivityCompat.checkSelfPermission(context!!, Manifest.permission.USE_FINGERPRINT) != PackageManager.PERMISSION_GRANTED) { if (ActivityCompat.checkSelfPermission(requireContext(), Manifest.permission.USE_FINGERPRINT) != PackageManager.PERMISSION_GRANTED) {
Toast.makeText(context, R.string.user_has_not_granted_permission_to_use_fingerprint, Toast.LENGTH_LONG).show() Toast.makeText(context, R.string.pin_save_toast_no_permission_to_use_fingerprint, Toast.LENGTH_LONG).show()
return false return false
} }
if (!fingerprintManager!!.hasEnrolledFingerprints()) { if (!fingerprintManager!!.hasEnrolledFingerprints()) {
Toast.makeText(context, R.string.user_has_not_registered_any_fingerprints, Toast.LENGTH_LONG).show() Toast.makeText(context, R.string.pin_save_toast_no_fingerprints_registered, Toast.LENGTH_LONG).show()
return false return false
} }

View file

@ -148,7 +148,7 @@ class PinSwapFragment : BaseFragment(), NfcAdapter.ReaderCallback, CardProtocol.
NoExtendedLengthSupportDialog.TAG) NoExtendedLengthSupportDialog.TAG)
} }
} else { } else {
Toast.makeText(context, R.string.try_to_scan_again, Toast.LENGTH_SHORT).show() Toast.makeText(context, R.string.general_notification_scan_again, Toast.LENGTH_SHORT).show()
} }
progressBar!!.progress = 100 progressBar!!.progress = 100
progressBar!!.progressTintList = ColorStateList.valueOf(Color.RED) progressBar!!.progressTintList = ColorStateList.valueOf(Color.RED)

View file

@ -113,7 +113,7 @@ class CreateNewWalletFragment : BaseFragment(), NfcAdapter.ReaderCallback, CardP
progressBar?.progressTintList = ColorStateList.valueOf(Color.DKGRAY) progressBar?.progressTintList = ColorStateList.valueOf(Color.DKGRAY)
progressBar?.visibility = View.INVISIBLE progressBar?.visibility = View.INVISIBLE
val data = Bundle() val data = Bundle()
data.putString(Constant.EXTRA_MESSAGE, getString(R.string.cannot_create_wallet)) data.putString(Constant.EXTRA_MESSAGE, getString(R.string.nfc_error_cannot_create_wallet))
data.putString(EXTRA_TANGEM_CARD_UID, cardProtocol.card.uid) data.putString(EXTRA_TANGEM_CARD_UID, cardProtocol.card.uid)
data.putBundle(EXTRA_TANGEM_CARD, cardProtocol.card!!.asBundle) data.putBundle(EXTRA_TANGEM_CARD, cardProtocol.card!!.asBundle)
navigateBackWithResult(Constant.RESULT_INVALID_PIN, data) navigateBackWithResult(Constant.RESULT_INVALID_PIN, data)
@ -129,7 +129,7 @@ class CreateNewWalletFragment : BaseFragment(), NfcAdapter.ReaderCallback, CardP
NoExtendedLengthSupportDialog().show(activity!!.supportFragmentManager, NoExtendedLengthSupportDialog.TAG) NoExtendedLengthSupportDialog().show(activity!!.supportFragmentManager, NoExtendedLengthSupportDialog.TAG)
} }
} else } else
Toast.makeText(context, R.string.try_to_scan_again, Toast.LENGTH_SHORT).show() Toast.makeText(context, R.string.general_notification_scan_again, Toast.LENGTH_SHORT).show()
progressBar?.progress = 100 progressBar?.progress = 100
progressBar?.progressTintList = ColorStateList.valueOf(Color.RED) progressBar?.progressTintList = ColorStateList.valueOf(Color.RED)

View file

@ -93,7 +93,7 @@ class EmptyWalletFragment : BaseFragment(), NavigationResultListener,
R.id.action_emptyWalletFragment_to_verifyCard, data) R.id.action_emptyWalletFragment_to_verifyCard, data)
} else { } else {
(activity as MainActivity).toastHelper (activity as MainActivity).toastHelper
.showSingleToast(context, getString(R.string.need_attach_card_again)) .showSingleToast(context, getString(R.string.general_notification_scan_again_to_verify))
} }
} }
} }
@ -188,7 +188,7 @@ class EmptyWalletFragment : BaseFragment(), NavigationResultListener,
if (!NoExtendedLengthSupportDialog.allReadyShowed) if (!NoExtendedLengthSupportDialog.allReadyShowed)
NoExtendedLengthSupportDialog().show(activity!!.supportFragmentManager, NoExtendedLengthSupportDialog.TAG) NoExtendedLengthSupportDialog().show(activity!!.supportFragmentManager, NoExtendedLengthSupportDialog.TAG)
} else } else
Toast.makeText(context, R.string.try_to_scan_again, Toast.LENGTH_LONG).show() Toast.makeText(context, R.string.general_notification_scan_again, Toast.LENGTH_LONG).show()
progressBar?.progress = 100 progressBar?.progress = 100
progressBar?.progressTintList = ColorStateList.valueOf(Color.RED) progressBar?.progressTintList = ColorStateList.valueOf(Color.RED)

View file

@ -88,11 +88,16 @@ class LoadedWalletFragment : BaseFragment(), NavigationResultListener, NfcAdapte
resources.getColorStateList(R.color.btn_dark) resources.getColorStateList(R.color.btn_dark)
} }
private val activeColor: ColorStateList by lazy { private val activeColor: ColorStateList by lazy {
val color = if( (Util.bytesToHex(ctx.card?.cid)?.startsWith("10") == true)) {
R.color.start2coin_orange
} else {
R.color.colorAccent
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
resources.getColorStateList(R.color.colorAccent, activity?.theme) resources.getColorStateList(color, activity?.theme)
else else
@Suppress("DEPRECATION") @Suppress("DEPRECATION")
resources.getColorStateList(R.color.colorAccent) resources.getColorStateList(color)
} }
private var requestCounter: Int = 0 private var requestCounter: Int = 0
set(value) { set(value) {
@ -144,31 +149,35 @@ class LoadedWalletFragment : BaseFragment(), NavigationResultListener, NfcAdapte
btnCopy.setOnClickListener { doShareWallet(false) } btnCopy.setOnClickListener { doShareWallet(false) }
if (Util.bytesToHex(ctx.card?.cid)?.startsWith("10") == true) {
btnLoad?.visibility = View.GONE
}
btnLoad.setOnClickListener { btnLoad.setOnClickListener {
val items = arrayOf<CharSequence>(getString(R.string.in_app), getString(R.string.load_via_share_address), getString(R.string.load_via_qr))//, getString(R.string.via_cryptonit), getString(R.string.via_kraken)) val items = arrayOf<CharSequence>(getString(R.string.loaded_wallet_load_via_app), getString(R.string.loaded_wallet_load_via_share_address), getString(R.string.loaded_wallet_load_via_qr))//, getString(R.string.via_cryptonit), getString(R.string.via_kraken))
val cw = android.view.ContextThemeWrapper(activity, R.style.AlertDialogTheme) val cw = android.view.ContextThemeWrapper(activity, R.style.AlertDialogTheme)
val dialog = AlertDialog.Builder(cw).setItems(items val dialog = AlertDialog.Builder(cw).setItems(items
) { _, which -> ) { _, which ->
when (items[which]) { when (items[which]) {
getString(R.string.in_app) -> { getString(R.string.loaded_wallet_load_via_app) -> {
try { try {
val intent = Intent(Intent.ACTION_VIEW, engine.shareWalletUri) val intent = Intent(Intent.ACTION_VIEW, engine.shareWalletUri)
intent.addCategory(Intent.CATEGORY_DEFAULT) intent.addCategory(Intent.CATEGORY_DEFAULT)
startActivity(intent) startActivity(intent)
} catch (e: ActivityNotFoundException) { } catch (e: ActivityNotFoundException) {
(activity as MainActivity).toastHelper.showSingleToast(context, getString(R.string.no_compatible_wallet)) (activity as MainActivity).toastHelper.showSingleToast(context, getString(R.string.loaded_wallet_no_compatible_wallet))
} }
} }
getString(R.string.load_via_share_address) -> { getString(R.string.loaded_wallet_load_via_share_address) -> {
doShareWallet(true) doShareWallet(true)
} }
getString(R.string.load_via_qr) -> { getString(R.string.loaded_wallet_load_via_qr) -> {
ShowQRCodeDialog.show(activity as AppCompatActivity?, engine.shareWalletUri.toString()) ShowQRCodeDialog.show(activity as AppCompatActivity?, engine.shareWalletUri.toString())
} }
getString(R.string.via_cryptonit) -> { getString(R.string.loaded_wallet_load_via_cryptonit) -> {
navigateForResult( navigateForResult(
Constant.REQUEST_CODE_RECEIVE_TRANSACTION, Constant.REQUEST_CODE_RECEIVE_TRANSACTION,
R.id.action_loadedWalletFragment_to_prepareCryptonitWithdrawalFragment, R.id.action_loadedWalletFragment_to_prepareCryptonitWithdrawalFragment,
@ -176,7 +185,7 @@ class LoadedWalletFragment : BaseFragment(), NavigationResultListener, NfcAdapte
) )
} }
getString(R.string.via_kraken) -> { getString(R.string.loaded_wallet_load_via_kraken) -> {
navigateForResult( navigateForResult(
Constant.REQUEST_CODE_RECEIVE_TRANSACTION, Constant.REQUEST_CODE_RECEIVE_TRANSACTION,
R.id.action_loadedWalletFragment_to_prepareKrakenWithdrawalFragment, R.id.action_loadedWalletFragment_to_prepareKrakenWithdrawalFragment,
@ -198,14 +207,14 @@ class LoadedWalletFragment : BaseFragment(), NavigationResultListener, NfcAdapte
if (!engine.isExtractPossible) { if (!engine.isExtractPossible) {
(activity as MainActivity).toastHelper.showSingleToast(context, ctx.message) (activity as MainActivity).toastHelper.showSingleToast(context, ctx.message)
} else if (ctx.card!!.remainingSignatures == 0) { } else if (ctx.card!!.remainingSignatures == 0) {
(activity as MainActivity).toastHelper.showSingleToast(context, getString(R.string.card_has_no_remaining_signature)) (activity as MainActivity).toastHelper.showSingleToast(context, getString(R.string.loaded_wallet_warning_no_signature))
} else { } else {
val bundle = Bundle().apply { ctx.saveToBundle(this) } val bundle = Bundle().apply { ctx.saveToBundle(this) }
navigateForResult(Constant.REQUEST_CODE_SEND_TRANSACTION, navigateForResult(Constant.REQUEST_CODE_SEND_TRANSACTION,
R.id.action_loadedWalletFragment_to_prepareTransactionFragment, bundle) R.id.action_loadedWalletFragment_to_prepareTransactionFragment, bundle)
} }
else else
Toast.makeText(activity, getString(R.string.no_connection), Toast.LENGTH_SHORT).show() Toast.makeText(activity, getString(R.string.general_error_no_connection), Toast.LENGTH_SHORT).show()
} }
btnDetails.setOnClickListener { btnDetails.setOnClickListener {
@ -215,7 +224,7 @@ class LoadedWalletFragment : BaseFragment(), NavigationResultListener, NfcAdapte
R.id.action_loadedWalletFragment_to_verifyCard, bundle) R.id.action_loadedWalletFragment_to_verifyCard, bundle)
} else { } else {
(activity as MainActivity).toastHelper (activity as MainActivity).toastHelper
.showSingleToast(context, getString(R.string.need_attach_card_again)) .showSingleToast(context, getString(R.string.general_notification_scan_again_to_verify))
} }
} }
@ -395,9 +404,9 @@ class LoadedWalletFragment : BaseFragment(), NavigationResultListener, NfcAdapte
} }
val bundle = Bundle() val bundle = Bundle()
if (!CardProtocol.isDefaultPIN(newPIN) || !CardProtocol.isDefaultPIN2(newPIN2)) if (!CardProtocol.isDefaultPIN(newPIN) || !CardProtocol.isDefaultPIN2(newPIN2))
bundle.putString(Constant.EXTRA_MESSAGE, getString(R.string.if_you_forget)) bundle.putString(Constant.EXTRA_MESSAGE, getString(R.string.loaded_wallet_warning_dont_forget_pin))
else else
bundle.putString(Constant.EXTRA_MESSAGE, getString(R.string.if_you_use_default)) bundle.putString(Constant.EXTRA_MESSAGE, getString(R.string.loaded_wallet_warning_default_pin))
pinSwapWarningDialog.arguments = bundle pinSwapWarningDialog.arguments = bundle
activity?.supportFragmentManager?.let { pinSwapWarningDialog.show(it, PINSwapWarningDialog.TAG) } activity?.supportFragmentManager?.let { pinSwapWarningDialog.show(it, PINSwapWarningDialog.TAG) }
} }
@ -499,7 +508,7 @@ class LoadedWalletFragment : BaseFragment(), NavigationResultListener, NfcAdapte
} }
override fun onReadStart(cardProtocol: CardProtocol) { override fun onReadStart(cardProtocol: CardProtocol) {
rlProgressBar?.post { rlProgressBar.visibility = View.VISIBLE } rlProgressBar?.post { rlProgressBar?.visibility = View.VISIBLE }
} }
override fun onReadProgress(protocol: CardProtocol, progress: Int) { override fun onReadProgress(protocol: CardProtocol, progress: Int) {
@ -528,7 +537,7 @@ class LoadedWalletFragment : BaseFragment(), NavigationResultListener, NfcAdapte
if (!NoExtendedLengthSupportDialog.allReadyShowed) if (!NoExtendedLengthSupportDialog.allReadyShowed)
activity?.supportFragmentManager?.let { NoExtendedLengthSupportDialog().show(it, NoExtendedLengthSupportDialog.TAG) } activity?.supportFragmentManager?.let { NoExtendedLengthSupportDialog().show(it, NoExtendedLengthSupportDialog.TAG) }
else else
Toast.makeText(activity, R.string.try_to_scan_again, Toast.LENGTH_SHORT).show() Toast.makeText(activity, R.string.general_notification_scan_again, Toast.LENGTH_SHORT).show()
} }
} }
} }
@ -610,7 +619,7 @@ class LoadedWalletFragment : BaseFragment(), NavigationResultListener, NfcAdapte
if (srl.isRefreshing) { if (srl.isRefreshing) {
tvBalanceLine1.setTextColor(resources.getColor(R.color.primary)) tvBalanceLine1.setTextColor(resources.getColor(R.color.primary))
tvBalanceLine1.text = getString(R.string.verifying_in_blockchain) tvBalanceLine1.text = getString(R.string.loaded_wallet_verifying_in_blockchain)
tvBalanceLine2.text = "" tvBalanceLine2.text = ""
tvBalance.text = "" tvBalance.text = ""
tvBalanceEquivalent.text = "" tvBalanceEquivalent.text = ""
@ -744,7 +753,7 @@ class LoadedWalletFragment : BaseFragment(), NavigationResultListener, NfcAdapte
} }
) )
} else { } else {
ctx.error = getString(R.string.no_connection) ctx.error = getString(R.string.general_error_no_connection)
updateViews() updateViews()
} }
} }
@ -752,9 +761,9 @@ class LoadedWalletFragment : BaseFragment(), NavigationResultListener, NfcAdapte
private fun showWarningIfPendingTransactionIsPossible() { private fun showWarningIfPendingTransactionIsPossible() {
if (ctx.card.signedHashes > 0 && isNewCid(ctx.card.cidDescription)) { if (ctx.card.signedHashes > 0 && isNewCid(ctx.card.cidDescription)) {
AlertDialog.Builder(context) AlertDialog.Builder(context)
.setTitle(R.string.warning) .setTitle(R.string.dialog_warning)
.setMessage(R.string.card_signed_transactions_warning) .setMessage(R.string.loaded_wallet_warning_card_signed_transactions)
.setPositiveButton(R.string.ok) { _, _ -> } .setPositiveButton(R.string.general_ok) { _, _ -> }
.create() .create()
.show() .show()
} }
@ -771,7 +780,7 @@ class LoadedWalletFragment : BaseFragment(), NavigationResultListener, NfcAdapte
serverApiTangem.cardVerifyAndGetInfo(ctx.card) serverApiTangem.cardVerifyAndGetInfo(ctx.card)
} }
} else { } else {
ctx.error = getString(R.string.no_connection) ctx.error = getString(R.string.general_error_no_connection)
updateViews() updateViews()
} }
} }
@ -814,7 +823,7 @@ class LoadedWalletFragment : BaseFragment(), NavigationResultListener, NfcAdapte
if (isIntentSafe) { if (isIntentSafe) {
// create intent to show chooser // create intent to show chooser
val chooser = Intent.createChooser(intent, getString(R.string.share_wallet_address_with)) val chooser = Intent.createChooser(intent, getString(R.string.loaded_wallet_chooser_share))
// verify the intent will resolve to at least one activity // verify the intent will resolve to at least one activity
if (intent.resolveActivity(activity!!.packageManager) != null) { if (intent.resolveActivity(activity!!.packageManager) != null) {
@ -823,13 +832,13 @@ class LoadedWalletFragment : BaseFragment(), NavigationResultListener, NfcAdapte
} else { } else {
val clipboard = activity?.getSystemService(CLIPBOARD_SERVICE) as ClipboardManager val clipboard = activity?.getSystemService(CLIPBOARD_SERVICE) as ClipboardManager
clipboard.primaryClip = ClipData.newPlainText(txtShare, txtShare) clipboard.primaryClip = ClipData.newPlainText(txtShare, txtShare)
Toast.makeText(activity, R.string.copied_clipboard, Toast.LENGTH_LONG).show() Toast.makeText(activity, R.string.loaded_wallet_toast_copied, Toast.LENGTH_LONG).show()
} }
} else { } else {
val txtShare = ctx.coinData.wallet val txtShare = ctx.coinData.wallet
val clipboard = activity?.getSystemService(CLIPBOARD_SERVICE) as ClipboardManager val clipboard = activity?.getSystemService(CLIPBOARD_SERVICE) as ClipboardManager
clipboard.primaryClip = ClipData.newPlainText(txtShare, txtShare) clipboard.primaryClip = ClipData.newPlainText(txtShare, txtShare)
Toast.makeText(activity, R.string.copied_clipboard, Toast.LENGTH_LONG).show() Toast.makeText(activity, R.string.loaded_wallet_toast_copied, Toast.LENGTH_LONG).show()
} }
} }

View file

@ -105,13 +105,13 @@ public class BtcCashEngine extends CoinEngine {
@Override @Override
public boolean isExtractPossible() { public boolean isExtractPossible() {
if (!hasBalanceInfo()) { if (!hasBalanceInfo()) {
ctx.setMessage(R.string.cannot_obtain_data_from_blockchain); ctx.setMessage(R.string.loaded_wallet_error_obtaining_blockchain_data);
} else if (!isBalanceNotZero()) { } else if (!isBalanceNotZero()) {
ctx.setMessage(R.string.wallet_empty); ctx.setMessage(R.string.general_wallet_empty);
} else if (awaitingConfirmation()) { } else if (awaitingConfirmation()) {
ctx.setMessage(R.string.please_wait_while_previous); ctx.setMessage(R.string.loaded_wallet_message_wait);
} else if (coinData.getUnspentTransactions().size() == 0) { } else if (coinData.getUnspentTransactions().size() == 0) {
ctx.setMessage(R.string.please_wait_for_confirmation); ctx.setMessage(R.string.loaded_wallet_message_refresh);
} else { } else {
return true; return true;
} }

View file

@ -124,11 +124,11 @@ public class BinanceEngine extends CoinEngine {
public boolean isExtractPossible() { public boolean isExtractPossible() {
if (!hasBalanceInfo()) { if (!hasBalanceInfo()) {
ctx.setMessage(R.string.cannot_obtain_data_from_blockchain); ctx.setMessage(R.string.loaded_wallet_error_obtaining_blockchain_data);
} else if (!isBalanceNotZero()) { } else if (!isBalanceNotZero()) {
ctx.setMessage(R.string.wallet_empty); ctx.setMessage(R.string.general_wallet_empty);
} else if (awaitingConfirmation()) { } else if (awaitingConfirmation()) {
ctx.setMessage(R.string.please_wait_while_previous); ctx.setMessage(R.string.loaded_wallet_message_wait);
} else { } else {
return true; return true;
} }

View file

@ -124,13 +124,13 @@ public class BtcEngine extends CoinEngine {
@Override @Override
public boolean isExtractPossible() { public boolean isExtractPossible() {
if (!hasBalanceInfo()) { if (!hasBalanceInfo()) {
ctx.setMessage(R.string.cannot_obtain_data_from_blockchain); ctx.setMessage(R.string.loaded_wallet_error_obtaining_blockchain_data);
} else if (!isBalanceNotZero()) { } else if (!isBalanceNotZero()) {
ctx.setMessage(R.string.wallet_empty); ctx.setMessage(R.string.general_wallet_empty);
} else if (awaitingConfirmation()) { } else if (awaitingConfirmation()) {
ctx.setMessage(R.string.please_wait_while_previous); ctx.setMessage(R.string.loaded_wallet_message_wait);
} else if (coinData.getUnspentTransactions().size() == 0) { } else if (coinData.getUnspentTransactions().size() == 0) {
ctx.setMessage(R.string.please_wait_for_confirmation); ctx.setMessage(R.string.loaded_wallet_message_refresh);
} else { } else {
return true; return true;
} }

View file

@ -119,13 +119,13 @@ public class CardanoEngine extends CoinEngine {
@Override @Override
public boolean isExtractPossible() { public boolean isExtractPossible() {
if (!hasBalanceInfo()) { if (!hasBalanceInfo()) {
ctx.setMessage(R.string.cannot_obtain_data_from_blockchain); ctx.setMessage(R.string.loaded_wallet_error_obtaining_blockchain_data);
} else if (!isBalanceNotZero()) { } else if (!isBalanceNotZero()) {
ctx.setMessage(R.string.wallet_empty); ctx.setMessage(R.string.general_wallet_empty);
} else if (awaitingConfirmation()) { } else if (awaitingConfirmation()) {
ctx.setMessage(R.string.please_wait_while_previous); ctx.setMessage(R.string.loaded_wallet_message_wait);
} else if (coinData.getUnspentOutputs().size() == 0) { } else if (coinData.getUnspentOutputs().size() == 0) {
ctx.setMessage(R.string.please_wait_for_confirmation); ctx.setMessage(R.string.loaded_wallet_message_refresh);
} else { } else {
return true; return true;
} }

View file

@ -102,13 +102,13 @@ public class DucatusEngine extends BtcEngine {
@Override @Override
public boolean isExtractPossible() { public boolean isExtractPossible() {
if (!hasBalanceInfo()) { if (!hasBalanceInfo()) {
ctx.setMessage(R.string.cannot_obtain_data_from_blockchain); ctx.setMessage(R.string.loaded_wallet_error_obtaining_blockchain_data);
} else if (!isBalanceNotZero()) { } else if (!isBalanceNotZero()) {
ctx.setMessage(R.string.wallet_empty); ctx.setMessage(R.string.general_wallet_empty);
} else if (awaitingConfirmation()) { } else if (awaitingConfirmation()) {
ctx.setMessage(R.string.please_wait_while_previous); ctx.setMessage(R.string.loaded_wallet_message_wait);
} else if (coinData.getUnspentTransactions().size() == 0) { } else if (coinData.getUnspentTransactions().size() == 0) {
ctx.setMessage(R.string.please_wait_for_confirmation); ctx.setMessage(R.string.loaded_wallet_message_refresh);
} else { } else {
return true; return true;
} }

View file

@ -227,11 +227,11 @@ public class EosEngine extends CoinEngine {
@Override @Override
public boolean isExtractPossible() { public boolean isExtractPossible() {
if (!hasBalanceInfo()) { if (!hasBalanceInfo()) {
ctx.setMessage(R.string.cannot_obtain_data_from_blockchain); ctx.setMessage(R.string.loaded_wallet_error_obtaining_blockchain_data);
} else if (!isBalanceNotZero()) { } else if (!isBalanceNotZero()) {
ctx.setMessage(R.string.wallet_empty); ctx.setMessage(R.string.general_wallet_empty);
} else if (awaitingConfirmation()) { } else if (awaitingConfirmation()) {
ctx.setMessage(R.string.please_wait_while_previous); ctx.setMessage(R.string.loaded_wallet_message_wait);
} else { } else {
return true; return true;
} }

View file

@ -241,11 +241,11 @@ public class EthEngine extends CoinEngine {
@Override @Override
public boolean isExtractPossible() { public boolean isExtractPossible() {
if (!hasBalanceInfo()) { if (!hasBalanceInfo()) {
ctx.setMessage(R.string.cannot_obtain_data_from_blockchain); ctx.setMessage(R.string.loaded_wallet_error_obtaining_blockchain_data);
} else if (!isBalanceNotZero()) { } else if (!isBalanceNotZero()) {
ctx.setMessage(R.string.wallet_empty); ctx.setMessage(R.string.general_wallet_empty);
} else if (awaitingConfirmation()) { } else if (awaitingConfirmation()) {
ctx.setMessage(R.string.please_wait_while_previous); ctx.setMessage(R.string.loaded_wallet_message_wait);
} else { } else {
return true; return true;
} }
@ -560,7 +560,7 @@ public class EthEngine extends CoinEngine {
@Override @Override
public void onFail(String method, String message) { public void onFail(String method, String message) {
ctx.setError(ctx.getContext().getString(R.string.cannot_calculate_fee_wrong_data_received_from_node)); ctx.setError(ctx.getContext().getString(R.string.confirm_transaction_error_cannot_calculate_fee));
blockchainRequestsCallbacks.onComplete(false); blockchainRequestsCallbacks.onComplete(false);
} }
}; };

View file

@ -111,13 +111,13 @@ public class LtcEngine extends BtcEngine {
@Override @Override
public boolean isExtractPossible() { public boolean isExtractPossible() {
if (!hasBalanceInfo()) { if (!hasBalanceInfo()) {
ctx.setMessage(R.string.cannot_obtain_data_from_blockchain); ctx.setMessage(R.string.loaded_wallet_error_obtaining_blockchain_data);
} else if (!isBalanceNotZero()) { } else if (!isBalanceNotZero()) {
ctx.setMessage(R.string.wallet_empty); ctx.setMessage(R.string.general_wallet_empty);
} else if (awaitingConfirmation()) { } else if (awaitingConfirmation()) {
ctx.setMessage(R.string.please_wait_while_previous); ctx.setMessage(R.string.loaded_wallet_message_wait);
} else if (coinData.getUnspentTransactions().size() == 0) { } else if (coinData.getUnspentTransactions().size() == 0) {
ctx.setMessage(R.string.please_wait_for_confirmation); ctx.setMessage(R.string.loaded_wallet_message_refresh);
} else { } else {
return true; return true;
} }

View file

@ -73,11 +73,11 @@ public class MaticTokenEngine extends TokenEngine {
@Override @Override
public boolean isExtractPossible() { public boolean isExtractPossible() {
if (!hasBalanceInfo()) { if (!hasBalanceInfo()) {
ctx.setMessage(R.string.cannot_obtain_data_from_blockchain); ctx.setMessage(R.string.loaded_wallet_error_obtaining_blockchain_data);
} else if (!isBalanceNotZero()) { } else if (!isBalanceNotZero()) {
ctx.setMessage(R.string.wallet_empty); ctx.setMessage(R.string.general_wallet_empty);
} else if (awaitingConfirmation()) { } else if (awaitingConfirmation()) {
ctx.setMessage(R.string.please_wait_while_previous); ctx.setMessage(R.string.loaded_wallet_message_wait);
} else { } else {
return true; return true;
} }

View file

@ -9,9 +9,9 @@ import com.tangem.data.network.model.InfuraResponse;
import com.tangem.wallet.BTCUtils; import com.tangem.wallet.BTCUtils;
import com.tangem.wallet.CoinEngine; import com.tangem.wallet.CoinEngine;
import com.tangem.wallet.EthTransaction; import com.tangem.wallet.EthTransaction;
import com.tangem.wallet.R;
import com.tangem.wallet.TangemContext; import com.tangem.wallet.TangemContext;
import com.tangem.wallet.eth.EthEngine; import com.tangem.wallet.eth.EthEngine;
import com.tangem.wallet.R;
import java.math.BigInteger; import java.math.BigInteger;
@ -162,7 +162,7 @@ public class RskEngine extends EthEngine {
@Override @Override
public void onFail(String method, String message) { public void onFail(String method, String message) {
ctx.setError(ctx.getContext().getString(R.string.cannot_calculate_fee_wrong_data_received_from_node)); ctx.setError(ctx.getContext().getString(R.string.confirm_transaction_error_cannot_calculate_fee));
blockchainRequestsCallbacks.onComplete(false); blockchainRequestsCallbacks.onComplete(false);
} }
}; };

View file

@ -9,9 +9,9 @@ import com.tangem.data.network.model.InfuraResponse;
import com.tangem.wallet.BTCUtils; import com.tangem.wallet.BTCUtils;
import com.tangem.wallet.CoinEngine; import com.tangem.wallet.CoinEngine;
import com.tangem.wallet.EthTransaction; import com.tangem.wallet.EthTransaction;
import com.tangem.wallet.R;
import com.tangem.wallet.TangemContext; import com.tangem.wallet.TangemContext;
import com.tangem.wallet.token.TokenEngine; import com.tangem.wallet.token.TokenEngine;
import com.tangem.wallet.R;
import java.math.BigInteger; import java.math.BigInteger;
@ -50,13 +50,13 @@ public class RskTokenEngine extends TokenEngine {
@Override @Override
public boolean isExtractPossible() { public boolean isExtractPossible() {
if (!hasBalanceInfo()) { if (!hasBalanceInfo()) {
ctx.setMessage(R.string.cannot_obtain_data_from_blockchain); ctx.setMessage(R.string.loaded_wallet_error_obtaining_blockchain_data);
} else if (!isBalanceNotZero()) { } else if (!isBalanceNotZero()) {
ctx.setMessage(R.string.wallet_empty); ctx.setMessage(R.string.general_wallet_empty);
} else if (awaitingConfirmation()) { } else if (awaitingConfirmation()) {
ctx.setMessage(R.string.please_wait_while_previous); ctx.setMessage(R.string.loaded_wallet_message_wait);
} else if (!isBalanceAlterNotZero()) { } else if (!isBalanceAlterNotZero()) {
ctx.setMessage(ctx.getString(R.string.not_enough_rbtc_for_fee)); ctx.setMessage(ctx.getString(R.string.confirm_transaction_error_not_enough_rbtc_for_fee));
} else { } else {
return true; return true;
} }

View file

@ -308,13 +308,13 @@ public class TokenEngine extends CoinEngine {
@Override @Override
public boolean isExtractPossible() { public boolean isExtractPossible() {
if (!hasBalanceInfo()) { if (!hasBalanceInfo()) {
ctx.setMessage(R.string.cannot_obtain_data_from_blockchain); ctx.setMessage(R.string.loaded_wallet_error_obtaining_blockchain_data);
} else if (!isBalanceNotZero()) { } else if (!isBalanceNotZero()) {
ctx.setMessage(R.string.wallet_empty); ctx.setMessage(R.string.general_wallet_empty);
} else if (awaitingConfirmation()) { } else if (awaitingConfirmation()) {
ctx.setMessage(R.string.please_wait_while_previous); ctx.setMessage(R.string.loaded_wallet_message_wait);
} else if (!isBalanceAlterNotZero()) { } else if (!isBalanceAlterNotZero()) {
ctx.setMessage(ctx.getString(R.string.not_enough_eth_for_fee)); ctx.setMessage(ctx.getString(R.string.confirm_transaction_error_not_enough_eth_for_fee));
} else { } else {
return true; return true;
} }

View file

@ -105,11 +105,11 @@ public class XlmEngine extends CoinEngine {
@Override @Override
public boolean isExtractPossible() { public boolean isExtractPossible() {
if (!hasBalanceInfo()) { if (!hasBalanceInfo()) {
ctx.setMessage(R.string.cannot_obtain_data_from_blockchain); ctx.setMessage(R.string.loaded_wallet_error_obtaining_blockchain_data);
} else if (!isBalanceNotZero()) { } else if (!isBalanceNotZero()) {
ctx.setMessage(R.string.wallet_empty); ctx.setMessage(R.string.general_wallet_empty);
} else if (awaitingConfirmation()) { } else if (awaitingConfirmation()) {
ctx.setMessage(R.string.please_wait_while_previous); ctx.setMessage(R.string.loaded_wallet_message_wait);
} else { } else {
return true; return true;
} }

View file

@ -94,11 +94,11 @@ public class XrpEngine extends CoinEngine {
public boolean isExtractPossible() { public boolean isExtractPossible() {
if (!hasBalanceInfo()) { if (!hasBalanceInfo()) {
ctx.setMessage(R.string.cannot_obtain_data_from_blockchain); ctx.setMessage(R.string.loaded_wallet_error_obtaining_blockchain_data);
} else if (!isBalanceNotZero()) { } else if (!isBalanceNotZero()) {
ctx.setMessage(R.string.wallet_empty); ctx.setMessage(R.string.general_wallet_empty);
} else if (awaitingConfirmation()) { } else if (awaitingConfirmation()) {
ctx.setMessage(R.string.please_wait_while_previous); ctx.setMessage(R.string.loaded_wallet_message_wait);
} else { } else {
return true; return true;
} }

View file

@ -17,7 +17,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
android:layout_margin="16dp" android:layout_margin="16dp"
android:text="@string/touch_fingerprint_scanner_to_confirm" android:text="@string/pin_save_dialog_touch_fingerprint_scanner"
android:textAlignment="center" android:textAlignment="center"
android:textSize="@dimen/text_size_medium" /> android:textSize="@dimen/text_size_medium" />

View file

@ -13,7 +13,7 @@
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/this_banknote_has_enforced_security_delay" android:text="@string/dialog_this_banknote_has_enforced_security_delay"
android:textAlignment="center" android:textAlignment="center"
android:textColor="@color/primary" android:textColor="@color/primary"
android:textSize="@dimen/text_size_1_small" android:textSize="@dimen/text_size_1_small"
@ -29,7 +29,7 @@
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/please_hold_banknote" android:text="@string/dialog_hold_banknote"
android:textAlignment="center" android:textAlignment="center"
android:textColor="@color/black" android:textColor="@color/black"
android:textSize="@dimen/text_size_medium" android:textSize="@dimen/text_size_medium"
@ -63,7 +63,7 @@
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/you_may_be_required_to_repeat" android:text="@string/dialog_you_may_be_required_to_repeat"
android:textAlignment="center" android:textAlignment="center"
android:textColor="@color/primary" android:textColor="@color/primary"
android:textSize="@dimen/text_size_small" android:textSize="@dimen/text_size_small"

View file

@ -169,7 +169,7 @@
android:fontFamily="@font/saira_condensed_bold" android:fontFamily="@font/saira_condensed_bold"
android:paddingLeft="20dp" android:paddingLeft="20dp"
android:paddingRight="20dp" android:paddingRight="20dp"
android:text="@string/btn_explore" android:text="@string/loaded_wallet_btn_explore"
android:textColor="@color/primary_dark" /> android:textColor="@color/primary_dark" />
<androidx.appcompat.widget.AppCompatButton <androidx.appcompat.widget.AppCompatButton
@ -186,7 +186,7 @@
android:fontFamily="@font/saira_condensed_bold" android:fontFamily="@font/saira_condensed_bold"
android:paddingLeft="20dp" android:paddingLeft="20dp"
android:paddingRight="20dp" android:paddingRight="20dp"
android:text="@string/btn_copy" android:text="@string/loaded_wallet_btn_copy"
android:textColor="@color/primary_dark" /> android:textColor="@color/primary_dark" />
</LinearLayout> </LinearLayout>
@ -255,7 +255,7 @@
android:layout_marginBottom="10dp" android:layout_marginBottom="10dp"
android:layout_weight="1" android:layout_weight="1"
android:fontFamily="@font/saira_condensed_bold" android:fontFamily="@font/saira_condensed_bold"
android:text="@string/btn_load" android:text="@string/loaded_wallet_btn_load"
android:textSize="@dimen/text_size_large" /> android:textSize="@dimen/text_size_large" />
<androidx.appcompat.widget.AppCompatButton <androidx.appcompat.widget.AppCompatButton
@ -268,7 +268,7 @@
android:layout_weight="1" android:layout_weight="1"
android:enabled="false" android:enabled="false"
android:fontFamily="@font/saira_condensed_bold" android:fontFamily="@font/saira_condensed_bold"
android:text="@string/btn_extract" android:text="@string/loaded_wallet_btn_extract"
android:textSize="@dimen/text_size_large" /> android:textSize="@dimen/text_size_large" />
</LinearLayout> </LinearLayout>
@ -295,7 +295,7 @@
android:fontFamily="@font/saira_condensed_bold" android:fontFamily="@font/saira_condensed_bold"
android:paddingLeft="20dp" android:paddingLeft="20dp"
android:paddingRight="20dp" android:paddingRight="20dp"
android:text="@string/btn_new_scan" android:text="@string/loaded_wallet_btn_new_scan"
android:textColor="@color/primary_dark" /> android:textColor="@color/primary_dark" />
</LinearLayout> </LinearLayout>

View file

@ -46,7 +46,7 @@
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:layout_marginBottom="24dp" android:layout_marginBottom="24dp"
android:fontFamily="@font/maaxmedium" android:fontFamily="@font/maaxmedium"
android:text="@string/card_id" android:text="@string/details_title_card_id"
android:textAlignment="center" android:textAlignment="center"
android:textSize="@dimen/text_size_medium" /> android:textSize="@dimen/text_size_medium" />
@ -84,7 +84,7 @@
android:layout_width="@dimen/verify_card_left_col_width" android:layout_width="@dimen/verify_card_left_col_width"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/issuer" android:text="@string/details_category_issuer"
android:textSize="@dimen/text_size_medium" /> android:textSize="@dimen/text_size_medium" />
<TextView <TextView
@ -92,7 +92,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/tangem_ag" android:text="@string/general_tangem"
android:textColor="@color/primary_dark" android:textColor="@color/primary_dark"
android:textSize="@dimen/text_size_medium" android:textSize="@dimen/text_size_medium"
android:textStyle="normal|bold" /> android:textStyle="normal|bold" />
@ -109,7 +109,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="20dp" android:layout_marginStart="20dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/blockchain" android:text="@string/general_blockchain"
android:textSize="@dimen/text_size_1_small" android:textSize="@dimen/text_size_1_small"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
@ -120,7 +120,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/blockchain" android:text="@string/general_blockchain"
android:textColor="@color/primary_dark" android:textColor="@color/primary_dark"
android:textSize="@dimen/text_size_1_small" android:textSize="@dimen/text_size_1_small"
android:textStyle="normal|bold" android:textStyle="normal|bold"
@ -149,7 +149,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="20dp" android:layout_marginStart="20dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/signing_method" android:text="@string/details_signing_method"
android:textSize="@dimen/text_size_1_small" /> android:textSize="@dimen/text_size_1_small" />
<TextView <TextView
@ -174,7 +174,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="20dp" android:layout_marginStart="20dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/this_card_is" android:text="@string/details_is_card_reusable"
android:textSize="@dimen/text_size_1_small" /> android:textSize="@dimen/text_size_1_small" />
<TextView <TextView
@ -199,7 +199,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="20dp" android:layout_marginStart="20dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/signed_transactions" android:text="@string/details_signed_transactions"
android:textSize="@dimen/text_size_1_small" /> android:textSize="@dimen/text_size_1_small" />
<TextView <TextView
@ -224,7 +224,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="20dp" android:layout_marginStart="20dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/remaining_signatures" android:text="@string/details_remaining_signatures"
android:textSize="@dimen/text_size_1_small" /> android:textSize="@dimen/text_size_1_small" />
<TextView <TextView
@ -249,7 +249,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="20dp" android:layout_marginStart="20dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/time_of_last_signing" android:text="@string/details_time_of_last_signing"
android:textSize="@dimen/text_size_1_small" /> android:textSize="@dimen/text_size_1_small" />
<TextView <TextView
@ -275,7 +275,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="20dp" android:layout_marginStart="20dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/features" android:text="@string/details_features"
android:textSize="@dimen/text_size_1_small" /> android:textSize="@dimen/text_size_1_small" />
<TextView <TextView
@ -308,7 +308,7 @@
android:layout_width="@dimen/verify_card_left_col_width" android:layout_width="@dimen/verify_card_left_col_width"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/manufacturer" android:text="@string/details_category_manufacturer"
android:textSize="@dimen/text_size_medium" /> android:textSize="@dimen/text_size_medium" />
<TextView <TextView
@ -316,7 +316,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/tangem_ag" android:text="@string/general_tangem"
android:textColor="@color/primary_dark" android:textColor="@color/primary_dark"
android:textSize="@dimen/text_size_medium" android:textSize="@dimen/text_size_medium"
android:textStyle="normal|bold" /> android:textStyle="normal|bold" />
@ -341,7 +341,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="20dp" android:layout_marginStart="20dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/card_identity" android:text="@string/details_card_identity"
android:textSize="@dimen/text_size_1_small" /> android:textSize="@dimen/text_size_1_small" />
<TextView <TextView
@ -349,7 +349,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/attested" android:text="@string/details_attested"
android:textColor="@color/confirmed" android:textColor="@color/confirmed"
android:textSize="@dimen/text_size_1_small" android:textSize="@dimen/text_size_1_small"
android:textStyle="normal|bold" /> android:textStyle="normal|bold" />
@ -366,7 +366,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="20dp" android:layout_marginStart="20dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/firmware" android:text="@string/details_firmware"
android:textSize="@dimen/text_size_1_small" /> android:textSize="@dimen/text_size_1_small" />
<TextView <TextView
@ -390,7 +390,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="20dp" android:layout_marginStart="20dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/registration_date" android:text="@string/details_registration_date"
android:textSize="@dimen/text_size_1_small" /> android:textSize="@dimen/text_size_1_small" />
<TextView <TextView
@ -423,7 +423,7 @@
android:layout_width="@dimen/verify_card_left_col_width" android:layout_width="@dimen/verify_card_left_col_width"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/wallet" android:text="@string/details_category_wallet"
android:textSize="@dimen/text_size_medium" /> android:textSize="@dimen/text_size_medium" />
<TextView <TextView
@ -450,7 +450,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="20dp" android:layout_marginStart="20dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/private_key" android:text="@string/details_private_key"
android:textSize="@dimen/text_size_1_small" /> android:textSize="@dimen/text_size_1_small" />
<TextView <TextView
@ -475,7 +475,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="20dp" android:layout_marginStart="20dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/validation_node" android:text="@string/details_validation_node"
android:textSize="@dimen/text_size_1_small" /> android:textSize="@dimen/text_size_1_small" />
<TextView <TextView
@ -501,7 +501,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="20dp" android:layout_marginStart="20dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/unspents" android:text="@string/details_unspents"
android:textSize="@dimen/text_size_1_small" /> android:textSize="@dimen/text_size_1_small" />
<TextView <TextView
@ -618,7 +618,7 @@
android:layout_height="50dp" android:layout_height="50dp"
android:layout_margin="10dp" android:layout_margin="10dp"
android:fontFamily="@font/saira_condensed_bold" android:fontFamily="@font/saira_condensed_bold"
android:text="@string/ok" android:text="@string/general_ok"
android:textSize="@dimen/text_size_large" /> android:textSize="@dimen/text_size_large" />
</LinearLayout> </LinearLayout>

View file

@ -31,7 +31,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:gravity="center_vertical" android:gravity="center_vertical"
android:text="@string/wallet_has_not_been_yet_created" android:text="@string/empty_wallet_not_created"
android:textAlignment="center" android:textAlignment="center"
android:textSize="@dimen/text_size_1_small" android:textSize="@dimen/text_size_1_small"
app:layout_constraintBottom_toTopOf="@+id/btnNewWallet" app:layout_constraintBottom_toTopOf="@+id/btnNewWallet"
@ -47,7 +47,7 @@
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginEnd="8dp" android:layout_marginEnd="8dp"
android:fontFamily="@font/saira_condensed_bold" android:fontFamily="@font/saira_condensed_bold"
android:text="@string/create_wallet" android:text="@string/empty_wallet_btn_create"
android:textSize="@dimen/text_size_large" android:textSize="@dimen/text_size_large"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
@ -82,7 +82,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/empty_wallet_left_col_margin" android:layout_marginStart="@dimen/empty_wallet_left_col_margin"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/blockchain" android:text="@string/general_blockchain"
android:textColor="@color/primary_dark" android:textColor="@color/primary_dark"
android:textSize="@dimen/text_size_1_small" /> android:textSize="@dimen/text_size_1_small" />
@ -114,7 +114,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/empty_wallet_left_col_margin" android:layout_marginStart="@dimen/empty_wallet_left_col_margin"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/issuer" android:text="@string/details_category_issuer"
android:textColor="@color/primary_dark" android:textColor="@color/primary_dark"
android:textSize="@dimen/text_size_1_small" /> android:textSize="@dimen/text_size_1_small" />
@ -159,7 +159,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/scan_again_to_verify_the_card" android:text="@string/general_notification_scan_again_to_verify"
android:textAlignment="center" android:textAlignment="center"
android:textColor="@android:color/darker_gray" android:textColor="@android:color/darker_gray"
android:textSize="@dimen/text_size_small" /> android:textSize="@dimen/text_size_small" />

View file

@ -23,7 +23,7 @@
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/ivLogo" app:layout_constraintTop_toBottomOf="@+id/ivLogo"
tools:text="@string/cardano" tools:text="@string/splash_cardano"
tools:visibility="visible" /> tools:visibility="visible" />
<ImageView <ImageView
@ -44,7 +44,7 @@
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:layout_marginEnd="8dp" android:layout_marginEnd="8dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/beta" android:text="@string/splash_version_name_release"
android:textAlignment="center" android:textAlignment="center"
android:textAppearance="@style/TextAppearance.AppCompat.Medium" android:textAppearance="@style/TextAppearance.AppCompat.Medium"
android:textColor="@android:color/black" android:textColor="@android:color/black"
@ -58,7 +58,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="8dp" android:layout_marginBottom="8dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/tangem_ag" android:text="@string/general_tangem"
android:textAppearance="@style/TextAppearance.AppCompat.Medium" android:textAppearance="@style/TextAppearance.AppCompat.Medium"
android:textSize="@dimen/text_size_small" android:textSize="@dimen/text_size_small"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"

View file

@ -32,7 +32,7 @@
android:ems="10" android:ems="10"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:padding="5dp" android:padding="5dp"
android:text="@string/enter_pin_or_use_fingerprint_scanner" android:text="@string/pin_request_enter_pin_or_use_fingerprint_scanner"
android:textAlignment="center" android:textAlignment="center"
android:textSize="@dimen/text_size_medium" /> android:textSize="@dimen/text_size_medium" />
@ -52,7 +52,7 @@
android:layout_alignParentStart="true" android:layout_alignParentStart="true"
android:layout_gravity="bottom" android:layout_gravity="bottom"
android:layout_marginBottom="16dp" android:layout_marginBottom="16dp"
android:text="@string/ok" /> android:text="@string/general_ok" />
</RelativeLayout> </RelativeLayout>

View file

@ -25,7 +25,7 @@
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:paddingBottom="16dp" android:paddingBottom="16dp"
android:paddingTop="16dp" android:paddingTop="16dp"
android:text="@string/enter_pin_and_use_fingerprint_to_save_it" android:text="@string/pin_save_title_enter_pin_and_save"
android:textAlignment="center" android:textAlignment="center"
android:textAppearance="@style/TextAppearance.AppCompat.Medium" /> android:textAppearance="@style/TextAppearance.AppCompat.Medium" />
@ -51,7 +51,7 @@
android:layout_marginBottom="4dp" android:layout_marginBottom="4dp"
android:drawableEnd="@mipmap/ic_fp" android:drawableEnd="@mipmap/ic_fp"
android:drawablePadding="8dp" android:drawablePadding="8dp"
android:text="@string/protect_with_fingerprint" /> android:text="@string/pin_save_checkbox_protect_with_fingerprint" />
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
@ -64,7 +64,7 @@
style="@style/AppTheme.RoundedCornerMaterialButton" style="@style/AppTheme.RoundedCornerMaterialButton"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:text="@string/save" android:text="@string/pin_save_btn_save"
android:textColor="@color/white" /> android:textColor="@color/white" />
<Button <Button
@ -72,7 +72,7 @@
style="@style/AppTheme.RoundedCornerMaterialButton" style="@style/AppTheme.RoundedCornerMaterialButton"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:text="@string/delete" android:text="@string/pin_save_btn_delete"
android:textColor="@color/white" /> android:textColor="@color/white" />
</LinearLayout> </LinearLayout>

View file

@ -175,7 +175,7 @@
android:layout_gravity="center" android:layout_gravity="center"
android:layout_marginStart="7dp" android:layout_marginStart="7dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/with_balance" android:text="@string/general_balance"
android:textColor="@color/primary" android:textColor="@color/primary"
android:textSize="@dimen/text_size_medium" /> android:textSize="@dimen/text_size_medium" />
@ -234,7 +234,7 @@
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginTop="4dp" android:layout_marginTop="4dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/send_to_wallet" android:text="@string/general_send_to_wallet"
android:textColor="@color/primary" android:textColor="@color/primary"
android:textSize="@dimen/text_size_medium" android:textSize="@dimen/text_size_medium"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
@ -269,7 +269,7 @@
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginTop="4dp" android:layout_marginTop="4dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/on_banknote" android:text="@string/general_on_banknote"
android:textColor="@color/primary" android:textColor="@color/primary"
android:textSize="@dimen/text_size_medium" android:textSize="@dimen/text_size_medium"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
@ -302,7 +302,7 @@
android:layout_marginStart="7dp" android:layout_marginStart="7dp"
android:layout_marginTop="2dp" android:layout_marginTop="2dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/amount" android:text="@string/general_amount"
android:textColor="@color/primary" android:textColor="@color/primary"
android:textSize="@dimen/text_size_medium" android:textSize="@dimen/text_size_medium"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
@ -316,7 +316,7 @@
android:layout_marginBottom="1dp" android:layout_marginBottom="1dp"
android:layout_marginStart="4dp" android:layout_marginStart="4dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/including_fee" android:text="@string/confirm_transaction_including_fee"
android:textColor="@color/primary" android:textColor="@color/primary"
android:textSize="@dimen/text_size_1_small" android:textSize="@dimen/text_size_1_small"
app:layout_constraintBottom_toBottomOf="@+id/textView3" app:layout_constraintBottom_toBottomOf="@+id/textView3"
@ -334,7 +334,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:digits="0123456789.," android:digits="0123456789.,"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:hint="@string/enter_amount" android:hint="@string/prepare_transaction_hint_enter_amount"
android:inputType="numberDecimal" android:inputType="numberDecimal"
android:padding="12dp" android:padding="12dp"
android:textColor="@color/colorPrimaryDark" android:textColor="@color/colorPrimaryDark"
@ -352,7 +352,7 @@
android:layout_marginBottom="8dp" android:layout_marginBottom="8dp"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/m_btc" android:text="@string/general_btc"
android:textColor="@color/primary" android:textColor="@color/primary"
android:textSize="@dimen/text_size_large" android:textSize="@dimen/text_size_large"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
@ -369,7 +369,7 @@
android:layout_marginEnd="8dp" android:layout_marginEnd="8dp"
android:padding="2dp" android:padding="2dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/error" android:text="@string/general_error"
android:textColor="@color/white" android:textColor="@color/white"
android:textAlignment="center" android:textAlignment="center"
android:background="@color/bg_err" android:background="@color/bg_err"
@ -384,7 +384,7 @@
android:layout_height="50dp" android:layout_height="50dp"
android:layout_marginBottom="16dp" android:layout_marginBottom="16dp"
android:fontFamily="@font/saira_condensed_bold" android:fontFamily="@font/saira_condensed_bold"
android:text="@string/btn_load" android:text="@string/loaded_wallet_btn_load"
android:textSize="@dimen/text_size_large" android:textSize="@dimen/text_size_large"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintLeft_toLeftOf="parent"

View file

@ -128,7 +128,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:digits="0123456789.," android:digits="0123456789.,"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:hint="@string/enter_amount" android:hint="@string/prepare_transaction_hint_enter_amount"
android:inputType="numberDecimal" android:inputType="numberDecimal"
android:imeOptions="actionNext" android:imeOptions="actionNext"
android:padding="12dp" android:padding="12dp"
@ -147,7 +147,7 @@
android:layout_marginBottom="8dp" android:layout_marginBottom="8dp"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/m_btc" android:text="@string/general_btc"
android:textColor="@color/primary" android:textColor="@color/primary"
android:textSize="@dimen/text_size_medium" android:textSize="@dimen/text_size_medium"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
@ -168,7 +168,7 @@
android:layout_gravity="center" android:layout_gravity="center"
android:layout_marginStart="7dp" android:layout_marginStart="7dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/with_balance" android:text="@string/general_balance"
android:textColor="@color/primary" android:textColor="@color/primary"
android:textSize="@dimen/text_size_medium" /> android:textSize="@dimen/text_size_medium" />
@ -227,7 +227,7 @@
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginTop="4dp" android:layout_marginTop="4dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/send_to_wallet" android:text="@string/general_send_to_wallet"
android:textColor="@color/primary" android:textColor="@color/primary"
android:textSize="@dimen/text_size_medium" android:textSize="@dimen/text_size_medium"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
@ -262,7 +262,7 @@
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginTop="4dp" android:layout_marginTop="4dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/on_banknote" android:text="@string/general_on_banknote"
android:textColor="@color/primary" android:textColor="@color/primary"
android:textSize="@dimen/text_size_medium" android:textSize="@dimen/text_size_medium"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
@ -295,7 +295,7 @@
android:layout_marginStart="7dp" android:layout_marginStart="7dp"
android:layout_marginTop="2dp" android:layout_marginTop="2dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/amount" android:text="@string/general_amount"
android:textColor="@color/primary" android:textColor="@color/primary"
android:textSize="@dimen/text_size_medium" android:textSize="@dimen/text_size_medium"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
@ -316,7 +316,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:digits="0123456789.," android:digits="0123456789.,"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:hint="@string/enter_amount" android:hint="@string/prepare_transaction_hint_enter_amount"
android:inputType="numberDecimal" android:inputType="numberDecimal"
android:padding="12dp" android:padding="12dp"
android:textColor="@color/colorPrimaryDark" android:textColor="@color/colorPrimaryDark"
@ -335,7 +335,7 @@
android:layout_marginBottom="8dp" android:layout_marginBottom="8dp"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/m_btc" android:text="@string/general_btc"
android:textColor="@color/primary" android:textColor="@color/primary"
android:textSize="@dimen/text_size_large" android:textSize="@dimen/text_size_large"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
@ -354,7 +354,7 @@
android:background="@color/bg_err" android:background="@color/bg_err"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:padding="2dp" android:padding="2dp"
android:text="@string/error" android:text="@string/general_error"
android:textAlignment="center" android:textAlignment="center"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="@dimen/text_size_medium" /> android:textSize="@dimen/text_size_medium" />
@ -368,7 +368,7 @@
android:layout_height="50dp" android:layout_height="50dp"
android:layout_marginBottom="16dp" android:layout_marginBottom="16dp"
android:fontFamily="@font/saira_condensed_bold" android:fontFamily="@font/saira_condensed_bold"
android:text="@string/btn_load" android:text="@string/loaded_wallet_btn_load"
android:textSize="@dimen/text_size_large" android:textSize="@dimen/text_size_large"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintLeft_toLeftOf="parent"

View file

@ -133,7 +133,7 @@
android:layout_gravity="center" android:layout_gravity="center"
android:layout_marginStart="7dp" android:layout_marginStart="7dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/with_balance" android:text="@string/general_balance"
android:textColor="@color/primary" android:textColor="@color/primary"
android:textSize="@dimen/text_size_medium" /> android:textSize="@dimen/text_size_medium" />
@ -192,7 +192,7 @@
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginTop="4dp" android:layout_marginTop="4dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/send_to_wallet" android:text="@string/general_send_to_wallet"
android:textColor="@color/primary" android:textColor="@color/primary"
android:textSize="@dimen/text_size_medium" android:textSize="@dimen/text_size_medium"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
@ -227,7 +227,7 @@
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginTop="4dp" android:layout_marginTop="4dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/on_banknote" android:text="@string/general_on_banknote"
android:textColor="@color/primary" android:textColor="@color/primary"
android:textSize="@dimen/text_size_medium" android:textSize="@dimen/text_size_medium"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
@ -261,7 +261,7 @@
android:layout_marginStart="7dp" android:layout_marginStart="7dp"
android:layout_marginTop="2dp" android:layout_marginTop="2dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/amount" android:text="@string/general_amount"
android:textColor="@color/primary" android:textColor="@color/primary"
android:textSize="@dimen/text_size_medium" android:textSize="@dimen/text_size_medium"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
@ -281,7 +281,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:digits="0123456789.," android:digits="0123456789.,"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:hint="@string/enter_amount" android:hint="@string/prepare_transaction_hint_enter_amount"
android:inputType="numberDecimal" android:inputType="numberDecimal"
android:imeOptions="actionDone" android:imeOptions="actionDone"
android:padding="12dp" android:padding="12dp"
@ -300,7 +300,7 @@
android:layout_marginBottom="8dp" android:layout_marginBottom="8dp"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/m_btc" android:text="@string/general_btc"
android:textColor="@color/primary" android:textColor="@color/primary"
android:textSize="@dimen/text_size_large" android:textSize="@dimen/text_size_large"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
@ -318,7 +318,7 @@
android:background="@color/bg_err" android:background="@color/bg_err"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:padding="2dp" android:padding="2dp"
android:text="@string/error" android:text="@string/general_error"
android:textAlignment="center" android:textAlignment="center"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="@dimen/text_size_medium" /> android:textSize="@dimen/text_size_medium" />
@ -332,7 +332,7 @@
android:layout_height="50dp" android:layout_height="50dp"
android:layout_marginBottom="16dp" android:layout_marginBottom="16dp"
android:fontFamily="@font/saira_condensed_bold" android:fontFamily="@font/saira_condensed_bold"
android:text="@string/btn_load" android:text="@string/loaded_wallet_btn_load"
android:textSize="@dimen/text_size_large" android:textSize="@dimen/text_size_large"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintLeft_toLeftOf="parent"

View file

@ -59,7 +59,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_margin="20dp" android:layout_margin="20dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/by_tapping_the_card" android:text="@string/nfc_purge_warning"
android:textAlignment="center" android:textAlignment="center"
android:textColor="@android:color/holo_red_light" android:textColor="@android:color/holo_red_light"
android:textSize="@dimen/text_size_medium" /> android:textSize="@dimen/text_size_medium" />

View file

@ -31,7 +31,7 @@
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/please_wait" android:text="@string/send_transaction_notification_wait"
android:textAlignment="center" android:textAlignment="center"
android:textSize="@dimen/text_size_medium" android:textSize="@dimen/text_size_medium"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"

View file

@ -13,6 +13,6 @@
android:fontFamily="@font/saira_condensed_bold" android:fontFamily="@font/saira_condensed_bold"
android:paddingLeft="20dp" android:paddingLeft="20dp"
android:paddingRight="20dp" android:paddingRight="20dp"
android:text="@string/btn_details" android:text="@string/loaded_wallet_btn_details"
android:textColor="@color/primary_dark" android:textColor="@color/primary_dark"
tools:showIn="@layout/fr_loaded_wallet" /> tools:showIn="@layout/fr_loaded_wallet" />

View file

@ -40,7 +40,7 @@
android:layout_centerInParent="true" android:layout_centerInParent="true"
android:alpha="1" android:alpha="1"
android:fontFamily="@font/maaxmedium" android:fontFamily="@font/maaxmedium"
android:text="@string/verifying" android:text="@string/loaded_wallet_status_verifying"
android:textColor="@color/colorPrimary" android:textColor="@color/colorPrimary"
android:textSize="12dp" android:textSize="12dp"
android:textStyle="bold" /> android:textStyle="bold" />

View file

@ -90,7 +90,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_centerInParent="true" android:layout_centerInParent="true"
android:alpha="1" android:alpha="1"
android:text="@string/reading" android:text="@string/general_status_reading"
android:textColor="@color/colorPrimary" android:textColor="@color/colorPrimary"
android:textSize="12dp" android:textSize="12dp"
android:textStyle="bold" /> android:textStyle="bold" />

View file

@ -36,7 +36,7 @@
android:paddingTop="20dp" android:paddingTop="20dp"
android:paddingRight="20dp" android:paddingRight="20dp"
android:paddingBottom="20dp" android:paddingBottom="20dp"
android:text="@string/tap_tangem_card" android:text="@string/main_screen_tap_card"
android:textAlignment="center" android:textAlignment="center"
android:textAllCaps="false" android:textAllCaps="false"
android:textAppearance="@style/TextAppearance.AppCompat.Medium" android:textAppearance="@style/TextAppearance.AppCompat.Medium"

View file

@ -8,42 +8,42 @@
android:id="@+id/action_set_PIN1" android:id="@+id/action_set_PIN1"
android:enabled="false" android:enabled="false"
android:orderInCategory="100" android:orderInCategory="100"
android:title="@string/set_pin_1" android:title="@string/menu_loaded_wallet_set_pin_1"
app:showAsAction="never"/> app:showAsAction="never"/>
<item <item
android:id="@+id/action_set_PIN2" android:id="@+id/action_set_PIN2"
android:enabled="false" android:enabled="false"
android:orderInCategory="200" android:orderInCategory="200"
android:title="@string/set_pin_2" android:title="@string/menu_loaded_wallet_set_pin_2"
app:showAsAction="never"/> app:showAsAction="never"/>
<item <item
android:id="@+id/action_reset_PIN1" android:id="@+id/action_reset_PIN1"
android:enabled="false" android:enabled="false"
android:orderInCategory="300" android:orderInCategory="300"
android:title="@string/reset_pin_1_to_default" android:title="@string/menu_loaded_wallet_reset_pin_1"
app:showAsAction="never"/> app:showAsAction="never"/>
<item <item
android:id="@+id/action_reset_PIN2" android:id="@+id/action_reset_PIN2"
android:enabled="false" android:enabled="false"
android:orderInCategory="400" android:orderInCategory="400"
android:title="@string/reset_pin_2_to_default" android:title="@string/menu_loaded_wallet_reset_pin_2"
app:showAsAction="never"/> app:showAsAction="never"/>
<item <item
android:id="@+id/action_reset_PINs" android:id="@+id/action_reset_PINs"
android:enabled="false" android:enabled="false"
android:orderInCategory="500" android:orderInCategory="500"
android:title="@string/reset_pins_to_default" android:title="@string/menu_loaded_wallet_reset_pins"
app:showAsAction="never"/> app:showAsAction="never"/>
<item <item
android:id="@+id/action_purge" android:id="@+id/action_purge"
android:enabled="true" android:enabled="true"
android:orderInCategory="600" android:orderInCategory="600"
android:title="@string/erase_wallet" android:title="@string/menu_loaded_wallet_erase_wallet"
app:showAsAction="never"/> app:showAsAction="never"/>
</menu> </menu>

View file

@ -4,21 +4,21 @@
<item <item
android:id="@+id/managePIN" android:id="@+id/managePIN"
android:enabled="false" android:enabled="false"
android:title="@string/manage_user_pin_1" /> android:title="@string/main_menu_manage_pin_1" />
<item <item
android:id="@+id/managePIN2" android:id="@+id/managePIN2"
android:enabled="false" android:enabled="false"
android:title="@string/manage_user_pin_2" /> android:title="@string/main_menu_manage_pin_2" />
<item <item
android:id="@+id/sendLogs" android:id="@+id/sendLogs"
android:title="@string/send_logs" android:title="@string/main_menu_debug_send_logs"
android:visible="false" /> android:visible="false" />
<item <item
android:id="@+id/settings" android:id="@+id/settings"
android:title="@string/settings" /> android:title="@string/settings_title" />
<item <item
android:id="@+id/about" android:id="@+id/about"
android:title="@string/about" /> android:title="@string/main_menu_about" />
</menu> </menu>

View file

@ -38,5 +38,6 @@
<color name="bg_err">#600600</color> <color name="bg_err">#600600</color>
<color name="bg_msg">#bff2af</color> <color name="bg_msg">#bff2af</color>
<color name="cardview_shadow_star">#37000000</color> <color name="cardview_shadow_star">#37000000</color>
<color name="start2coin_orange">#f9af25</color>
</resources> </resources>

View file

@ -1,268 +1,229 @@
<resources> <resources>
<string name="ok">OK</string> <string name="general_cancel">Cancel</string>
<string name="cancel">Cancel</string> <string name="general_yes">Yes</string>
<string name="yes">Yes</string> <string name="general_no">No</string>
<string name="no">No</string> <string name="general_error">Error!</string>
<string name="no_connection">No connection with blockchain nodes</string> <string name="general_error_no_connection">No connection with blockchain nodes</string>
<string name="contin">Continue</string> <string name="general_continue">Continue</string>
<string name="not_found">Not found</string>
<string name="msgCardMustBeLoaded">Card must be loaded first!</string>
<string name="tag_lost_err">Tag lost!</string>
<string name="cmd_suffix">command</string>
<string name="rsp_suffix">response</string>
<string name="section_format">Hello World from section: %1$d</string>
<string name="fingerprint_authenticate_success">Successfully authenticated!</string>
<string name="pin_save_success">Successfully saved!</string>
<string name="pin_save_fail">Saving pin failed</string>
<string name="error_empty_pin">PIN is empty</string> <string name="error_empty_pin">PIN is empty</string>
<string name="error_pin_confirmation_failed">Please enter the PIN for confirmation!</string> <string name="general_blockchain">Blockchain</string>
<string name="enter_pin_and_use_fingerprint_to_save_it">Enter PIN and save it</string> <string name="general_notification_scan_again">Try to scan again</string>
<string name="enter_pin2_and_use_fingerprint_to_save_it">Enter PIN2 and save it</string> <string name="general_error_cannot_erase_wallet_with_non_zero_balance">Cannot erase wallet with non-zero balance</string>
<string name="bcBitcoin">Bitcoin</string> <string name="general_send_transaction">Send payment</string>
<string name="bcEtherium">Etherium</string> <string name="general_from_banknote">From banknote</string>
<array name="blockchains"> <string name="general_on_banknote">on banknote</string>
<item>@string/bcBitcoin</item> <string name="general_balance">with balance</string>
<item>@string/bcEtherium</item> <string name="general_send_to_wallet">Send to wallet</string>
</array> <string name="general_amount">Amount</string>
<string name="title_activity_settings_feature">Settings</string> <string name="general_btc">BTC</string>
<string name="balance">Balance</string> <string name="general_tangem" translatable="false">Tangem AG</string>
<string name="verified_offline">verified offline</string> <string name="general_notification_scan_again_to_verify">Scan again to verify the card</string>
<string name="blockchain">Blockchain</string> <string name="general_status_reading">READING…</string>
<string name="last_withdrawal">Last withdrawal</string> <string name="general_wallet_empty">The wallet is empty</string>
<string name="try_to_scan_again">Try to scan again</string>
<string name="cannot_erase_wallet_with_non_zero_balance">Cannot erase wallet with non-zero balance</string>
<string name="send_transaction">Send payment</string>
<string name="from_banknote">From banknote</string>
<string name="on_banknote">on banknote</string>
<string name="with_balance">with balance</string>
<string name="send_to_wallet">Send to wallet</string>
<string name="amount">Amount</string>
<string name="m_btc">BTC</string>
<string name="scan_again_to_verify_the_card">Scan again to verify the card</string>
<string name="tangem_ag">Tangem AG</string>
<string name="wallet">Wallet</string>
<string name="need_attach_card_again">Scan again to verify the card</string>
<string name="reading">READING…</string>
<string name="verifying">VERIFYING…</string>
<string name="debug_settings">Дебаг</string>
<string name="select_loading_method">Select loading method</string>
<string name="via_cryptonit">via CRYPTONIT</string>
<string name="via_cryptonit2">via CRYPTONIT2</string>
<string name="via_kraken">via KRAKEN</string>
<string name="in_app">Another wallet app</string>
<string name="load_via_share_address">Share address</string>
<string name="load_via_qr">Show QR-code</string>
<string name="show_wallet_qr_code">LOAD</string>
<string name="beta">BETA</string>
<string name="cardano">Cardano</string>
<!-- SettingsActivity --> <!-- Settings -->
<string name="сommon">Common</string> <string name="settings_title">Settings</string>
<string name="manual_editing_fee">Manual editing Fee</string> <string name="settings_category_сommon">Common</string>
<string name="settings">Settings</string> <string name="settings_option_manual_editing_fee">Manual editing Fee</string>
<string name="encryption_modes">Encryption modes</string> <string name="settings_option_encryption_modes">Encryption modes</string>
<string-array name="encryption_modes_entries"> <string-array name="settings_encryption_modes_entries">
<item>None</item> <item>None</item>
<item>Fast</item> <item>Fast</item>
<item>Strong</item> <item>Strong</item>
</string-array> </string-array>
<string-array name="encryption_mode_values"> <string-array name="settings_encryption_mode_values">
<item>0</item> <item>0</item>
<item>1</item> <item>1</item>
<item>2</item> <item>2</item>
</string-array> </string-array>
<string name="select_nodes">Select nodes</string> <string name="settings_option_select_nodes">Select nodes</string>
<!-- dialogs --> <!-- dialogs -->
<string name="device_is_rooted">Your Android device is rooted. Security at risk!</string> <string name="dialog_device_is_rooted">Your Android device is rooted. Security at risk!</string>
<string name="got_it">Got it</string> <string name="dialog_btn_got_it">Got it</string>
<string name="warning">Warning</string> <string name="dialog_warning">Warning</string>
<string name="security_delay">Security delay</string> <string name="dialog_security_delay">Security delay</string>
<string name="the_nfc_adapter_length_apdu">Oops.. It seems your smartphone does not support such long NFC packets.</string> <string name="dialog_the_nfc_adapter_length_apdu">Oops.. It seems your smartphone does not support such long NFC packets.</string>
<string name="the_nfc_adapter_length_apdu_advice">Try sending smaller amount or use a smartphone with full NFC support.</string> <string name="dialog_the_nfc_adapter_length_apdu_advice">Try sending smaller amount or use a smartphone with full NFC support.</string>
<string name="your_money_is_at_risk">Your money is at risk!</string> <string name="dialog_title_money_is_at_risk">Your money is at risk!</string>
<string name="this_banknote_has_enforced_security_delay">This banknote has enforced security delay</string> <string name="dialog_this_banknote_has_enforced_security_delay">This banknote has enforced security delay</string>
<string name="please_hold_banknote">Please hold the banknote firmly\n until the operation is completed…</string> <string name="dialog_hold_banknote">Please hold the banknote firmly\n until the operation is completed…</string>
<string name="you_may_be_required_to_repeat">You may be required to repeat this operation a few times depending on the NFC performance of your smartphone.\n This is made for safety of your funds.</string> <string name="dialog_you_may_be_required_to_repeat">You may be required to repeat this operation a few times depending on the NFC performance of your smartphone.\n This is made for safety of your funds.</string>
<!-- menu main --> <!-- menu main -->
<string name="clean_up">Clean up</string> <string name="main_menu_manage_pin_1">Manage user PIN1…</string>
<string name="manage_user_pin_1">Manage user PIN1…</string> <string name="main_menu_manage_pin_2">Manage user PIN2…</string>
<string name="manage_user_pin_2">Manage user PIN2…</string> <string name="main_menu_debug_send_logs">Send logs…</string>
<string name="send_logs">Send logs…</string> <string name="main_menu_about">About…</string>
<string name="about">About…</string>
<!-- menu loaded wallet --> <!-- menu loaded wallet -->
<string name="set_pin_1">Set PIN1</string> <string name="menu_loaded_wallet_set_pin_1">Set PIN1</string>
<string name="set_pin_2">Set PIN2</string> <string name="menu_loaded_wallet_set_pin_2">Set PIN2</string>
<string name="reset_pin_1_to_default">Reset PIN1 to default</string> <string name="menu_loaded_wallet_reset_pin_1">Reset PIN1 to default</string>
<string name="reset_pin_2_to_default">Reset PIN2 to default</string> <string name="menu_loaded_wallet_reset_pin_2">Reset PIN2 to default</string>
<string name="reset_pins_to_default">Reset PINs to default</string> <string name="menu_loaded_wallet_reset_pins">Reset PINs to default</string>
<string name="erase_wallet">Erase wallet</string> <string name="menu_loaded_wallet_erase_wallet">Erase wallet</string>
<!-- LogoActivity --> <!-- Splash Screen -->
<string name="version_name_debug">ALPHA v.%1$s \n dev build %2$s</string> <string name="splash_version_name_debug">ALPHA v.%1$s \n dev \n build %2$s</string>
<string name="version_name_release">v.%1$s</string> <string name="splash_version_name_release">v.%1$s</string>
<string name="splash_cardano">Cardano</string>
<string name="welcome_messages">Hello, %1$s! You have %2$d new messages.</string>
<!-- MainActivity --> <!-- Main -->
<string name="tap_tangem_card">Tap Tangem card with your smartphone</string> <string name="main_screen_tap_card">Tap Tangem card with your smartphone</string>
<string name="scan_banknote">Scan a banknote with your \n %1$s \n as shown above</string> <string name="main_screen_scan_banknote">Scan a banknote with your \n %1$s \n as shown above</string>
<string name="phone">phone</string> <string name="main_screen_phone">phone</string>
<string name="last_unspent">Last unspent</string> <string name="main_screen_erased_wallet">Wallet was erased</string>
<string name="erased_wallet">Wallet was erased</string> <string name="main_screen_not_personalized">Not personalized</string>
<string name="not_personalized">Not personalized</string> <string name="main_screen_new_version_toast">There is a new application version: %1$s</string>
<string name="new_app_version">There is a new application version: %1$s</string> <string name="main_screen_btn_update">Update</string>
<string name="update">Update</string>
<!-- LoadedWalletActivity, LoadedWalletFragment --> <!-- LoadedWallet -->
<string name="wallet_empty">The wallet is empty</string> <string name="loaded_wallet_no_compatible_wallet">No compatible wallets installed</string>
<string name="no_compatible_wallet">No compatible wallets installed</string> <string name="loaded_wallet_message_wait">Please wait while previous transaction is confirmed in blockchain</string>
<string name="please_wait_while_previous">Please wait while previous transaction is confirmed in blockchain</string> <string name="loaded_wallet_message_refresh">Could not obtain all inputs. Swipe down to refresh.</string>
<string name="please_wait_for_confirmation">Could not obtain all inputs. Swipe down to refresh.</string> <string name="loaded_wallet_warning_no_signature">Card has no remaining signature!</string>
<string name="card_has_no_remaining_signature">Card has no remaining signature!</string> <string name="loaded_wallet_warning_dont_forget_pin">If you forget your new PIN you will lose your money forever!</string>
<string name="explore_in_blockchain">EXPLORE</string> <string name="loaded_wallet_warning_default_pin">If you use default PIN someone can steal your money!</string>
<string name="swipe_down_to_refresh_data">Swipe down to refresh data</string> <string name="loaded_wallet_error_obtaining_blockchain_data">Cannot obtain data from blockchain</string>
<string name="message">Message!</string> <string name="loaded_wallet_error_blockchain_connection_refused">Cannot obtain data from blockchain (connection refused)</string>
<string name="error">Error!</string> <string name="loaded_wallet_error_blockchain_empty_answer">Cannot obtain data from blockchain (empty answer received)</string>
<string name="btn_send">Send</string> <string name="loaded_wallet_error_blockchain_communication_error">Cannot obtain data from blockchain (communication error)</string>
<string name="if_you_forget">If you forget your new PIN you will lose your money forever!</string> <string name="loaded_wallet_chooser_share">Share wallet address with:</string>
<string name="if_you_use_default">If you use default PIN someone can steal your money!</string> <string name="loaded_wallet_toast_copied">Copied to clipboard</string>
<string name="cannot_obtain_data_from_blockchain">Cannot obtain data from blockchain</string> <string name="loaded_wallet_btn_extract">Extract</string>
<string name="cannot_obtain_data_from_blockchain_no_connection">Cannot obtain data from blockchain (connection refused)</string> <string name="loaded_wallet_btn_load">Load</string>
<string name="cannot_obtain_data_from_blockchain_no_answer">Cannot obtain data from blockchain (empty answer received)</string> <string name="loaded_wallet_btn_explore">Explore</string>
<string name="cannot_obtain_data_from_blockchain_communication_error">Cannot obtain data from blockchain (communication error)</string> <string name="loaded_wallet_btn_copy">Copy</string>
<string name="sending_cached_transaction">Sending cached transaction…</string> <string name="loaded_wallet_btn_details">Details</string>
<string name="not_implemented">NOT IMPLEMENTED</string> <string name="loaded_wallet_btn_new_scan">New scan</string>
<string name="this_banknote_protected_default_PIN1_code">This banknote is protected by default PIN1 code</string> <string name="loaded_wallet_verifying_in_blockchain">Verifying in blockchain…</string>
<string name="this_banknote_protected_user_PIN1_code">This banknote is protected by user\'s PIN1 code</string> <string name="loaded_wallet_warning_card_signed_transactions">Warning: This card has been already topped up and signed transactions in the past.
<string name="this_banknote_protected_default_PIN2_code">This banknote is protected by default PIN2 code</string>
<string name="this_banknote_protected_user_PIN2_code">This banknote is protected by user\'s PIN2 code</string>
<string name="unlocked_banknote_only_development_use">Unlocked banknote, only for development use</string>
<string name="this_banknote_will_enforce">This banknote will enforce %.0f seconds security delay for all operations requiring PIN2 code</string>
<string name="share_wallet_address_with">Share wallet address with:</string>
<string name="copied_clipboard">Copied to clipboard</string>
<string name="btn_extract">Extract</string>
<string name="btn_load">Load</string>
<string name="btn_explore">Explore</string>
<string name="btn_copy">Copy</string>
<string name="btn_details">Details</string>
<string name="btn_new_scan">New scan</string>
<string name="verifying_in_blockchain">Verifying in blockchain…</string>
<string name="card_signed_transactions_warning">Warning: This card has been already topped up and signed transactions in the past.
Consider immediate withdrawal of all funds if you have received this card from an untrusted source.</string> Consider immediate withdrawal of all funds if you have received this card from an untrusted source.</string>
<string name="loaded_wallet_status_verifying">VERIFYING…</string>
<string name="loaded_wallet_load_via_cryptonit">via CRYPTONIT</string>
<string name="loaded_wallet_load_via_cryptonit2">via CRYPTONIT2</string>
<string name="loaded_wallet_load_via_kraken">via KRAKEN</string>
<string name="loaded_wallet_load_via_app">Another wallet app</string>
<string name="loaded_wallet_load_via_share_address">Share address</string>
<string name="loaded_wallet_load_via_qr">Show QR-code</string>
<string name="loaded_wallet_dialog_show_qr">LOAD</string>
<!-- CreateNewWalletActivity, PurgeActivity, SignTransactionActivity --> <!-- CreateNewWallet, Purge, SignTransaction -->
<string name="now_touch_the_banknote_with_id">Now touch the banknote with ID</string> <string name="now_touch_the_banknote_with_id">Now touch the banknote with ID</string>
<string name="to_create_the_wallet">to create the wallet</string> <string name="to_create_the_wallet">to create the wallet</string>
<string name="to_erase_the_wallet">to erase the wallet</string> <string name="to_erase_the_wallet">to erase the wallet</string>
<string name="to_sign_the_transaction">to sign the payment</string> <string name="to_sign_the_transaction">to sign the payment</string>
<string name="to_change_pin_codes">to change PIN/PIN2 codes</string> <string name="to_change_pin_codes">to change PIN/PIN2 codes</string>
<string name="by_tapping_the_card">By tapping the card, you will permanently remove the blockchain wallet. Ensure there will be no further incoming transactions</string> <string name="nfc_purge_warning">By tapping the card, you will permanently remove the blockchain wallet. Ensure there will be no further incoming transactions</string>
<string name="cannot_erase_wallet">Cannot erase wallet. Make sure you enter correct PIN2!</string> <string name="nfc_error_cannot_erase_wallet">Cannot erase wallet. Make sure you enter correct PIN2!</string>
<string name="cannot_create_wallet">Cannot create wallet. Make sure you enter correct PIN2!</string> <string name="nfc_error_cannot_create_wallet">Cannot create wallet. Make sure you enter correct PIN2!</string>
<!-- PrepareTransactionActivity --> <!-- PinRequest -->
<string name="enter_wallet_address">enter wallet address</string> <string name="pin_request_enter_new_pin_or_use_fingerprint_scanner">Enter new PIN or use fingerprint scanner</string>
<string name="enter_amount">enter amount</string> <string name="pin_request_enter_new_pin">Enter new PIN</string>
<string name="verify">Verify</string> <string name="pin_request_enter_pin_or_use_fingerprint_scanner">Enter PIN or use fingerprint scanner</string>
<string name="wallet_address_empty">Wallet address is empty</string> <string name="pin_request_enter_pin_2_or_use_fingerprint_scanner">Enter PIN2 or use fingerprint scanner</string>
<string name="amount_empty">Amount is empty</string> <string name="pin_request_confirm_new_pin">Confirm new PIN</string>
<string name="pin_request_confirm_new_pin_2">Confirm new PIN2</string>
<string name="pin_request_enter_pin">Enter PIN</string>
<string name="pin_request_prompt_enter_pin_2">Enter PIN2</string>
<string name="pin_request_prompt_new_pin_2_or_fingerprint">Enter new PIN2 or use fingerprint scanner</string>
<string name="pin_request_new_pin_2">Enter new PIN2</string>
<string name="pin_request_error_pin_confirmation_failed">Please enter the PIN for confirmation!</string>
<!-- PinRequestActivity -->
<string name="enter_new_pin_or_use_fingerprint_scanner">Enter new PIN or use fingerprint scanner</string>
<string name="enter_new_pin">Enter new PIN</string>
<string name="enter_pin_or_use_fingerprint_scanner">Enter PIN or use fingerprint scanner</string>
<string name="enter_pin_2_or_use_fingerprint_scanner">Enter PIN2 or use fingerprint scanner</string>
<string name="confirm_new_pin">Confirm new PIN</string>
<string name="confirm_new_pin_2">Confirm new PIN2</string>
<string name="enter_pin">Enter PIN</string>
<string name="enter_pin_2">Enter PIN2</string>
<string name="enter_new_pin_2_or_use_fingerprint_scanner">Enter new PIN2 or use fingerprint scanner</string>
<string name="enter_new_pin_2">Enter new PIN2</string>
<!-- SendTransactionActivity --> <!-- SendTransaction-->
<string name="please_wait">Please wait while the payment is sent…</string> <string name="send_transaction_notification_wait">Please wait while the payment is sent…</string>
<string name="transaction_has_been_successfully_signed">Transaction has been successfully signed and sent to blockchain node. Wallet balance will be updated in a while</string> <string name="send_transaction_success">Transaction has been successfully signed and sent to blockchain node. Wallet balance will be updated in a while</string>
<string name="try_again_failed_to_send_transaction">Try again. Failed to send transaction (%s)</string> <string name="send_transaction_error_failed_to_send">Try again. Failed to send transaction (%s)</string>
<string name="cannot_sign_transaction_make_sure_you_enter_correct_pin_2">Cannot sign transaction. Make sure you enter correct PIN2!</string> <string name="send_transaction_error_cannot_sign">Cannot sign transaction. Make sure you enter correct PIN2!</string>
<string name="cannot_sign_transaction_wrong_amount">Amount and fee exceed total wallet balance!</string> <string name="send_transaction_error_wrong_amount">Amount and fee exceed total wallet balance!</string>
<!-- PrepareTransactionActivity --> <!-- PrepareTransaction -->
<string name="not_enough_funds_on_your_card">Not enough funds</string> <string name="prepare_transaction_hint_enter_address">enter wallet address</string>
<string name="unknown_amount_format">Unknown amount format</string> <string name="prepare_transaction_hint_enter_amount">enter amount</string>
<string name="incorrect_destination_wallet_address">Incorrect destination wallet address</string> <string name="prepare_transaction_btn_verify">Verify</string>
<string name="destination_wallet_address_equal_source_address">Destination wallet address equal source address</string> <string name="prepare_transaction_error_not_enough_funds">Not enough funds</string>
<string name="prepare_transaction_error_unknown_amount_format">Unknown amount format</string>
<string name="prepare_transaction_error_incorrect_destination">Incorrect destination wallet address</string>
<string name="prepare_transaction_error_same_address">Destination wallet address equal source address</string>
<string name="prepare_transaction_error_amount_empty">Amount is empty</string>
<!-- ConfirmTransactionActivity --> <!-- ConfirmTransaction -->
<string name="target_wallet_address">target wallet address</string> <string name="confirm_transaction_hint_target_address">target wallet address</string>
<string name="payment_amount">payment amount</string> <string name="confirm_transaction_hint_fee_amount">fee amount</string>
<string name="fee_amount">fee amount</string> <string name="confirm_transaction_fee">Fee</string>
<string name="fee">Fee</string> <string name="confirm_transaction_btn_send">Send</string>
<string name="send_1">Send</string> <string name="confirm_transaction_btn_fee_minimal">Minimal</string>
<string name="minimal">Minimal</string> <string name="confirm_transaction_btn_fee_normal">Normal</string>
<string name="normal">Normal</string> <string name="confirm_transaction_btn_fee_priority">Priority</string>
<string name="priority">Priority</string> <string name="confirm_transaction_btn_including_fee">Including fee</string>
<string name="including_fee_">Including fee</string> <string name="confirm_transaction_btn_not_including_fee">Not including fee</string>
<string name="not_including_fee_">Not including fee</string> <string name="confirm_transaction_including_fee">(including fee)</string>
<string name="including_fee">(including fee)</string> <string name="confirm_transaction_not_including_fee">(not including fee)</string>
<string name="not_including_fee">(not including fee)</string> <string name="confirm_transaction_error_data_is_outdated">The obtained data is outdated! Try again</string>
<string name="the_obtained_data_is_outdated_try_again">The obtained data is outdated! Try again</string> <string name="confirm_transaction_error_cannot_reach_node">Cannot reach current active blockchain node. Try again</string>
<string name="cannot_reach_current_active_blockchain_node_try_again">Cannot reach current active blockchain node. Try again</string> <string name="confirm_transaction_error_cannot_check_balance">Cannot check balance! No connection with blockchain nodes</string>
<string name="cannot_check_balance_no_connection_with_blockchain_nodes">Cannot check balance! No connection with blockchain nodes</string> <string name="confirm_transaction_error_cannot_calculate_fee">Cannot calculate fee! Wrong data received from the node</string>
<string name="cannot_calculate_fee_tx_length_unknown">Cannot calculate fee! Tx length unknown</string> <string name="confirm_transaction_error_incoming_transaction_unconfirmed">Please wait for confirmation of incoming transaction</string>
<string name="cannot_calculate_fee_wrong_data_received_from_node">Cannot calculate fee! Wrong data received from the node</string> <string name="confirm_transaction_error_not_enough_eth_for_fee">Not enough ETH funds for fee</string>
<string name="the_wallet_is_empty">The wallet is empty</string> <string name="confirm_transaction_error_not_enough_rbtc_for_fee">Not enough RBTC funds for fee</string>
<string name="please_wait_for_confirmation_of_incoming_transaction">Please wait for confirmation of incoming transaction</string> <string name="confirm_transaction_error_pin_2_is_required">PIN2 is required to sign the payment</string>
<string name="not_enough_eth_for_fee">Not enough ETH funds for fee</string> <string name="confirm_transaction_error_service_unavailable">Service unavailable</string>
<string name="not_enough_rbtc_for_fee">Not enough RBTC funds for fee</string> <string name="confirm_transaction_warning_risk_delaying">You have a risk of delaying transaction</string>
<string name="pin_2_is_required_to_sign_the_transaction">PIN2 is required to sign the payment</string>
<string name="not_enough_funds">Not enough funds</string>
<string name="service_unavailable">Service unavailable</string>
<string name="risk_delaying">You have a risk of delaying transaction</string>
<!-- EmptyWalletActivity --> <!-- EmptyWallet -->
<string name="wallet_has_not_been_yet_created">Wallet hasn\'t been yet created</string> <string name="empty_wallet_not_created">Wallet hasn\'t been yet created</string>
<string name="create_wallet">Create Wallet</string> <string name="empty_wallet_btn_create">Create Wallet</string>
<!-- VerifyCardActivity --> <!-- VerifyCard -->
<string name="card_id">Card ID</string> <string name="details_title_card_id">Card ID</string>
<string name="signing_method">Signing method</string> <string name="details_signing_method">Signing method</string>
<string name="this_card_is">This card is</string> <string name="details_is_card_reusable">This card is</string>
<string name="signed_transactions">Signed transactions</string> <string name="details_signed_transactions">Signed transactions</string>
<string name="remaining_signatures">Remaining signatures</string> <string name="details_remaining_signatures">Remaining signatures</string>
<string name="time_of_last_signing">Time of last signing</string> <string name="details_time_of_last_signing">Time of last signing</string>
<string name="features">Features</string> <string name="details_features">Features</string>
<string name="manufacturer">Manufacturer</string> <string name="details_category_manufacturer">Manufacturer</string>
<string name="card_identity">Card identity</string> <string name="details_category_wallet">Wallet</string>
<string name="attested">Attested</string> <string name="details_card_identity">Card identity</string>
<string name="not_confirmed">Not confirmed</string> <string name="details_attested">Attested</string>
<string name="reusable">Reusable</string> <string name="details_not_confirmed">Not confirmed</string>
<string name="none">None</string> <string name="details_reusable">Reusable</string>
<string name="last_one">Last one!</string> <string name="details_none">None</string>
<string name="unlimited">Unlimited</string> <string name="details_last_one">Last one!</string>
<string name="one_off_banknote">One-off banknote</string> <string name="details_unlimited">Unlimited</string>
<string name="firmware">Firmware</string> <string name="details_one_off_banknote">One-off banknote</string>
<string name="registration_date">Registration date</string> <string name="details_firmware">Firmware</string>
<string name="possession_proved">Possession proved</string> <string name="details_registration_date">Registration date</string>
<string name="possession_not_proved">Possession NOT proved</string> <string name="details_possession_proved">Possession proved</string>
<string name="not_available">not available</string> <string name="details_possession_not_proved">Possession NOT proved</string>
<string name="issuer">Issuer</string> <string name="details_not_available">not available</string>
<string name="private_key">Private key</string> <string name="details_category_issuer">Issuer</string>
<string name="validation_node">Validation node</string> <string name="details_private_key">Private key</string>
<string name="issuer_data">Issuer Data</string> <string name="details_validation_node">Validation node</string>
<string name="unspents">Unspents</string> <string name="details_unspents">Unspents</string>
<string name="details_protected_by_default_pin_1">This banknote is protected by default PIN1 code</string>
<string name="details_protected_by_user_pin_1">This banknote is protected by user\'s PIN1 code</string>
<string name="details_protected_by_default_pin_2">This banknote is protected by default PIN2 code</string>
<string name="details_protected_by_user_pin_2">This banknote is protected by user\'s PIN2 code</string>
<string name="details_unlocked_banknote">Unlocked banknote, only for development use</string>
<string name="details_security_delay">This banknote will enforce %.0f seconds security delay for all operations requiring PIN2 code</string>
<!-- PinSaveActivity --> <!-- PinSave -->
<string name="save">Save</string> <string name="pin_save_btn_save">Save</string>
<string name="delete">Delete</string> <string name="pin_save_btn_delete">Delete</string>
<string name="protect_with_fingerprint">Protect with fingerprint</string> <string name="pin_save_checkbox_protect_with_fingerprint">Protect with fingerprint</string>
<string name="touch_fingerprint_scanner_to_confirm">Touch fingerprint scanner to confirm</string> <string name="pin_save_dialog_touch_fingerprint_scanner">Touch fingerprint scanner to confirm</string>
<string name="user_has_not_enabled_lock_screen">User hasn\'t enabled Lock Screen</string> <string name="pin_save_toast_lock_screen_not_enabled">User hasn\'t enabled Lock Screen</string>
<string name="user_has_not_granted_permission_to_use_fingerprint">User hasn\'t granted permission to use Fingerprint</string> <string name="pin_save_toast_no_permission_to_use_fingerprint">User hasn\'t granted permission to use Fingerprint</string>
<string name="user_has_not_registered_any_fingerprints">User hasn\'t registered any fingerprints</string> <string name="pin_save_toast_no_fingerprints_registered">User hasn\'t registered any fingerprints</string>
<string name="pin_save_notification_failed">Saving pin failed</string>
<string name="pin_save_title_enter_pin_and_save">Enter PIN and save it</string>
<string name="pin_save_title_enter_pin2_and_save">Enter PIN2 and save it</string>
<!-- PrepareCryptonitWithdrawal --> <!-- PrepareCryptonitWithdrawal -->
<string name="cryptonit_payment">CRYPTONIT payment</string> <string name="cryptonit_payment">CRYPTONIT payment</string>
@ -287,7 +248,7 @@
<string name="kraken_not_enough_account_data">Please enter account data</string> <string name="kraken_not_enough_account_data">Please enter account data</string>
<string name="kraken_request_balance">Get balance</string> <string name="kraken_request_balance">Get balance</string>
<string name="kraken_request_withdrawal">Withdrawal</string> <string name="kraken_request_withdrawal">Withdrawal</string>
<string name="operation_canceled">Operation canceled!</string> <string name="kraken_operation_canceled">Operation canceled!</string>
<string name="please_confirm_withdraw">Please confirm withdraw</string> <string name="kraken_please_confirm_withdraw">Please confirm withdraw</string>
</resources> </resources>

View file

@ -2,23 +2,23 @@
<PreferenceCategory <PreferenceCategory
android:key="@string/pref_category_common" android:key="@string/pref_category_common"
android:title="@string/сommon"> android:title="@string/settings_category_сommon">
<CheckBoxPreference <CheckBoxPreference
android:defaultValue="false" android:defaultValue="false"
android:key="@string/pref_manual_editing_fee" android:key="@string/pref_manual_editing_fee"
android:title="@string/manual_editing_fee" /> android:title="@string/settings_option_manual_editing_fee" />
<Preference <Preference
android:key="@string/pref_select_nodes" android:key="@string/pref_select_nodes"
android:title="@string/select_nodes" /> android:title="@string/settings_option_select_nodes" />
<ListPreference <ListPreference
android:defaultValue="0" android:defaultValue="0"
android:entries="@array/encryption_modes_entries" android:entries="@array/settings_encryption_modes_entries"
android:entryValues="@array/encryption_mode_values" android:entryValues="@array/settings_encryption_mode_values"
android:key="@string/pref_encryption_modes" android:key="@string/pref_encryption_modes"
android:title="@string/encryption_modes" /> android:title="@string/settings_option_encryption_modes" />
</PreferenceCategory> </PreferenceCategory>

View file

@ -77,9 +77,9 @@ class ConfirmTransactionFragment : BaseFragment(), NavigationResultListener, Nfc
isIncludeFee = arguments?.getBoolean(Constant.EXTRA_FEE_INCLUDED, true) ?: true isIncludeFee = arguments?.getBoolean(Constant.EXTRA_FEE_INCLUDED, true) ?: true
if (isIncludeFee) if (isIncludeFee)
tvIncFee.setText(R.string.including_fee) tvIncFee.setText(R.string.confirm_transaction_including_fee)
else else
tvIncFee.setText(R.string.not_including_fee) tvIncFee.setText(R.string.confirm_transaction_not_including_fee)
amount = CoinEngine.Amount(arguments?.getString(Constant.EXTRA_AMOUNT) ?: "0", amount = CoinEngine.Amount(arguments?.getString(Constant.EXTRA_AMOUNT) ?: "0",
arguments?.getString(Constant.EXTRA_AMOUNT_CURRENCY) ?: "") arguments?.getString(Constant.EXTRA_AMOUNT_CURRENCY) ?: "")
@ -123,7 +123,7 @@ class ConfirmTransactionFragment : BaseFragment(), NavigationResultListener, Nfc
tvFeeEquivalent.text = eqFee tvFeeEquivalent.text = eqFee
if (!ctx.coinData!!.amountEquivalentDescriptionAvailable) { if (!ctx.coinData!!.amountEquivalentDescriptionAvailable) {
tvFeeEquivalent.error = getString(R.string.service_unavailable) tvFeeEquivalent.error = getString(R.string.confirm_transaction_error_service_unavailable)
tvCurrency2.visibility = View.GONE tvCurrency2.visibility = View.GONE
tvFeeEquivalent.visibility = View.GONE tvFeeEquivalent.visibility = View.GONE
} else } else
@ -131,7 +131,7 @@ class ConfirmTransactionFragment : BaseFragment(), NavigationResultListener, Nfc
if (sp.getBoolean(getString(R.string.pref_manual_editing_fee), false)) if (sp.getBoolean(getString(R.string.pref_manual_editing_fee), false))
(activity as MainActivity).toastHelper (activity as MainActivity).toastHelper
.showSingleToast(context, getString(R.string.risk_delaying)) .showSingleToast(context, getString(R.string.confirm_transaction_warning_risk_delaying))
} catch (e: Exception) { } catch (e: Exception) {
e.printStackTrace() e.printStackTrace()
@ -149,14 +149,14 @@ class ConfirmTransactionFragment : BaseFragment(), NavigationResultListener, Nfc
calendar.add(Calendar.MINUTE, -1) calendar.add(Calendar.MINUTE, -1)
if (dtVerified == null || dtVerified!!.before(calendar.time)) { if (dtVerified == null || dtVerified!!.before(calendar.time)) {
finishWithError(Activity.RESULT_CANCELED, getString(R.string.the_obtained_data_is_outdated_try_again)) finishWithError(Activity.RESULT_CANCELED, getString(R.string.confirm_transaction_error_data_is_outdated))
return@setOnClickListener return@setOnClickListener
} }
val engineCoin = CoinEngineFactory.create(ctx) val engineCoin = CoinEngineFactory.create(ctx)
if (engineCoin!!.isNeedCheckNode && !nodeCheck) { if (engineCoin!!.isNeedCheckNode && !nodeCheck) {
Toast.makeText(context, getString(R.string.cannot_reach_current_active_blockchain_node_try_again), Toast.LENGTH_LONG).show() Toast.makeText(context, getString(R.string.confirm_transaction_error_cannot_reach_node), Toast.LENGTH_LONG).show()
return@setOnClickListener return@setOnClickListener
} }
@ -164,20 +164,20 @@ class ConfirmTransactionFragment : BaseFragment(), NavigationResultListener, Nfc
val txAmount = engineCoin.convertToAmount(etAmount.text.toString(), tvCurrency.text.toString()) val txAmount = engineCoin.convertToAmount(etAmount.text.toString(), tvCurrency.text.toString())
if (!engineCoin.hasBalanceInfo()) { if (!engineCoin.hasBalanceInfo()) {
finishWithError(Activity.RESULT_CANCELED, getString(R.string.cannot_check_balance_no_connection_with_blockchain_nodes)) finishWithError(Activity.RESULT_CANCELED, getString(R.string.confirm_transaction_error_cannot_check_balance))
return@setOnClickListener return@setOnClickListener
} else if (!engineCoin.isBalanceNotZero) { } else if (!engineCoin.isBalanceNotZero) {
finishWithError(Activity.RESULT_CANCELED, getString(R.string.the_wallet_is_empty)) finishWithError(Activity.RESULT_CANCELED, getString(R.string.general_wallet_empty))
return@setOnClickListener return@setOnClickListener
} else if (!engineCoin.isExtractPossible) { } else if (!engineCoin.isExtractPossible) {
finishWithError(Activity.RESULT_CANCELED, getString(R.string.please_wait_for_confirmation_of_incoming_transaction)) finishWithError(Activity.RESULT_CANCELED, getString(R.string.confirm_transaction_error_incoming_transaction_unconfirmed))
return@setOnClickListener return@setOnClickListener
} }
if (!engineCoin.checkNewTransactionAmountAndFee(txAmount, txFee, isIncludeFee)) { if (!engineCoin.checkNewTransactionAmountAndFee(txAmount, txFee, isIncludeFee)) {
finishWithError(Activity.RESULT_CANCELED, getString(R.string.not_enough_funds_on_your_card)) finishWithError(Activity.RESULT_CANCELED, getString(R.string.prepare_transaction_error_not_enough_funds))
return@setOnClickListener return@setOnClickListener
} }
@ -188,7 +188,7 @@ class ConfirmTransactionFragment : BaseFragment(), NavigationResultListener, Nfc
data.putBoolean(Constant.EXTRA_FEE_INCLUDED, isIncludeFee) data.putBoolean(Constant.EXTRA_FEE_INCLUDED, isIncludeFee)
navigateForResult(Constant.REQUEST_CODE_REQUEST_PIN2_, R.id.action_confirmTransactionFragment_to_pinRequestFragment, data) navigateForResult(Constant.REQUEST_CODE_REQUEST_PIN2_, R.id.action_confirmTransactionFragment_to_pinRequestFragment, data)
} else } else
Toast.makeText(context, getString(R.string.no_connection), Toast.LENGTH_SHORT).show() Toast.makeText(context, getString(R.string.general_error_no_connection), Toast.LENGTH_SHORT).show()
} }
progressBar.visibility = View.VISIBLE progressBar.visibility = View.VISIBLE
@ -258,7 +258,7 @@ class ConfirmTransactionFragment : BaseFragment(), NavigationResultListener, Nfc
R.id.action_confirmTransactionFragment_to_signTransactionFragment, R.id.action_confirmTransactionFragment_to_signTransactionFragment,
bundle) bundle)
} else } else
Toast.makeText(context, R.string.pin_2_is_required_to_sign_the_transaction, Toast.LENGTH_LONG).show() Toast.makeText(context, R.string.confirm_transaction_error_pin_2_is_required, Toast.LENGTH_LONG).show()
} }
} }

View file

@ -73,7 +73,7 @@ class PrepareTransactionFragment : BaseFragment(), NavigationResultListener, Nfc
btnVerify.setOnClickListener { btnVerify.setOnClickListener {
if (!UtilHelper.isOnline(context!!)) { if (!UtilHelper.isOnline(context!!)) {
Toast.makeText(context, R.string.no_connection, Toast.LENGTH_LONG).show() Toast.makeText(context, R.string.general_error_no_connection, Toast.LENGTH_LONG).show()
return@setOnClickListener return@setOnClickListener
} }
@ -83,22 +83,22 @@ class PrepareTransactionFragment : BaseFragment(), NavigationResultListener, Nfc
try { try {
if (!engine.checkNewTransactionAmount(amount)) if (!engine.checkNewTransactionAmount(amount))
etAmount.error = getString(R.string.not_enough_funds_on_your_card) etAmount.error = getString(R.string.prepare_transaction_error_not_enough_funds)
else else
etAmount.error = null etAmount.error = null
} catch (e: Exception) { } catch (e: Exception) {
etAmount.error = getString(R.string.unknown_amount_format) etAmount.error = getString(R.string.prepare_transaction_error_unknown_amount_format)
} }
// check wallet address // check wallet address
if (!engine1.validateAddress(etWallet.text.toString())) { if (!engine1.validateAddress(etWallet.text.toString())) {
etWallet.error = getString(R.string.incorrect_destination_wallet_address) etWallet.error = getString(R.string.prepare_transaction_error_incorrect_destination)
return@setOnClickListener return@setOnClickListener
} else } else
etWallet.error = null etWallet.error = null
if (etWallet.text.toString() == ctx.coinData!!.wallet) { if (etWallet.text.toString() == ctx.coinData!!.wallet) {
etWallet.error = getString(R.string.destination_wallet_address_equal_source_address) etWallet.error = getString(R.string.prepare_transaction_error_same_address)
return@setOnClickListener return@setOnClickListener
} }

View file

@ -141,7 +141,7 @@ class SignTransactionFragment : BaseFragment(), NavigationResultListener,
} catch (e: CardProtocol.TangemException_WrongAmount) { } catch (e: CardProtocol.TangemException_WrongAmount) {
try { try {
val data = Bundle() val data = Bundle()
data.putString(Constant.EXTRA_MESSAGE, getString(R.string.cannot_sign_transaction_wrong_amount)) data.putString(Constant.EXTRA_MESSAGE, getString(R.string.send_transaction_error_wrong_amount))
data.putString(EXTRA_TANGEM_CARD_UID, ctx.card.uid) data.putString(EXTRA_TANGEM_CARD_UID, ctx.card.uid)
data.putBundle(EXTRA_TANGEM_CARD, ctx.card.asBundle) data.putBundle(EXTRA_TANGEM_CARD, ctx.card.asBundle)
navigateBackWithResult(Activity.RESULT_CANCELED, data) navigateBackWithResult(Activity.RESULT_CANCELED, data)
@ -191,7 +191,7 @@ class SignTransactionFragment : BaseFragment(), NavigationResultListener,
progressBar?.progressTintList = ColorStateList.valueOf(Color.DKGRAY) progressBar?.progressTintList = ColorStateList.valueOf(Color.DKGRAY)
progressBar?.visibility = View.INVISIBLE progressBar?.visibility = View.INVISIBLE
val data = Bundle() val data = Bundle()
data.putString(Constant.EXTRA_MESSAGE, getString(R.string.cannot_sign_transaction_make_sure_you_enter_correct_pin_2)) data.putString(Constant.EXTRA_MESSAGE, getString(R.string.send_transaction_error_cannot_sign))
data.putString(EXTRA_TANGEM_CARD_UID, cardProtocol.card.uid) data.putString(EXTRA_TANGEM_CARD_UID, cardProtocol.card.uid)
data.putBundle(EXTRA_TANGEM_CARD, cardProtocol.card.asBundle) data.putBundle(EXTRA_TANGEM_CARD, cardProtocol.card.asBundle)
navigateBackWithResult(Constant.RESULT_INVALID_PIN_, data) navigateBackWithResult(Constant.RESULT_INVALID_PIN_, data)
@ -203,7 +203,7 @@ class SignTransactionFragment : BaseFragment(), NavigationResultListener,
if (cardProtocol.error is CardProtocol.TangemException_WrongAmount) { if (cardProtocol.error is CardProtocol.TangemException_WrongAmount) {
try { try {
val data = Bundle() val data = Bundle()
data.putString(Constant.EXTRA_MESSAGE, getString(R.string.cannot_sign_transaction_wrong_amount)) data.putString(Constant.EXTRA_MESSAGE, getString(R.string.send_transaction_error_wrong_amount))
data.putString(EXTRA_TANGEM_CARD_UID, cardProtocol.card.uid) data.putString(EXTRA_TANGEM_CARD_UID, cardProtocol.card.uid)
data.putBundle(EXTRA_TANGEM_CARD, cardProtocol.card.asBundle) data.putBundle(EXTRA_TANGEM_CARD, cardProtocol.card.asBundle)
navigateBackWithResult(Activity.RESULT_CANCELED, data) navigateBackWithResult(Activity.RESULT_CANCELED, data)
@ -214,11 +214,11 @@ class SignTransactionFragment : BaseFragment(), NavigationResultListener,
progressBar?.post { progressBar?.post {
if (cardProtocol.error is CardProtocol.TangemException_ExtendedLengthNotSupported) { if (cardProtocol.error is CardProtocol.TangemException_ExtendedLengthNotSupported) {
if (!NoExtendedLengthSupportDialog.allReadyShowed) { if (!NoExtendedLengthSupportDialog.allReadyShowed) {
NoExtendedLengthSupportDialog.message = getText(R.string.the_nfc_adapter_length_apdu).toString() + "\n" + getText(R.string.the_nfc_adapter_length_apdu_advice).toString() NoExtendedLengthSupportDialog.message = getText(R.string.dialog_the_nfc_adapter_length_apdu).toString() + "\n" + getText(R.string.dialog_the_nfc_adapter_length_apdu_advice).toString()
NoExtendedLengthSupportDialog().show(requireFragmentManager(), NoExtendedLengthSupportDialog.TAG) NoExtendedLengthSupportDialog().show(requireFragmentManager(), NoExtendedLengthSupportDialog.TAG)
} }
} else { } else {
Toast.makeText(context, R.string.try_to_scan_again, Toast.LENGTH_LONG).show() Toast.makeText(context, R.string.general_notification_scan_again, Toast.LENGTH_LONG).show()
} }
progressBar?.progress = 100 progressBar?.progress = 100
progressBar?.progressTintList = ColorStateList.valueOf(Color.RED) progressBar?.progressTintList = ColorStateList.valueOf(Color.RED)

View file

@ -15,7 +15,7 @@
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:paddingTop="8dp" android:paddingTop="8dp"
android:paddingBottom="4dp" android:paddingBottom="4dp"
android:text="@string/send_transaction" android:text="@string/general_send_transaction"
android:textAlignment="center" android:textAlignment="center"
android:textColor="@color/primary" android:textColor="@color/primary"
android:textSize="@dimen/text_size_large" android:textSize="@dimen/text_size_large"
@ -42,7 +42,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/from_banknote" android:text="@string/general_from_banknote"
android:textColor="@color/primary" android:textColor="@color/primary"
android:textSize="@dimen/text_size_medium" /> android:textSize="@dimen/text_size_medium" />
@ -63,7 +63,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="6dp" android:layout_marginTop="6dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/with_balance" android:text="@string/general_balance"
android:textColor="@color/primary" android:textColor="@color/primary"
android:textSize="@dimen/text_size_medium" /> android:textSize="@dimen/text_size_medium" />
@ -91,7 +91,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/send_to_wallet" android:text="@string/general_send_to_wallet"
android:textColor="@color/primary" android:textColor="@color/primary"
android:textSize="@dimen/text_size_medium" android:textSize="@dimen/text_size_medium"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
@ -106,7 +106,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:enabled="false" android:enabled="false"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:hint="@string/target_wallet_address" android:hint="@string/confirm_transaction_hint_target_address"
android:inputType="textMultiLine" android:inputType="textMultiLine"
android:maxLines="2" android:maxLines="2"
android:padding="12dp" android:padding="12dp"
@ -125,7 +125,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/amount" android:text="@string/general_amount"
android:textColor="@color/primary" android:textColor="@color/primary"
android:textSize="@dimen/text_size_medium" android:textSize="@dimen/text_size_medium"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
@ -157,7 +157,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:digits="0123456789.," android:digits="0123456789.,"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:hint="@string/enter_amount" android:hint="@string/prepare_transaction_hint_enter_amount"
android:imeOptions="actionDone" android:imeOptions="actionDone"
android:inputType="numberDecimal" android:inputType="numberDecimal"
android:padding="12dp" android:padding="12dp"
@ -177,7 +177,7 @@
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginEnd="16dp" android:layout_marginEnd="16dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/m_btc" android:text="@string/general_btc"
android:textColor="@color/primary" android:textColor="@color/primary"
android:textSize="@dimen/text_size_1_large" android:textSize="@dimen/text_size_1_large"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
@ -209,7 +209,7 @@
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
android:layout_marginBottom="4dp" android:layout_marginBottom="4dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/fee" android:text="@string/confirm_transaction_fee"
android:textColor="@color/primary" android:textColor="@color/primary"
android:textSize="@dimen/text_size_medium" android:textSize="@dimen/text_size_medium"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
@ -234,7 +234,7 @@
android:layout_width="100dp" android:layout_width="100dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:fontFamily="@font/saira_condensed_bold" android:fontFamily="@font/saira_condensed_bold"
android:text="@string/minimal" android:text="@string/confirm_transaction_btn_fee_minimal"
android:textSize="@dimen/text_size_medium" /> android:textSize="@dimen/text_size_medium" />
<RadioButton <RadioButton
@ -243,7 +243,7 @@
android:layout_width="100dp" android:layout_width="100dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:fontFamily="@font/saira_condensed_bold" android:fontFamily="@font/saira_condensed_bold"
android:text="@string/normal" android:text="@string/confirm_transaction_btn_fee_normal"
android:textSize="@dimen/text_size_medium" /> android:textSize="@dimen/text_size_medium" />
<RadioButton <RadioButton
@ -252,7 +252,7 @@
android:layout_width="100dp" android:layout_width="100dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:fontFamily="@font/saira_condensed_bold" android:fontFamily="@font/saira_condensed_bold"
android:text="@string/priority" android:text="@string/confirm_transaction_btn_fee_priority"
android:textSize="@dimen/text_size_medium" /> android:textSize="@dimen/text_size_medium" />
</info.hoang8f.android.segmented.SegmentedGroup> </info.hoang8f.android.segmented.SegmentedGroup>
@ -269,7 +269,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="4dp" android:layout_marginBottom="4dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:hint="@string/fee_amount" android:hint="@string/confirm_transaction_hint_fee_amount"
android:inputType="numberDecimal" android:inputType="numberDecimal"
android:padding="12dp" android:padding="12dp"
android:textColor="@color/black" android:textColor="@color/black"
@ -288,7 +288,7 @@
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:layout_marginBottom="8dp" android:layout_marginBottom="8dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/m_btc" android:text="@string/general_btc"
android:textSize="@dimen/text_size_medium" android:textSize="@dimen/text_size_medium"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toRightOf="@+id/etFee" app:layout_constraintLeft_toRightOf="@+id/etFee"
@ -318,7 +318,7 @@
android:layout_height="50dp" android:layout_height="50dp"
android:layout_marginBottom="16dp" android:layout_marginBottom="16dp"
android:fontFamily="@font/saira_condensed_bold" android:fontFamily="@font/saira_condensed_bold"
android:text="@string/send_1" android:text="@string/confirm_transaction_btn_send"
android:textSize="@dimen/text_size_large" android:textSize="@dimen/text_size_large"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintLeft_toLeftOf="parent"

View file

@ -14,7 +14,7 @@
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:paddingTop="8dp" android:paddingTop="8dp"
android:paddingBottom="8dp" android:paddingBottom="8dp"
android:text="@string/send_transaction" android:text="@string/general_send_transaction"
android:textAlignment="center" android:textAlignment="center"
android:textColor="@color/primary" android:textColor="@color/primary"
android:textSize="@dimen/text_size_large" android:textSize="@dimen/text_size_large"
@ -43,7 +43,7 @@
android:layout_marginStart="7dp" android:layout_marginStart="7dp"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/from_banknote" android:text="@string/general_from_banknote"
android:textColor="@color/primary" android:textColor="@color/primary"
android:textSize="@dimen/text_size_medium" /> android:textSize="@dimen/text_size_medium" />
@ -65,7 +65,7 @@
android:layout_marginStart="7dp" android:layout_marginStart="7dp"
android:layout_marginTop="12dp" android:layout_marginTop="12dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/with_balance" android:text="@string/general_balance"
android:textColor="@color/primary" android:textColor="@color/primary"
android:textSize="@dimen/text_size_medium" /> android:textSize="@dimen/text_size_medium" />
@ -114,7 +114,7 @@
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginTop="4dp" android:layout_marginTop="4dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/send_to_wallet" android:text="@string/general_send_to_wallet"
android:textColor="@color/primary" android:textColor="@color/primary"
android:textSize="@dimen/text_size_medium" android:textSize="@dimen/text_size_medium"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
@ -140,7 +140,7 @@
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginEnd="8dp" android:layout_marginEnd="8dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:hint="@string/enter_wallet_address" android:hint="@string/prepare_transaction_hint_enter_address"
android:imeOptions="actionNext" android:imeOptions="actionNext"
android:inputType="text|textMultiLine|textNoSuggestions" android:inputType="text|textMultiLine|textNoSuggestions"
android:padding="12dp" android:padding="12dp"
@ -164,7 +164,7 @@
android:layout_marginTop="24dp" android:layout_marginTop="24dp"
android:layout_marginBottom="8dp" android:layout_marginBottom="8dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/amount" android:text="@string/general_amount"
android:textColor="@color/primary" android:textColor="@color/primary"
android:textSize="@dimen/text_size_medium" android:textSize="@dimen/text_size_medium"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
@ -185,7 +185,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:digits="0123456789.," android:digits="0123456789.,"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:hint="@string/enter_amount" android:hint="@string/prepare_transaction_hint_enter_amount"
android:imeOptions="actionDone" android:imeOptions="actionDone"
android:inputType="numberDecimal" android:inputType="numberDecimal"
android:padding="12dp" android:padding="12dp"
@ -205,7 +205,7 @@
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginEnd="16dp" android:layout_marginEnd="16dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/m_btc" android:text="@string/general_btc"
android:textColor="@color/primary" android:textColor="@color/primary"
android:textSize="@dimen/text_size_1_large" android:textSize="@dimen/text_size_1_large"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
@ -234,7 +234,7 @@
android:layout_width="150dp" android:layout_width="150dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:fontFamily="@font/saira_condensed_bold" android:fontFamily="@font/saira_condensed_bold"
android:text="@string/including_fee_" android:text="@string/confirm_transaction_btn_including_fee"
android:textSize="@dimen/text_size_medium" /> android:textSize="@dimen/text_size_medium" />
<RadioButton <RadioButton
@ -243,7 +243,7 @@
android:layout_width="150dp" android:layout_width="150dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:fontFamily="@font/saira_condensed_bold" android:fontFamily="@font/saira_condensed_bold"
android:text="@string/not_including_fee_" android:text="@string/confirm_transaction_btn_not_including_fee"
android:textSize="@dimen/text_size_medium" /> android:textSize="@dimen/text_size_medium" />
</info.hoang8f.android.segmented.SegmentedGroup> </info.hoang8f.android.segmented.SegmentedGroup>
@ -257,7 +257,7 @@
android:layout_height="50dp" android:layout_height="50dp"
android:layout_marginBottom="16dp" android:layout_marginBottom="16dp"
android:fontFamily="@font/saira_condensed_bold" android:fontFamily="@font/saira_condensed_bold"
android:text="@string/verify" android:text="@string/prepare_transaction_btn_verify"
android:textSize="@dimen/text_size_large" android:textSize="@dimen/text_size_large"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintLeft_toLeftOf="parent"

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<string name="app_name">Tangem Access</string> <string name="app_name" translatable="false">Tangem Access</string>
</resources> </resources>

View file

@ -15,11 +15,11 @@ import android.widget.Toast
import androidx.activity.OnBackPressedCallback import androidx.activity.OnBackPressedCallback
import androidx.core.os.bundleOf import androidx.core.os.bundleOf
import com.tangem.Constant import com.tangem.Constant
import com.tangem.card_android.android.data.PINStorage import com.tangem.tangem_sdk.android.data.PINStorage
import com.tangem.card_android.data.EXTRA_TANGEM_CARD import com.tangem.tangem_sdk.data.EXTRA_TANGEM_CARD
import com.tangem.card_android.data.EXTRA_TANGEM_CARD_UID import com.tangem.tangem_sdk.data.EXTRA_TANGEM_CARD_UID
import com.tangem.card_android.data.loadFromBundle import com.tangem.tangem_sdk.data.loadFromBundle
import com.tangem.card_common.data.TangemCard import com.tangem.tangem_card.data.TangemCard
import com.tangem.ui.activity.MainActivity import com.tangem.ui.activity.MainActivity
import com.tangem.ui.event.TransactionFinishWithError import com.tangem.ui.event.TransactionFinishWithError
import com.tangem.ui.fragment.BaseFragment import com.tangem.ui.fragment.BaseFragment
@ -72,9 +72,9 @@ class ConfirmTransactionFragment : BaseFragment(), NavigationResultListener, Nfc
isIncludeFee = arguments?.getBoolean(Constant.EXTRA_FEE_INCLUDED, true) ?: true isIncludeFee = arguments?.getBoolean(Constant.EXTRA_FEE_INCLUDED, true) ?: true
if (isIncludeFee) if (isIncludeFee)
tvIncFee.setText(R.string.including_fee) tvIncFee.setText(R.string.confirm_transaction_including_fee)
else else
tvIncFee.setText(R.string.not_including_fee) tvIncFee.setText(R.string.confirm_transaction_not_including_fee)
amount = CoinEngine.Amount(arguments?.getString(Constant.EXTRA_AMOUNT) ?: "0", amount = CoinEngine.Amount(arguments?.getString(Constant.EXTRA_AMOUNT) ?: "0",
arguments?.getString(Constant.EXTRA_AMOUNT_CURRENCY) ?: "") arguments?.getString(Constant.EXTRA_AMOUNT_CURRENCY) ?: "")
@ -116,7 +116,7 @@ class ConfirmTransactionFragment : BaseFragment(), NavigationResultListener, Nfc
tvFeeEquivalent.text = eqFee tvFeeEquivalent.text = eqFee
if (!ctx.coinData!!.amountEquivalentDescriptionAvailable) { if (!ctx.coinData!!.amountEquivalentDescriptionAvailable) {
tvFeeEquivalent.error = getString(R.string.service_unavailable) tvFeeEquivalent.error = getString(R.string.confirm_transaction_error_service_unavailable)
tvCurrency2.visibility = View.GONE tvCurrency2.visibility = View.GONE
tvFeeEquivalent.visibility = View.GONE tvFeeEquivalent.visibility = View.GONE
} else } else
@ -138,14 +138,14 @@ class ConfirmTransactionFragment : BaseFragment(), NavigationResultListener, Nfc
calendar.add(Calendar.MINUTE, -1) calendar.add(Calendar.MINUTE, -1)
if (dtVerified == null || dtVerified!!.before(calendar.time)) { if (dtVerified == null || dtVerified!!.before(calendar.time)) {
finishWithError(Activity.RESULT_CANCELED, getString(R.string.the_obtained_data_is_outdated_try_again)) finishWithError(Activity.RESULT_CANCELED, getString(R.string.confirm_transaction_error_data_is_outdated))
return@setOnClickListener return@setOnClickListener
} }
val engineCoin = CoinEngineFactory.createCardano(ctx) val engineCoin = CoinEngineFactory.createCardano(ctx)
if (engineCoin!!.isNeedCheckNode && !nodeCheck) { if (engineCoin!!.isNeedCheckNode && !nodeCheck) {
Toast.makeText(context, getString(R.string.cannot_reach_current_active_blockchain_node_try_again), Toast.LENGTH_LONG).show() Toast.makeText(context, getString(R.string.confirm_transaction_error_cannot_reach_node), Toast.LENGTH_LONG).show()
return@setOnClickListener return@setOnClickListener
} }
@ -192,7 +192,7 @@ class ConfirmTransactionFragment : BaseFragment(), NavigationResultListener, Nfc
R.id.action_confirmTransactionFragment_to_signTransactionFragment, R.id.action_confirmTransactionFragment_to_signTransactionFragment,
data) data)
} else } else
Toast.makeText(context, getString(R.string.no_connection), Toast.LENGTH_SHORT).show() Toast.makeText(context, getString(R.string.general_error_no_connection), Toast.LENGTH_SHORT).show()
} }
progressBar.visibility = View.VISIBLE progressBar.visibility = View.VISIBLE
@ -260,7 +260,7 @@ class ConfirmTransactionFragment : BaseFragment(), NavigationResultListener, Nfc
R.id.action_confirmTransactionFragment_to_signTransactionFragment, R.id.action_confirmTransactionFragment_to_signTransactionFragment,
bundle) bundle)
} else } else
Toast.makeText(context, R.string.pin_2_is_required_to_sign_the_transaction, Toast.LENGTH_LONG).show() Toast.makeText(context, R.string.confirm_transaction_error_pin_2_is_required, Toast.LENGTH_LONG).show()
} }
} }

View file

@ -73,19 +73,19 @@ class PrepareTransactionFragment : BaseFragment(), NavigationResultListener, Nfc
btnVerify.setOnClickListener { btnVerify.setOnClickListener {
if (!UtilHelper.isOnline(requireContext())) { if (!UtilHelper.isOnline(requireContext())) {
Toast.makeText(context, R.string.no_connection, Toast.LENGTH_LONG).show() Toast.makeText(context, R.string.general_error_no_connection, Toast.LENGTH_LONG).show()
return@setOnClickListener return@setOnClickListener
} }
// check on empty wallet address // check on empty wallet address
if (etWallet.text.toString() == "") { if (etWallet.text.toString() == "") {
etWallet.error = getString(R.string.wallet_address_empty) etWallet.error = getString(R.string.general_wallet_empty)
return@setOnClickListener return@setOnClickListener
} }
// check on empty amount // check on empty amount
if (etAmount.text.toString() == "") { if (etAmount.text.toString() == "") {
etAmount.error = getString(R.string.amount_empty) etAmount.error = getString(R.string.prepare_transaction_error_amount_empty)
return@setOnClickListener return@setOnClickListener
} }
@ -95,16 +95,16 @@ class PrepareTransactionFragment : BaseFragment(), NavigationResultListener, Nfc
// check amount // check amount
try { try {
if (!engine.checkNewTransactionAmount(amount)) if (!engine.checkNewTransactionAmount(amount))
etAmount.error = getString(R.string.not_enough_funds_on_your_card) etAmount.error = getString(R.string.prepare_transaction_error_not_enough_funds)
else else
etAmount.error = null etAmount.error = null
} catch (e: Exception) { } catch (e: Exception) {
etAmount.error = getString(R.string.unknown_amount_format) etAmount.error = getString(R.string.prepare_transaction_error_unknown_amount_format)
} }
// check wallet address // check wallet address
if (!engine.validateAddress(etWallet.text.toString())) { if (!engine.validateAddress(etWallet.text.toString())) {
etWallet.error = getString(R.string.incorrect_destination_wallet_address) etWallet.error = getString(R.string.prepare_transaction_error_incorrect_destination)
return@setOnClickListener return@setOnClickListener
} else } else
etWallet.error = null etWallet.error = null

View file

@ -17,19 +17,19 @@ import android.widget.Toast
import androidx.activity.OnBackPressedCallback import androidx.activity.OnBackPressedCallback
import com.tangem.App import com.tangem.App
import com.tangem.Constant import com.tangem.Constant
import com.tangem.card_android.android.nfc.NfcDeviceAntennaLocation import com.tangem.tangem_sdk.android.nfc.NfcDeviceAntennaLocation
import com.tangem.card_android.android.reader.NfcManager import com.tangem.tangem_sdk.android.reader.NfcManager
import com.tangem.card_android.android.reader.NfcReader import com.tangem.tangem_sdk.android.reader.NfcReader
import com.tangem.card_android.data.EXTRA_TANGEM_CARD import com.tangem.tangem_sdk.data.EXTRA_TANGEM_CARD
import com.tangem.card_android.data.EXTRA_TANGEM_CARD_UID import com.tangem.tangem_sdk.data.EXTRA_TANGEM_CARD_UID
import com.tangem.card_android.data.asBundle import com.tangem.tangem_sdk.data.asBundle
import com.tangem.card_common.data.TangemCard import com.tangem.tangem_card.data.TangemCard
import com.tangem.card_common.reader.CardCrypto import com.tangem.tangem_card.reader.CardCrypto
import com.tangem.card_common.reader.CardProtocol import com.tangem.tangem_card.reader.CardProtocol
import com.tangem.card_common.tasks.CustomReadCardTask import com.tangem.tangem_card.tasks.CustomReadCardTask
import com.tangem.card_common.tasks.OneTouchSignTask import com.tangem.tangem_card.tasks.OneTouchSignTask
import com.tangem.card_common.tasks.SignTask import com.tangem.tangem_card.tasks.SignTask
import com.tangem.card_common.util.Log import com.tangem.tangem_card.util.Log
import com.tangem.wallet.CoinEngine import com.tangem.wallet.CoinEngine
import com.tangem.wallet.CoinEngineFactory import com.tangem.wallet.CoinEngineFactory
import com.tangem.wallet.TangemContext import com.tangem.wallet.TangemContext
@ -225,7 +225,7 @@ class SignTransactionFragment : BaseFragment(), NavigationResultListener,
} catch (e: CardProtocol.TangemException_WrongAmount) { } catch (e: CardProtocol.TangemException_WrongAmount) {
try { try {
val data = Bundle() val data = Bundle()
data.putString(Constant.EXTRA_MESSAGE, getString(R.string.cannot_sign_transaction_wrong_amount)) data.putString(Constant.EXTRA_MESSAGE, getString(R.string.send_transaction_error_wrong_amount))
data.putString(EXTRA_TANGEM_CARD_UID, ctx.card.uid) data.putString(EXTRA_TANGEM_CARD_UID, ctx.card.uid)
data.putBundle(EXTRA_TANGEM_CARD, ctx.card.asBundle) data.putBundle(EXTRA_TANGEM_CARD, ctx.card.asBundle)
navigateBackWithResult(Activity.RESULT_CANCELED, data) navigateBackWithResult(Activity.RESULT_CANCELED, data)
@ -275,7 +275,7 @@ class SignTransactionFragment : BaseFragment(), NavigationResultListener,
progressBar?.progressTintList = ColorStateList.valueOf(Color.DKGRAY) progressBar?.progressTintList = ColorStateList.valueOf(Color.DKGRAY)
progressBar?.visibility = View.INVISIBLE progressBar?.visibility = View.INVISIBLE
val data = Bundle() val data = Bundle()
data.putString(Constant.EXTRA_MESSAGE, getString(R.string.cannot_sign_transaction_make_sure_you_enter_correct_pin_2)) data.putString(Constant.EXTRA_MESSAGE, getString(R.string.send_transaction_error_cannot_sign))
data.putString(EXTRA_TANGEM_CARD_UID, cardProtocol.card.uid) data.putString(EXTRA_TANGEM_CARD_UID, cardProtocol.card.uid)
data.putBundle(EXTRA_TANGEM_CARD, cardProtocol.card.asBundle) data.putBundle(EXTRA_TANGEM_CARD, cardProtocol.card.asBundle)
navigateBackWithResult(Constant.RESULT_INVALID_PIN_, data) navigateBackWithResult(Constant.RESULT_INVALID_PIN_, data)
@ -287,7 +287,7 @@ class SignTransactionFragment : BaseFragment(), NavigationResultListener,
if (cardProtocol.error is CardProtocol.TangemException_WrongAmount) { if (cardProtocol.error is CardProtocol.TangemException_WrongAmount) {
try { try {
val data = Bundle() val data = Bundle()
data.putString(Constant.EXTRA_MESSAGE, getString(R.string.cannot_sign_transaction_wrong_amount)) data.putString(Constant.EXTRA_MESSAGE, getString(R.string.send_transaction_error_wrong_amount))
data.putString(EXTRA_TANGEM_CARD_UID, cardProtocol.card.uid) data.putString(EXTRA_TANGEM_CARD_UID, cardProtocol.card.uid)
data.putBundle(EXTRA_TANGEM_CARD, cardProtocol.card.asBundle) data.putBundle(EXTRA_TANGEM_CARD, cardProtocol.card.asBundle)
navigateBackWithResult(Activity.RESULT_CANCELED, data) navigateBackWithResult(Activity.RESULT_CANCELED, data)
@ -298,11 +298,11 @@ class SignTransactionFragment : BaseFragment(), NavigationResultListener,
progressBar?.post { progressBar?.post {
if (cardProtocol.error is CardProtocol.TangemException_ExtendedLengthNotSupported) { if (cardProtocol.error is CardProtocol.TangemException_ExtendedLengthNotSupported) {
if (!NoExtendedLengthSupportDialog.allReadyShowed) { if (!NoExtendedLengthSupportDialog.allReadyShowed) {
NoExtendedLengthSupportDialog.message = getText(R.string.the_nfc_adapter_length_apdu).toString() + "\n" + getText(R.string.the_nfc_adapter_length_apdu_advice).toString() NoExtendedLengthSupportDialog.message = getText(R.string.dialog_the_nfc_adapter_length_apdu).toString() + "\n" + getText(R.string.dialog_the_nfc_adapter_length_apdu_advice).toString()
NoExtendedLengthSupportDialog().show(requireFragmentManager(), NoExtendedLengthSupportDialog.TAG) NoExtendedLengthSupportDialog().show(requireFragmentManager(), NoExtendedLengthSupportDialog.TAG)
} }
} else { } else {
Toast.makeText(context, R.string.try_to_scan_again, Toast.LENGTH_LONG).show() Toast.makeText(context, R.string.general_notification_scan_again, Toast.LENGTH_LONG).show()
} }
progressBar?.progress = 100 progressBar?.progress = 100
progressBar?.progressTintList = ColorStateList.valueOf(Color.RED) progressBar?.progressTintList = ColorStateList.valueOf(Color.RED)

View file

@ -13,7 +13,7 @@
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:paddingTop="8dp" android:paddingTop="8dp"
android:paddingBottom="4dp" android:paddingBottom="4dp"
android:text="@string/send_transaction" android:text="@string/general_send_transaction"
android:textAlignment="center" android:textAlignment="center"
android:textColor="@color/primary" android:textColor="@color/primary"
android:textSize="@dimen/text_size_large" android:textSize="@dimen/text_size_large"
@ -40,7 +40,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/from_banknote" android:text="@string/general_from_banknote"
android:textColor="@color/primary" android:textColor="@color/primary"
android:textSize="@dimen/text_size_medium" android:textSize="@dimen/text_size_medium"
android:visibility="gone" /> android:visibility="gone" />
@ -63,7 +63,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="6dp" android:layout_marginTop="6dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/with_balance" android:text="@string/general_balance"
android:textColor="@color/primary" android:textColor="@color/primary"
android:textSize="@dimen/text_size_medium" android:textSize="@dimen/text_size_medium"
android:visibility="gone" /> android:visibility="gone" />
@ -93,7 +93,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/send_to_wallet" android:text="@string/general_send_to_wallet"
android:textColor="@color/primary" android:textColor="@color/primary"
android:textSize="@dimen/text_size_medium" android:textSize="@dimen/text_size_medium"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
@ -108,7 +108,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:enabled="false" android:enabled="false"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:hint="@string/target_wallet_address" android:hint="@string/confirm_transaction_hint_target_address"
android:inputType="textMultiLine" android:inputType="textMultiLine"
android:maxLines="2" android:maxLines="2"
android:padding="12dp" android:padding="12dp"
@ -127,7 +127,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/amount" android:text="@string/general_amount"
android:textColor="@color/primary" android:textColor="@color/primary"
android:textSize="@dimen/text_size_medium" android:textSize="@dimen/text_size_medium"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
@ -159,7 +159,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:digits="0123456789.," android:digits="0123456789.,"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:hint="@string/enter_amount" android:hint="@string/prepare_transaction_hint_enter_amount"
android:imeOptions="actionDone" android:imeOptions="actionDone"
android:inputType="numberDecimal" android:inputType="numberDecimal"
android:padding="12dp" android:padding="12dp"
@ -179,7 +179,7 @@
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginEnd="16dp" android:layout_marginEnd="16dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/m_btc" android:text="@string/general_btc"
android:textColor="@color/primary" android:textColor="@color/primary"
android:textSize="@dimen/text_size_1_large" android:textSize="@dimen/text_size_1_large"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
@ -211,7 +211,7 @@
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
android:layout_marginBottom="4dp" android:layout_marginBottom="4dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/fee" android:text="@string/confirm_transaction_fee"
android:textColor="@color/primary" android:textColor="@color/primary"
android:textSize="@dimen/text_size_medium" android:textSize="@dimen/text_size_medium"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
@ -236,7 +236,7 @@
android:layout_width="100dp" android:layout_width="100dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:fontFamily="@font/saira_condensed_bold" android:fontFamily="@font/saira_condensed_bold"
android:text="@string/minimal" android:text="@string/confirm_transaction_btn_fee_minimal"
android:textSize="@dimen/text_size_medium" /> android:textSize="@dimen/text_size_medium" />
<RadioButton <RadioButton
@ -245,7 +245,7 @@
android:layout_width="100dp" android:layout_width="100dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:fontFamily="@font/saira_condensed_bold" android:fontFamily="@font/saira_condensed_bold"
android:text="@string/normal" android:text="@string/confirm_transaction_btn_fee_normal"
android:textSize="@dimen/text_size_medium" /> android:textSize="@dimen/text_size_medium" />
<RadioButton <RadioButton
@ -254,7 +254,7 @@
android:layout_width="100dp" android:layout_width="100dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:fontFamily="@font/saira_condensed_bold" android:fontFamily="@font/saira_condensed_bold"
android:text="@string/priority" android:text="@string/confirm_transaction_btn_fee_priority"
android:textSize="@dimen/text_size_medium" /> android:textSize="@dimen/text_size_medium" />
</info.hoang8f.android.segmented.SegmentedGroup> </info.hoang8f.android.segmented.SegmentedGroup>
@ -272,7 +272,7 @@
android:layout_marginBottom="4dp" android:layout_marginBottom="4dp"
android:enabled="false" android:enabled="false"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:hint="@string/fee_amount" android:hint="@string/confirm_transaction_hint_fee_amount"
android:inputType="numberDecimal" android:inputType="numberDecimal"
android:padding="12dp" android:padding="12dp"
android:textColor="@color/black" android:textColor="@color/black"
@ -291,7 +291,7 @@
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:layout_marginBottom="8dp" android:layout_marginBottom="8dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/m_btc" android:text="@string/general_btc"
android:textSize="@dimen/text_size_medium" android:textSize="@dimen/text_size_medium"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toRightOf="@+id/etFee" app:layout_constraintLeft_toRightOf="@+id/etFee"

View file

@ -14,7 +14,7 @@
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:paddingTop="8dp" android:paddingTop="8dp"
android:paddingBottom="8dp" android:paddingBottom="8dp"
android:text="@string/send_transaction" android:text="@string/general_send_transaction"
android:textAlignment="center" android:textAlignment="center"
android:textColor="@color/primary" android:textColor="@color/primary"
android:textSize="@dimen/text_size_large" android:textSize="@dimen/text_size_large"
@ -44,7 +44,7 @@
android:layout_marginStart="7dp" android:layout_marginStart="7dp"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/from_banknote" android:text="@string/general_from_banknote"
android:textColor="@color/primary" android:textColor="@color/primary"
android:textSize="@dimen/text_size_medium" /> android:textSize="@dimen/text_size_medium" />
@ -66,7 +66,7 @@
android:layout_marginStart="7dp" android:layout_marginStart="7dp"
android:layout_marginTop="12dp" android:layout_marginTop="12dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/with_balance" android:text="@string/general_balance"
android:textColor="@color/primary" android:textColor="@color/primary"
android:textSize="@dimen/text_size_medium" /> android:textSize="@dimen/text_size_medium" />
@ -115,7 +115,7 @@
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginTop="4dp" android:layout_marginTop="4dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/send_to_wallet" android:text="@string/general_send_to_wallet"
android:textColor="@color/primary" android:textColor="@color/primary"
android:textSize="@dimen/text_size_medium" android:textSize="@dimen/text_size_medium"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
@ -142,7 +142,7 @@
android:layout_marginEnd="8dp" android:layout_marginEnd="8dp"
android:drawableEnd="@android:drawable/ic_menu_close_clear_cancel" android:drawableEnd="@android:drawable/ic_menu_close_clear_cancel"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:hint="@string/enter_wallet_address" android:hint="@string/prepare_transaction_hint_enter_address"
android:imeOptions="actionNext" android:imeOptions="actionNext"
android:inputType="text|textMultiLine|textNoSuggestions" android:inputType="text|textMultiLine|textNoSuggestions"
android:padding="12dp" android:padding="12dp"
@ -166,7 +166,7 @@
android:layout_marginTop="24dp" android:layout_marginTop="24dp"
android:layout_marginBottom="8dp" android:layout_marginBottom="8dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/amount" android:text="@string/general_amount"
android:textColor="@color/primary" android:textColor="@color/primary"
android:textSize="@dimen/text_size_medium" android:textSize="@dimen/text_size_medium"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
@ -186,7 +186,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:digits="0123456789.," android:digits="0123456789.,"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:hint="@string/enter_amount" android:hint="@string/prepare_transaction_hint_enter_amount"
android:imeOptions="actionDone" android:imeOptions="actionDone"
android:inputType="numberDecimal" android:inputType="numberDecimal"
android:padding="12dp" android:padding="12dp"
@ -206,7 +206,7 @@
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginEnd="16dp" android:layout_marginEnd="16dp"
android:fontFamily="@font/maax" android:fontFamily="@font/maax"
android:text="@string/m_btc" android:text="@string/general_btc"
android:textColor="@color/primary" android:textColor="@color/primary"
android:textSize="@dimen/text_size_1_large" android:textSize="@dimen/text_size_1_large"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
@ -235,7 +235,7 @@
android:layout_width="150dp" android:layout_width="150dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:fontFamily="@font/saira_condensed_bold" android:fontFamily="@font/saira_condensed_bold"
android:text="@string/including_fee_" android:text="@string/confirm_transaction_btn_including_fee"
android:textSize="@dimen/text_size_medium" /> android:textSize="@dimen/text_size_medium" />
<RadioButton <RadioButton
@ -244,7 +244,7 @@
android:layout_width="150dp" android:layout_width="150dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:fontFamily="@font/saira_condensed_bold" android:fontFamily="@font/saira_condensed_bold"
android:text="@string/not_including_fee_" android:text="@string/confirm_transaction_btn_not_including_fee"
android:textSize="@dimen/text_size_medium" /> android:textSize="@dimen/text_size_medium" />
</info.hoang8f.android.segmented.SegmentedGroup> </info.hoang8f.android.segmented.SegmentedGroup>

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<string name="app_name">Cardano</string> <string name="app_name" translatable="false">Cardano</string>
<string name="verify">Confirm</string> <string name="verify">Confirm</string>
<string name="send_1">Checkout</string> <string name="send_1">Checkout</string>

View file

@ -47,7 +47,7 @@ class LocalStorage
artworks = HashMap() artworks = HashMap()
} }
if (artworks.count() < 28) { if (artworks.count() < 29) {
// forceSave=true only on the last one // forceSave=true only on the last one
putResourceArtworkToCatalog(R.drawable.card_default, false) putResourceArtworkToCatalog(R.drawable.card_default, false)
putResourceArtworkToCatalog(R.drawable.card_default_nft, false) putResourceArtworkToCatalog(R.drawable.card_default_nft, false)
@ -76,6 +76,7 @@ class LocalStorage
putResourceArtworkToCatalog(R.drawable.card_ru042, false) putResourceArtworkToCatalog(R.drawable.card_ru042, false)
putResourceArtworkToCatalog(R.drawable.card_ru043, false) putResourceArtworkToCatalog(R.drawable.card_ru043, false)
putResourceArtworkToCatalog(R.drawable.card_tg044, false) putResourceArtworkToCatalog(R.drawable.card_tg044, false)
putResourceArtworkToCatalog(R.drawable.card_tg046, false)
putResourceArtworkToCatalog(R.drawable.card_ff32, true) putResourceArtworkToCatalog(R.drawable.card_ff32, true)
} }
if (batchesFile.exists()) { if (batchesFile.exists()) {
@ -260,6 +261,7 @@ class LocalStorage
card.batch == "0028" -> R.drawable.card_ru040 card.batch == "0028" -> R.drawable.card_ru040
card.batch == "0029" -> R.drawable.card_ru041 card.batch == "0029" -> R.drawable.card_ru041
card.batch == "0031" -> R.drawable.card_ru042 card.batch == "0031" -> R.drawable.card_ru042
card.batch == "0034" -> R.drawable.card_tg046
card.batch == "FF32" -> R.drawable.card_ff32 card.batch == "FF32" -> R.drawable.card_ff32
else -> null else -> null

Binary file not shown.

After

Width:  |  Height:  |  Size: 237 KiB

View file

@ -8,7 +8,7 @@ import androidx.test.runner.AndroidJUnit4;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import static org.junit.Assert.*; import static org.junit.Assert.assertEquals;
/** /**
* Instrumented test, which will execute on an Android device. * Instrumented test, which will execute on an Android device.

View file

@ -19,9 +19,9 @@ class NfcEnableDialog : DialogFragment() {
val builder = context?.let { AlertDialog.Builder(it) } val builder = context?.let { AlertDialog.Builder(it) }
builder?.setCancelable(false) builder?.setCancelable(false)
?.setIcon(R.drawable.ic_action_nfc_gray) ?.setIcon(R.drawable.ic_action_nfc_gray)
?.setTitle(R.string.nfc_disabled) ?.setTitle(R.string.dialog_nfc_enable_title)
?.setMessage(R.string.enable_nfc) ?.setMessage(R.string.dialog_nfc_enable_text)
?.setPositiveButton(R.string.dialog_ok ?.setPositiveButton(R.string.general_ok
) { _, _ -> ) { _, _ ->
activity?.startActivity(Intent(Settings.ACTION_NFC_SETTINGS)) activity?.startActivity(Intent(Settings.ACTION_NFC_SETTINGS))
} }

View file

@ -1,9 +1,9 @@
<resources> <resources>
<string name="app_name">tangemcard</string> <string name="app_name">tangemcard</string>
<string name="dialog_ok">OK</string> <string name="general_ok">OK</string>
<string name="dialog_quit">Quit</string> <string name="dialog_quit">Quit</string>
<string name="nfc_disabled">Enable NFC?</string> <string name="dialog_nfc_enable_title">Enable NFC?</string>
<string name="enable_nfc">This app is useless when NFC is disabled. Reader mode depends on it. Hit OK to go to Settings, where you can enable NFC.</string> <string name="dialog_nfc_enable_text">This app is useless when NFC is disabled. Reader mode depends on it. Hit OK to go to Settings, where you can enable NFC.</string>
</resources> </resources>