diff --git a/app/build.gradle b/app/build.gradle index 195367b507..bc776d550e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -40,7 +40,7 @@ android { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } - buildToolsVersion '28.0.2' + buildToolsVersion '28.0.3' } dependencies { diff --git a/app/src/main/java/com/tangem/presentation/dialog/ShowQRCodeDialog.java b/app/src/main/java/com/tangem/presentation/dialog/ShowQRCodeDialog.java new file mode 100644 index 0000000000..91090b4c39 --- /dev/null +++ b/app/src/main/java/com/tangem/presentation/dialog/ShowQRCodeDialog.java @@ -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"); + }); + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt b/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt index 3b82c3a854..5f11040fdd 100644 --- a/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt +++ b/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt @@ -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 @@ -31,6 +30,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 @@ -136,9 +136,11 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific tvWallet.setOnClickListener { doShareWallet(false) } ivQR.setOnClickListener { doShareWallet(true) } btnLoad.setOnClickListener { - if (BuildConfig.DEBUG) { - val items = arrayOf(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(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) -> { @@ -150,6 +152,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) @@ -173,7 +181,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)) @@ -990,14 +1001,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() + } } } \ No newline at end of file diff --git a/app/src/main/res/drawable/card_default.png b/app/src/main/res/drawable/card_default.png index 93abdddfd9..69ad255ff9 100644 Binary files a/app/src/main/res/drawable/card_default.png and b/app/src/main/res/drawable/card_default.png differ diff --git a/app/src/main/res/drawable/card_ru006.png b/app/src/main/res/drawable/card_ru006.png index 5160ddf07f..5570a30ccb 100644 Binary files a/app/src/main/res/drawable/card_ru006.png and b/app/src/main/res/drawable/card_ru006.png differ diff --git a/app/src/main/res/drawable/card_ru007.png b/app/src/main/res/drawable/card_ru007.png index e123218648..acd6beff2b 100644 Binary files a/app/src/main/res/drawable/card_ru007.png and b/app/src/main/res/drawable/card_ru007.png differ diff --git a/app/src/main/res/drawable/card_ru011.png b/app/src/main/res/drawable/card_ru011.png index f7e62aa506..75b63ca2fe 100644 Binary files a/app/src/main/res/drawable/card_ru011.png and b/app/src/main/res/drawable/card_ru011.png differ diff --git a/app/src/main/res/drawable/card_ru012.png b/app/src/main/res/drawable/card_ru012.png index 6f84e90961..1350138048 100644 Binary files a/app/src/main/res/drawable/card_ru012.png and b/app/src/main/res/drawable/card_ru012.png differ diff --git a/app/src/main/res/drawable/card_ru013.png b/app/src/main/res/drawable/card_ru013.png index e239abd60c..a8b252789c 100644 Binary files a/app/src/main/res/drawable/card_ru013.png and b/app/src/main/res/drawable/card_ru013.png differ diff --git a/app/src/main/res/drawable/card_ru014.png b/app/src/main/res/drawable/card_ru014.png index 64d8701992..5cc7225c9e 100644 Binary files a/app/src/main/res/drawable/card_ru014.png and b/app/src/main/res/drawable/card_ru014.png differ diff --git a/app/src/main/res/drawable/card_ru015.png b/app/src/main/res/drawable/card_ru015.png index 1786d2044c..9047cca2b1 100644 Binary files a/app/src/main/res/drawable/card_ru015.png and b/app/src/main/res/drawable/card_ru015.png differ diff --git a/app/src/main/res/drawable/card_ru016.png b/app/src/main/res/drawable/card_ru016.png index e46ecb3ecb..ce5c8b8eb4 100644 Binary files a/app/src/main/res/drawable/card_ru016.png and b/app/src/main/res/drawable/card_ru016.png differ diff --git a/app/src/main/res/drawable/card_ru020.png b/app/src/main/res/drawable/card_ru020.png index 2ab4aff26c..b0598ddc19 100644 Binary files a/app/src/main/res/drawable/card_ru020.png and b/app/src/main/res/drawable/card_ru020.png differ diff --git a/app/src/main/res/drawable/card_ru021.png b/app/src/main/res/drawable/card_ru021.png index 318ade3258..bfcb9b3fba 100644 Binary files a/app/src/main/res/drawable/card_ru021.png and b/app/src/main/res/drawable/card_ru021.png differ diff --git a/app/src/main/res/drawable/card_ru022.png b/app/src/main/res/drawable/card_ru022.png index 17904974ce..046051587e 100644 Binary files a/app/src/main/res/drawable/card_ru022.png and b/app/src/main/res/drawable/card_ru022.png differ diff --git a/app/src/main/res/drawable/card_ru023.png b/app/src/main/res/drawable/card_ru023.png index 405f5eee00..a7a8d224ae 100644 Binary files a/app/src/main/res/drawable/card_ru023.png and b/app/src/main/res/drawable/card_ru023.png differ diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 672cde8300..e25f0ca82e 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -124,22 +124,21 @@ diff --git a/app/src/main/res/layout/dialog_show_qr.xml b/app/src/main/res/layout/dialog_show_qr.xml new file mode 100644 index 0000000000..140dad0f5b --- /dev/null +++ b/app/src/main/res/layout/dialog_show_qr.xml @@ -0,0 +1,25 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fr_loaded_wallet.xml b/app/src/main/res/layout/fr_loaded_wallet.xml index 77369e04c1..71378145af 100644 --- a/app/src/main/res/layout/fr_loaded_wallet.xml +++ b/app/src/main/res/layout/fr_loaded_wallet.xml @@ -35,10 +35,8 @@ android:layout_height="0dp" android:maxHeight="200dp" android:padding="3dp" - app:layout_constraintBottom_toTopOf="@+id/loBalance" app:layout_constraintHeight_max="200dp" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintVertical_bias="0"> + app:layout_constraintTop_toTopOf="parent"> @@ -175,8 +175,8 @@ android:id="@+id/tvWallet" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="10dp" android:layout_marginEnd="4dp" + android:layout_marginBottom="10dp" android:fontFamily="@font/maax" android:textAlignment="center" android:textColor="@android:color/black" @@ -188,8 +188,8 @@ style="@style/AppTheme.RoundedCornerMaterialButton" android:layout_width="match_parent" android:layout_height="34dp" - android:layout_marginBottom="5dp" android:layout_marginTop="10dp" + android:layout_marginBottom="5dp" android:layout_weight="1" android:backgroundTint="@color/white" android:drawableStart="@drawable/ic_explore_black_24dp" @@ -205,8 +205,8 @@ style="@style/AppTheme.RoundedCornerMaterialButton" android:layout_width="match_parent" android:layout_height="34dp" - android:layout_marginBottom="5dp" android:layout_marginTop="10dp" + android:layout_marginBottom="5dp" android:layout_weight="1" android:backgroundTint="@color/white" android:drawableStart="@drawable/ic_content_copy_black_24dp" diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 8964e49d5c..d8447927f4 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -66,7 +66,10 @@ via CRYPTONIT via CRYPTONIT2 via KRAKEN - In-App + Another wallet app + Share address + Show QR-code + LOAD Clean up Manage user PIN1… @@ -92,7 +95,7 @@ The wallet is empty - No compatible wallet installed + No compatible wallets installed Please wait while previous transaction is confirmed in blockchain Could not obtain all inputs. Swipe down to refresh. Card has no remaining signature! diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 831ff6188c..5e592ecc14 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -72,5 +72,10 @@ @dimen/text_size_pin + diff --git a/build.gradle b/build.gradle index 471a9402da..a92daa08c4 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:3.2.0' + classpath 'com.android.tools.build:gradle:3.2.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } }