diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index fbc7175cf5..2cc8950e80 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -99,7 +99,7 @@
android:theme="@style/AppTheme.NoActionBar" />
diff --git a/app/src/main/java/com/tangem/data/LogFileProvider.java b/app/src/main/java/com/tangem/data/LogFileProvider.java
index b3c3f18457..268d3f4884 100644
--- a/app/src/main/java/com/tangem/data/LogFileProvider.java
+++ b/app/src/main/java/com/tangem/data/LogFileProvider.java
@@ -61,7 +61,7 @@ public class LogFileProvider extends ContentProvider {
// The desired file name is specified by the last segment of the
// path
// E.g.
- // 'content://it.my.app.LogFileProvider/Test.txt'
+ // 'content://it.my.app.LogFileProvider/Test1.txt'
// Take this and build the path to the file
String fileLocation = getContext().getCacheDir() + File.separator
+ uri.getLastPathSegment();
diff --git a/app/src/main/java/com/tangem/di/Navigator.kt b/app/src/main/java/com/tangem/di/Navigator.kt
index 07ba69f100..d9c9c4ed6b 100644
--- a/app/src/main/java/com/tangem/di/Navigator.kt
+++ b/app/src/main/java/com/tangem/di/Navigator.kt
@@ -4,6 +4,7 @@ import android.app.Activity
import android.nfc.Tag
import com.tangem.Constant
import com.tangem.domain.wallet.TangemContext
+import com.tangem.ui.PrepareTransactionActivity
import com.tangem.ui.activity.*
class Navigator {
diff --git a/app/src/main/java/com/tangem/di/NavigatorComponent.kt b/app/src/main/java/com/tangem/di/NavigatorComponent.kt
index f3cef57221..25990b46a1 100644
--- a/app/src/main/java/com/tangem/di/NavigatorComponent.kt
+++ b/app/src/main/java/com/tangem/di/NavigatorComponent.kt
@@ -6,7 +6,7 @@ import com.tangem.ui.activity.LogoActivity
import com.tangem.ui.activity.MainActivity
import com.tangem.ui.activity.PrepareCryptonitOtherApiWithdrawalActivity
import com.tangem.ui.activity.PrepareKrakenWithdrawalActivity
-import com.tangem.ui.activity.PrepareTransactionActivity
+import com.tangem.ui.PrepareTransactionActivity
import com.tangem.ui.activity.PurgeActivity
import com.tangem.ui.activity.VerifyCardActivity
diff --git a/app/src/tangemAccess/java/com/tangem/Test2.java b/app/src/tangemAccess/java/com/tangem/Test2.java
new file mode 100644
index 0000000000..c4c336af47
--- /dev/null
+++ b/app/src/tangemAccess/java/com/tangem/Test2.java
@@ -0,0 +1,4 @@
+package com.tangem;
+
+public class Test2 {
+}
diff --git a/app/src/main/java/com/tangem/ui/activity/PrepareTransactionActivity.kt b/app/src/tangemAccess/java/com/tangem/ui/PrepareTransactionActivity.kt
similarity index 97%
rename from app/src/main/java/com/tangem/ui/activity/PrepareTransactionActivity.kt
rename to app/src/tangemAccess/java/com/tangem/ui/PrepareTransactionActivity.kt
index 9789a22815..e18c1d92c1 100644
--- a/app/src/main/java/com/tangem/ui/activity/PrepareTransactionActivity.kt
+++ b/app/src/tangemAccess/java/com/tangem/ui/PrepareTransactionActivity.kt
@@ -1,4 +1,4 @@
-package com.tangem.ui.activity
+package com.tangem.ui
import android.app.Activity
import android.content.Context
@@ -21,9 +21,10 @@ import com.tangem.domain.wallet.CoinEngineFactory
import com.tangem.domain.wallet.TangemContext
import com.tangem.card_android.android.nfc.NfcLifecycleObserver
import com.tangem.card_android.android.reader.NfcManager
+import com.tangem.ui.activity.ConfirmTransactionActivity
import com.tangem.util.UtilHelper
import com.tangem.wallet.R
-import kotlinx.android.synthetic.main.activity_prepare_transaction.*
+import kotlinx.android.synthetic.tangemAccess.activity_prepare_transaction.*
import java.io.IOException
import javax.inject.Inject
diff --git a/app/src/main/res/layout/activity_prepare_transaction.xml b/app/src/tangemAccess/res/layout/activity_prepare_transaction.xml
similarity index 99%
rename from app/src/main/res/layout/activity_prepare_transaction.xml
rename to app/src/tangemAccess/res/layout/activity_prepare_transaction.xml
index 6f465b04a0..8da055a7a0 100644
--- a/app/src/main/res/layout/activity_prepare_transaction.xml
+++ b/app/src/tangemAccess/res/layout/activity_prepare_transaction.xml
@@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
- tools:context="com.tangem.ui.activity.PrepareTransactionActivity"
+ tools:context="com.tangem.ui.PrepareTransactionActivity"
tools:ignore="contentDescription">
= Build.VERSION_CODES.N)
+ Html.fromHtml(engine!!.balanceHTML, Html.FROM_HTML_MODE_LEGACY)
+ else
+ Html.fromHtml(engine!!.balanceHTML)
+ tvBalance.text = html
+
+ if (!engine.allowSelectFeeInclusion()) {
+ rgIncFee.visibility = View.INVISIBLE
+ } else {
+ rgIncFee.visibility = View.VISIBLE
+ }
+
+ if (ctx.card!!.remainingSignatures < 2)
+ etAmount.isEnabled = false
+
+ tvCurrency.text = engine.balance.currency
+ etAmount.setText(engine.balance.toValueString())
+
+ // limit number of symbols after comma
+ etAmount.filters = engine.amountInputFilters
+
+ // set listeners
+ etAmount.setOnEditorActionListener { lv, actionId, _ ->
+ if (actionId == EditorInfo.IME_ACTION_DONE) {
+ val imm = lv.context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
+ imm.hideSoftInputFromWindow(lv.windowToken, 0)
+ lv.clearFocus()
+ true
+ } else {
+ false
+ }
+ }
+
+ btnVerify.setOnClickListener {
+ if (!UtilHelper.isOnline(this)) {
+ Toast.makeText(this, R.string.no_connection, Toast.LENGTH_LONG).show()
+ return@setOnClickListener
+ }
+
+ val engine1 = CoinEngineFactory.create(ctx)
+ val strAmount: String = etAmount.text.toString().replace(",", ".")
+ val amount = engine1!!.convertToAmount(etAmount.text.toString(), tvCurrency.text.toString())
+
+ try {
+ if (!engine.checkNewTransactionAmount(amount))
+ etAmount.error = getString(R.string.not_enough_funds_on_your_card)
+ else
+ etAmount.error = null
+ } catch (e: Exception) {
+ etAmount.error = getString(R.string.unknown_amount_format)
+ }
+
+ // check wallet address
+ if (!engine1.validateAddress(etWallet.text.toString())) {
+ etWallet.error = getString(R.string.incorrect_destination_wallet_address)
+ return@setOnClickListener
+ } else
+ etWallet.error = null
+
+ if (etWallet.text.toString() == ctx.coinData!!.wallet) {
+ etWallet.error = getString(R.string.destination_wallet_address_equal_source_address)
+ return@setOnClickListener
+ }
+
+ if (!etAmount.error.isNullOrEmpty() || !etWallet.error.isNullOrEmpty()) {
+ return@setOnClickListener
+ }
+
+ val intent = Intent(baseContext, ConfirmTransactionActivity::class.java)
+ ctx.saveToIntent(intent)
+ intent.putExtra(Constant.EXTRA_TARGET_ADDRESS, etWallet!!.text.toString())
+ intent.putExtra(Constant.EXTRA_FEE_INCLUDED, (rgIncFee!!.checkedRadioButtonId == R.id.rbFeeIn))
+ intent.putExtra(Constant.EXTRA_AMOUNT, strAmount)
+ intent.putExtra(Constant.EXTRA_AMOUNT_CURRENCY, tvCurrency.text.toString())
+ startActivityForResult(intent, Constant.REQUEST_CODE_SEND_TRANSACTION__)
+ }
+
+ ivCamera.setOnClickListener { navigator.showQrScanActivity(this, Constant.REQUEST_CODE_SCAN_QR) }
+ }
+
+ override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
+ super.onActivityResult(requestCode, resultCode, data)
+ if (requestCode == Constant.REQUEST_CODE_SCAN_QR && resultCode == Activity.RESULT_OK && data != null && data.extras!!.containsKey("QRCode")) {
+ var code = data.getStringExtra("QRCode")
+ when (ctx.blockchain) {
+ Blockchain.Bitcoin -> {
+ if (code.contains("bitcoin:")) {
+ val tmp = code.split("bitcoin:".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()
+ code = tmp[1]
+ }
+ }
+ Blockchain.Ethereum, Blockchain.Token -> {
+ if (code.contains("ethereum:")) {
+ val tmp = code.split("ethereum:".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()
+ code = tmp[1]
+ } else if (code.contains("blockchain:")) {
+ val tmp = code.split("blockchain:".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()
+ code = tmp[1]
+ }
+ }
+ else -> {
+ }
+ }
+ etWallet?.setText(code)
+ } else if (requestCode == Constant.REQUEST_CODE_SEND_TRANSACTION__) {
+ setResult(resultCode, data)
+ finish()
+ }
+ }
+
+ override fun onTagDiscovered(tag: Tag) {
+ try {
+ nfcManager.ignoreTag(tag)
+ } catch (e: IOException) {
+ e.printStackTrace()
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/tangemCardano/res/layout/activity_prepare_transaction.xml b/app/src/tangemCardano/res/layout/activity_prepare_transaction.xml
new file mode 100644
index 0000000000..8da055a7a0
--- /dev/null
+++ b/app/src/tangemCardano/res/layout/activity_prepare_transaction.xml
@@ -0,0 +1,262 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file