Updated on 2026-08-14

This commit is contained in:
Tangem 2018-10-16 15:53:47 +03:00
commit 50aad2e585
20 changed files with 153 additions and 30 deletions

View file

@ -0,0 +1,81 @@
package com.tangem.presentation.dialog;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.DialogInterface;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import com.tangem.util.UtilHelper;
import com.tangem.wallet.R;
import java.util.Timer;
import java.util.TimerTask;
/**
* Created by dvol on 06.03.2018.
*/
public class ShowQRCodeDialog extends DialogFragment {
private ImageView ivQR;
private TextView tvQRaddress;
private Bitmap bmQR;
private String addr;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
LayoutInflater inflater = getActivity().getLayoutInflater();
// Inflate and set the layout for the dialog
// Pass null as the parent view because its going in the dialog layout
View v = inflater.inflate(R.layout.dialog_show_qr, null);
ivQR = v.findViewById(R.id.ivQR);
ivQR.setImageBitmap(bmQR);
tvQRaddress = v.findViewById(R.id.tvQRaddress);
tvQRaddress.setText(addr);
return new AlertDialog.Builder(getActivity())
.setIcon(R.drawable.tangem_logo_small_new)
.setTitle(R.string.show_wallet_qr_code)
.setView(v)
.setPositiveButton(R.string.ok, (dialog,which)->dismiss() )
.create();
}
@Override
public void onCancel(DialogInterface dialog) {
super.onCancel(dialog);
}
public void setup(String content) {
try {
bmQR = UtilHelper.INSTANCE.generateQrCode(content);
addr = content;
} catch (Exception e) {
e.printStackTrace();
}
}
public static void show(final Activity activity, final String content) {
activity.runOnUiThread(() -> {
ShowQRCodeDialog instance = new ShowQRCodeDialog();
instance.setup(content);
instance.show(activity.getFragmentManager(), "ShowQRCodeDialog");
});
}
}

View file

@ -13,11 +13,10 @@ import android.os.Bundle
import android.preference.PreferenceManager
import android.support.v4.app.Fragment
import android.support.v4.content.ContextCompat
import android.support.v7.view.ContextThemeWrapper
import android.text.Html
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.view.*
import android.widget.Toast
import com.google.zxing.WriterException
import com.tangem.data.network.ServerApiHelper
@ -32,6 +31,7 @@ import com.tangem.domain.wallet.*
import com.tangem.presentation.activity.*
import com.tangem.presentation.dialog.NoExtendedLengthSupportDialog
import com.tangem.presentation.dialog.PINSwapWarningDialog
import com.tangem.presentation.dialog.ShowQRCodeDialog
import com.tangem.presentation.dialog.WaitSecurityDelayDialog
import com.tangem.util.Util
import com.tangem.util.UtilHelper
@ -135,9 +135,11 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
tvWallet.setOnClickListener { doShareWallet(false) }
ivQR.setOnClickListener { doShareWallet(true) }
btnLoad.setOnClickListener {
if (BuildConfig.DEBUG) {
val items = arrayOf<CharSequence>(getString(R.string.in_app), getString(R.string.via_cryptonit), getString(R.string.via_kraken))
val dialog = AlertDialog.Builder(activity).setTitle(getString(R.string.select_loading_method)).setItems(items
//if (BuildConfig.DEBUG) {
if (true) {
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 cw = android.view.ContextThemeWrapper(activity, R.style.AlertDialogTheme)
val dialog = AlertDialog.Builder(cw).setItems(items
) { _, which ->
when (items[which]) {
getString(R.string.in_app) -> {
@ -149,6 +151,12 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
showSingleToast(R.string.no_compatible_wallet)
}
}
getString(R.string.load_via_share_address) -> {
doShareWallet(true)
}
getString(R.string.load_via_qr) -> {
ShowQRCodeDialog.show(activity, engine.getShareWalletUri(card).toString())
}
// getString(R.string.via_cryptonit2) -> {
// val intent = Intent(context, PrepareCryptonitOtherAPIWithdrawalActivity::class.java)
// intent.putExtra("UID", card!!.uid)
@ -171,7 +179,10 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
}
}
}
dialog.show()
val dlg = dialog.show()
val wlp = dlg.window.attributes
wlp.gravity = Gravity.BOTTOM
dlg.window.attributes = wlp
} else {
try {
val intent = Intent(Intent.ACTION_VIEW, CoinEngineFactory.create(card!!.blockchain)!!.getShareWalletUri(card))
@ -996,14 +1007,13 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
var showTime: Date = Date()
private fun showSingleToast(text: Int) {
// if (singleToast == null || !singleToast!!.view.isShown || showTime.time + 2000 < Date().time) {
// if (singleToast != null)
// singleToast!!.cancel()
// singleToast = Toast.makeText(context, text, Toast.LENGTH_LONG)
// singleToast!!.show()
// showTime = Date()
// }
singleToast = Toast.makeText(context, text, Toast.LENGTH_LONG)
if (singleToast == null || !singleToast!!.view.isShown || showTime.time + 2000 < Date().time) {
if (singleToast != null)
singleToast!!.cancel()
singleToast = Toast.makeText(context, text, Toast.LENGTH_LONG)
singleToast!!.show()
showTime = Date()
}
}
}