mirror of https://github.com/m2049r/xmrwallet.git
Tweaks based on alpha feedback (#110)
* donation+privacy policy screens + bugfixes * opacity * mnemonic left aligned * smaller scan button * spread out fabs * doExchnage on lose focus of amount * specify wallet create type
This commit is contained in:
parent
4ac6a03d63
commit
716b830b7b
|
@ -7,3 +7,4 @@
|
||||||
/captures
|
/captures
|
||||||
.externalNativeBuild
|
.externalNativeBuild
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
/app/release
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 245 KiB |
|
@ -33,6 +33,7 @@ import android.view.inputmethod.EditorInfo;
|
||||||
import android.widget.Button;
|
import android.widget.Button;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import com.m2049r.xmrwallet.layout.Toolbar;
|
||||||
import com.m2049r.xmrwallet.model.Wallet;
|
import com.m2049r.xmrwallet.model.Wallet;
|
||||||
import com.m2049r.xmrwallet.model.WalletManager;
|
import com.m2049r.xmrwallet.model.WalletManager;
|
||||||
import com.m2049r.xmrwallet.util.Helper;
|
import com.m2049r.xmrwallet.util.Helper;
|
||||||
|
@ -366,7 +367,25 @@ public class GenerateFragment extends Fragment {
|
||||||
public void onResume() {
|
public void onResume() {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
Log.d(TAG, "onResume()");
|
Log.d(TAG, "onResume()");
|
||||||
activityCallback.setTitle(getString(R.string.generate_title));
|
activityCallback.setTitle(getString(R.string.generate_title) + " - " + getType());
|
||||||
|
activityCallback.setToolbarButton(Toolbar.BUTTON_BACK);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
String getType() {
|
||||||
|
switch (type) {
|
||||||
|
case TYPE_KEY:
|
||||||
|
return getString(R.string.generate_wallet_type_key);
|
||||||
|
case TYPE_NEW:
|
||||||
|
return getString(R.string.generate_wallet_type_new);
|
||||||
|
case TYPE_SEED:
|
||||||
|
return getString(R.string.generate_wallet_type_seed);
|
||||||
|
case TYPE_VIEWONLY:
|
||||||
|
return getString(R.string.generate_wallet_type_view);
|
||||||
|
default:
|
||||||
|
Log.e(TAG, "unknown type " + type);
|
||||||
|
return "?";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
GenerateFragment.Listener activityCallback;
|
GenerateFragment.Listener activityCallback;
|
||||||
|
@ -379,6 +398,9 @@ public class GenerateFragment extends Fragment {
|
||||||
void onGenerate(String name, String password, String address, String viewKey, String spendKey, long height);
|
void onGenerate(String name, String password, String address, String viewKey, String spendKey, long height);
|
||||||
|
|
||||||
void setTitle(String title);
|
void setTitle(String title);
|
||||||
|
|
||||||
|
void setToolbarButton(int type);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -47,8 +47,10 @@ import android.widget.EditText;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import com.m2049r.xmrwallet.dialog.DonationFragment;
|
||||||
import com.m2049r.xmrwallet.dialog.HelpFragment;
|
import com.m2049r.xmrwallet.dialog.HelpFragment;
|
||||||
import com.m2049r.xmrwallet.dialog.LicensesFragment;
|
import com.m2049r.xmrwallet.dialog.LicensesFragment;
|
||||||
|
import com.m2049r.xmrwallet.dialog.PrivacyFragment;
|
||||||
import com.m2049r.xmrwallet.layout.Toolbar;
|
import com.m2049r.xmrwallet.layout.Toolbar;
|
||||||
import com.m2049r.xmrwallet.model.Wallet;
|
import com.m2049r.xmrwallet.model.Wallet;
|
||||||
import com.m2049r.xmrwallet.model.WalletManager;
|
import com.m2049r.xmrwallet.model.WalletManager;
|
||||||
|
@ -120,7 +122,8 @@ public class LoginActivity extends AppCompatActivity
|
||||||
finish();
|
finish();
|
||||||
break;
|
break;
|
||||||
case Toolbar.BUTTON_DONATE:
|
case Toolbar.BUTTON_DONATE:
|
||||||
Toast.makeText(LoginActivity.this, getString(R.string.label_donate), Toast.LENGTH_SHORT).show();
|
DonationFragment.display(getSupportFragmentManager());
|
||||||
|
break;
|
||||||
case Toolbar.BUTTON_NONE:
|
case Toolbar.BUTTON_NONE:
|
||||||
default:
|
default:
|
||||||
Log.e(TAG, "Button " + type + "pressed - how can this be?");
|
Log.e(TAG, "Button " + type + "pressed - how can this be?");
|
||||||
|
@ -1056,9 +1059,12 @@ public class LoginActivity extends AppCompatActivity
|
||||||
case R.id.action_details_help:
|
case R.id.action_details_help:
|
||||||
HelpFragment.displayHelp(getSupportFragmentManager(), R.raw.help_details);
|
HelpFragment.displayHelp(getSupportFragmentManager(), R.raw.help_details);
|
||||||
return true;
|
return true;
|
||||||
case R.id.action_lincense_info:
|
case R.id.action_license_info:
|
||||||
LicensesFragment.displayLicensesFragment(getSupportFragmentManager());
|
LicensesFragment.displayLicensesFragment(getSupportFragmentManager());
|
||||||
return true;
|
return true;
|
||||||
|
case R.id.action_privacy_policy:
|
||||||
|
PrivacyFragment.display(getSupportFragmentManager());
|
||||||
|
return true;
|
||||||
case R.id.action_testnet:
|
case R.id.action_testnet:
|
||||||
try {
|
try {
|
||||||
LoginFragment loginFragment = (LoginFragment)
|
LoginFragment loginFragment = (LoginFragment)
|
||||||
|
|
|
@ -143,6 +143,7 @@ public class LoginFragment extends Fragment implements WalletInfoAdapter.OnInter
|
||||||
fabKeyL = (RelativeLayout) view.findViewById(R.id.fabKeyL);
|
fabKeyL = (RelativeLayout) view.findViewById(R.id.fabKeyL);
|
||||||
fabSeedL = (RelativeLayout) view.findViewById(R.id.fabSeedL);
|
fabSeedL = (RelativeLayout) view.findViewById(R.id.fabSeedL);
|
||||||
|
|
||||||
|
fab_pulse = AnimationUtils.loadAnimation(getContext(), R.anim.fab_pulse);
|
||||||
fab_open_screen = AnimationUtils.loadAnimation(getContext(), R.anim.fab_open_screen);
|
fab_open_screen = AnimationUtils.loadAnimation(getContext(), R.anim.fab_open_screen);
|
||||||
fab_close_screen = AnimationUtils.loadAnimation(getContext(), R.anim.fab_close_screen);
|
fab_close_screen = AnimationUtils.loadAnimation(getContext(), R.anim.fab_close_screen);
|
||||||
fab_open = AnimationUtils.loadAnimation(getContext(), R.anim.fab_open);
|
fab_open = AnimationUtils.loadAnimation(getContext(), R.anim.fab_open);
|
||||||
|
@ -208,6 +209,7 @@ public class LoginFragment extends Fragment implements WalletInfoAdapter.OnInter
|
||||||
});
|
});
|
||||||
|
|
||||||
loadPrefs();
|
loadPrefs();
|
||||||
|
|
||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -267,6 +269,11 @@ public class LoginFragment extends Fragment implements WalletInfoAdapter.OnInter
|
||||||
filterList();
|
filterList();
|
||||||
adapter.setInfos(displayedList);
|
adapter.setInfos(displayedList);
|
||||||
adapter.notifyDataSetChanged();
|
adapter.notifyDataSetChanged();
|
||||||
|
if (displayedList.isEmpty()) {
|
||||||
|
fab.startAnimation(fab_pulse);
|
||||||
|
} else {
|
||||||
|
fab.clearAnimation();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void showInfo(@NonNull String name) {
|
private void showInfo(@NonNull String name) {
|
||||||
|
@ -381,6 +388,7 @@ public class LoginFragment extends Fragment implements WalletInfoAdapter.OnInter
|
||||||
private FrameLayout fabScreen;
|
private FrameLayout fabScreen;
|
||||||
private RelativeLayout fabNewL, fabViewL, fabKeyL, fabSeedL;
|
private RelativeLayout fabNewL, fabViewL, fabKeyL, fabSeedL;
|
||||||
private Animation fab_open, fab_close, rotate_forward, rotate_backward, fab_open_screen, fab_close_screen;
|
private Animation fab_open, fab_close, rotate_forward, rotate_backward, fab_open_screen, fab_close_screen;
|
||||||
|
private Animation fab_pulse;
|
||||||
|
|
||||||
public boolean isFabOpen() {
|
public boolean isFabOpen() {
|
||||||
return isFabOpen;
|
return isFabOpen;
|
||||||
|
|
|
@ -57,11 +57,8 @@ public class SendFragment extends Fragment {
|
||||||
|
|
||||||
private TextInputLayout etAddress;
|
private TextInputLayout etAddress;
|
||||||
private TextInputLayout etPaymentId;
|
private TextInputLayout etPaymentId;
|
||||||
//TextInputLayout etAmount;
|
|
||||||
private ExchangeView evAmount;
|
private ExchangeView evAmount;
|
||||||
private TextView tvAmountB;
|
|
||||||
private Spinner sCurrencyA;
|
|
||||||
private Spinner sCurrencyB;
|
|
||||||
|
|
||||||
private Button bScan;
|
private Button bScan;
|
||||||
private Spinner sMixin;
|
private Spinner sMixin;
|
||||||
|
@ -102,9 +99,6 @@ public class SendFragment extends Fragment {
|
||||||
etAddress = (TextInputLayout) view.findViewById(R.id.etAddress);
|
etAddress = (TextInputLayout) view.findViewById(R.id.etAddress);
|
||||||
etPaymentId = (TextInputLayout) view.findViewById(R.id.etPaymentId);
|
etPaymentId = (TextInputLayout) view.findViewById(R.id.etPaymentId);
|
||||||
evAmount = (ExchangeView) view.findViewById(R.id.evAmount);
|
evAmount = (ExchangeView) view.findViewById(R.id.evAmount);
|
||||||
tvAmountB = (TextView) view.findViewById(R.id.tvAmountB);
|
|
||||||
sCurrencyA = (Spinner) view.findViewById(R.id.sCurrencyA);
|
|
||||||
sCurrencyB = (Spinner) view.findViewById(R.id.sCurrencyB);
|
|
||||||
|
|
||||||
bScan = (Button) view.findViewById(R.id.bScan);
|
bScan = (Button) view.findViewById(R.id.bScan);
|
||||||
bPrepareSend = (Button) view.findViewById(R.id.bPrepareSend);
|
bPrepareSend = (Button) view.findViewById(R.id.bPrepareSend);
|
||||||
|
@ -140,18 +134,6 @@ public class SendFragment extends Fragment {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
evAmount.setOnNewAmountListener(new ExchangeView.OnNewAmountListener() {
|
|
||||||
@Override
|
|
||||||
public void onNewAmount(String xmr) {
|
|
||||||
if ((xmr != null)) {
|
|
||||||
// stupid workaround to not show error on open of screen
|
|
||||||
if ((checkAddressNoError() && checkAmountWithError()) || checkAmount()) {
|
|
||||||
etPaymentId.requestFocus();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
etPaymentId.getEditText().setOnEditorActionListener(new TextView.OnEditorActionListener() {
|
etPaymentId.getEditText().setOnEditorActionListener(new TextView.OnEditorActionListener() {
|
||||||
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
|
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
|
||||||
if ((event != null && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) || (actionId == EditorInfo.IME_ACTION_DONE)) {
|
if ((event != null && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) || (actionId == EditorInfo.IME_ACTION_DONE)) {
|
||||||
|
@ -406,9 +388,6 @@ public class SendFragment extends Fragment {
|
||||||
}
|
}
|
||||||
if ((data != null) && (data.amount <= 0)) {
|
if ((data != null) && (data.amount <= 0)) {
|
||||||
evAmount.focus();
|
evAmount.focus();
|
||||||
} else {
|
|
||||||
etDummy.requestFocus();
|
|
||||||
Helper.hideKeyboard(getActivity());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -36,6 +36,7 @@ import android.util.Log;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import com.m2049r.xmrwallet.dialog.DonationFragment;
|
||||||
import com.m2049r.xmrwallet.layout.Toolbar;
|
import com.m2049r.xmrwallet.layout.Toolbar;
|
||||||
import com.m2049r.xmrwallet.model.PendingTransaction;
|
import com.m2049r.xmrwallet.model.PendingTransaction;
|
||||||
import com.m2049r.xmrwallet.model.TransactionInfo;
|
import com.m2049r.xmrwallet.model.TransactionInfo;
|
||||||
|
@ -154,7 +155,7 @@ public class WalletActivity extends AppCompatActivity implements WalletFragment.
|
||||||
onWalletDetails();
|
onWalletDetails();
|
||||||
return true;
|
return true;
|
||||||
case R.id.action_donate:
|
case R.id.action_donate:
|
||||||
onWalletDetails();
|
DonationFragment.display(getSupportFragmentManager());
|
||||||
return true;
|
return true;
|
||||||
case R.id.action_share:
|
case R.id.action_share:
|
||||||
onShareTxInfo();
|
onShareTxInfo();
|
||||||
|
|
|
@ -305,17 +305,17 @@ public class WalletFragment extends Fragment
|
||||||
long daemonHeight = activityCallback.getDaemonHeight();
|
long daemonHeight = activityCallback.getDaemonHeight();
|
||||||
if (!wallet.isSynchronized()) {
|
if (!wallet.isSynchronized()) {
|
||||||
long n = daemonHeight - wallet.getBlockChainHeight();
|
long n = daemonHeight - wallet.getBlockChainHeight();
|
||||||
sync = formatter.format(n) + " " + getString(R.string.status_remaining);
|
sync = getString(R.string.status_syncing) + " " + formatter.format(n) + " " + getString(R.string.status_remaining);
|
||||||
if (firstBlock == 0) {
|
if (firstBlock == 0) {
|
||||||
firstBlock = wallet.getBlockChainHeight();
|
firstBlock = wallet.getBlockChainHeight();
|
||||||
}
|
}
|
||||||
int x = 100 - Math.round(100f * n / (1f * daemonHeight - firstBlock));
|
int x = 100 - Math.round(100f * n / (1f * daemonHeight - firstBlock));
|
||||||
onProgress(getString(R.string.status_syncing) + " " + sync);
|
//onProgress(getString(R.string.status_syncing) + " " + sync);
|
||||||
if (x == 0) x = -1;
|
if (x == 0) x = -1;
|
||||||
onProgress(x);
|
onProgress(x);
|
||||||
ivSynced.setVisibility(View.GONE);
|
ivSynced.setVisibility(View.GONE);
|
||||||
} else {
|
} else {
|
||||||
sync = getString(R.string.status_synced) + ": " + formatter.format(wallet.getBlockChainHeight());
|
sync = getString(R.string.status_synced) + formatter.format(wallet.getBlockChainHeight());
|
||||||
ivSynced.setVisibility(View.VISIBLE);
|
ivSynced.setVisibility(View.VISIBLE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,114 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2017 m2049r
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Based on work by Adam Speakman http://speakman.net.nz
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.m2049r.xmrwallet.dialog;
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint;
|
||||||
|
import android.app.AlertDialog;
|
||||||
|
import android.app.Dialog;
|
||||||
|
import android.content.DialogInterface;
|
||||||
|
import android.os.AsyncTask;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.support.v4.app.DialogFragment;
|
||||||
|
import android.support.v4.app.Fragment;
|
||||||
|
import android.support.v4.app.FragmentManager;
|
||||||
|
import android.support.v4.app.FragmentTransaction;
|
||||||
|
import android.text.Html;
|
||||||
|
import android.util.Log;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.webkit.WebView;
|
||||||
|
import android.widget.ImageButton;
|
||||||
|
import android.widget.ProgressBar;
|
||||||
|
import android.widget.TextView;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import com.m2049r.xmrwallet.BuildConfig;
|
||||||
|
import com.m2049r.xmrwallet.R;
|
||||||
|
import com.m2049r.xmrwallet.util.Helper;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
|
||||||
|
public class DonationFragment extends DialogFragment {
|
||||||
|
static final String TAG = "DonationFragment";
|
||||||
|
private static final String FRAGMENT_TAG = "com.m2049r.xmrwalelt.dialog.DonationFragment";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new instance of LicensesFragment with no Close button.
|
||||||
|
*
|
||||||
|
* @return A new licenses fragment.
|
||||||
|
*/
|
||||||
|
public static DonationFragment newInstance() {
|
||||||
|
return new DonationFragment();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds and displays a licenses fragment with no Close button. Requires
|
||||||
|
* "/res/raw/licenses.html" and "/res/layout/licenses_fragment.xml" to be
|
||||||
|
* present.
|
||||||
|
*
|
||||||
|
* @param fm A fragment manager instance used to display this LicensesFragment.
|
||||||
|
*/
|
||||||
|
public static void display(FragmentManager fm) {
|
||||||
|
FragmentTransaction ft = fm.beginTransaction();
|
||||||
|
Fragment prev = fm.findFragmentByTag(FRAGMENT_TAG);
|
||||||
|
if (prev != null) {
|
||||||
|
ft.remove(prev);
|
||||||
|
}
|
||||||
|
ft.addToBackStack(null);
|
||||||
|
|
||||||
|
// Create and show the dialog.
|
||||||
|
DialogFragment newFragment = DonationFragment.newInstance();
|
||||||
|
newFragment.show(ft, FRAGMENT_TAG);
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressLint("InflateParams")
|
||||||
|
@Override
|
||||||
|
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
||||||
|
final View view = LayoutInflater.from(getActivity()).inflate(R.layout.fragment_donation, null);
|
||||||
|
|
||||||
|
((TextView) view.findViewById(R.id.tvCredits)).setText(Html.fromHtml(getString(R.string.donation_credits)));
|
||||||
|
|
||||||
|
((ImageButton) view.findViewById(R.id.bCopyAddress)).
|
||||||
|
setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
Helper.clipBoardCopy(getActivity(), getString(R.string.label_copy_address),
|
||||||
|
((TextView) view.findViewById(R.id.tvWalletAddress)).getText().toString());
|
||||||
|
Toast.makeText(getActivity(), getString(R.string.message_copy_address), Toast.LENGTH_SHORT).show();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
|
||||||
|
builder.setView(view);
|
||||||
|
builder.setNegativeButton(R.string.about_close,
|
||||||
|
new DialogInterface.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(DialogInterface dialog, int id) {
|
||||||
|
dialog.dismiss();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return builder.create();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,93 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2017 m2049r
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Based on work by Adam Speakman http://speakman.net.nz
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.m2049r.xmrwallet.dialog;
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint;
|
||||||
|
import android.app.AlertDialog;
|
||||||
|
import android.app.Dialog;
|
||||||
|
import android.content.DialogInterface;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.support.v4.app.DialogFragment;
|
||||||
|
import android.support.v4.app.Fragment;
|
||||||
|
import android.support.v4.app.FragmentManager;
|
||||||
|
import android.support.v4.app.FragmentTransaction;
|
||||||
|
import android.text.Html;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.ImageButton;
|
||||||
|
import android.widget.TextView;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import com.m2049r.xmrwallet.R;
|
||||||
|
import com.m2049r.xmrwallet.util.Helper;
|
||||||
|
|
||||||
|
public class PrivacyFragment extends DialogFragment {
|
||||||
|
static final String TAG = "PrivacyFragment";
|
||||||
|
private static final String FRAGMENT_TAG = "com.m2049r.xmrwalelt.dialog.PrivacyFragment";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new instance of LicensesFragment with no Close button.
|
||||||
|
*
|
||||||
|
* @return A new licenses fragment.
|
||||||
|
*/
|
||||||
|
public static PrivacyFragment newInstance() {
|
||||||
|
return new PrivacyFragment();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds and displays a licenses fragment with no Close button. Requires
|
||||||
|
* "/res/raw/licenses.html" and "/res/layout/licenses_fragment.xml" to be
|
||||||
|
* present.
|
||||||
|
*
|
||||||
|
* @param fm A fragment manager instance used to display this LicensesFragment.
|
||||||
|
*/
|
||||||
|
public static void display(FragmentManager fm) {
|
||||||
|
FragmentTransaction ft = fm.beginTransaction();
|
||||||
|
Fragment prev = fm.findFragmentByTag(FRAGMENT_TAG);
|
||||||
|
if (prev != null) {
|
||||||
|
ft.remove(prev);
|
||||||
|
}
|
||||||
|
ft.addToBackStack(null);
|
||||||
|
|
||||||
|
// Create and show the dialog.
|
||||||
|
DialogFragment newFragment = PrivacyFragment.newInstance();
|
||||||
|
newFragment.show(ft, FRAGMENT_TAG);
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressLint("InflateParams")
|
||||||
|
@Override
|
||||||
|
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
||||||
|
final View view = LayoutInflater.from(getActivity()).inflate(R.layout.fragment_privacy_policy, null);
|
||||||
|
|
||||||
|
((TextView) view.findViewById(R.id.tvCredits)).setText(Html.fromHtml(getString(R.string.privacy_policy)));
|
||||||
|
|
||||||
|
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
|
||||||
|
builder.setView(view);
|
||||||
|
builder.setNegativeButton(R.string.about_close,
|
||||||
|
new DialogInterface.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(DialogInterface dialog, int id) {
|
||||||
|
dialog.dismiss();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return builder.create();
|
||||||
|
}
|
||||||
|
}
|
|
@ -67,6 +67,7 @@ public class ExchangeView extends LinearLayout implements AsyncExchangeRate.List
|
||||||
public void setAmount(String xmrAmount) {
|
public void setAmount(String xmrAmount) {
|
||||||
if (xmrAmount != null) {
|
if (xmrAmount != null) {
|
||||||
setCurrencyA(0);
|
setCurrencyA(0);
|
||||||
|
etAmount.getEditText().setText(xmrAmount);
|
||||||
setXmr(xmrAmount);
|
setXmr(xmrAmount);
|
||||||
this.notXmrAmount = null;
|
this.notXmrAmount = null;
|
||||||
doExchange();
|
doExchange();
|
||||||
|
@ -191,6 +192,15 @@ public class ExchangeView extends LinearLayout implements AsyncExchangeRate.List
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
etAmount.getEditText().setOnFocusChangeListener(new OnFocusChangeListener() {
|
||||||
|
@Override
|
||||||
|
public void onFocusChange(View v, boolean hasFocus) {
|
||||||
|
if (!hasFocus) {
|
||||||
|
doExchange();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
etAmount.getEditText().setOnEditorActionListener(new TextView.OnEditorActionListener() {
|
etAmount.getEditText().setOnEditorActionListener(new TextView.OnEditorActionListener() {
|
||||||
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
|
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
|
||||||
if ((event != null && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) || (actionId == EditorInfo.IME_ACTION_DONE)) {
|
if ((event != null && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) || (actionId == EditorInfo.IME_ACTION_DONE)) {
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<set xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:fillAfter="true">
|
||||||
|
<scale
|
||||||
|
android:duration="500"
|
||||||
|
android:fromXScale="1.0"
|
||||||
|
android:fromYScale="1.0"
|
||||||
|
android:interpolator="@android:anim/linear_interpolator"
|
||||||
|
android:pivotX="50%"
|
||||||
|
android:pivotY="50%"
|
||||||
|
android:repeatCount="infinite"
|
||||||
|
android:repeatMode="reverse"
|
||||||
|
android:toXScale="2.0"
|
||||||
|
android:toYScale="2.0" />
|
||||||
|
</set>
|
Binary file not shown.
After Width: | Height: | Size: 3.5 KiB |
|
@ -0,0 +1,9 @@
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="24.0"
|
||||||
|
android:viewportHeight="24.0">
|
||||||
|
<path
|
||||||
|
android:fillColor="#FF000000"
|
||||||
|
android:pathData="M12,4.5C7,4.5 2.73,7.61 1,12c1.73,4.39 6,7.5 11,7.5s9.27,-3.11 11,-7.5c-1.73,-4.39 -6,-7.5 -11,-7.5zM12,17c-2.76,0 -5,-2.24 -5,-5s2.24,-5 5,-5 5,2.24 5,5 -2.24,5 -5,5zM12,9c-1.66,0 -3,1.34 -3,3s1.34,3 3,3 3,-1.34 3,-3 -1.34,-3 -3,-3z"/>
|
||||||
|
</vector>
|
|
@ -0,0 +1,79 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:paddingTop="8sp"
|
||||||
|
android:paddingEnd="16sp"
|
||||||
|
android:paddingStart="16sp">
|
||||||
|
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="100sp"
|
||||||
|
android:src="@drawable/gunther_donate" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
style="@style/MoneroText"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:gravity="center"
|
||||||
|
android:text="@string/donation_text"
|
||||||
|
android:textSize="14sp" />
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="@dimen/header_top"
|
||||||
|
android:background="@drawable/backgound_spinner"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:padding="@dimen/header_top">
|
||||||
|
|
||||||
|
<FrameLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
style="@style/MoneroLabel.Heading.Donation"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:text="@string/donation_address_label" />
|
||||||
|
|
||||||
|
<ImageButton
|
||||||
|
android:id="@+id/bCopyAddress"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="end"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:background="?android:selectableItemBackground"
|
||||||
|
android:src="@drawable/ic_content_copy_black_24dp" />
|
||||||
|
</FrameLayout>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tvWalletAddress"
|
||||||
|
style="@style/MoneroText"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="@dimen/data_top"
|
||||||
|
android:text="@string/donation_address"
|
||||||
|
android:textAlignment="center"
|
||||||
|
android:textColor="@color/moneroBlack"
|
||||||
|
android:textSize="17sp" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tvCredits"
|
||||||
|
style="@style/MoneroText"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="@dimen/header_top"
|
||||||
|
android:autoLink="web"
|
||||||
|
android:gravity="center"
|
||||||
|
android:text="@string/donation_credits" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
</ScrollView>
|
|
@ -69,7 +69,7 @@
|
||||||
android:hint="@string/generate_mnemonic_hint"
|
android:hint="@string/generate_mnemonic_hint"
|
||||||
android:imeOptions="actionNext"
|
android:imeOptions="actionNext"
|
||||||
android:inputType="textMultiLine"
|
android:inputType="textMultiLine"
|
||||||
android:textAlignment="center" />
|
android:textAlignment="textStart" />
|
||||||
</android.support.design.widget.TextInputLayout>
|
</android.support.design.widget.TextInputLayout>
|
||||||
|
|
||||||
<android.support.design.widget.TextInputLayout
|
<android.support.design.widget.TextInputLayout
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:paddingTop="8sp"
|
||||||
|
android:paddingEnd="16sp"
|
||||||
|
android:paddingStart="16sp">
|
||||||
|
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="50sp"
|
||||||
|
android:src="@drawable/ic_eye_black_24dp" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tvCredits"
|
||||||
|
style="@style/MoneroText"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="@dimen/header_top"
|
||||||
|
android:autoLink="web"
|
||||||
|
android:gravity="start"
|
||||||
|
android:text="@string/privacy_policy"
|
||||||
|
android:textSize="14sp" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
</ScrollView>
|
|
@ -47,10 +47,10 @@
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/bScan"
|
android:id="@+id/bScan"
|
||||||
style="@style/MoneroText.Button"
|
style="@style/MoneroText.Button"
|
||||||
android:layout_width="56sp"
|
android:layout_width="48dp"
|
||||||
android:layout_height="56sp"
|
android:layout_height="48dp"
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
android:layout_marginStart="8sp"
|
android:layout_marginStart="16sp"
|
||||||
android:background="@drawable/ic_scan"
|
android:background="@drawable/ic_scan"
|
||||||
android:text="@string/send_qr_hint" />
|
android:text="@string/send_qr_hint" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
android:id="@+id/fabScreen"
|
android:id="@+id/fabScreen"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:background="#CCffffff"
|
android:background="#eeffffff"
|
||||||
android:visibility="invisible">
|
android:visibility="invisible">
|
||||||
|
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
|
@ -16,7 +16,7 @@
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="bottom|end"
|
android:layout_gravity="bottom|end"
|
||||||
android:layout_marginBottom="224dp"
|
android:layout_marginBottom="256dp"
|
||||||
android:layout_marginEnd="16dp">
|
android:layout_marginEnd="16dp">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
@ -48,7 +48,7 @@
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="bottom|end"
|
android:layout_gravity="bottom|end"
|
||||||
android:layout_marginBottom="176dp"
|
android:layout_marginBottom="200dp"
|
||||||
android:layout_marginEnd="16dp">
|
android:layout_marginEnd="16dp">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
@ -80,7 +80,7 @@
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="bottom|end"
|
android:layout_gravity="bottom|end"
|
||||||
android:layout_marginBottom="128dp"
|
android:layout_marginBottom="144dp"
|
||||||
android:layout_marginEnd="16dp">
|
android:layout_marginEnd="16dp">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
@ -112,7 +112,7 @@
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="bottom|end"
|
android:layout_gravity="bottom|end"
|
||||||
android:layout_marginBottom="80dp"
|
android:layout_marginBottom="88dp"
|
||||||
android:layout_marginEnd="16dp">
|
android:layout_marginEnd="16dp">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
|
|
@ -10,10 +10,15 @@
|
||||||
app:showAsAction="never" />
|
app:showAsAction="never" />
|
||||||
|
|
||||||
<item
|
<item
|
||||||
android:id="@+id/action_lincense_info"
|
android:id="@+id/action_license_info"
|
||||||
android:icon="@drawable/ic_info_white_24dp"
|
|
||||||
android:orderInCategory="200"
|
android:orderInCategory="200"
|
||||||
android:title="@string/menu_about"
|
android:title="@string/menu_about"
|
||||||
app:showAsAction="never" />
|
app:showAsAction="never" />
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/action_privacy_policy"
|
||||||
|
android:orderInCategory="200"
|
||||||
|
android:title="@string/menu_privacy"
|
||||||
|
app:showAsAction="never" />
|
||||||
|
|
||||||
</menu>
|
</menu>
|
|
@ -7,7 +7,7 @@
|
||||||
android:icon="@drawable/ic_favorite_white_24dp"
|
android:icon="@drawable/ic_favorite_white_24dp"
|
||||||
android:orderInCategory="10"
|
android:orderInCategory="10"
|
||||||
android:title="@string/label_donate"
|
android:title="@string/label_donate"
|
||||||
app:showAsAction="always|withText" />
|
app:showAsAction="ifRoom" />
|
||||||
|
|
||||||
<item
|
<item
|
||||||
android:id="@+id/action_info"
|
android:id="@+id/action_info"
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
<h1>Open Source Licenses</h1>
|
<h1>Open Source Licenses</h1>
|
||||||
<h2>Licensed under the Apache License, Version 2.0</h2>
|
<h2>Licensed under the Apache License, Version 2.0</h2>
|
||||||
<h3>monerujo (https://github.com/m2049r/xmrwallet)</h3>
|
<h3>monerujo (https://github.com/m2049r/xmrwallet)</h3>
|
||||||
Copyright (c) m2049r et al.
|
Copyright (c) 2017 m2049r et al.
|
||||||
<h3>The Android Open Source Project</h3>
|
<h3>The Android Open Source Project</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li>com.android.support:design</li>
|
<li>com.android.support:design</li>
|
||||||
|
|
|
@ -3,4 +3,59 @@
|
||||||
<string name="about_title">About</string>
|
<string name="about_title">About</string>
|
||||||
<string name="about_close">Close</string>
|
<string name="about_close">Close</string>
|
||||||
<string name="about_text">I am monerujo %1$s (%2$d)</string>
|
<string name="about_text">I am monerujo %1$s (%2$d)</string>
|
||||||
|
|
||||||
|
<string name="donation_text">
|
||||||
|
\"Donate you ungrateful bastards!\"
|
||||||
|
</string>
|
||||||
|
|
||||||
|
<string name="donation_address_label">Donations Address</string>
|
||||||
|
<string name="donation_address">4AdkPJoxn7JCvAby9szgnt93MSEwdnxdhaASxbTBm6x5dCwmsDep2UYN4FhStDn5i11nsJbpU7oj59ahg8gXb1Mg3viqCuk</string>
|
||||||
|
|
||||||
|
<string name="donation_credits"><![CDATA[
|
||||||
|
<b>Credits</b>
|
||||||
|
<br/>
|
||||||
|
m2049r, baltsar777, rehrar, anhdres,
|
||||||
|
keejef, TheMonera
|
||||||
|
<br/><br/>
|
||||||
|
<a href="www.xmrujo.com">www.xmrujo.com</a>
|
||||||
|
]]></string>
|
||||||
|
|
||||||
|
<string name="privacy_policy"><![CDATA[
|
||||||
|
<h1>Privacy Policy</h1>
|
||||||
|
<p>This page informs you of our policies regarding the collection,
|
||||||
|
use and disclosure of personal information we receive from users of our
|
||||||
|
app (monerujo: Monero Wallet).
|
||||||
|
</p>
|
||||||
|
<p>By using the app, you agree to the collection and use of information in
|
||||||
|
accordance with this policy.
|
||||||
|
</p>
|
||||||
|
<h2>Data Collected</h2>
|
||||||
|
<p>Personal data is any kind of data that could identify an individual.
|
||||||
|
</p>
|
||||||
|
<p>Monero keys and public addresses are collected and processed by the app locally
|
||||||
|
for the purpose of processing transactions and transmitted into the Monero Network
|
||||||
|
in encrypted form.
|
||||||
|
</p>
|
||||||
|
<p>Other personal data is not collected.</p>
|
||||||
|
<h2>App Permissions</h2>
|
||||||
|
<ul>
|
||||||
|
<li>INTERNET : Connect to the Monero Network via a Monero Daemon Node</li>
|
||||||
|
<li>READ_EXTERNAL_STORAGE : Read wallet files stored on the device</li>
|
||||||
|
<li>WRITE_EXTERNAL_STORAGE : Write wallet files stored on the device</li>
|
||||||
|
<li>WAKE_LOCK : Keep device awake while syncing</li>
|
||||||
|
<li>CAMERA : Scan QR Codes for receiving Monero</li>
|
||||||
|
</ul>
|
||||||
|
<h2>Changes to this Privacy Policy</h2>
|
||||||
|
<p>We may update this privacy policy from time to time. We will notify
|
||||||
|
you of any changes by posting the new privacy policy in the app and on the
|
||||||
|
website (www.xmrujo.com)
|
||||||
|
You are advised to review this privacy policy periodically for any changes.
|
||||||
|
<p>This Privacy Policy was last updated: 2nd November, 2017.
|
||||||
|
</p>
|
||||||
|
<h2>Contact Us</h2>
|
||||||
|
<p>If you have any questions about our privacy policy,
|
||||||
|
or how your data is being collected and processed,
|
||||||
|
please e-mail privacy@xmrujo.com.
|
||||||
|
</p>
|
||||||
|
]]></string>
|
||||||
</resources>
|
</resources>
|
|
@ -5,6 +5,7 @@
|
||||||
|
|
||||||
<string name="menu_testnet">Testnet</string>
|
<string name="menu_testnet">Testnet</string>
|
||||||
<string name="menu_about">About …</string>
|
<string name="menu_about">About …</string>
|
||||||
|
<string name="menu_privacy">Privacy Policy …</string>
|
||||||
|
|
||||||
<string name="menu_share">Share</string>
|
<string name="menu_share">Share</string>
|
||||||
<string name="menu_help">Help</string>
|
<string name="menu_help">Help</string>
|
||||||
|
@ -71,7 +72,7 @@
|
||||||
|
|
||||||
<string name="label_watchonly">(Watch Only)</string>
|
<string name="label_watchonly">(Watch Only)</string>
|
||||||
|
|
||||||
<string name="label_wallet_receive">Take</string>
|
<string name="label_wallet_receive">Receive</string>
|
||||||
<string name="label_wallet_send">Give</string>
|
<string name="label_wallet_send">Give</string>
|
||||||
|
|
||||||
<string name="title_amount">Amount</string>
|
<string name="title_amount">Amount</string>
|
||||||
|
@ -89,9 +90,9 @@
|
||||||
<string name="local_service_connected">monerujo Service Connected</string>
|
<string name="local_service_connected">monerujo Service Connected</string>
|
||||||
<string name="local_service_disconnected">monerujo Service Disconnected</string>
|
<string name="local_service_disconnected">monerujo Service Disconnected</string>
|
||||||
|
|
||||||
<string name="status_synced">Synced</string>
|
<string name="status_synced">Synced:</string>
|
||||||
<string name="status_remaining">Blocks remaining</string>
|
<string name="status_remaining">Blocks remaining</string>
|
||||||
<string name="status_syncing">Syncing:</string>
|
<string name="status_syncing">Scanning:</string>
|
||||||
|
|
||||||
<string name="prompt_problems">Problems</string>
|
<string name="prompt_problems">Problems</string>
|
||||||
<string name="message_strorage_not_writable">External Storage is not writable! Panic!</string>
|
<string name="message_strorage_not_writable">External Storage is not writable! Panic!</string>
|
||||||
|
@ -133,6 +134,11 @@
|
||||||
<string name="generate_mnemonic_placeholder">camp feline inflamed memoir afloat eight alerts females gutter cogs menu waveform gather tawny judge gusts yahoo doctor females biscuit alchemy reef agony austere camp</string>
|
<string name="generate_mnemonic_placeholder">camp feline inflamed memoir afloat eight alerts females gutter cogs menu waveform gather tawny judge gusts yahoo doctor females biscuit alchemy reef agony austere camp</string>
|
||||||
<string name="generate_restoreheight_placeholder">1307882</string>
|
<string name="generate_restoreheight_placeholder">1307882</string>
|
||||||
|
|
||||||
|
<string name="generate_wallet_type_key">Keys</string>
|
||||||
|
<string name="generate_wallet_type_new">New</string>
|
||||||
|
<string name="generate_wallet_type_seed">Seed</string>
|
||||||
|
<string name="generate_wallet_type_view">View</string>
|
||||||
|
|
||||||
<string name="generate_address_hint">Public Address</string>
|
<string name="generate_address_hint">Public Address</string>
|
||||||
<string name="generate_viewkey_hint">View Key</string>
|
<string name="generate_viewkey_hint">View Key</string>
|
||||||
<string name="generate_spendkey_hint">Spend Key</string>
|
<string name="generate_spendkey_hint">Spend Key</string>
|
||||||
|
@ -258,5 +264,5 @@
|
||||||
<string name="fab_create_new">Create new wallet</string>
|
<string name="fab_create_new">Create new wallet</string>
|
||||||
<string name="fab_restore_viewonly">Restore view-only wallet</string>
|
<string name="fab_restore_viewonly">Restore view-only wallet</string>
|
||||||
<string name="fab_restore_key">Restore wallet from private keys</string>
|
<string name="fab_restore_key">Restore wallet from private keys</string>
|
||||||
<string name="fab_restore_seed">Restore wallet 25 words seed</string>
|
<string name="fab_restore_seed">Restore wallet 25 word seed</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -116,6 +116,12 @@
|
||||||
<item name="android:textStyle">bold</item>
|
<item name="android:textStyle">bold</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
<style name="MoneroLabel.Heading.Donation">
|
||||||
|
<item name="android:textSize">18sp</item>
|
||||||
|
<item name="android:textColor">@color/gradientPink</item>
|
||||||
|
<item name="android:textStyle">bold</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
<style name="MoneroFab" parent="@android:style/TextAppearance.DeviceDefault.Medium">
|
<style name="MoneroFab" parent="@android:style/TextAppearance.DeviceDefault.Medium">
|
||||||
<item name="android:textSize">12sp</item>
|
<item name="android:textSize">12sp</item>
|
||||||
<item name="android:textColor">@color/moneroFab</item>
|
<item name="android:textColor">@color/moneroFab</item>
|
||||||
|
@ -192,10 +198,12 @@
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="MoneroButton.Take">
|
<style name="MoneroButton.Take">
|
||||||
|
<item name="android:textColor">@color/white</item>
|
||||||
<item name="android:background">@color/take</item>
|
<item name="android:background">@color/take</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="MoneroButton.Give">
|
<style name="MoneroButton.Give">
|
||||||
|
<item name="android:textColor">@color/white</item>
|
||||||
<item name="android:background">@color/give</item>
|
<item name="android:background">@color/give</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue