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
|
||||
.externalNativeBuild
|
||||
.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.TextView;
|
||||
|
||||
import com.m2049r.xmrwallet.layout.Toolbar;
|
||||
import com.m2049r.xmrwallet.model.Wallet;
|
||||
import com.m2049r.xmrwallet.model.WalletManager;
|
||||
import com.m2049r.xmrwallet.util.Helper;
|
||||
|
@ -366,7 +367,25 @@ public class GenerateFragment extends Fragment {
|
|||
public void onResume() {
|
||||
super.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;
|
||||
|
@ -379,6 +398,9 @@ public class GenerateFragment extends Fragment {
|
|||
void onGenerate(String name, String password, String address, String viewKey, String spendKey, long height);
|
||||
|
||||
void setTitle(String title);
|
||||
|
||||
void setToolbarButton(int type);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -47,8 +47,10 @@ import android.widget.EditText;
|
|||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.m2049r.xmrwallet.dialog.DonationFragment;
|
||||
import com.m2049r.xmrwallet.dialog.HelpFragment;
|
||||
import com.m2049r.xmrwallet.dialog.LicensesFragment;
|
||||
import com.m2049r.xmrwallet.dialog.PrivacyFragment;
|
||||
import com.m2049r.xmrwallet.layout.Toolbar;
|
||||
import com.m2049r.xmrwallet.model.Wallet;
|
||||
import com.m2049r.xmrwallet.model.WalletManager;
|
||||
|
@ -120,7 +122,8 @@ public class LoginActivity extends AppCompatActivity
|
|||
finish();
|
||||
break;
|
||||
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:
|
||||
default:
|
||||
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:
|
||||
HelpFragment.displayHelp(getSupportFragmentManager(), R.raw.help_details);
|
||||
return true;
|
||||
case R.id.action_lincense_info:
|
||||
case R.id.action_license_info:
|
||||
LicensesFragment.displayLicensesFragment(getSupportFragmentManager());
|
||||
return true;
|
||||
case R.id.action_privacy_policy:
|
||||
PrivacyFragment.display(getSupportFragmentManager());
|
||||
return true;
|
||||
case R.id.action_testnet:
|
||||
try {
|
||||
LoginFragment loginFragment = (LoginFragment)
|
||||
|
|
|
@ -143,6 +143,7 @@ public class LoginFragment extends Fragment implements WalletInfoAdapter.OnInter
|
|||
fabKeyL = (RelativeLayout) view.findViewById(R.id.fabKeyL);
|
||||
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_close_screen = AnimationUtils.loadAnimation(getContext(), R.anim.fab_close_screen);
|
||||
fab_open = AnimationUtils.loadAnimation(getContext(), R.anim.fab_open);
|
||||
|
@ -208,6 +209,7 @@ public class LoginFragment extends Fragment implements WalletInfoAdapter.OnInter
|
|||
});
|
||||
|
||||
loadPrefs();
|
||||
|
||||
return view;
|
||||
}
|
||||
|
||||
|
@ -267,6 +269,11 @@ public class LoginFragment extends Fragment implements WalletInfoAdapter.OnInter
|
|||
filterList();
|
||||
adapter.setInfos(displayedList);
|
||||
adapter.notifyDataSetChanged();
|
||||
if (displayedList.isEmpty()) {
|
||||
fab.startAnimation(fab_pulse);
|
||||
} else {
|
||||
fab.clearAnimation();
|
||||
}
|
||||
}
|
||||
|
||||
private void showInfo(@NonNull String name) {
|
||||
|
@ -381,6 +388,7 @@ public class LoginFragment extends Fragment implements WalletInfoAdapter.OnInter
|
|||
private FrameLayout fabScreen;
|
||||
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_pulse;
|
||||
|
||||
public boolean isFabOpen() {
|
||||
return isFabOpen;
|
||||
|
|
|
@ -57,11 +57,8 @@ public class SendFragment extends Fragment {
|
|||
|
||||
private TextInputLayout etAddress;
|
||||
private TextInputLayout etPaymentId;
|
||||
//TextInputLayout etAmount;
|
||||
|
||||
private ExchangeView evAmount;
|
||||
private TextView tvAmountB;
|
||||
private Spinner sCurrencyA;
|
||||
private Spinner sCurrencyB;
|
||||
|
||||
private Button bScan;
|
||||
private Spinner sMixin;
|
||||
|
@ -102,9 +99,6 @@ public class SendFragment extends Fragment {
|
|||
etAddress = (TextInputLayout) view.findViewById(R.id.etAddress);
|
||||
etPaymentId = (TextInputLayout) view.findViewById(R.id.etPaymentId);
|
||||
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);
|
||||
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() {
|
||||
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
|
||||
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)) {
|
||||
evAmount.focus();
|
||||
} else {
|
||||
etDummy.requestFocus();
|
||||
Helper.hideKeyboard(getActivity());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -36,6 +36,7 @@ import android.util.Log;
|
|||
import android.view.MenuItem;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.m2049r.xmrwallet.dialog.DonationFragment;
|
||||
import com.m2049r.xmrwallet.layout.Toolbar;
|
||||
import com.m2049r.xmrwallet.model.PendingTransaction;
|
||||
import com.m2049r.xmrwallet.model.TransactionInfo;
|
||||
|
@ -154,7 +155,7 @@ public class WalletActivity extends AppCompatActivity implements WalletFragment.
|
|||
onWalletDetails();
|
||||
return true;
|
||||
case R.id.action_donate:
|
||||
onWalletDetails();
|
||||
DonationFragment.display(getSupportFragmentManager());
|
||||
return true;
|
||||
case R.id.action_share:
|
||||
onShareTxInfo();
|
||||
|
|
|
@ -305,17 +305,17 @@ public class WalletFragment extends Fragment
|
|||
long daemonHeight = activityCallback.getDaemonHeight();
|
||||
if (!wallet.isSynchronized()) {
|
||||
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) {
|
||||
firstBlock = wallet.getBlockChainHeight();
|
||||
}
|
||||
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;
|
||||
onProgress(x);
|
||||
ivSynced.setVisibility(View.GONE);
|
||||
} 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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
if (xmrAmount != null) {
|
||||
setCurrencyA(0);
|
||||
etAmount.getEditText().setText(xmrAmount);
|
||||
setXmr(xmrAmount);
|
||||
this.notXmrAmount = null;
|
||||
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() {
|
||||
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
|
||||
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:imeOptions="actionNext"
|
||||
android:inputType="textMultiLine"
|
||||
android:textAlignment="center" />
|
||||
android:textAlignment="textStart" />
|
||||
</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
|
||||
android:id="@+id/bScan"
|
||||
style="@style/MoneroText.Button"
|
||||
android:layout_width="56sp"
|
||||
android:layout_height="56sp"
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="48dp"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginStart="8sp"
|
||||
android:layout_marginStart="16sp"
|
||||
android:background="@drawable/ic_scan"
|
||||
android:text="@string/send_qr_hint" />
|
||||
</LinearLayout>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
android:id="@+id/fabScreen"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="#CCffffff"
|
||||
android:background="#eeffffff"
|
||||
android:visibility="invisible">
|
||||
|
||||
<RelativeLayout
|
||||
|
@ -16,7 +16,7 @@
|
|||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom|end"
|
||||
android:layout_marginBottom="224dp"
|
||||
android:layout_marginBottom="256dp"
|
||||
android:layout_marginEnd="16dp">
|
||||
|
||||
<TextView
|
||||
|
@ -48,7 +48,7 @@
|
|||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom|end"
|
||||
android:layout_marginBottom="176dp"
|
||||
android:layout_marginBottom="200dp"
|
||||
android:layout_marginEnd="16dp">
|
||||
|
||||
<TextView
|
||||
|
@ -80,7 +80,7 @@
|
|||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom|end"
|
||||
android:layout_marginBottom="128dp"
|
||||
android:layout_marginBottom="144dp"
|
||||
android:layout_marginEnd="16dp">
|
||||
|
||||
<TextView
|
||||
|
@ -112,7 +112,7 @@
|
|||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom|end"
|
||||
android:layout_marginBottom="80dp"
|
||||
android:layout_marginBottom="88dp"
|
||||
android:layout_marginEnd="16dp">
|
||||
|
||||
<TextView
|
||||
|
|
|
@ -10,10 +10,15 @@
|
|||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_lincense_info"
|
||||
android:icon="@drawable/ic_info_white_24dp"
|
||||
android:id="@+id/action_license_info"
|
||||
android:orderInCategory="200"
|
||||
android:title="@string/menu_about"
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_privacy_policy"
|
||||
android:orderInCategory="200"
|
||||
android:title="@string/menu_privacy"
|
||||
app:showAsAction="never" />
|
||||
|
||||
</menu>
|
|
@ -7,7 +7,7 @@
|
|||
android:icon="@drawable/ic_favorite_white_24dp"
|
||||
android:orderInCategory="10"
|
||||
android:title="@string/label_donate"
|
||||
app:showAsAction="always|withText" />
|
||||
app:showAsAction="ifRoom" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_info"
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
<h1>Open Source Licenses</h1>
|
||||
<h2>Licensed under the Apache License, Version 2.0</h2>
|
||||
<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>
|
||||
<ul>
|
||||
<li>com.android.support:design</li>
|
||||
|
|
|
@ -3,4 +3,59 @@
|
|||
<string name="about_title">About</string>
|
||||
<string name="about_close">Close</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>
|
|
@ -5,6 +5,7 @@
|
|||
|
||||
<string name="menu_testnet">Testnet</string>
|
||||
<string name="menu_about">About …</string>
|
||||
<string name="menu_privacy">Privacy Policy …</string>
|
||||
|
||||
<string name="menu_share">Share</string>
|
||||
<string name="menu_help">Help</string>
|
||||
|
@ -71,7 +72,7 @@
|
|||
|
||||
<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="title_amount">Amount</string>
|
||||
|
@ -89,9 +90,9 @@
|
|||
<string name="local_service_connected">monerujo Service Connected</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_syncing">Syncing:</string>
|
||||
<string name="status_syncing">Scanning:</string>
|
||||
|
||||
<string name="prompt_problems">Problems</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_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_viewkey_hint">View 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_restore_viewonly">Restore view-only wallet</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>
|
||||
|
|
|
@ -116,6 +116,12 @@
|
|||
<item name="android:textStyle">bold</item>
|
||||
</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">
|
||||
<item name="android:textSize">12sp</item>
|
||||
<item name="android:textColor">@color/moneroFab</item>
|
||||
|
@ -192,10 +198,12 @@
|
|||
</style>
|
||||
|
||||
<style name="MoneroButton.Take">
|
||||
<item name="android:textColor">@color/white</item>
|
||||
<item name="android:background">@color/take</item>
|
||||
</style>
|
||||
|
||||
<style name="MoneroButton.Give">
|
||||
<item name="android:textColor">@color/white</item>
|
||||
<item name="android:background">@color/give</item>
|
||||
</style>
|
||||
|
||||
|
|
Loading…
Reference in New Issue