Browse Source

Merge branch 'dev' into duke

chat
Jonathan "Duke" Leto 5 years ago
parent
commit
1bc379a515
  1. 2
      README.md
  2. BIN
      SDA.jpg
  3. 2
      app/build.gradle
  4. BIN
      app/src/main/ic_launcher_hush_new-web.png
  5. 5
      app/src/main/java/org/myhush/silentdragon/DataModel.kt
  6. 7
      app/src/main/java/org/myhush/silentdragon/MainActivity.kt
  7. 71
      app/src/main/java/org/myhush/silentdragon/SendActivity.kt
  8. 7
      app/src/main/java/org/myhush/silentdragon/TransactionItemFragment.kt
  9. 4
      app/src/main/java/org/myhush/silentdragon/TxDetailsActivity.kt
  10. 2
      app/src/main/java/org/myhush/silentdragon/UnconfirmedTxItemFragment.kt
  11. 66
      app/src/main/res/layout/content_main.xml
  12. 336
      app/src/main/res/layout/content_send.xml
  13. 156
      app/src/main/res/layout/content_tx_details.xml
  14. 79
      app/src/main/res/layout/fragment_transaction_item.xml
  15. 71
      app/src/main/res/layout/fragment_unconfirmed_tx_item.xml
  16. 5
      app/src/main/res/mipmap-anydpi-v26/ic_launcher_hush_new.xml
  17. 5
      app/src/main/res/mipmap-anydpi-v26/ic_launcher_hush_new_round.xml
  18. BIN
      app/src/main/res/mipmap-hdpi/ic_launcher_hush_new.png
  19. BIN
      app/src/main/res/mipmap-hdpi/ic_launcher_hush_new_background.png
  20. BIN
      app/src/main/res/mipmap-hdpi/ic_launcher_hush_new_foreground.png
  21. BIN
      app/src/main/res/mipmap-hdpi/ic_launcher_hush_new_round.png
  22. BIN
      app/src/main/res/mipmap-mdpi/ic_launcher_hush_new.png
  23. BIN
      app/src/main/res/mipmap-mdpi/ic_launcher_hush_new_background.png
  24. BIN
      app/src/main/res/mipmap-mdpi/ic_launcher_hush_new_foreground.png
  25. BIN
      app/src/main/res/mipmap-mdpi/ic_launcher_hush_new_round.png
  26. BIN
      app/src/main/res/mipmap-xhdpi/ic_launcher_hush_new.png
  27. BIN
      app/src/main/res/mipmap-xhdpi/ic_launcher_hush_new_background.png
  28. BIN
      app/src/main/res/mipmap-xhdpi/ic_launcher_hush_new_foreground.png
  29. BIN
      app/src/main/res/mipmap-xhdpi/ic_launcher_hush_new_round.png
  30. BIN
      app/src/main/res/mipmap-xxhdpi/ic_launcher_hush_new.png
  31. BIN
      app/src/main/res/mipmap-xxhdpi/ic_launcher_hush_new_background.png
  32. BIN
      app/src/main/res/mipmap-xxhdpi/ic_launcher_hush_new_foreground.png
  33. BIN
      app/src/main/res/mipmap-xxhdpi/ic_launcher_hush_new_round.png
  34. BIN
      app/src/main/res/mipmap-xxxhdpi/ic_launcher_hush_new.png
  35. BIN
      app/src/main/res/mipmap-xxxhdpi/ic_launcher_hush_new_background.png
  36. BIN
      app/src/main/res/mipmap-xxxhdpi/ic_launcher_hush_new_foreground.png
  37. BIN
      app/src/main/res/mipmap-xxxhdpi/ic_launcher_hush_new_round.png
  38. 2
      build.gradle
  39. 19
      new_binary.sh

2
README.md

@ -2,7 +2,7 @@
SilentDragon Android is an Android frontend for the desktop SilentDragon that lets you send and receive shielded payments from your mobile phone.
![Screenshots](SDA.jpg?raw=true)
<img height=50% width=50% src="https://raw.githubusercontent.com/MyHush/SilentDragonAndroid/master/SDA.jpg">
## When will it be in my favorite app store?

BIN
SDA.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

2
app/build.gradle

@ -17,7 +17,7 @@ android {
minSdkVersion 19
targetSdkVersion 28
versionCode 1
versionName "0.0.1"
versionName "0.5.2"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
}

BIN
app/src/main/ic_launcher_hush_new-web.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

5
app/src/main/java/org/myhush/silentdragon/DataModel.kt

@ -206,8 +206,7 @@ object DataModel {
Regex("^ztestsapling[a-z0-9]{76}", RegexOption.IGNORE_CASE).matches(a) ||
Regex("^tm[a-z0-9]{33}$", RegexOption.IGNORE_CASE).matches(a)
} else {
Regex("^z[a-z0-9]{77}$", RegexOption.IGNORE_CASE).matches(a) ||
Regex("^t[a-z0-9]{34}$", RegexOption.IGNORE_CASE).matches(a)
Regex("^zs1[a-z0-9]{75}$", RegexOption.IGNORE_CASE).matches(a) || Regex("^R[a-z0-9]{33}$", RegexOption.IGNORE_CASE).matches(a)
}
}
@ -380,4 +379,4 @@ object DataModel {
}
private const val TAG = "DataModel"
}
}

7
app/src/main/java/org/myhush/silentdragon/MainActivity.kt

@ -96,7 +96,7 @@ class MainActivity : AppCompatActivity(),
lblBalance.text = ""
txtMainBalanceUSD.text = ""
txtMainBalance.text = status
balanceSmall.text = ""
}
@SuppressLint("SetTextI18n")
@ -159,9 +159,8 @@ class MainActivity : AppCompatActivity(),
val balText = DecimalFormat("#0.00000000").format(bal)
lblBalance.text = "Balance"
txtMainBalance.text = "${DataModel.mainResponseData?.tokenName} " + balText.substring(0, balText.length - 4)
balanceSmall.text = balText.substring(balText.length - 4, balText.length)
txtMainBalanceUSD.text = "$ " + DecimalFormat("#,##0.00").format(bal * zPrice)
txtMainBalance.text = balText.substring(0, balText.length - 4) + " ${DataModel.mainResponseData?.tokenName} "
txtMainBalanceUSD.text = "$ " + DecimalFormat("#,##0.00").format(bal * zPrice)
// Enable the send and recieve buttons
bottomNav.menu.findItem(R.id.action_recieve).isEnabled = true

71
app/src/main/java/org/myhush/silentdragon/SendActivity.kt

@ -43,7 +43,7 @@ class SendActivity : AppCompatActivity() {
sendAddress.setText(intent.getStringExtra("address"), TextView.BufferType.EDITABLE)
if (intent.getDoubleExtra("amount", -1.0) > 0)
setAmountUSD(intent.getDoubleExtra("amount", 0.0))
setAmountHUSH(intent.getDoubleExtra("amount", 0.0))
if (intent.getBooleanExtra("includeReplyTo", false))
chkIncludeReplyTo.isChecked = true
@ -67,7 +67,7 @@ class SendActivity : AppCompatActivity() {
if (DataModel.isValidAddress(s.toString())) {
txtValidAddress.text = "\u2713 Valid address"
txtValidAddress.setTextColor(ContextCompat.getColor(applicationContext,
R.color.colorPrimary
R.color.white_selected
))
} else {
txtValidAddress.text = "Not a valid Hush address!"
@ -87,26 +87,27 @@ class SendActivity : AppCompatActivity() {
}
})
amountUSD.addTextChangedListener(object : TextWatcher {
amountHUSH.addTextChangedListener(object : TextWatcher {
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {}
override fun afterTextChanged(s: Editable?) {}
@SuppressLint("SetTextI18n")
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
val usd = s.toString().toDoubleOrNull()
val hush = s.toString().toDoubleOrNull()
val zprice = DataModel.mainResponseData?.zecprice
if (usd == null) {
if (hush == null) {
txtSendCurrencySymbol.text = "" // Let the placeholder show the "$" sign
} else {
txtSendCurrencySymbol.text = "$"
}
txtSendCurrencySymbol.text = "HUSH"
if (usd == null || zprice == null)
amountHUSH.text = "${DataModel.mainResponseData?.tokenName} 0.0"
if (hush == null || zprice == null)
amountUSD.text = "$ 0.0"
else
amountHUSH.text =
"${DataModel.mainResponseData?.tokenName} " + DecimalFormat("#.########").format(usd / zprice)
amountUSD.text =
" $" + DecimalFormat("#.########").format(hush * zprice)
}
}
})
@ -125,7 +126,7 @@ class SendActivity : AppCompatActivity() {
))
} else {
txtMemoSize.setTextColor(ContextCompat.getColor(applicationContext,
R.color.colorPrimary
R.color.white_selected
))
}
}
@ -146,10 +147,9 @@ class SendActivity : AppCompatActivity() {
// Then if the amount is valid
val amt = amountHUSH.text.toString()
val parsedAmt = amt.substring("${DataModel.mainResponseData?.tokenName} ".length, amt.length)
// amount=0 xtns are valid
if (parsedAmt.toDoubleOrNull() == null || parsedAmt.toDouble() < 0.0 ) {
if (amt.toDoubleOrNull() == null || amt.toDouble() < 0.0 ) {
showErrorDialog("Invalid amount!")
return
}
@ -158,12 +158,12 @@ class SendActivity : AppCompatActivity() {
// Check if this is more than the maxzspendable
if (DataModel.mainResponseData?.maxzspendable != null) {
if (parsedAmt.toDouble() > DataModel.mainResponseData?.maxzspendable!! &&
parsedAmt.toDouble() <= DataModel.mainResponseData?.maxspendable ?: Double.MAX_VALUE) {
if (amt.toDouble() > DataModel.mainResponseData?.maxzspendable!! &&
amt.toDouble() <= DataModel.mainResponseData?.maxspendable ?: Double.MAX_VALUE) {
val alertDialog = AlertDialog.Builder(this@SendActivity)
alertDialog.setTitle("Send from t-addr?")
alertDialog.setMessage("${DataModel.mainResponseData?.tokenName} $parsedAmt is more than the balance in " +
alertDialog.setMessage("${DataModel.mainResponseData?.tokenName} $amt is more than the balance in " +
"your shielded address. This Tx will have to be sent from a transparent address, and will" +
" not be private.\n\nAre you absolutely sure?")
alertDialog.apply {
@ -177,7 +177,7 @@ class SendActivity : AppCompatActivity() {
}
// Warning if spending more than total
if (parsedAmt.toDouble() > DataModel.mainResponseData?.maxspendable ?: Double.MAX_VALUE) {
if (amt.toDouble() > DataModel.mainResponseData?.maxspendable ?: Double.MAX_VALUE) {
showErrorDialog("Can't spend more than ${DataModel.mainResponseData?.tokenName} " +
"${DataModel.mainResponseData?.maxspendable} in a single Tx")
return
@ -200,12 +200,11 @@ class SendActivity : AppCompatActivity() {
private fun doConfirm() {
val toAddr = sendAddress.text.toString()
val amt = amountHUSH.text.toString()
val parsedAmt = amt.substring("${DataModel.mainResponseData?.tokenName} ".length, amt.length)
val memo = txtSendMemo.text.toString() + getReplyToAddressIfChecked(toAddr)
val intent = Intent(this, TxDetailsActivity::class.java)
val tx = DataModel.TransactionItem(
"confirm", 0, parsedAmt, memo,
"confirm", 0, amt, memo,
toAddr, "", 0
)
intent.putExtra("EXTRA_TXDETAILS", Klaxon().toJsonString(tx))
@ -231,12 +230,12 @@ class SendActivity : AppCompatActivity() {
private fun Double.format(digits: Int): String? = java.lang.String.format("%.${digits}f", this)
private fun setAmountUSD(amt: Double) {
amountUSD.setText(amt.format(2))
setAmount(amt / (DataModel.mainResponseData?.zecprice ?: 0.0))
private fun setAmountHUSH(amt: Double) {
amountHUSH.setText((DecimalFormat("#.########").format(amt) + "${DataModel.mainResponseData?.tokenName}"))
setAmount(amt)
}
private fun setAmountHush(amt: Double?) {
private fun setAmountUSD(amt: Double?) {
if (amt == null) {
return;
}
@ -244,26 +243,20 @@ class SendActivity : AppCompatActivity() {
// Since there is a text-change listner on the USD field, we set the USD first, then override the
// HUSH field manually.
val zprice = DataModel.mainResponseData?.zecprice ?: 0.0
amountUSD.setText( (zprice * amt).format(2))
amountHUSH.setText((DecimalFormat("#.########").format(amt) + "${DataModel.mainResponseData?.tokenName}"))
amountHUSH.text =
"${DataModel.mainResponseData?.tokenName} " + DecimalFormat("#.########").format(amt)
amountUSD.text =
"$" + DecimalFormat("#.########").format(amt)
}
private fun setAmount(amt: Double?) {
val zprice = DataModel.mainResponseData?.zecprice
if (amt == null) {
txtSendCurrencySymbol.text = "" // Let the placeholder show the "$" sign
} else {
txtSendCurrencySymbol.text = "$"
}
if (amt == null || zprice == null)
amountHUSH.text = "${DataModel.mainResponseData?.tokenName} 0.0"
amountUSD.text = "0.0 $"
else
amountHUSH.text =
"${DataModel.mainResponseData?.tokenName} " + DecimalFormat("#.########").format(amt)
amountUSD.text =
"$" + DecimalFormat("#.########").format(amt)
}
@ -275,13 +268,13 @@ class SendActivity : AppCompatActivity() {
sendAddress.setText(data.data?.host ?: "", TextView.BufferType.EDITABLE)
var amt = data.data?.getQueryParameter("amt") ?:
data.data?.getQueryParameter("amount")
data.data?.getQueryParameter("amount")
// Remove all commas.
amt = amt?.replace(",", ".")
if (amt != null) {
setAmountHush(amt.toDoubleOrNull())
setAmountUSD(amt.toDoubleOrNull())
}
val memo = data.data?.getQueryParameter("memo")
@ -292,7 +285,7 @@ class SendActivity : AppCompatActivity() {
sendAddress.setText(data?.dataString ?: "", TextView.BufferType.EDITABLE)
}
amountUSD.requestFocus()
amountHUSH.requestFocus()
val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY)
}

7
app/src/main/java/org/myhush/silentdragon/TransactionItemFragment.kt

@ -68,8 +68,7 @@ class TransactionItemFragment : Fragment() {
val col = view.findViewById<ImageView>(R.id.typeColor)
val amt = view.findViewById<TextView>(R.id.txamt)
val amtzec = tx?.amount?.toDoubleOrNull() ?: 0.0
amt.text = DataModel.mainResponseData?.tokenName + " " +
(if (tx?.type == "send") "" else "+") + DecimalFormat("#0.00########").format(amtzec)
amt.text = (if (tx?.type == "send") "" else "+") + DecimalFormat("#0.00########").format(amtzec) + " " + DataModel.mainResponseData?.tokenName
if (tx?.type == "send") {
col.setImageResource(R.color.colorAccent)
@ -77,9 +76,9 @@ class TransactionItemFragment : Fragment() {
R.color.colorAccent
))
} else {
col.setImageResource(R.color.colorPrimary)
col.setImageResource(R.color.white_selected)
amt.setTextColor(ContextCompat.getColor(view.context,
R.color.colorPrimary
R.color.white_selected
))
}

4
app/src/main/java/org/myhush/silentdragon/TxDetailsActivity.kt

@ -59,8 +59,8 @@ class TxDetailsActivity : AppCompatActivity() {
val amt = kotlin.math.abs(tx?.amount?.toDoubleOrNull() ?: 0.0)
val amtStr = DecimalFormat("#0.0000####").format(amt)
txtAmtHush.text = "${DataModel.mainResponseData?.tokenName} $amtStr"
txtAmtUSD.text = "$ " + DecimalFormat("#,##0.00").format(
txtAmtHush.text = " $amtStr ${DataModel.mainResponseData?.tokenName}"
txtAmtUSD.text = "$" + DecimalFormat("#,##0.00").format(
(amt) * (DataModel.mainResponseData?.zecprice ?: 0.0))
if (tx?.memo.isNullOrBlank()) {

2
app/src/main/java/org/myhush/silentdragon/UnconfirmedTxItemFragment.kt

@ -56,7 +56,7 @@ class UnconfirmedTxItemFragment : Fragment() {
val txt = view.findViewById<TextView>(R.id.txtUnconfirmedTx)
txt.text = (if (tx?.type == "send") "Sending" else "Receiving") +
" ${DataModel.mainResponseData?.tokenName} " + DecimalFormat("#0.00########").format(kotlin.math.abs(tx?.amount?.toDoubleOrNull() ?: 0.0))
DecimalFormat("#0.00########").format(kotlin.math.abs(tx?.amount?.toDoubleOrNull() ?: 0.0)) + " ${DataModel.mainResponseData?.tokenName} "
return view
}

66
app/src/main/res/layout/content_main.xml

@ -25,41 +25,43 @@
android:layout_marginStart="16dp" app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="16dp"
app:layout_constraintBottom_toTopOf="@+id/txtMainBalance" android:textColor="@color/light_grey"/>
<TextView
android:text="HUSH 0.0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"
android:id="@+id/txtMainBalance"
app:layout_constraintBottom_toTopOf="@+id/txtMainBalanceUSD"
android:textSize="30sp"
app:layout_constraintTop_toBottomOf="@+id/lblBalance" android:textColor="@android:color/white"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="21dp"
android:id="@+id/balanceSmall"
android:text="0000"
android:textSize="14sp" android:textColor="@android:color/white"
app:layout_constraintBaseline_toBaselineOf="@+id/txtMainBalance"
app:layout_constraintStart_toEndOf="@+id/txtMainBalance"
android:layout_marginStart="2dp"/>
android:id="@+id/txtMainBalance"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0.0 Hush"
android:textColor="@android:color/white"
android:textSize="30sp"
app:layout_constraintBottom_toTopOf="@+id/txtMainBalanceUSD"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/lblBalance" />
<TextView
android:text="$ 0.0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/txtMainBalanceUSD"
app:layout_constraintStart_toStartOf="parent" android:layout_marginStart="154dp"
app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="154dp"
app:layout_constraintTop_toBottomOf="@+id/txtMainBalance"
android:textColor="@color/light_grey" app:layout_constraintBottom_toBottomOf="@+id/imageView2"
android:layout_marginBottom="32dp"/>
android:id="@+id/txtMainBalanceUSD"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="154dp"
android:layout_marginEnd="154dp"
android:layout_marginBottom="32dp"
android:text="0.0 $"
android:textColor="@color/light_grey"
app:layout_constraintBottom_toBottomOf="@+id/imageView2"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/txtMainBalance" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="46dp" app:srcCompat="@mipmap/ic_launcher_round"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" android:id="@+id/imageView3"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintTop_toTopOf="parent" android:layout_marginTop="125dp"/>
android:id="@+id/imageView3"
android:layout_width="wrap_content"
android:layout_height="46dp"
android:layout_marginTop="125dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@mipmap/ic_launcher_hush_new_foreground" />
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/swiperefresh"
android:layout_width="match_parent"

336
app/src/main/res/layout/content_send.xml

@ -1,175 +1,217 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:showIn="@layout/activity_send"
tools:context="org.myhush.silentdragon.SendActivity">
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:showIn="@layout/activity_send"
tools:context="org.myhush.silentdragon.SendActivity">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.constraint.ConstraintLayout android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" android:id="@+id/linearLayout3">
android:layout_height="wrap_content"
android:orientation="vertical" android:id="@+id/linearLayout3">
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/toLayout"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="16dp" android:layout_marginStart="16dp"
app:layout_constraintBottom_toTopOf="@id/AmountLayout"
android:layout_marginBottom="8dp" app:layout_constraintTop_toTopOf="parent"
android:layout_marginTop="16dp"
>
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/toLayout"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="16dp" android:layout_marginStart="16dp"
app:layout_constraintBottom_toTopOf="@id/AmountLayout"
android:layout_marginBottom="8dp" app:layout_constraintTop_toTopOf="parent"
android:layout_marginTop="16dp"
>
<TextView
android:text="To"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent"
android:id="@+id/textView7"
tools:layout_conversion_absoluteHeight="19dp"
tools:layout_conversion_absoluteWidth="16dp" android:layout_marginTop="8dp"
app:layout_constraintTop_toTopOf="parent" android:layout_marginStart="8dp"
android:textColor="@color/colorPrimary"/>
android:id="@+id/textView7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="To"
android:textColor="#FFFFFF"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:layout_conversion_absoluteHeight="19dp"
tools:layout_conversion_absoluteWidth="16dp" />
<EditText
android:layout_width="0dp"
android:layout_height="wrap_content"
android:inputType="textNoSuggestions|text"
android:ems="10"
android:id="@+id/sendAddress"
app:layout_constraintEnd_toStartOf="@+id/imageButton"
app:layout_constraintHorizontal_chainStyle="spread_inside"
tools:layout_conversion_absoluteHeight="45dp"
tools:layout_conversion_absoluteWidth="0dp" app:layout_constraintTop_toBottomOf="@+id/textView7"
android:layout_marginTop="16dp"
app:layout_constraintStart_toStartOf="parent" android:fontFamily="monospace"
android:singleLine="true"
android:selectAllOnFocus="true" android:textIsSelectable="true" android:hint="Address"
android:textSize="14sp" android:ellipsize="middle"
android:textColor="@android:color/background_dark"/>
android:id="@+id/sendAddress"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:ellipsize="middle"
android:ems="10"
android:fontFamily="monospace"
android:hint="Address"
android:inputType="textNoSuggestions|text"
android:selectAllOnFocus="true"
android:singleLine="true"
android:textColor="#FFFFFF"
android:textIsSelectable="true"
android:textSize="14sp"
app:layout_constraintEnd_toStartOf="@+id/imageButton"
app:layout_constraintHorizontal_chainStyle="spread_inside"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView7"
tools:layout_conversion_absoluteHeight="45dp"
tools:layout_conversion_absoluteWidth="0dp" />
<ImageButton
android:layout_width="37dp"
android:layout_height="41dp" app:srcCompat="@android:drawable/ic_menu_camera"
android:id="@+id/imageButton"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView7"
tools:layout_conversion_absoluteHeight="51dp"
tools:layout_conversion_absoluteWidth="56dp" android:layout_marginTop="16dp"
android:background="@android:color/transparent"/>
android:layout_width="37dp"
android:layout_height="41dp" app:srcCompat="@android:drawable/ic_menu_camera"
android:id="@+id/imageButton"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView7"
tools:layout_conversion_absoluteHeight="51dp"
tools:layout_conversion_absoluteWidth="56dp" android:layout_marginTop="16dp"
android:background="@android:color/transparent"/>
<TextView
android:text="Valid Address"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:id="@+id/txtValidAddress" android:layout_marginEnd="16dp"
app:layout_constraintEnd_toEndOf="parent"
android:textColor="@color/colorPrimary" android:layout_marginTop="8dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBaseline_toBaselineOf="@+id/textView7"
android:textAlignment="textEnd"/>
</android.support.constraint.ConstraintLayout>
<android.support.constraint.ConstraintLayout
android:id="@+id/txtValidAddress"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" android:id="@+id/AmountLayout"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="16dp"
app:layout_constraintBottom_toTopOf="@id/MemoLayout"
app:layout_constraintTop_toBottomOf="@id/toLayout"
android:background="@drawable/layout_bg">
android:text="Valid Address"
android:textAlignment="textEnd"
android:textColor="#FFFFFF"
app:layout_constraintBaseline_toBaselineOf="@+id/textView7"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
<android.support.constraint.ConstraintLayout
android:id="@+id/AmountLayout"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
app:layout_constraintBottom_toTopOf="@id/MemoLayout"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/toLayout">
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content" app:layout_constraintTop_toTopOf="parent"
android:id="@+id/amountUSD"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent"
android:textSize="36sp"
app:layout_constraintBottom_toTopOf="@+id/amountHUSH"
android:layout_marginTop="16dp" android:hint="$ 0.00"
android:textAlignment="center" android:singleLine="true" android:selectAllOnFocus="true"
android:inputType="numberDecimal" android:maxLength="14"
android:textColor="@android:color/background_dark"/>
android:id="@+id/amountHUSH"
android:layout_width="173dp"
android:layout_height="66dp"
android:layout_marginTop="16dp"
android:hint="0.00 Hush"
android:inputType="numberDecimal"
android:maxLength="14"
android:selectAllOnFocus="true"
android:singleLine="true"
android:textAlignment="center"
android:textColor="#FFFFFF"
android:textSize="30sp"
app:layout_constraintBottom_toTopOf="@+id/amountUSD"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:text="HUSH 0.0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"
android:id="@+id/amountHUSH"
app:layout_constraintTop_toBottomOf="@+id/amountUSD"
app:layout_constraintBottom_toBottomOf="parent" android:layout_marginBottom="16dp"/>
android:id="@+id/amountUSD"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:text="$ 0.00"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/amountHUSH" />
<TextView
android:text="Amount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView8" app:layout_constraintStart_toStartOf="parent"
android:layout_marginStart="8dp" app:layout_constraintTop_toTopOf="parent"
android:layout_marginTop="8dp" android:textColor="@color/colorPrimary"/>
android:id="@+id/textView8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="Amount"
android:textColor="#FFFFFF"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:text="$"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/txtSendCurrencySymbol" app:layout_constraintEnd_toStartOf="@+id/amountUSD"
android:textSize="36sp" android:layout_marginTop="26dp"
app:layout_constraintTop_toTopOf="parent" android:textColor="@android:color/background_dark"/>
android:id="@+id/txtSendCurrencySymbol"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
android:text="HUSH"
android:textSize="27sp"
app:layout_constraintStart_toEndOf="@+id/amountHUSH"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="218dp"
android:id="@+id/MemoLayout" android:layout_marginTop="8dp"
app:layout_constraintTop_toBottomOf="@id/AmountLayout" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="8dp"
app:layout_constraintBottom_toTopOf="@+id/btnSend">
android:layout_width="match_parent"
android:layout_height="218dp"
android:id="@+id/MemoLayout" android:layout_marginTop="8dp"
app:layout_constraintTop_toBottomOf="@id/AmountLayout" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="8dp"
app:layout_constraintBottom_toTopOf="@+id/btnSend">
<EditText
android:layout_width="0dp"
android:layout_height="0dp"
android:inputType="textMultiLine"
android:ems="10"
android:id="@+id/txtSendMemo" android:layout_marginTop="8dp"
app:layout_constraintTop_toBottomOf="@+id/txtSendMemoTitle" android:layout_marginStart="8dp"
app:layout_constraintStart_toStartOf="parent" android:layout_marginEnd="8dp"
app:layout_constraintEnd_toEndOf="parent" android:layout_marginBottom="8dp"
app:layout_constraintBottom_toBottomOf="parent" android:singleLine="false"
android:selectAllOnFocus="false" android:maxLength="512"
android:textColor="@android:color/background_dark"/>
<TextView
android:text=" Memo (Optional)"
android:layout_width="wrap_content"
android:layout_height="wrap_content" app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent" android:layout_marginTop="16dp"
android:layout_marginStart="8dp" android:id="@+id/txtSendMemoTitle"
android:textColor="@color/colorPrimary"/>
android:id="@+id/txtSendMemo"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:ems="10"
android:inputType="textMultiLine"
android:maxLength="512"
android:selectAllOnFocus="false"
android:singleLine="false"
android:textColor="#FFFFFF"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/txtSendMemoTitle" />
<TextView
android:text="0 / 512"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:id="@+id/txtMemoSize" android:layout_marginEnd="8dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBaseline_toBaselineOf="@+id/txtSendMemoTitle"/>
</android.support.constraint.ConstraintLayout>
<Button
android:text="Send"
android:id="@+id/txtSendMemoTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"
android:id="@+id/btnSend"
android:background="@color/colorAccent"
android:textColor="@android:color/white" tools:layout_conversion_absoluteHeight="48dp"
tools:layout_conversion_absoluteWidth="88dp"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintTop_toBottomOf="@+id/chkIncludeReplyTo" android:layout_marginTop="8dp"/>
<CheckBox
android:text="Include ReplyTo Address"
android:layout_marginStart="8dp"
android:layout_marginTop="16dp"
android:text=" Memo (Optional)"
android:textColor="#FFFFFF"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:text="0 / 512"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:id="@+id/chkIncludeReplyTo"
app:layout_constraintTop_toBottomOf="@+id/MemoLayout"
app:layout_constraintStart_toStartOf="parent" android:layout_marginStart="16dp"
app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="16dp"/>
android:id="@+id/txtMemoSize" android:layout_marginEnd="8dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBaseline_toBaselineOf="@+id/txtSendMemoTitle"/>
</android.support.constraint.ConstraintLayout>
<Button
android:text="Send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"
android:id="@+id/btnSend"
android:background="@color/colorAccent"
android:textColor="@android:color/white" tools:layout_conversion_absoluteHeight="48dp"
tools:layout_conversion_absoluteWidth="88dp"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintTop_toBottomOf="@+id/chkIncludeReplyTo" android:layout_marginTop="8dp"/>
<CheckBox
android:text="Include ReplyTo Address"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:id="@+id/chkIncludeReplyTo"
app:layout_constraintTop_toBottomOf="@+id/MemoLayout"
app:layout_constraintStart_toStartOf="parent" android:layout_marginStart="16dp"
app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="16dp"/>
</android.support.constraint.ConstraintLayout>
</ScrollView>
</android.support.constraint.ConstraintLayout>

156
app/src/main/res/layout/content_tx_details.xml

@ -47,32 +47,47 @@
android:layout_marginEnd="16dp" app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginBottom="8dp"/>
</android.support.constraint.ConstraintLayout>
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_marginTop="24dp"
app:layout_constraintTop_toBottomOf="@+id/constraintLayout" android:id="@+id/constraintLayout2"
android:background="@drawable/layout_bg" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" android:layout_marginStart="16dp" android:layout_marginEnd="16dp"
>
android:id="@+id/constraintLayout2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="24dp"
android:layout_marginEnd="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/constraintLayout">
<TextView
android:text="Address"
android:layout_width="0dp"
android:layout_height="wrap_content" android:id="@+id/textView5"
app:layout_constraintStart_toStartOf="parent" android:layout_marginStart="8dp"
app:layout_constraintTop_toTopOf="parent" android:layout_marginTop="8dp"
android:textColor="@color/colorPrimary" app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="8dp"/>
android:id="@+id/textView5"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:text="Address"
android:textColor="#FFFFFF"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:text="Address"
android:layout_width="0dp"
android:layout_height="wrap_content" android:id="@+id/txtAddress"
app:layout_constraintStart_toStartOf="parent"
android:layout_marginStart="8dp" android:textSize="18sp"
app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="8dp"
android:textAlignment="textEnd" android:singleLine="true" android:ellipsize="middle"
app:layout_constraintTop_toBottomOf="@+id/textView5" app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginBottom="16dp"/>
android:id="@+id/txtAddress"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="16dp"
android:ellipsize="middle"
android:singleLine="true"
android:text="Address"
android:textAlignment="textEnd"
android:textSize="18sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView5" />
</android.support.constraint.ConstraintLayout>
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
@ -83,21 +98,29 @@
android:layout_marginStart="16dp" android:layout_marginEnd="16dp">
<TextView
android:text="Amount"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:id="@+id/textView6"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintStart_toStartOf="parent"
android:layout_marginStart="8dp" android:textColor="@color/colorPrimary"/>
android:id="@+id/textView6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:text="Amount"
android:textColor="#FFFFFF"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:text="HUSH 2.1234"
android:layout_width="0dp"
android:layout_height="wrap_content" android:id="@+id/txtAmtHush"
app:layout_constraintStart_toStartOf="parent"
android:textSize="24sp"
android:textAlignment="textEnd"
app:layout_constraintEnd_toEndOf="parent" android:layout_marginBottom="8dp"
app:layout_constraintBottom_toTopOf="@+id/txtAmtUSD" android:layout_marginEnd="8dp"
app:layout_constraintTop_toBottomOf="@+id/textView6"/>
android:id="@+id/txtAmtHush"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:text="2.1234 HUSH"
android:textAlignment="textEnd"
android:textAllCaps="false"
android:textSize="24sp"
app:layout_constraintBottom_toTopOf="@+id/txtAmtUSD"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView6" />
<TextView
android:text="$ 45.23"
android:layout_width="0dp"
@ -108,32 +131,51 @@
android:layout_marginEnd="8dp" android:textSize="18sp" android:textAlignment="textEnd"
app:layout_constraintBottom_toBottomOf="parent" android:layout_marginBottom="16dp"/>
</android.support.constraint.ConstraintLayout>
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:id="@+id/layoutMemo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/layoutAmount">
<TextView
android:id="@+id/textView14"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:text="Memo"
android:textColor="#FFFFFF"
app:layout_constraintBottom_toTopOf="@+id/txtMemo"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
android:layout_marginStart="16dp" app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="16dp"
android:id="@+id/layoutMemo" android:layout_marginTop="8dp"
app:layout_constraintTop_toBottomOf="@+id/layoutAmount" android:background="@drawable/layout_bg">
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:text="Memo"
android:layout_width="0dp"
android:layout_height="wrap_content" android:id="@+id/textView14"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"
android:layout_marginStart="8dp" android:layout_marginTop="8dp" android:layout_marginBottom="8dp"
app:layout_constraintBottom_toTopOf="@+id/txtMemo" android:textColor="@color/colorPrimary"
app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="8dp"/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:ems="10"
android:id="@+id/txtMemo"
app:layout_constraintStart_toStartOf="parent" android:layout_marginStart="8dp"
app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="8dp" android:layout_marginTop="8dp"
app:layout_constraintTop_toBottomOf="@+id/textView14" app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginBottom="8dp" android:minLines="2" android:inputType="none"
android:text="MemoContents" android:textSize="18sp" android:textAlignment="center"/>
android:id="@+id/txtMemo"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:ems="10"
android:inputType="none"
android:minLines="2"
android:text="MemoContents"
android:textAlignment="center"
android:textSize="18sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView14" />
</android.support.constraint.ConstraintLayout>
<Button
android:text="View on Block Explorer"

79
app/src/main/res/layout/fragment_transaction_item.xml

@ -1,40 +1,57 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:context="org.myhush.silentdragon.TransactionItemFragment" android:id="@+id/outlineLayout"
android:background="@color/light_grey">
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/outlineLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#AFAFAF"
tools:context="org.myhush.silentdragon.TransactionItemFragment">
<!-- TODO: Update blank fragment layout -->
<ImageView
android:src="@color/colorPrimary"
android:layout_width="8dp"
android:layout_height="0dp" android:id="@+id/typeColor" app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toLeftOf="@id/txdate" app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintBaseline_toBaselineOf="parent" android:layout_marginLeft="8dp"
app:layout_constraintStart_toStartOf="parent" android:layout_marginTop="2dp"
android:layout_marginBottom="2dp"/>
android:id="@+id/typeColor"
android:layout_width="8dp"
android:layout_height="0dp"
android:layout_marginLeft="8dp"
android:layout_marginTop="2dp"
android:layout_marginBottom="2dp"
android:src="@color/white_selected"
app:layout_constraintBaseline_toBaselineOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@id/txdate"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="Date" android:id="@+id/txdate"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintLeft_toRightOf="@+id/typeColor"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@+id/typeColor" android:layout_marginStart="16dp"
android:layout_marginTop="8dp" android:layout_marginBottom="8dp"
app:layout_constraintEnd_toStartOf="@+id/txamt" android:layout_marginEnd="7dp"
/>
android:id="@+id/txdate"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="7dp"
android:layout_marginBottom="8dp"
android:text="Date"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/txamt"
app:layout_constraintLeft_toRightOf="@+id/typeColor"
app:layout_constraintStart_toEndOf="@+id/typeColor"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:text="Amt"
android:layout_width="0dp"
android:layout_height="wrap_content" android:id="@+id/txamt"
android:layout_marginStart="8dp" app:layout_constraintStart_toEndOf="@+id/txdate"
app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="8dp" android:layout_marginTop="8dp"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent"
android:textAlignment="textEnd" android:layout_marginBottom="8dp"/>
android:id="@+id/txamt"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:text="Amt"
android:textAlignment="textEnd"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/txdate"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>

71
app/src/main/res/layout/fragment_unconfirmed_tx_item.xml

@ -5,37 +5,54 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="org.myhush.silentdragon.UnconfirmedTxItemFragment" android:id="@+id/frameLayout">
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" android:layout_marginStart="16dp" android:layout_marginEnd="16dp"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginTop="8dp" android:background="@color/light_grey"
android:id="@+id/layoutUnconfirmedItem" android:layout_marginBottom="8dp"
app:layout_constraintBottom_toBottomOf="parent">
android:id="@+id/layoutUnconfirmedItem"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ProgressBar
style="?android:attr/progressBarStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/prgUnconfirmed" app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent" android:layout_marginTop="8dp"
android:layout_marginStart="32dp" app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginBottom="8dp" android:progress="23"/>
android:id="@+id/prgUnconfirmed"
style="?android:attr/progressBarStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="32dp"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:progress="23"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:text="Recieving HUSH 0.12345678"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:id="@+id/txtUnconfirmedTx"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginTop="8dp" android:layout_marginStart="24dp"
app:layout_constraintStart_toEndOf="@+id/prgUnconfirmed" android:textSize="18sp"/>
android:id="@+id/txtUnconfirmedTx"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginTop="8dp"
android:text="Recieving HUSH 0.12345678"
android:textSize="18sp"
app:layout_constraintStart_toEndOf="@+id/prgUnconfirmed"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:text="Unconfirmed Transaction"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView9"
app:layout_constraintTop_toBottomOf="@+id/txtUnconfirmedTx" android:layout_marginTop="8dp"
app:layout_constraintBottom_toBottomOf="parent" android:layout_marginBottom="8dp"
app:layout_constraintLeft_toLeftOf="@+id/txtUnconfirmedTx" android:textColor="@color/colorAccent"/>
android:id="@+id/textView9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:text="Unconfirmed Transaction"
android:textColor="@color/colorAccent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="@+id/txtUnconfirmedTx"
app:layout_constraintTop_toBottomOf="@+id/txtUnconfirmedTx" />
</android.support.constraint.ConstraintLayout>
</android.support.constraint.ConstraintLayout>

5
app/src/main/res/mipmap-anydpi-v26/ic_launcher_hush_new.xml

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@mipmap/ic_launcher_hush_new_background"/>
<foreground android:drawable="@mipmap/ic_launcher_hush_new_foreground"/>
</adaptive-icon>

5
app/src/main/res/mipmap-anydpi-v26/ic_launcher_hush_new_round.xml

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@mipmap/ic_launcher_hush_new_background"/>
<foreground android:drawable="@mipmap/ic_launcher_hush_new_foreground"/>
</adaptive-icon>

BIN
app/src/main/res/mipmap-hdpi/ic_launcher_hush_new.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
app/src/main/res/mipmap-hdpi/ic_launcher_hush_new_background.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

BIN
app/src/main/res/mipmap-hdpi/ic_launcher_hush_new_foreground.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

BIN
app/src/main/res/mipmap-hdpi/ic_launcher_hush_new_round.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

BIN
app/src/main/res/mipmap-mdpi/ic_launcher_hush_new.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
app/src/main/res/mipmap-mdpi/ic_launcher_hush_new_background.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
app/src/main/res/mipmap-mdpi/ic_launcher_hush_new_foreground.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
app/src/main/res/mipmap-mdpi/ic_launcher_hush_new_round.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
app/src/main/res/mipmap-xhdpi/ic_launcher_hush_new.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

BIN
app/src/main/res/mipmap-xhdpi/ic_launcher_hush_new_background.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

BIN
app/src/main/res/mipmap-xhdpi/ic_launcher_hush_new_foreground.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

BIN
app/src/main/res/mipmap-xhdpi/ic_launcher_hush_new_round.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

BIN
app/src/main/res/mipmap-xxhdpi/ic_launcher_hush_new.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

BIN
app/src/main/res/mipmap-xxhdpi/ic_launcher_hush_new_background.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

BIN
app/src/main/res/mipmap-xxhdpi/ic_launcher_hush_new_foreground.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

BIN
app/src/main/res/mipmap-xxhdpi/ic_launcher_hush_new_round.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

BIN
app/src/main/res/mipmap-xxxhdpi/ic_launcher_hush_new.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

BIN
app/src/main/res/mipmap-xxxhdpi/ic_launcher_hush_new_background.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

BIN
app/src/main/res/mipmap-xxxhdpi/ic_launcher_hush_new_foreground.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

BIN
app/src/main/res/mipmap-xxxhdpi/ic_launcher_hush_new_round.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

2
build.gradle

@ -7,7 +7,7 @@ buildscript {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.0'
classpath 'com.android.tools.build:gradle:3.5.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
// NOTE: Do not place your application dependencies here; they belong

19
new_binary.sh

@ -0,0 +1,19 @@
#!/bin/bash
# Copyright 2019 The Hush developers
# Released under the GPLv3 license
set -e
VERSION=$1
FILENAME="SilentDragonAndroid-$VERSION.apk"
if [ -z $VERSION ]; then
echo "# Must set version number!"
echo "Usage: $0 1.2.3"
exit 1
fi
./gradlew clean assembleRelease
#mv $FILENAME $FILENAME.back.$$
cp app/build/outputs/apk/release/app-release.apk SilentDragonAndroid-$VERSION.apk
sha256sum $FILENAME
Loading…
Cancel
Save