wownero
/
wownerujo
Archived
4
0
Fork 0

UI facelift (#49)

upstream
m2049r 7 years ago
parent be54900e1f
commit 9b82023a9f

@ -14,7 +14,7 @@
android:icon="@drawable/ic_monero_32dp"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
android:theme="@style/MyMaterialTheme">
<activity
android:name=".WalletActivity"

@ -101,6 +101,7 @@ public class GenerateReviewFragment extends Fragment {
String seed;
String viewKey;
boolean isWatchOnly;
Wallet.Status status;
@Override
protected Boolean doInBackground(String... params) {
@ -118,8 +119,13 @@ public class GenerateReviewFragment extends Fragment {
wallet = WalletManager.getInstance().openWallet(walletPath, password);
closeWallet = true;
}
if (wallet.getStatus() != Wallet.Status.Status_Ok) return false;
name = wallet.getName();
status = wallet.getStatus();
if (status != Wallet.Status.Status_Ok) {
if (closeWallet) wallet.close();
return false;
}
address = wallet.getAddress();
seed = wallet.getSeed();
viewKey = wallet.getSecretViewKey();
@ -131,13 +137,13 @@ public class GenerateReviewFragment extends Fragment {
@Override
protected void onPostExecute(Boolean result) {
super.onPostExecute(result);
tvWalletName.setText(name);
if (result) {
if (type.equals(GenerateReviewFragment.VIEW_TYPE_ACCEPT)) {
tvWalletPassword.setText(password);
bAccept.setVisibility(View.VISIBLE);
bAccept.setEnabled(true);
}
tvWalletName.setText(name);
tvWalletAddress.setText(address);
tvWalletMnemonic.setText(seed);
tvWalletViewKey.setText(viewKey);
@ -147,6 +153,13 @@ public class GenerateReviewFragment extends Fragment {
} else {
tvWalletSpendKey.setText(getString(R.string.generate_wallet_watchonly));
}
} else {
// TODO show proper error message
// TODO end the fragment
tvWalletAddress.setText(status.toString());
tvWalletMnemonic.setText(status.toString());
tvWalletViewKey.setText(status.toString());
tvWalletSpendKey.setText(status.toString());
}
hideProgress();
}

@ -192,7 +192,7 @@ public class LoginActivity extends AppCompatActivity
}
}
// copy + delete seems safer than rename bevause we call rollback easily
// copy + delete seems safer than rename because we call rollback easily
boolean renameWallet(File walletFile, String newName) {
if (copyWallet(walletFile, new File(walletFile.getParentFile(), newName), false)) {
deleteWallet(walletFile);
@ -215,7 +215,7 @@ public class LoginActivity extends AppCompatActivity
final EditText etRename = (EditText) promptsView.findViewById(R.id.etRename);
final TextView tvRenameLabel = (TextView) promptsView.findViewById(R.id.tvRenameLabel);
tvRenameLabel.setText(getString(R.string.prompt_rename) + " " + walletName);
tvRenameLabel.setText(getString(R.string.prompt_rename, walletName));
// set dialog message
alertDialogBuilder
@ -396,7 +396,7 @@ public class LoginActivity extends AppCompatActivity
final EditText etPassword = (EditText) promptsView.findViewById(R.id.etPassword);
final TextView tvPasswordLabel = (TextView) promptsView.findViewById(R.id.tvPasswordLabel);
tvPasswordLabel.setText(LoginActivity.this.getString(R.string.prompt_password) + " " + wallet);
tvPasswordLabel.setText(LoginActivity.this.getString(R.string.prompt_password, wallet));
// set dialog message
alertDialogBuilder

@ -49,7 +49,6 @@ public class WalletFragment extends Fragment implements TransactionInfoAdapter.O
private NumberFormat formatter = NumberFormat.getInstance();
TextView tvBalance;
LinearLayout llUnconfirmedAmount;
TextView tvUnconfirmedAmount;
TextView tvBlockHeightProgress;
ConstraintLayout clProgress;
@ -66,7 +65,7 @@ public class WalletFragment extends Fragment implements TransactionInfoAdapter.O
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
if (activityCallback.hasWallet())
inflater.inflate(R.menu.wallet_menu, menu);
inflater.inflate(R.menu.wallet_menu, menu);
super.onCreateOptionsMenu(menu, inflater);
}
@ -78,21 +77,17 @@ public class WalletFragment extends Fragment implements TransactionInfoAdapter.O
tvProgress = (TextView) view.findViewById(R.id.tvProgress);
pbProgress = (ProgressBar) view.findViewById(R.id.pbProgress);
clProgress = (ConstraintLayout) view.findViewById(R.id.clProgress);
llUnconfirmedAmount = (LinearLayout) view.findViewById(R.id.llUnconfirmedAmount);
tvBalance = (TextView) view.findViewById(R.id.tvBalance);
tvBalance.setText(Helper.getDisplayAmount(0));
tvBalance.setText(getResources().getString(R.string.xmr_balance, Helper.getDisplayAmount(0)));
tvUnconfirmedAmount = (TextView) view.findViewById(R.id.tvUnconfirmedAmount);
tvUnconfirmedAmount.setText(Helper.getDisplayAmount(0));
tvUnconfirmedAmount.setText(getResources().getString(R.string.xmr_unconfirmed_amount, Helper.getDisplayAmount(0)));
tvBlockHeightProgress = (TextView) view.findViewById(R.id.tvBlockHeightProgress);
bSend = (Button) view.findViewById(R.id.bSend);
RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.list);
RecyclerView.ItemDecoration itemDecoration = new
DividerItemDecoration(recyclerView.getContext(), DividerItemDecoration.VERTICAL);
recyclerView.addItemDecoration(itemDecoration);
this.adapter = new TransactionInfoAdapter(this);
this.adapter = new TransactionInfoAdapter(getActivity(), this);
recyclerView.setAdapter(adapter);
bSend.setOnClickListener(new View.OnClickListener()
@ -161,10 +156,12 @@ public class WalletFragment extends Fragment implements TransactionInfoAdapter.O
public void showProgress() {
clProgress.setVisibility(View.VISIBLE);
tvBlockHeightProgress.setVisibility(View.GONE);
}
public void hideProgress() {
clProgress.setVisibility(View.GONE);
tvBlockHeightProgress.setVisibility(View.VISIBLE);
}
String setActivityTitle(Wallet wallet) {
@ -173,6 +170,8 @@ public class WalletFragment extends Fragment implements TransactionInfoAdapter.O
if (shortName.length() > 16) {
shortName = shortName.substring(0, 14) + "...";
}
// TODO very very rarely this craches because getAddress returns "" or so ...
// maybe because this runs in the ui thread and not in a 5MB thread
String title = "[" + wallet.getAddress().substring(0, 6) + "] " + shortName;
activityCallback.setTitle(title);
@ -194,14 +193,8 @@ public class WalletFragment extends Fragment implements TransactionInfoAdapter.O
}
long balance = wallet.getBalance();
long unlockedBalance = wallet.getUnlockedBalance();
tvBalance.setText(Helper.getDisplayAmount(unlockedBalance));
tvUnconfirmedAmount.setText(Helper.getDisplayAmount(balance - unlockedBalance));
// balance cannot be less than unlockedBalance
/*if (balance != unlockedBalance) {
llPendingAmount.setVisibility(View.VISIBLE);
} else {
llPendingAmount.setVisibility(View.INVISIBLE);
}*/
tvBalance.setText(getResources().getString(R.string.xmr_balance, Helper.getDisplayAmount(unlockedBalance)));
tvUnconfirmedAmount.setText(getResources().getString(R.string.xmr_balance, Helper.getDisplayAmount(balance - unlockedBalance)));
String sync = "";
if (!activityCallback.hasBoundService())
throw new IllegalStateException("WalletService not bound.");

@ -16,7 +16,9 @@
package com.m2049r.xmrwallet.layout;
import android.content.Context;
import android.graphics.Color;
import android.support.v4.content.ContextCompat;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
@ -42,10 +44,15 @@ public class TransactionInfoAdapter extends RecyclerView.Adapter<TransactionInfo
private final SimpleDateFormat DATETIME_FORMATTER = new SimpleDateFormat("yyyy-MM-dd HH:mm");
static final int TX_RED = Color.rgb(255, 79, 65);
static final int TX_GREEN = Color.rgb(54, 176, 91);
static final int TX_PENDING = Color.rgb(72, 53, 176);
static final int TX_FAILED = Color.rgb(208, 0, 255);
//static final int TX_RED = Color.rgb(255, 79, 65);
//static final int TX_GREEN = Color.rgb(54, 176, 91);
//static final int TX_PENDING = Color.rgb(72, 53, 176);
//static final int TX_FAILED = Color.rgb(208, 0, 255);
int outboundColour;
int inboundColour;
int pendingColour;
int failedColour;
public interface OnInteractionListener {
void onInteraction(View view, TransactionInfo item);
@ -54,7 +61,14 @@ public class TransactionInfoAdapter extends RecyclerView.Adapter<TransactionInfo
private final List<TransactionInfo> infoItems;
private final OnInteractionListener listener;
public TransactionInfoAdapter(OnInteractionListener listener) {
Context context;
public TransactionInfoAdapter(Context context, OnInteractionListener listener) {
this.context = context;
inboundColour = ContextCompat.getColor(context, R.color.tx_green);
outboundColour = ContextCompat.getColor(context, R.color.tx_red);
pendingColour = ContextCompat.getColor(context, R.color.tx_pending);
failedColour = ContextCompat.getColor(context, R.color.tx_failed);
this.infoItems = new ArrayList<>();
this.listener = listener;
Calendar cal = Calendar.getInstance();
@ -109,8 +123,7 @@ public class TransactionInfoAdapter extends RecyclerView.Adapter<TransactionInfo
class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
final TextView tvAmount;
final TextView tvAmountPoint;
final TextView tvAmountDecimal;
final TextView tvFee;
final TextView tvPaymentId;
final TextView tvDateTime;
TransactionInfo infoItem;
@ -118,9 +131,7 @@ public class TransactionInfoAdapter extends RecyclerView.Adapter<TransactionInfo
ViewHolder(View itemView) {
super(itemView);
this.tvAmount = (TextView) itemView.findViewById(R.id.tx_amount);
// I know this is stupid but can't be bothered to align decimals otherwise
this.tvAmountPoint = (TextView) itemView.findViewById(R.id.tx_amount_point);
this.tvAmountDecimal = (TextView) itemView.findViewById(R.id.tx_amount_decimal);
this.tvFee = (TextView) itemView.findViewById(R.id.tx_fee);
this.tvPaymentId = (TextView) itemView.findViewById(R.id.tx_paymentid);
this.tvDateTime = (TextView) itemView.findViewById(R.id.tx_datetime);
}
@ -131,34 +142,41 @@ public class TransactionInfoAdapter extends RecyclerView.Adapter<TransactionInfo
private void setTxColour(int clr) {
tvAmount.setTextColor(clr);
tvAmountDecimal.setTextColor(clr);
tvAmountPoint.setTextColor(clr);
tvFee.setTextColor(clr);
}
void bind(int position) {
this.infoItem = infoItems.get(position);
String displayAmount = Wallet.getDisplayAmount(infoItem.amount);
// TODO fix this with i8n code but cryptonote::print_money always uses '.' for decimal point
String amountParts[] = displayAmount.split("\\.");
amountParts[1] = amountParts[1].substring(0,5);
this.tvAmount.setText(amountParts[0]);
this.tvAmountDecimal.setText(amountParts[1]);
String amount = displayAmount.substring(0, displayAmount.length() - (12 - 5));
this.tvAmount.setText(amount);
if ((infoItem.fee > 0)) {
String feeAmount = Wallet.getDisplayAmount(infoItem.fee);
String fee = feeAmount.substring(0, feeAmount.length() - (12 - 5));
if (infoItem.isPending) {
this.tvFee.setText(context.getString(R.string.tx_list_fee_pending, fee));
} else {
this.tvFee.setText(context.getString(R.string.tx_list_fee, fee));
}
} else {
this.tvFee.setText("");
}
if (infoItem.isFailed) {
this.tvAmount.setText('(' + amountParts[0]);
this.tvAmountDecimal.setText(amountParts[1] + ')');
setTxColour(TX_FAILED);
this.tvAmount.setText(context.getString(R.string.tx_list_amount_failed, amount));
setTxColour(failedColour);
} else if (infoItem.isPending) {
setTxColour(TX_PENDING);
setTxColour(pendingColour);
if (infoItem.direction == TransactionInfo.Direction.Direction_Out) {
this.tvAmount.setText('-' + amountParts[0]);
this.tvAmount.setText(context.getString(R.string.tx_list_amount_negative, amount));
}
} else if (infoItem.direction == TransactionInfo.Direction.Direction_In) {
setTxColour(TX_GREEN);
setTxColour(inboundColour);
} else {
setTxColour(TX_RED);
setTxColour(outboundColour);
}
this.tvPaymentId.setText(infoItem.paymentId.equals("0000000000000000")?"":infoItem.paymentId);
this.tvPaymentId.setText(infoItem.paymentId.equals("0000000000000000") ? "" : infoItem.paymentId);
this.tvDateTime.setText(getDateTime(infoItem.timestamp));
itemView.setOnClickListener(this);

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/moneroGray" android:state_enabled="false" />
<item android:color="@color/moneroWhite" />
</selector>

@ -12,6 +12,7 @@
<EditText
android:id="@+id/etWalletName"
style="@style/MoneroEdit"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
@ -19,40 +20,39 @@
android:imeOptions="actionNext"
android:inputType="text"
android:maxLines="1"
android:textAlignment="center"
android:textSize="16sp" />
android:textAlignment="center" />
<EditText
android:id="@+id/etWalletPassword"
style="@style/MoneroEdit"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="@string/generate_password_hint"
android:imeOptions="actionNext"
android:inputType="text"
android:textAlignment="center"
android:textSize="16sp" />
android:textAlignment="center" />
</LinearLayout>
<EditText
android:id="@+id/etWalletMnemonic"
style="@style/MoneroEdit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/generate_mnemonic_hint"
android:imeOptions="actionNext"
android:inputType="textMultiLine"
android:textAlignment="center"
android:textSize="16sp" />
android:textAlignment="center" />
<EditText
android:id="@+id/etWalletAddress"
style="@style/MoneroEdit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/generate_address_hint"
android:imeOptions="actionNext"
android:inputType="textMultiLine"
android:textAlignment="center"
android:textSize="16sp" />
android:textAlignment="center" />
<LinearLayout
android:id="@+id/llRestoreKeys"
@ -64,43 +64,43 @@
<EditText
android:id="@+id/etWalletViewKey"
style="@style/MoneroEdit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/generate_viewkey_hint"
android:imeOptions="actionNext"
android:inputType="textMultiLine"
android:textAlignment="center"
android:textSize="16sp" />
android:textAlignment="center" />
<EditText
android:id="@+id/etWalletSpendKey"
style="@style/MoneroEdit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/generate_spendkey_hint"
android:imeOptions="actionNext"
android:inputType="textMultiLine"
android:textAlignment="center"
android:textSize="16sp" />
android:textAlignment="center"/>
</LinearLayout>
<EditText
android:id="@+id/etWalletRestoreHeight"
style="@style/MoneroEdit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/generate_restoreheight_hint"
android:imeOptions="actionDone"
android:inputType="number"
android:textAlignment="center"
android:textSize="16sp"
android:visibility="gone" />
<Button
android:id="@+id/bGenerate"
style="@style/MoneroButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginTop="8dp"
android:background="@color/colorPrimary"
android:enabled="false"
android:text="@string/generate_buttonGenerate" />

@ -20,23 +20,21 @@
<TextView
android:id="@+id/tvWalletLabel"
style="@style/MoneroLabel"
android:layout_width="0sp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/generate_wallet_label"
android:textAlignment="center"
android:textColor="@color/colorAccent"
android:textSize="16sp" />
android:textAlignment="center" />
<TextView
android:id="@+id/tvWalletPasswordLabel"
style="@style/MoneroLabel"
android:layout_width="0sp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/generate_password_label"
android:textAlignment="center"
android:textColor="@color/colorAccent"
android:textSize="16sp" />
android:textAlignment="center" />
</LinearLayout>
<LinearLayout
@ -48,106 +46,96 @@
<TextView
android:id="@+id/tvWalletName"
style="@style/MoneroText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textAlignment="center"
android:textColor="@color/colorPrimaryDark"
android:textSize="16sp" />
android:textAlignment="center" />
<TextView
android:id="@+id/tvWalletPassword"
style="@style/MoneroText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="***"
android:textAlignment="center"
android:textColor="@color/colorPrimaryDark"
android:textSize="16sp" />
android:textAlignment="center" />
</LinearLayout>
<TextView
android:id="@+id/tvWalletMnemonicLabel"
style="@style/MoneroLabel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/generate_mnemonic_label"
android:textAlignment="center"
android:textColor="@color/colorAccent"
android:textSize="16sp" />
android:textAlignment="center" />
<TextView
android:id="@+id/tvWalletMnemonic"
style="@style/MoneroText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAlignment="center"
android:textColor="@color/colorPrimaryDark"
android:textSize="16sp" />
android:textAlignment="center" />
<TextView
android:id="@+id/tvWalletAddressLabel"
style="@style/MoneroLabel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="@string/generate_address_label"
android:textAlignment="center"
android:textColor="@color/colorAccent"
android:textSize="16sp" />
android:textAlignment="center" />
<TextView
android:id="@+id/tvWalletAddress"
style="@style/MoneroText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:selectAllOnFocus="true"
android:textAlignment="center"
android:textColor="@color/colorPrimaryDark"
android:textIsSelectable="true"
android:textSize="16sp" />
android:textIsSelectable="true" />
<TextView
android:id="@+id/tvWalletViewKeyLabel"
style="@style/MoneroLabel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="@string/generate_viewkey_label"
android:textAlignment="center"
android:textColor="@color/colorAccent"
android:textSize="16sp" />
android:textAlignment="center" />
<TextView
android:id="@+id/tvWalletViewKey"
style="@style/MoneroText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:selectAllOnFocus="true"
android:textAlignment="center"
android:textColor="@color/colorPrimaryDark"
android:textIsSelectable="true"
android:textSize="16sp" />
android:textIsSelectable="true" />
<TextView
android:id="@+id/tvWalletSpendKeyLabel"
style="@style/MoneroLabel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="@string/generate_spendkey_label"
android:textAlignment="center"
android:textColor="@color/colorAccent"
android:textSize="16sp" />
android:textAlignment="center" />
<TextView
android:id="@+id/tvWalletSpendKey"
style="@style/MoneroText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAlignment="center"
android:textColor="@color/colorPrimaryDark"
android:textIsSelectable="true"
android:textSize="16sp" />
android:textIsSelectable="true" />
<Button
android:id="@+id/bAccept"
style="@style/MoneroButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:background="@color/colorPrimary"
android:text="@string/generate_button_accept"
android:visibility="gone" />
</LinearLayout>

@ -5,16 +5,12 @@
android:gravity="center_horizontal"
android:orientation="vertical">
<android.support.v7.widget.Toolbar
<include
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:elevation="4dp" />
layout="@layout/toolbar" />
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_container"
android:layout_margin="4sp"
android:layout_width="match_parent"
android:layout_height="match_parent" />

@ -17,13 +17,13 @@
android:textOff="@string/connect_testnet"
android:textOn="@string/connect_mainnet"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/etDaemonAddress"
style="@style/MoneroEdit"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:backgroundTint="@color/colorPrimary"
android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true"
@ -33,7 +33,6 @@
android:inputType="textWebEmailAddress|textNoSuggestions"
android:maxLines="1"
android:textIsSelectable="true"
android:textSize="15sp"
app:layout_constraintBaseline_toBaselineOf="@+id/tbMainNet"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@+id/tbMainNet" />
@ -46,9 +45,10 @@
<ListView
android:id="@+id/list"
style="@style/MoneroListView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"/>
android:layout_marginTop="4dp" />
<android.support.design.widget.FloatingActionButton xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/fabAdd"

@ -8,6 +8,7 @@
<TextView
android:id="@+id/tvPasswordLabel"
style="@style/MoneroLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:labelFor="@+id/etPassword"
@ -16,6 +17,7 @@
<EditText
android:id="@+id/etPassword"
style="@style/MoneroEdit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:imeOptions="normal"

@ -8,6 +8,7 @@
<TextView
android:id="@+id/tvRenameLabel"
style="@style/MoneroLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/prompt_rename"
@ -16,6 +17,7 @@
<EditText
android:id="@+id/etRename"
style="@style/MoneroEdit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:imeOptions="normal"

@ -2,6 +2,7 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/moneroBlack"
android:orientation="vertical">
<ProgressBar
@ -10,19 +11,21 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8sp"
android:progressBackgroundTint="@color/colorPrimaryDark"
android:progressTint="@color/colorPrimary"
android:visibility="gone" />
<TextView
android:id="@+id/tvAddress"
style="@style/MoneroText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="4sp"
android:layout_marginTop="4sp"
android:textIsSelectable="true"
android:selectAllOnFocus="true"
android:hint="@string/send_address_hint"
android:selectAllOnFocus="true"
android:textAlignment="center"
android:textSize="16sp" />
android:textIsSelectable="true" />
<LinearLayout
android:layout_width="match_parent"
@ -33,16 +36,17 @@
android:weightSum="10">
<TextView
style="@style/MoneroText"
android:layout_width="0sp"
android:layout_height="wrap_content"
android:layout_marginRight="8sp"
android:layout_weight="3"
android:text="@string/receive_paymentid_label"
android:textAlignment="textEnd"
android:textSize="16sp" />
android:textAlignment="textEnd" />
<EditText
android:id="@+id/etPaymentId"
style="@style/MoneroEdit"
android:layout_width="0sp"
android:layout_height="wrap_content"
android:layout_weight="5"
@ -50,20 +54,18 @@
android:hint="@string/receive_paymentid_hint"
android:imeOptions="actionNext"
android:inputType="textMultiLine"
android:textAlignment="textStart"
android:textSize="16sp" />
android:textAlignment="textStart" />
<Button
android:id="@+id/bPaymentId"
style="@style/MoneroButton.Small"
android:layout_width="0sp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="2"
android:background="@color/colorPrimary"
android:enabled="false"
android:minHeight="36sp"
android:text="@string/receive_paymentid_button"
android:textSize="12sp" />
android:text="@string/receive_paymentid_button" />
</LinearLayout>
<LinearLayout
@ -75,16 +77,17 @@
android:weightSum="10">
<TextView
style="@style/MoneroText"
android:layout_width="0sp"
android:layout_height="wrap_content"
android:layout_marginRight="8sp"
android:layout_weight="3"
android:text="@string/send_amount_label"
android:textAlignment="textEnd"
android:textSize="24sp" />
android:textAlignment="textEnd" />
<EditText
android:id="@+id/etAmount"
style="@style/MoneroEdit"
android:layout_width="0sp"
android:layout_height="wrap_content"
android:layout_weight="7"
@ -92,17 +95,16 @@
android:hint="@string/receive_amount_hint"
android:imeOptions="actionDone"
android:inputType="numberDecimal"
android:textAlignment="textStart"
android:textSize="24sp" />
android:textAlignment="textStart" />
</LinearLayout>
<Button
android:id="@+id/bGenerate"
style="@style/MoneroButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="4sp"
android:layout_marginTop="4sp"
android:background="@color/colorPrimary"
android:enabled="false"
android:minHeight="36sp"
android:text="@string/receive_generate_hint" />

@ -5,17 +5,19 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginBottom="8sp"
android:weightSum="2">
<Spinner
android:id="@+id/sMixin"
style="@style/MoneroSpinner"
android:layout_width="0sp"
android:layout_height="match_parent"
android:layout_weight="1"
@ -24,6 +26,7 @@
<Spinner
android:id="@+id/sPriority"
style="@style/MoneroSpinner"
android:layout_width="0sp"
android:layout_height="match_parent"
android:layout_weight="1"
@ -35,92 +38,90 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginBottom="4sp"
android:layout_marginTop="4sp"
android:orientation="horizontal"
android:weightSum="10">
<EditText
android:id="@+id/etAddress"
style="@style/MoneroEdit"
android:layout_width="0sp"
android:layout_height="wrap_content"
android:layout_weight="8"
android:hint="@string/send_address_hint"
android:imeOptions="actionNext"
android:inputType="textMultiLine"
android:textAlignment="center"
android:textSize="16sp" />
android:textAlignment="center" />
<Button
android:id="@+id/bScan"
style="@style/MoneroButton.Small"
android:layout_width="0sp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:minHeight="36sp"
android:layout_weight="2"
android:background="@color/colorPrimary"
android:enabled="true"
android:text="@string/send_qr_hint"
android:textSize="12sp" />
android:minHeight="36sp"
android:text="@string/send_qr_hint" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginBottom="4sp"
android:layout_marginTop="4sp"
android:orientation="horizontal"
android:weightSum="10">
<EditText
android:id="@+id/etPaymentId"
style="@style/MoneroEdit"
android:layout_width="0sp"
android:layout_height="wrap_content"
android:layout_weight="8"
android:hint="@string/send_paymentid_hint"
android:imeOptions="actionNext"
android:inputType="textMultiLine"
android:textAlignment="center"
android:textSize="16sp" />
android:textAlignment="center" />
<Button
android:id="@+id/bPaymentId"
style="@style/MoneroButton.Small"
android:layout_width="0sp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:minHeight="36sp"
android:layout_weight="2"
android:background="@color/colorPrimary"
android:enabled="true"
android:text="@string/send_generate_paymentid_hint"
android:textSize="12sp" />
android:minHeight="36sp"
android:text="@string/send_generate_paymentid_hint" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginBottom="4sp"
android:layout_marginTop="4sp"
android:orientation="horizontal"
android:weightSum="10">
<EditText
android:id="@+id/etAmount"
style="@style/MoneroEdit"
android:layout_width="0sp"
android:layout_height="wrap_content"
android:layout_weight="8"
android:hint="@string/send_amount_hint"
android:imeOptions="actionDone"
android:inputType="numberDecimal"
android:textAlignment="center"
android:textSize="16sp" />
android:textAlignment="center" />
<Button
android:id="@+id/bSweep"
style="@style/MoneroButton"
android:layout_width="0sp"
android:layout_height="match_parent"
android:layout_weight="2"
android:background="@color/colorPrimary"
android:enabled="true"
android:text="@string/send_sweep_hint"
android:visibility="invisible" />
@ -128,18 +129,18 @@
<Button
android:id="@+id/bPrepareSend"
style="@style/MoneroButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="4sp"
android:layout_marginTop="4sp"
android:minHeight="36sp"
android:background="@color/colorPrimary"
android:enabled="false"
android:minHeight="36sp"
android:text="@string/send_prepare_hint" />
<ProgressBar
android:id="@+id/pbProgress"
style="@android:style/Widget.ProgressBar.Horizontal"
style="@style/MoneroProgress"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone" />
@ -148,18 +149,18 @@
android:id="@+id/llConfirmSend"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginBottom="4sp"
android:layout_marginTop="4sp"
android:orientation="vertical"
android:visibility="gone">
<Button
android:id="@+id/bDispose"
style="@style/MoneroButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="36sp"
android:layout_marginBottom="4sp"
android:background="@color/colorPrimary"
android:minHeight="36sp"
android:text="@string/send_dispose_hint" />
<LinearLayout
@ -170,23 +171,22 @@
<TextView
android:id="@+id/tvTxAmountLabel"
style="@style/MoneroLabel"
android:layout_width="0sp"
android:layout_height="wrap_content"
android:layout_marginRight="8sp"
android:layout_weight="1"
android:text="@string/send_amount_label"
android:textAlignment="textEnd"
android:textColor="@color/colorAccent"
android:textSize="20sp" />
android:textAlignment="textEnd" />
<TextView
android:id="@+id/tvTxAmount"
style="@style/MoneroText"
android:layout_width="0sp"
android:layout_height="wrap_content"
android:layout_marginLeft="8sp"
android:layout_weight="2"
android:textAlignment="textEnd"
android:textSize="20sp" />
android:textAlignment="textEnd" />
</LinearLayout>
<LinearLayout
@ -197,23 +197,22 @@
<TextView
android:id="@+id/tvTxFeeLabel"
style="@style/MoneroLabel"
android:layout_width="0sp"
android:layout_height="wrap_content"
android:layout_marginRight="4sp"
android:layout_weight="1"
android:text="@string/send_fee_label"
android:textAlignment="textEnd"
android:textColor="@color/colorAccent"
android:textSize="20sp" />
android:textAlignment="textEnd" />
<TextView
android:id="@+id/tvTxFee"
style="@style/MoneroText"
android:layout_width="0sp"
android:layout_height="wrap_content"
android:layout_marginLeft="8sp"
android:layout_weight="2"
android:textAlignment="textEnd"
android:textSize="20sp" />
android:textAlignment="textEnd" />
</LinearLayout>
<LinearLayout
@ -224,53 +223,52 @@
<TextView
android:id="@+id/tvTxDustLabel"
style="@style/MoneroLabel"
android:layout_width="0sp"
android:layout_height="wrap_content"
android:layout_marginRight="8sp"
android:layout_weight="1"
android:text="@string/send_dust_label"
android:textAlignment="textEnd"
android:textColor="@color/colorAccent"
android:textSize="20sp" />
android:textAlignment="textEnd" />
<TextView
android:id="@+id/tvTxDust"
style="@style/MoneroText"
android:layout_width="0sp"
android:layout_height="wrap_content"
android:layout_marginLeft="8sp"
android:layout_weight="2"
android:textAlignment="textEnd"
android:textSize="20sp" />
android:textAlignment="textEnd" />
</LinearLayout>
<EditText
android:id="@+id/etNotes"
style="@style/MoneroEdit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4sp"
android:hint="@string/send_notes_hint"
android:imeOptions="actionDone"
android:inputType="textMultiLine"
android:textAlignment="center"
android:textSize="16sp" />
android:textAlignment="center" />
<Button
android:id="@+id/bSend"
style="@style/MoneroButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="4sp"
android:layout_marginTop="4sp"
android:minHeight="36sp"
android:background="@color/colorPrimary"
android:text="@string/send_send_hint" />
<Button
android:id="@+id/bReallySend"
style="@style/MoneroButton.Alert"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="4sp"
android:layout_marginTop="4sp"
android:background="@color/moneroOrange"
android:text="@string/send_really_send_hint"
android:visibility="gone" />
</LinearLayout>

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize"
local:popupTheme="@style/ThemeOverlay.AppCompat.Light"
local:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />

@ -1,80 +1,70 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView 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:id="@+id/card"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="1sp"
app:cardBackgroundColor="@color/main_background">
android:layout_height="wrap_content">
<android.support.constraint.ConstraintLayout
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8sp"
android:layout_marginTop="8sp"
tools:layout_editor_absoluteX="0sp"
tools:layout_editor_absoluteY="0sp">
android:background="@color/moneroBlack"
android:orientation="vertical"
android:padding="8dp">
<TextView
android:id="@+id/tx_amount"
android:layout_width="60sp"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="end"
android:textSize="14sp"
android:textStyle="bold"
android:text="9999999"
android:textColor="@android:color/holo_red_light"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
android:orientation="horizontal"
android:weightSum="2">
<TextView
android:id="@+id/tx_amount_point"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="14sp"
android:textStyle="bold"
android:text="."
android:textColor="@android:color/holo_red_light"
app:layout_constraintBaseline_toBaselineOf="@+id/tx_amount"
app:layout_constraintLeft_toRightOf="@+id/tx_amount"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tx_amount"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="right"
android:text="9999999.99999"
android:textColor="@color/moneroOrange"
android:textSize="20dp" />
<TextView
android:id="@+id/tx_amount_decimal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="14sp"
android:text="99999"
android:textColor="@android:color/holo_red_light"
app:layout_constraintBaseline_toBaselineOf="@+id/tx_amount"
app:layout_constraintLeft_toRightOf="@+id/tx_amount_point"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tx_datetime"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="right"
android:text="2017-05-22 21:32"
android:textColor="@color/textColorPrimary"
android:textSize="20dp" />
</LinearLayout>
<TextView
android:id="@+id/tx_paymentid"
android:layout_width="wrap_content"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginRight="8sp"
android:textSize="13sp"
android:text="0123456789abcdef"
app:layout_constraintBaseline_toBaselineOf="@+id/tx_amount"
app:layout_constraintRight_toLeftOf="@+id/tx_datetime"
app:layout_constraintTop_toTopOf="parent" />
android:orientation="horizontal"
android:weightSum="2">
<TextView
android:id="@+id/tx_datetime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="14sp"
android:text="2017-05-22 21:32"
android:textColor="@android:color/black"
app:layout_constraintBaseline_toBaselineOf="@+id/tx_amount"
app:layout_constraintRight_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tx_fee"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="right"
android:text="9999999.99999"
android:textColor="@color/moneroOrange"
android:textSize="16dp" />
</android.support.constraint.ConstraintLayout>
<TextView
android:id="@+id/tx_paymentid"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="right"
android:text="0123456789abcdef"
android:textColor="@color/textColorPrimary"
android:textSize="16dp" />
</LinearLayout>
</LinearLayout>
</android.support.v7.widget.CardView>

@ -17,15 +17,17 @@
<TableRow>
<TextView
style="@style/MoneroLabel"
android:gravity="right"
android:padding="8dp"
android:padding="8sp"
android:text="@string/tx_id"
android:textColor="@color/colorAccent" />
<TextView
android:id="@+id/tvTxId"
style="@style/MoneroText"
android:gravity="left"
android:padding="8dip"
android:padding="8sp"
android:selectAllOnFocus="true"
android:textIsSelectable="true" />
</TableRow>
@ -33,15 +35,17 @@
<TableRow>
<TextView
style="@style/MoneroLabel"
android:gravity="right"
android:padding="8dp"
android:padding="8sp"
android:text="@string/tx_key"
android:textColor="@color/colorAccent" />
<TextView
android:id="@+id/tvTxKey"
style="@style/MoneroText"
android:gravity="left"
android:padding="8dip"
android:padding="8sp"
android:selectAllOnFocus="true"
android:textIsSelectable="true" />
</TableRow>
@ -49,15 +53,17 @@
<TableRow>
<TextView
style="@style/MoneroLabel"
android:gravity="right"
android:padding="8dp"
android:padding="8sp"
android:text="@string/tx_destination"
android:textColor="@color/colorAccent" />
<TextView
android:id="@+id/tvDestination"
style="@style/MoneroText"
android:gravity="left"
android:padding="8dip"
android:padding="8sp"
android:selectAllOnFocus="true"
android:textIsSelectable="true" />
</TableRow>
@ -65,15 +71,17 @@
<TableRow>
<TextView
style="@style/MoneroLabel"
android:gravity="right"
android:padding="8dp"
android:padding="8sp"
android:text="@string/tx_paymentId"
android:textColor="@color/colorAccent" />
<TextView
android:id="@+id/tvTxPaymentId"
style="@style/MoneroText"
android:gravity="left"
android:padding="8dip"
android:padding="8sp"
android:selectAllOnFocus="true"
android:textIsSelectable="true" />
</TableRow>
@ -81,8 +89,9 @@
<TableRow>
<TextView
style="@style/MoneroLabel"
android:gravity="right"
android:padding="8dp"
android:padding="8sp"
android:selectAllOnFocus="true"
android:text="@string/tx_amount"
android:textColor="@color/colorAccent"
@ -90,8 +99,9 @@
<TextView
android:id="@+id/tvTxAmount"
style="@style/MoneroText"
android:gravity="left"
android:padding="8dip"
android:padding="8sp"
android:selectAllOnFocus="true"
android:textIsSelectable="true" />
</TableRow>
@ -99,15 +109,17 @@
<TableRow>
<TextView
style="@style/MoneroLabel"
android:gravity="right"
android:padding="8dp"
android:padding="8sp"
android:text="@string/tx_fee"
android:textColor="@color/colorAccent" />
<TextView
android:id="@+id/tvTxFee"
style="@style/MoneroText"
android:gravity="left"
android:padding="8dip"
android:padding="8sp"
android:selectAllOnFocus="true"
android:textIsSelectable="true" />
</TableRow>
@ -115,8 +127,9 @@
<TableRow>
<TextView
style="@style/MoneroLabel"
android:gravity="right"
android:padding="8dp"
android:padding="8sp"
android:text="@string/tx_notes"
android:textColor="@color/colorAccent" />
@ -129,25 +142,24 @@
<EditText
android:id="@+id/etTxNotes"
android:layout_width="0dp"
style="@style/MoneroEdit"
android:layout_width="0sp"
android:layout_height="wrap_content"
android:layout_weight="8"
android:hint="@string/tx_notes_hint"
android:inputType="textMultiLine"
android:textAlignment="textStart"
android:textSize="14sp" />
android:textAlignment="textStart"/>
<Button
android:id="@+id/bTxNotes"
android:layout_width="0dp"
style="@style/MoneroButton.Small"
android:layout_width="0sp"
android:layout_height="match_parent"
android:layout_marginBottom="8dp"
android:layout_marginTop="8dp"
android:layout_marginBottom="8sp"
android:layout_marginTop="8sp"
android:layout_weight="2"
android:background="@color/colorPrimary"
android:enabled="true"
android:text="@string/tx_button_notes"
android:textSize="8sp" />
android:text="@string/tx_button_notes"/>
</LinearLayout>
</TableRow>
@ -155,15 +167,17 @@
<TableRow>
<TextView
style="@style/MoneroLabel"
android:gravity="right"
android:padding="8dp"
android:padding="8sp"
android:text="@string/tx_timestamp"
android:textColor="@color/colorAccent" />
<TextView
android:id="@+id/tvTxTimestamp"
style="@style/MoneroText"
android:gravity="left"
android:padding="8dip"
android:padding="8sp"
android:selectAllOnFocus="true"
android:textIsSelectable="true" />
</TableRow>
@ -172,15 +186,17 @@
<TableRow>
<TextView
style="@style/MoneroLabel"
android:gravity="right"
android:padding="8dp"
android:padding="8sp"
android:text="@string/tx_blockheight"
android:textColor="@color/colorAccent" />
<TextView
android:id="@+id/tvTxBlockheight"
style="@style/MoneroText"
android:gravity="left"
android:padding="8dip"
android:padding="8sp"
android:selectAllOnFocus="true"
android:textIsSelectable="true" />
</TableRow>
@ -188,15 +204,17 @@
<TableRow>
<TextView
style="@style/MoneroLabel"
android:gravity="right"
android:padding="8dp"
android:padding="8sp"
android:text="@string/tx_transfers"
android:textColor="@color/colorAccent" />
<TextView
android:id="@+id/tvTxTransfers"
style="@style/MoneroText"
android:gravity="left"
android:padding="8dip"
android:padding="8sp"
android:selectAllOnFocus="true"
android:textIsSelectable="true" />
@ -206,10 +224,10 @@
<Button
android:id="@+id/bCopy"
style="@style/MoneroButton"
android: