Updated on 2026-08-14

This commit is contained in:
Tangem 2018-06-15 14:31:28 +03:00
parent 42bddc488d
commit 2ed8c3fcc2
10 changed files with 169 additions and 312 deletions

Binary file not shown.

View file

@ -34,9 +34,7 @@ public class EmptyWalletActivity extends AppCompatActivity implements NfcAdapter
private static final int REQUEST_CODE_VERIFY_CARD = 4;
private TangemCard mCard;
private TextView tvCardID, tvIssuer, tvIssuerData, tvBlockchain;
private ProgressBar progressBar;
private ImageView ivBlockchain, ivPIN, ivPIN2orSecurityDelay, ivDeveloperVersion;
private NfcManager mNfcManager;
private boolean lastReadSuccess = true;
@ -55,12 +53,12 @@ public class EmptyWalletActivity extends AppCompatActivity implements NfcAdapter
mCard = new TangemCard(getIntent().getStringExtra("UID"));
mCard.LoadFromBundle(getIntent().getExtras().getBundle("Card"));
tvCardID = findViewById(R.id.tvCardID);
TextView tvCardID = findViewById(R.id.tvCardID);
tvCardID.setText(mCard.getCIDDescription());
tvIssuer = findViewById(R.id.tvIssuer);
tvIssuerData = findViewById(R.id.tvIssuerData);
tvBlockchain = findViewById(R.id.tvBlockchain);
TextView tvIssuer = findViewById(R.id.tvIssuer);
TextView tvIssuerData = findViewById(R.id.tvIssuerData);
TextView tvBlockchain = findViewById(R.id.tvBlockchain);
tvIssuer.setText(mCard.getIssuerDescription());
tvIssuerData.setText(mCard.getIssuerDataDescription());
@ -69,84 +67,50 @@ public class EmptyWalletActivity extends AppCompatActivity implements NfcAdapter
tvBlockchain.setText(mCard.getBlockchainName());
progressBar = findViewById(R.id.progressBar);
ivBlockchain = findViewById(R.id.imgBlockchain);
ivPIN = findViewById(R.id.imgPIN);
ivPIN2orSecurityDelay = findViewById(R.id.imgPIN2orSecurityDelay);
ivDeveloperVersion = findViewById(R.id.imgDeveloperVersion);
ImageView ivBlockchain = findViewById(R.id.imgBlockchain);
ImageView ivPIN = findViewById(R.id.imgPIN);
ImageView ivPIN2orSecurityDelay = findViewById(R.id.imgPIN2orSecurityDelay);
ImageView ivDeveloperVersion = findViewById(R.id.imgDeveloperVersion);
Button btnNewWallet = findViewById(R.id.btnNewWallet);
ivBlockchain.setImageResource(mCard.getBlockchain().getImageResource(this, mCard.getTokenSymbol()));
if (mCard.useDefaultPIN1()) {
ivPIN.setImageResource(R.drawable.unlock_pin1);
ivPIN.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(EmptyWalletActivity.this, "This banknote is protected by default PIN1 code", Toast.LENGTH_LONG).show();
}
});
ivPIN.setOnClickListener(v -> Toast.makeText(EmptyWalletActivity.this, R.string.this_banknote_protected_default_PIN1_code, Toast.LENGTH_LONG).show());
} else {
ivPIN.setImageResource(R.drawable.lock_pin1);
ivPIN.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(EmptyWalletActivity.this, "This banknote is protected by user's PIN1 code", Toast.LENGTH_LONG).show();
}
});
ivPIN.setOnClickListener(v -> Toast.makeText(EmptyWalletActivity.this, R.string.this_banknote_protected_user_PIN1_code, Toast.LENGTH_LONG).show());
}
if (mCard.getPauseBeforePIN2() > 0 && (mCard.useDefaultPIN2() || !mCard.useSmartSecurityDelay())) {
ivPIN2orSecurityDelay.setImageResource(R.drawable.timer);
ivPIN2orSecurityDelay.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(EmptyWalletActivity.this, String.format("This banknote will enforce %.0f seconds security delay for all operations requiring PIN2 code", mCard.getPauseBeforePIN2() / 1000.0), Toast.LENGTH_LONG).show();
}
});
ivPIN2orSecurityDelay.setOnClickListener(v -> Toast.makeText(EmptyWalletActivity.this, String.format("This banknote will enforce %.0f seconds security delay for all operations requiring PIN2 code", mCard.getPauseBeforePIN2() / 1000.0), Toast.LENGTH_LONG).show());
} else if (mCard.useDefaultPIN2()) {
ivPIN2orSecurityDelay.setImageResource(R.drawable.unlock_pin2);
ivPIN2orSecurityDelay.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(EmptyWalletActivity.this, "This banknote is protected by default PIN2 code", Toast.LENGTH_LONG).show();
}
});
ivPIN2orSecurityDelay.setOnClickListener(v -> Toast.makeText(EmptyWalletActivity.this, R.string.this_banknote_protected_default_PIN2_code, Toast.LENGTH_LONG).show());
} else {
ivPIN2orSecurityDelay.setImageResource(R.drawable.lock_pin2);
ivPIN2orSecurityDelay.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(EmptyWalletActivity.this, "This banknote is protected by user's PIN2 code", Toast.LENGTH_LONG).show();
}
});
ivPIN2orSecurityDelay.setOnClickListener(v -> Toast.makeText(EmptyWalletActivity.this, R.string.this_banknote_protected_user_PIN2_code, Toast.LENGTH_LONG).show());
}
if (mCard.useDevelopersFirmware()) {
ivDeveloperVersion.setImageResource(R.drawable.ic_developer_version);
ivDeveloperVersion.setVisibility(View.VISIBLE);
ivDeveloperVersion.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(EmptyWalletActivity.this, "Unlocked banknote, only for development use", Toast.LENGTH_LONG).show();
}
});
ivDeveloperVersion.setOnClickListener(v -> Toast.makeText(EmptyWalletActivity.this, R.string.unlocked_banknote_only_development_use, Toast.LENGTH_LONG).show());
} else {
ivDeveloperVersion.setVisibility(View.INVISIBLE);
}
Button btnNewWallet = findViewById(R.id.btnNewWallet);
btnNewWallet.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//CreateSelectBlockchainDialog();
requestPIN2Count = 0;
Intent intent = new Intent(getBaseContext(), RequestPINActivity.class);
intent.putExtra("mode", RequestPINActivity.Mode.RequestPIN2.toString());
intent.putExtra("UID", mCard.getUID());
intent.putExtra("Card", mCard.getAsBundle());
startActivityForResult(intent, REQUEST_CODE_REQUEST_PIN2);
}
btnNewWallet.setOnClickListener(v -> {
//CreateSelectBlockchainDialog();
requestPIN2Count = 0;
Intent intent = new Intent(getBaseContext(), RequestPINActivity.class);
intent.putExtra("mode", RequestPINActivity.Mode.RequestPIN2.toString());
intent.putExtra("UID", mCard.getUID());
intent.putExtra("Card", mCard.getAsBundle());
startActivityForResult(intent, REQUEST_CODE_REQUEST_PIN2);
});
if (getIntent().getExtras().containsKey(NfcAdapter.EXTRA_TAG)) {
@ -209,7 +173,6 @@ public class EmptyWalletActivity extends AppCompatActivity implements NfcAdapter
doCreateNewWallet();
}
}
}
@Override
@ -243,12 +206,9 @@ public class EmptyWalletActivity extends AppCompatActivity implements NfcAdapter
}
public void OnReadStart(CardProtocol cardProtocol) {
progressBar.post(new Runnable() {
@Override
public void run() {
progressBar.setVisibility(View.VISIBLE);
progressBar.setProgress(5);
}
progressBar.post(() -> {
progressBar.setVisibility(View.VISIBLE);
progressBar.setProgress(5);
});
}
@ -258,76 +218,59 @@ public class EmptyWalletActivity extends AppCompatActivity implements NfcAdapter
if (cardProtocol != null) {
if (cardProtocol.getError() == null) {
progressBar.post(new Runnable() {
@Override
public void run() {
progressBar.setProgress(100);
progressBar.setProgressTintList(ColorStateList.valueOf(Color.GREEN));
Intent intent = new Intent(EmptyWalletActivity.this, VerifyCardActivity.class);
// TODO обновить карту mCard
intent.putExtra("UID", cardProtocol.getCard().getUID());
intent.putExtra("Card", cardProtocol.getCard().getAsBundle());
startActivityForResult(intent, REQUEST_CODE_VERIFY_CARD);
//addCard(cardProtocol.getCard());
}
progressBar.post(() -> {
progressBar.setProgress(100);
progressBar.setProgressTintList(ColorStateList.valueOf(Color.GREEN));
Intent intent = new Intent(EmptyWalletActivity.this, VerifyCardActivity.class);
// TODO обновить карту mCard
intent.putExtra("UID", cardProtocol.getCard().getUID());
intent.putExtra("Card", cardProtocol.getCard().getAsBundle());
startActivityForResult(intent, REQUEST_CODE_VERIFY_CARD);
//addCard(cardProtocol.getCard());
});
} else {
// remove last UIDs because of error and no card read
progressBar.post(new Runnable() {
@Override
public void run() {
lastReadSuccess = false;
if (cardProtocol.getError() instanceof CardProtocol.TangemException_ExtendedLengthNotSupported) {
if (!NoExtendedLengthSupportDialog.allreadyShowed) {
new NoExtendedLengthSupportDialog().show(getFragmentManager(), "NoExtendedLengthSupportDialog");
}
} else {
Toast.makeText(EmptyWalletActivity.this, "Try to scan again", Toast.LENGTH_LONG).show();
progressBar.post(() -> {
lastReadSuccess = false;
if (cardProtocol.getError() instanceof CardProtocol.TangemException_ExtendedLengthNotSupported) {
if (!NoExtendedLengthSupportDialog.allreadyShowed) {
new NoExtendedLengthSupportDialog().show(getFragmentManager(), NoExtendedLengthSupportDialog.TAG);
}
progressBar.setProgress(100);
progressBar.setProgressTintList(ColorStateList.valueOf(Color.RED));
} else {
Toast.makeText(EmptyWalletActivity.this, "Try to scan again", Toast.LENGTH_LONG).show();
}
progressBar.setProgress(100);
progressBar.setProgressTintList(ColorStateList.valueOf(Color.RED));
});
}
}
progressBar.postDelayed(new Runnable() {
@Override
public void run() {
try {
progressBar.setProgress(0);
progressBar.setProgressTintList(ColorStateList.valueOf(Color.DKGRAY));
progressBar.setVisibility(View.INVISIBLE);
} catch (Exception e) {
e.printStackTrace();
}
progressBar.postDelayed(() -> {
try {
progressBar.setProgress(0);
progressBar.setProgressTintList(ColorStateList.valueOf(Color.DKGRAY));
progressBar.setVisibility(View.INVISIBLE);
} catch (Exception e) {
e.printStackTrace();
}
}, 500);
}
public void OnReadProgress(CardProtocol protocol, final int progress) {
progressBar.post(new Runnable() {
@Override
public void run() {
progressBar.setProgress(progress);
}
});
progressBar.post(() -> progressBar.setProgress(progress));
}
public void OnReadCancel() {
verifyCardTask = null;
progressBar.postDelayed(new Runnable() {
@Override
public void run() {
try {
progressBar.setProgress(0);
progressBar.setProgressTintList(ColorStateList.valueOf(Color.DKGRAY));
progressBar.setVisibility(View.INVISIBLE);
} catch (Exception e) {
e.printStackTrace();
}
progressBar.postDelayed(() -> {
try {
progressBar.setProgress(0);
progressBar.setProgressTintList(ColorStateList.valueOf(Color.DKGRAY));
progressBar.setVisibility(View.INVISIBLE);
} catch (Exception e) {
e.printStackTrace();
}
}, 500);
}
@ -359,5 +302,4 @@ public class EmptyWalletActivity extends AppCompatActivity implements NfcAdapter
startActivityForResult(intent, REQUEST_CODE_CREATE_NEW_WALLET_ACTIVITY);
}
}
}

View file

@ -39,8 +39,6 @@ import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
import javax.crypto.spec.IvParameterSpec;
//import com.afollestad.materialdialogs.AlertDialogWrapper;
public class SavePINActivity extends AppCompatActivity implements FingerprintHelper.FingerprintHelperListener {
private TextView tvPIN;
@ -212,12 +210,7 @@ public class SavePINActivity extends AppCompatActivity implements FingerprintHel
if (UsePIN2) {
if (PINStorage.haveEncryptedPIN2()) {
if (!testFingerPrintSettings()) {
tvPIN.postDelayed(new Runnable() {
@Override
public void run() {
finish();
}
}, 2000);
tvPIN.postDelayed(this::finish, 2000);
return;
}
onConfirmAction = OnConfirmAction.Delete;
@ -230,12 +223,7 @@ public class SavePINActivity extends AppCompatActivity implements FingerprintHel
} else {
if (chkUseFingerprint.isChecked() || PINStorage.haveEncryptedPIN()) {
if (!testFingerPrintSettings()) {
tvPIN.postDelayed(new Runnable() {
@Override
public void run() {
finish();
}
}, 2000);
tvPIN.postDelayed(this::finish, 2000);
return;
}
onConfirmAction = OnConfirmAction.Delete;
@ -249,7 +237,6 @@ public class SavePINActivity extends AppCompatActivity implements FingerprintHel
}
}
@Override
public void authenticationFailed(String error) {
print(error);

View file

@ -5,12 +5,15 @@ import android.content.Intent;
import android.nfc.NfcAdapter;
import android.nfc.Tag;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.support.v4.content.ContextCompat;
import android.support.v4.widget.SwipeRefreshLayout;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
@ -20,16 +23,17 @@ import com.tangem.domain.wallet.TangemCard;
import com.tangem.wallet.R;
import java.io.IOException;
import java.util.Objects;
import java.util.Timer;
import java.util.TimerTask;
public class VerifyCard extends Fragment implements SwipeRefreshLayout.OnRefreshListener, NfcAdapter.ReaderCallback {
TangemCard mCard;
TextView tvCardID, tvManufacturer, tvRegistrationDate, tvCardIdentity, tvLastSigned, tvRemainingSignatures, tvReusable, tvOk, tvError, tvMessage,
private TangemCard mCard;
private TextView tvCardID, tvManufacturer, tvRegistrationDate, tvCardIdentity, tvLastSigned, tvRemainingSignatures, tvReusable, tvError, tvMessage,
tvIssuer, tvIssuerData, tvFeatures, tvBlockchain, tvSignedTx, tvSigningMethod, tvFirmware, tvWalletIdentity, tvWallet;
ImageView ivBlockchain, ivPIN, ivPIN2orSecurityDelay, ivDeveloperVersion;
SwipeRefreshLayout mSwipeRefreshLayout;
private ImageView ivBlockchain, ivPIN, ivPIN2orSecurityDelay, ivDeveloperVersion;
private SwipeRefreshLayout mSwipeRefreshLayout;
private NfcManager mNfcManager;
public VerifyCard() {
@ -41,15 +45,12 @@ public class VerifyCard extends Fragment implements SwipeRefreshLayout.OnRefresh
}
@Override
public View onCreateView(final LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
public View onCreateView(@NonNull final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fr_verify_card, container, false);
mNfcManager = new NfcManager(this.getActivity(), this);
// SwipeRefreshLayout
mSwipeRefreshLayout = v.findViewById(R.id.swipe_container);
mSwipeRefreshLayout.setOnRefreshListener(this);
@ -86,23 +87,20 @@ public class VerifyCard extends Fragment implements SwipeRefreshLayout.OnRefresh
tvSignedTx = v.findViewById(R.id.tvSignedTx);
tvSigningMethod = v.findViewById(R.id.tvSigningMethod);
tvOk = v.findViewById(R.id.tvOk);
if (tvOk != null) {
tvOk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent data = prepareResultIntent();
data.putExtra("modification", "update");
getActivity().setResult(Activity.RESULT_OK, data);
getActivity().finish();
}
});
}
Button btnOk = v.findViewById(R.id.btnOk);
btnOk.setOnClickListener(v1 -> {
Intent data = prepareResultIntent();
data.putExtra("modification", "update");
getActivity().setResult(Activity.RESULT_OK, data);
getActivity().finish();
});
tvWallet = v.findViewById(R.id.tvWallet);
tvWalletIdentity = v.findViewById(R.id.tvWalletIdentity);
UpdateViews();
updateViews();
// if (NeedUpdate) {
// mSwipeRefreshLayout.setRefreshing(true);
@ -116,7 +114,25 @@ public class VerifyCard extends Fragment implements SwipeRefreshLayout.OnRefresh
return v;
}
void UpdateViews() {
@Override
public void onResume() {
super.onResume();
mNfcManager.onResume();
}
@Override
public void onPause() {
super.onPause();
mNfcManager.onPause();
}
@Override
public void onStop() {
super.onStop();
mNfcManager.onStop();
}
void updateViews() {
try {
if (timerHideErrorAndMessage != null) {
timerHideErrorAndMessage.cancel();
@ -142,11 +158,12 @@ public class VerifyCard extends Fragment implements SwipeRefreshLayout.OnRefresh
tvManufacturer.setText(mCard.getManufacturer().getOfficialName());
if (mCard.isManufacturerConfirmed() && mCard.isCardPublicKeyValid()) {
tvCardIdentity.setText("Attested");
tvCardIdentity.setTextColor(getResources().getColor(R.color.confirmed, getActivity().getTheme()));
tvCardIdentity.setText(R.string.attested);
tvCardIdentity.setTextColor(ContextCompat.getColor(Objects.requireNonNull(getContext()), R.color.confirmed));
} else {
tvCardIdentity.setText("Not confirmed");
tvCardIdentity.setTextColor(getResources().getColor(R.color.not_confirmed, getActivity().getTheme()));
tvCardIdentity.setText(R.string.not_confirmed);
tvCardIdentity.setTextColor(ContextCompat.getColor(Objects.requireNonNull(getContext()), R.color.not_confirmed));
}
tvIssuer.setText(mCard.getIssuerDescription());
@ -158,11 +175,10 @@ public class VerifyCard extends Fragment implements SwipeRefreshLayout.OnRefresh
tvBlockchain.setText(mCard.getBlockchainName());
ivBlockchain.setImageResource(mCard.getBlockchain().getImageResource(this.getContext(), mCard.getTokenSymbol()));
if (mCard.isReusable()) {
tvReusable.setText("Reusable");
} else {
tvReusable.setText("One-off banknote");
}
if (mCard.isReusable())
tvReusable.setText(R.string.reusable);
else
tvReusable.setText(R.string.one_off_banknote);
tvSigningMethod.setText(mCard.getSigningMethod().getDescription());
@ -170,16 +186,16 @@ public class VerifyCard extends Fragment implements SwipeRefreshLayout.OnRefresh
tvLastSigned.setText(mCard.getLastSignedDescription());
if (mCard.getRemainingSignatures() == 0) {
tvRemainingSignatures.setTextColor(getResources().getColor(R.color.not_confirmed, getActivity().getTheme()));
tvRemainingSignatures.setText("None");
tvRemainingSignatures.setTextColor(ContextCompat.getColor(Objects.requireNonNull(getContext()), R.color.not_confirmed));
tvRemainingSignatures.setText(R.string.none);
} else if (mCard.getRemainingSignatures() == 1) {
tvRemainingSignatures.setTextColor(getResources().getColor(R.color.not_confirmed, getActivity().getTheme()));
tvRemainingSignatures.setText("Last one!");
tvRemainingSignatures.setTextColor(ContextCompat.getColor(Objects.requireNonNull(getContext()), R.color.not_confirmed));
tvRemainingSignatures.setText(R.string.last_one);
} else if (mCard.getRemainingSignatures() > 1000) {
tvRemainingSignatures.setTextColor(getResources().getColor(R.color.confirmed, getActivity().getTheme()));
tvRemainingSignatures.setText("Unlimited");
tvRemainingSignatures.setTextColor(ContextCompat.getColor(Objects.requireNonNull(getContext()), R.color.confirmed));
tvRemainingSignatures.setText(R.string.unlimited);
} else {
tvRemainingSignatures.setTextColor(getResources().getColor(R.color.confirmed, getActivity().getTheme()));
tvRemainingSignatures.setTextColor(ContextCompat.getColor(Objects.requireNonNull(getContext()), R.color.confirmed));
tvRemainingSignatures.setText(String.valueOf(mCard.getRemainingSignatures()));
}
tvSignedTx.setText(String.valueOf(mCard.getMaxSignatures() - mCard.getRemainingSignatures()));
@ -228,59 +244,28 @@ public class VerifyCard extends Fragment implements SwipeRefreshLayout.OnRefresh
if (mCard.useDefaultPIN1()) {
ivPIN.setImageResource(R.drawable.unlock_pin1);
ivPIN.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getContext(), "This banknote is protected by default PIN1 code", Toast.LENGTH_LONG).show();
}
});
ivPIN.setOnClickListener(v -> Toast.makeText(getContext(), R.string.this_banknote_protected_default_PIN1_code, Toast.LENGTH_LONG).show());
} else {
ivPIN.setImageResource(R.drawable.lock_pin1);
ivPIN.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getContext(), "This banknote is protected by user's PIN1 code", Toast.LENGTH_LONG).show();
}
});
ivPIN.setOnClickListener(v -> Toast.makeText(getContext(), R.string.this_banknote_protected_user_PIN1_code, Toast.LENGTH_LONG).show());
}
if (mCard.getPauseBeforePIN2() > 0 && (mCard.useDefaultPIN2() || !mCard.useSmartSecurityDelay())) {
ivPIN2orSecurityDelay.setImageResource(R.drawable.timer);
ivPIN2orSecurityDelay.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getContext(), String.format("This banknote will enforce %.0f seconds security delay for all operations requiring PIN2 code", mCard.getPauseBeforePIN2() / 1000.0), Toast.LENGTH_LONG).show();
}
});
ivPIN2orSecurityDelay.setOnClickListener(v -> Toast.makeText(getContext(), String.format("This banknote will enforce %.0f seconds security delay for all operations requiring PIN2 code", mCard.getPauseBeforePIN2() / 1000.0), Toast.LENGTH_LONG).show());
} else if (mCard.useDefaultPIN2()) {
ivPIN2orSecurityDelay.setImageResource(R.drawable.unlock_pin2);
ivPIN2orSecurityDelay.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getContext(), "This banknote is protected by default PIN2 code", Toast.LENGTH_LONG).show();
}
});
ivPIN2orSecurityDelay.setOnClickListener(v -> Toast.makeText(getContext(), R.string.this_banknote_protected_default_PIN2_code, Toast.LENGTH_LONG).show());
} else {
ivPIN2orSecurityDelay.setImageResource(R.drawable.lock_pin2);
ivPIN2orSecurityDelay.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getContext(), "This banknote is protected by user's PIN2 code", Toast.LENGTH_LONG).show();
}
});
ivPIN2orSecurityDelay.setOnClickListener(v -> Toast.makeText(getContext(), R.string.this_banknote_protected_user_PIN2_code, Toast.LENGTH_LONG).show());
}
if (mCard.useDevelopersFirmware()) {
ivDeveloperVersion.setImageResource(R.drawable.ic_developer_version);
ivDeveloperVersion.setVisibility(View.VISIBLE);
ivDeveloperVersion.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getContext(), "Unlocked banknote, only for development use", Toast.LENGTH_LONG).show();
}
});
ivDeveloperVersion.setOnClickListener(v -> Toast.makeText(getContext(), R.string.unlocked_banknote_only_development_use, Toast.LENGTH_LONG).show());
} else {
ivDeveloperVersion.setVisibility(View.INVISIBLE);
}
@ -288,29 +273,26 @@ public class VerifyCard extends Fragment implements SwipeRefreshLayout.OnRefresh
if (mCard.getStatus() == TangemCard.Status.Loaded) {
tvWallet.setText(mCard.getShortWalletString());
if (mCard.isWalletPublicKeyValid()) {
tvWalletIdentity.setText("Possession proved");
tvWalletIdentity.setTextColor(getResources().getColor(R.color.confirmed, getActivity().getTheme()));
tvWalletIdentity.setText(R.string.possession_proved);
tvWalletIdentity.setTextColor(ContextCompat.getColor(Objects.requireNonNull(getContext()), R.color.confirmed));
} else {
tvWalletIdentity.setText("Possession NOT proved");
tvWalletIdentity.setTextColor(getResources().getColor(R.color.not_confirmed, getActivity().getTheme()));
tvWalletIdentity.setText(R.string.possession_not_proved);
tvWalletIdentity.setTextColor(ContextCompat.getColor(Objects.requireNonNull(getContext()), R.color.not_confirmed));
}
} else {
tvWallet.setText("not available");
tvWalletIdentity.setText("-- -- --");
tvWallet.setText(R.string.not_available);
tvWalletIdentity.setText(R.string.no_data_string);
}
timerHideErrorAndMessage = new Timer();
timerHideErrorAndMessage.schedule(new TimerTask() {
@Override
public void run() {
tvError.post(new Runnable() {
@Override
public void run() {
tvMessage.setVisibility(View.GONE);
tvError.setVisibility(View.GONE);
mCard.setError(null);
mCard.setMessage(null);
}
tvError.post(() -> {
tvMessage.setVisibility(View.GONE);
tvError.setVisibility(View.GONE);
mCard.setError(null);
mCard.setMessage(null);
});
}
}, 5000);
@ -330,25 +312,6 @@ public class VerifyCard extends Fragment implements SwipeRefreshLayout.OnRefresh
return data;
}
@Override
public void onResume() {
super.onResume();
mNfcManager.onResume();
}
@Override
public void onPause() {
super.onPause();
mNfcManager.onPause();
}
@Override
public void onStop() {
super.onStop();
mNfcManager.onStop();
}
@Override
public void onTagDiscovered(Tag tag) {
try {
@ -359,4 +322,4 @@ public class VerifyCard extends Fragment implements SwipeRefreshLayout.OnRefresh
}
}
}
}

View file

@ -35,18 +35,12 @@
android:textAlignment="center"
android:textSize="@dimen/text_size_1_small"/>
<Button
<android.support.v7.widget.AppCompatButton
android:id="@+id/btnNewWallet"
style="@style/AppTheme.RoundedCornerMaterialButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="32dp"
android:backgroundTint="@color/colorPrimary"
android:fontFamily="@font/raleway_r"
android:padding="16dp"
android:text="@string/create_wallet"
android:textColor="@color/white"
android:textSize="@dimen/text_size_medium"
android:textStyle="bold"/>
android:text="@string/create_wallet"/>
<LinearLayout
android:layout_width="match_parent"

View file

@ -6,29 +6,7 @@
android:layout_height="match_parent"
tools:context="com.tangem.presentation.activity.LoadedWalletActivity">
<!--<android.support.design.widget.AppBarLayout-->
<!--android:layout_width="match_parent"-->
<!--android:layout_height="wrap_content"-->
<!--android:theme="@style/AppTheme.AppBarOverlay">-->
<!--<android.support.v7.widget.Toolbar-->
<!--android:id="@+id/toolbar"-->
<!--android:layout_width="match_parent"-->
<!--android:layout_height="?attr/actionBarSize"-->
<!--android:background="?attr/colorPrimary"-->
<!--app:popupTheme="@style/AppTheme.PopupOverlay" />-->
<!--</android.support.design.widget.AppBarLayout>-->
<include
layout="@layout/content_loaded_wallet"/>
<!--<android.support.design.widget.FloatingActionButton-->
<!--android:id="@+id/fab"-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="wrap_content"-->
<!--android:layout_gravity="bottom|end"-->
<!--android:layout_margin="@dimen/fab_margin"-->
<!--app:srcCompat="@android:drawable/ic_dialog_email" />-->
</android.support.design.widget.CoordinatorLayout>

View file

@ -243,18 +243,12 @@
</LinearLayout>
<Button
<android.support.v7.widget.AppCompatButton
android:id="@+id/btnVerify"
style="@style/Widget.AppCompat.Button.Borderless.Colored"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
android:backgroundTint="@color/colorPrimary"
android:fontFamily="@font/raleway_r"
android:includeFontPadding="false"
style="@style/AppTheme.RoundedCornerMaterialButton"
android:layout_width="match_parent"
android:layout_marginBottom="16dp"
android:text="@string/verify"
android:textColor="@color/white"
android:textSize="@dimen/text_size_large"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"/>

View file

@ -174,12 +174,11 @@
android:id="@+id/chkUseFingerprint"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@id/btnContinue"
android:layout_gravity="center_horizontal"
android:layout_marginBottom="4dp"
android:drawableEnd="@mipmap/ic_fp"
android:drawablePadding="8dp"
android:text="Protect with fingerprint"/>
android:text="@string/protect_with_fingerprint"/>
<LinearLayout
android:layout_width="match_parent"
@ -189,27 +188,19 @@
<Button
android:id="@+id/btnSavePIN"
style="@style/Widget.AppCompat.Button.Borderless"
style="@style/AppTheme.RoundedCornerMaterialButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@color/colorPrimary"
android:fontFamily="@font/raleway_r"
android:text="Save"
android:textColor="@color/white"
android:textSize="18dp"/>
android:text="@string/save"
android:textColor="@color/white"/>
<Button
android:id="@+id/btnDeletePIN"
style="@style/Widget.AppCompat.Button.Borderless"
style="@style/AppTheme.RoundedCornerMaterialButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@color/colorPrimary"
android:fontFamily="@font/raleway_r"
android:text="Delete"
android:textColor="@color/white"
android:textSize="18dp"/>
android:text="@string/delete"
android:textColor="@color/white"/>
</LinearLayout>

View file

@ -15,8 +15,8 @@
android:id="@+id/rlToolButtons"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="@color/btn_light"
android:backgroundTint="@color/colorPrimary"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent">
@ -26,17 +26,11 @@
android:layout_height="40dp"
android:orientation="horizontal">
<TextView
android:id="@+id/tvOk"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:fontFamily="@font/raleway_r"
android:padding="8dp"
android:text="@string/ok"
android:textAlignment="center"
android:textColor="@color/white"
android:textSize="@dimen/text_size_medium"/>
<Button
android:id="@+id/btnOk"
style="@style/AppTheme.RoundedCornerMaterialButton"
android:layout_width="match_parent"
android:text="@string/ok"/>
</LinearLayout>

View file

@ -172,7 +172,21 @@
<string name="manufacturer">Manufacturer</string>
<string name="card_identity">Card identity</string>
<string name="attested">Attested</string>
<string name="not_confirmed">Not confirmed</string>
<string name="reusable">Reusable</string>
<string name="none">None</string>
<string name="last_one">Last one!</string>
<string name="unlimited">Unlimited</string>
<string name="one_off_banknote">One-off banknote</string>
<string name="firmware">Firmware</string>
<string name="registration_date">Registration date</string>
<string name="possession_proved">Possession proved</string>
<string name="possession_not_proved">Possession NOT proved</string>
<string name="not_available">not available</string>
<!-- SavePINActivity -->
<string name="save">Save</string>
<string name="delete">Delete</string>
<string name="protect_with_fingerprint">Protect with fingerprint</string>
</resources>