This commit is contained in:
Javier Varona 2018-09-25 23:01:12 -04:00
commit d16f2d7378
15 changed files with 543 additions and 443 deletions

View file

@ -56,6 +56,14 @@ public class BackupSeedActivity extends AppCompatActivity {
accountSeedViewModel.loadSeed(seedId); accountSeedViewModel.loadSeed(seedId);
} else { } else {
/*
*
* The first time you create the account, the "seed" is showed propertly in this window,
* but when you want to check it again the "seed" does not exist anymore and
* for this cause the program gets into this point and finish the window
*
* */
finish(); finish();
} }
} }

View file

@ -7,7 +7,6 @@ import android.support.v7.app.AppCompatActivity;
import android.text.Editable; import android.text.Editable;
import android.widget.Button; import android.widget.Button;
import android.widget.EditText; import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import butterknife.BindView; import butterknife.BindView;
@ -15,20 +14,10 @@ import butterknife.ButterKnife;
import butterknife.OnClick; import butterknife.OnClick;
import butterknife.OnTextChanged; import butterknife.OnTextChanged;
import cy.agorise.crystalwallet.R; import cy.agorise.crystalwallet.R;
import cy.agorise.crystalwallet.enums.CryptoNet;
import cy.agorise.crystalwallet.enums.SeedType;
import cy.agorise.crystalwallet.manager.BitsharesAccountManager;
import cy.agorise.crystalwallet.models.AccountSeed;
import cy.agorise.crystalwallet.models.CryptoNetAccount;
import cy.agorise.crystalwallet.models.GrapheneAccount;
import cy.agorise.crystalwallet.models.GrapheneAccountInfo;
import cy.agorise.crystalwallet.requestmanagers.CryptoNetInfoRequestListener; import cy.agorise.crystalwallet.requestmanagers.CryptoNetInfoRequestListener;
import cy.agorise.crystalwallet.requestmanagers.CryptoNetInfoRequests; import cy.agorise.crystalwallet.requestmanagers.CryptoNetInfoRequests;
import cy.agorise.crystalwallet.requestmanagers.ImportBackupRequest;
import cy.agorise.crystalwallet.requestmanagers.ValidateImportBitsharesAccountRequest; import cy.agorise.crystalwallet.requestmanagers.ValidateImportBitsharesAccountRequest;
import cy.agorise.crystalwallet.viewmodels.AccountSeedViewModel; import cy.agorise.crystalwallet.viewmodels.AccountSeedViewModel;
import cy.agorise.crystalwallet.viewmodels.CryptoNetAccountViewModel;
import cy.agorise.crystalwallet.viewmodels.GrapheneAccountInfoViewModel;
import cy.agorise.crystalwallet.viewmodels.validators.ImportSeedValidator; import cy.agorise.crystalwallet.viewmodels.validators.ImportSeedValidator;
import cy.agorise.crystalwallet.viewmodels.validators.UIValidatorListener; import cy.agorise.crystalwallet.viewmodels.validators.UIValidatorListener;
import cy.agorise.crystalwallet.viewmodels.validators.validationfields.ValidationField; import cy.agorise.crystalwallet.viewmodels.validators.validationfields.ValidationField;
@ -40,23 +29,23 @@ public class ImportSeedActivity extends AppCompatActivity implements UIValidator
@BindView(R.id.etPin) @BindView(R.id.etPin)
EditText etPin; EditText etPin;
@BindView(R.id.tvPinError) //@BindView(R.id.tvPinError)
TextView tvPinError; //TextView tvPinError;
@BindView(R.id.etPinConfirmation) @BindView(R.id.etPinConfirmation)
EditText etPinConfirmation; EditText etPinConfirmation;
@BindView(R.id.tvPinConfirmationError) //@BindView(R.id.tvPinConfirmationError)
TextView tvPinConfirmationError; //TextView tvPinConfirmationError;
@BindView(R.id.etSeedWords) @BindView(R.id.etSeedWords)
EditText etSeedWords; EditText etSeedWords;
@BindView(R.id.tvSeedWordsError) //@BindView(R.id.tvSeedWordsError)
TextView tvSeedWordsError; //TextView tvSeedWordsError;
@BindView (R.id.etAccountName) @BindView (R.id.etAccountName)
EditText etAccountName; EditText etAccountName;
@BindView(R.id.tvAccountNameError) //@BindView(R.id.tvAccountNameError)
TextView tvAccountNameError; //TextView tvAccountNameError;
@BindView(R.id.btnImport) @BindView(R.id.btnImport)
Button btnImport; Button btnImport;
@ -183,13 +172,13 @@ public class ImportSeedActivity extends AppCompatActivity implements UIValidator
public void run() { public void run() {
if (field.getView() == etPin) { if (field.getView() == etPin) {
tvPinError.setText(""); //tvPinError.setText("");
} else if (field.getView() == etPinConfirmation){ } else if (field.getView() == etPinConfirmation){
tvPinConfirmationError.setText(""); //tvPinConfirmationError.setText("");
} else if (field.getView() == etAccountName){ } else if (field.getView() == etAccountName){
tvAccountNameError.setText(""); //tvAccountNameError.setText("");
} else if (field.getView() == etSeedWords){ } else if (field.getView() == etSeedWords){
tvSeedWordsError.setText(""); //tvSeedWordsError.setText("");
} }
if (activity.importSeedValidator.isValid()){ if (activity.importSeedValidator.isValid()){
@ -205,13 +194,13 @@ public class ImportSeedActivity extends AppCompatActivity implements UIValidator
@Override @Override
public void onValidationFailed(ValidationField field) { public void onValidationFailed(ValidationField field) {
if (field.getView() == etPin) { if (field.getView() == etPin) {
tvPinError.setText(field.getMessage()); //tvPinError.setText(field.getMessage());
} else if (field.getView() == etPinConfirmation){ } else if (field.getView() == etPinConfirmation){
tvPinConfirmationError.setText(field.getMessage()); //tvPinConfirmationError.setText(field.getMessage());
} else if (field.getView() == etAccountName){ } else if (field.getView() == etAccountName){
tvAccountNameError.setText(field.getMessage()); //tvAccountNameError.setText(field.getMessage());
} else if (field.getView() == etSeedWords){ } else if (field.getView() == etSeedWords){
tvSeedWordsError.setText(field.getMessage()); //tvSeedWordsError.setText(field.getMessage());
} }
} }
} }

View file

@ -29,11 +29,6 @@ public class LicenseActivity extends AppCompatActivity {
ButterKnife.bind(this); ButterKnife.bind(this);
// TODO check if license has been agreed
String html = getString(R.string.licence_html);
wvEULA.loadData(html, "text/html", "UTF-8");
db = CrystalDatabase.getAppDatabase(this.getApplicationContext()); db = CrystalDatabase.getAppDatabase(this.getApplicationContext());
int licenseVersion = getResources().getInteger(R.integer.license_version); int licenseVersion = getResources().getInteger(R.integer.license_version);
GeneralSetting generalSettingLastLicenseRead = db.generalSettingDao().getSettingByName(GeneralSetting.SETTING_LAST_LICENSE_READ); GeneralSetting generalSettingLastLicenseRead = db.generalSettingDao().getSettingByName(GeneralSetting.SETTING_LAST_LICENSE_READ);
@ -43,6 +38,14 @@ public class LicenseActivity extends AppCompatActivity {
startActivity(intent); startActivity(intent);
finish(); finish();
} }
else{
/*
* Load the licence only if it is necesarry
* */
String html = getString(R.string.licence_html);
wvEULA.loadData(html, "text/html", "UTF-8");
}
} }
@OnClick(R.id.btnAgree) @OnClick(R.id.btnAgree)

View file

@ -1,14 +1,21 @@
package cy.agorise.crystalwallet.fragments; package cy.agorise.crystalwallet.fragments;
import android.Manifest;
import android.arch.lifecycle.LiveData; import android.arch.lifecycle.LiveData;
import android.arch.lifecycle.Observer; import android.arch.lifecycle.Observer;
import android.content.Intent; import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.os.Environment; import android.os.Environment;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.support.v4.content.ContextCompat;
import android.text.Spannable; import android.text.Spannable;
import android.text.SpannableStringBuilder; import android.text.SpannableStringBuilder;
import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
@ -39,6 +46,11 @@ import cy.agorise.crystalwallet.requestmanagers.FileServiceRequests;
*/ */
public class BackupsSettingsFragment extends Fragment{ public class BackupsSettingsFragment extends Fragment{
private static final int PERMISSION_REQUEST_CODE = 1;
public BackupsSettingsFragment() { public BackupsSettingsFragment() {
// Required empty public constructor // Required empty public constructor
} }
@ -65,6 +77,7 @@ public class BackupsSettingsFragment extends Fragment{
@BindView(R.id.btnBinFile) @BindView(R.id.btnBinFile)
public Button btnBinFile; public Button btnBinFile;
@Override @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) { Bundle savedInstanceState) {
@ -92,12 +105,40 @@ public class BackupsSettingsFragment extends Fragment{
public void btnBrainOnClick(){ public void btnBrainOnClick(){
Intent intent = new Intent(getContext(), BackupSeedActivity.class); Intent intent = new Intent(getContext(), BackupSeedActivity.class);
intent. putExtra("SEED_ID","");
startActivity(intent); startActivity(intent);
} }
@OnClick(R.id.btnBinFile) @OnClick(R.id.btnBinFile)
public void makeBackupFile(){ public void makeBackupFile(){
/*
* Check for WRITE_EXTERNAL_STORAGE permission
* */
if (Build.VERSION.SDK_INT >= 23) {
if (checkPermission()) {
// Code for above or equal 23 API Oriented Device
// Your Permission granted already .Do next code
makeBackupfileAfterPermission();
} else {
requestPermission(); // Code for permission
}
}
else {
// Code for Below 23 API Oriented Device
// Do next code
makeBackupfileAfterPermission();
}
}
private void makeBackupfileAfterPermission(){
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
LiveData<GeneralSetting> generalSettingLD = CrystalDatabase.getAppDatabase(getContext()).generalSettingDao().getByName(GeneralSetting.SETTING_PASSWORD); LiveData<GeneralSetting> generalSettingLD = CrystalDatabase.getAppDatabase(getContext()).generalSettingDao().getByName(GeneralSetting.SETTING_PASSWORD);
@ -105,13 +146,13 @@ public class BackupsSettingsFragment extends Fragment{
generalSettingLD.observe(this, new Observer<GeneralSetting>() { generalSettingLD.observe(this, new Observer<GeneralSetting>() {
@Override @Override
public void onChanged(@Nullable GeneralSetting generalSetting) { public void onChanged(@Nullable GeneralSetting generalSetting) {
String password = ""; String password = "";
if (generalSetting != null) { if (generalSetting != null) {
password = generalSetting.getValue(); password = generalSetting.getValue();
} }
final CreateBackupRequest backupFileRequest = new CreateBackupRequest(getContext(), password); final CreateBackupRequest backupFileRequest = new CreateBackupRequest(getContext(), password);
backupFileRequest.setListener(new FileServiceRequestListener() { backupFileRequest.setListener(new FileServiceRequestListener() {
@Override @Override
public void onCarryOut() { public void onCarryOut() {
@ -132,4 +173,40 @@ public class BackupsSettingsFragment extends Fragment{
}); });
} }
} }
private boolean checkPermission() {
int result = ContextCompat.checkSelfPermission(getActivity(), android.Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (result == PackageManager.PERMISSION_GRANTED) {
return true;
} else {
return false;
}
}
private void requestPermission() {
if (ActivityCompat.shouldShowRequestPermissionRationale(getActivity(), android.Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
Toast.makeText(getActivity(), "Write External Storage permission allows us to do store images. Please allow this permission in App Settings.", Toast.LENGTH_LONG).show();
} else {
ActivityCompat.requestPermissions(getActivity(), new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, PERMISSION_REQUEST_CODE);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case PERMISSION_REQUEST_CODE:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Log.e("value", "Permission Granted, Now you can use local drive .");
} else {
Log.e("value", "Permission Denied, You cannot use local drive .");
makeBackupfileAfterPermission();
}
break;
}
}
} }

View file

@ -6,10 +6,12 @@ import android.arch.lifecycle.ViewModelProviders;
import android.content.Context; import android.content.Context;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.TextView;
import java.util.List; import java.util.List;
@ -27,6 +29,13 @@ public class BalanceFragment extends Fragment {
@BindView(R.id.vCryptoNetBalanceListView) @BindView(R.id.vCryptoNetBalanceListView)
CryptoNetBalanceListView vCryptoNetBalanceListView; CryptoNetBalanceListView vCryptoNetBalanceListView;
@BindView(R.id.tvNobalances)
public TextView tvNobalances;
public BalanceFragment() { public BalanceFragment() {
// Required empty public constructor // Required empty public constructor
} }
@ -60,6 +69,14 @@ public class BalanceFragment extends Fragment {
@Override @Override
public void onChanged(List<CryptoNetBalance> cryptoNetBalances) { public void onChanged(List<CryptoNetBalance> cryptoNetBalances) {
vCryptoNetBalanceListView.setData(cryptoNetBalances, fragment); vCryptoNetBalanceListView.setData(cryptoNetBalances, fragment);
final int size = cryptoNetBalances.size();
if(size==1){
tvNobalances.setVisibility(View.VISIBLE);
}
else{
tvNobalances.setVisibility(View.INVISIBLE);
}
} }
}); });

View file

@ -14,6 +14,7 @@ import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.TextView;
import butterknife.BindView; import butterknife.BindView;
import butterknife.ButterKnife; import butterknife.ButterKnife;
@ -27,6 +28,9 @@ public class ContactsFragment extends Fragment {
@BindView(R.id.rvContacts) @BindView(R.id.rvContacts)
RecyclerView rvContacts; RecyclerView rvContacts;
@BindView(R.id.tvNobalances)
public TextView tvNobalances;
ContactListAdapter adapter; ContactListAdapter adapter;
FloatingActionButton fabAddContact; FloatingActionButton fabAddContact;
@ -86,6 +90,14 @@ public class ContactsFragment extends Fragment {
@Override @Override
public void onChanged(@Nullable PagedList<Contact> contacts) { public void onChanged(@Nullable PagedList<Contact> contacts) {
adapter.submitList(contacts); adapter.submitList(contacts);
final int size = contacts.size();
if(size==0){
tvNobalances.setVisibility(View.VISIBLE);
}
else{
tvNobalances.setVisibility(View.INVISIBLE);
}
} }
}); });

View file

@ -99,8 +99,8 @@ public class SendTransactionFragment extends DialogFragment implements UIValidat
Spinner spAsset; Spinner spAsset;
@BindView(R.id.tvAssetError) @BindView(R.id.tvAssetError)
TextView tvAssetError; TextView tvAssetError;
@BindView(R.id.scrollMain) //@BindView(R.id.scrollMain)
ScrollView scrollMain; //ScrollView scrollMain;
@BindView(R.id.etAmount) @BindView(R.id.etAmount)
EditText etAmount; EditText etAmount;
@BindView(R.id.tvAmountError) @BindView(R.id.tvAmountError)
@ -172,7 +172,7 @@ public class SendTransactionFragment extends DialogFragment implements UIValidat
/* /*
* Detet scroll changes * Detet scroll changes
* */ * */
scrollMain.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() { /*scrollMain.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
@Override @Override
public void onScrollChanged() { public void onScrollChanged() {
@ -211,7 +211,7 @@ public class SendTransactionFragment extends DialogFragment implements UIValidat
viewSend.animate().y(600); viewSend.animate().y(600);
} }
} }
}); });*/
this.cryptoNetAccountId = getArguments().getLong("CRYPTO_NET_ACCOUNT_ID",-1); this.cryptoNetAccountId = getArguments().getLong("CRYPTO_NET_ACCOUNT_ID",-1);

View file

@ -17,6 +17,7 @@ import android.view.ViewGroup;
import android.widget.AdapterView; import android.widget.AdapterView;
import android.widget.EditText; import android.widget.EditText;
import android.widget.Spinner; import android.widget.Spinner;
import android.widget.TextView;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -42,6 +43,9 @@ public class TransactionsFragment extends Fragment {
@BindView(R.id.etTransactionSearch) @BindView(R.id.etTransactionSearch)
EditText etTransactionSearch; EditText etTransactionSearch;
@BindView(R.id.tvNobalances)
public TextView tvNobalances;
RecyclerView balanceRecyclerView; RecyclerView balanceRecyclerView;
FloatingActionButton fabSend; FloatingActionButton fabSend;
FloatingActionButton fabReceive; FloatingActionButton fabReceive;
@ -125,6 +129,14 @@ public class TransactionsFragment extends Fragment {
public void onChanged(@Nullable PagedList<CryptoCoinTransactionExtended> cryptoCoinTransactions) { public void onChanged(@Nullable PagedList<CryptoCoinTransactionExtended> cryptoCoinTransactions) {
Log.i("Transactions","Transactions have change! Count:"+cryptoCoinTransactions.size()); Log.i("Transactions","Transactions have change! Count:"+cryptoCoinTransactions.size());
transactionListView.setData(cryptoCoinTransactions, fragment); transactionListView.setData(cryptoCoinTransactions, fragment);
final int size = cryptoCoinTransactions.size();
if(size==0){
tvNobalances.setVisibility(View.VISIBLE);
}
else{
tvNobalances.setVisibility(View.INVISIBLE);
}
} }
}); });
} }

View file

@ -4,14 +4,15 @@
android:layout_height="match_parent" android:layout_height="match_parent"
tools:context="cy.agorise.crystalwallet.fragments.BalanceFragment"> tools:context="cy.agorise.crystalwallet.fragments.BalanceFragment">
<!--<android.support.design.widget.TabLayout <TextView
android:id="@+id/tabLayout" android:id="@+id/tvNobalances"
android:layout_gravity="start" android:layout_width="wrap_content"
android:layout_width="match_parent" android:layout_height="wrap_content"
android:layout_height="45dp" android:text="@string/You_dont_have_balances"
android:background="#d9d9d9" android:textColor="@color/gray"
android:animateLayoutChanges="true" />--> android:layout_marginTop="190dp"
android:layout_marginLeft="90dp"
android:textSize="15dp" />
<cy.agorise.crystalwallet.views.CryptoNetBalanceListView <cy.agorise.crystalwallet.views.CryptoNetBalanceListView
android:layout_width="match_parent" android:layout_width="match_parent"

View file

@ -4,6 +4,16 @@
android:layout_height="match_parent" android:layout_height="match_parent"
tools:context="cy.agorise.crystalwallet.fragments.ContactsFragment"> tools:context="cy.agorise.crystalwallet.fragments.ContactsFragment">
<TextView
android:id="@+id/tvNobalances"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/You_dont_have_contacts"
android:textColor="@color/gray"
android:layout_marginTop="190dp"
android:layout_marginLeft="90dp"
android:textSize="15dp" />
<android.support.v7.widget.RecyclerView <android.support.v7.widget.RecyclerView
android:id="@+id/rvContacts" android:id="@+id/rvContacts"
android:layout_width="match_parent" android:layout_width="match_parent"

View file

@ -7,8 +7,10 @@
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="Comming soon" android:text="Comming soon ..."
android:layout_centerInParent="true" android:textColor="@color/gray"
android:textSize="20dp" /> android:layout_centerHorizontal="true"
android:layout_marginTop="190dp"
android:textSize="15dp" />
</RelativeLayout> </RelativeLayout>

View file

@ -4,6 +4,16 @@
android:layout_height="match_parent" android:layout_height="match_parent"
tools:context="cy.agorise.crystalwallet.fragments.TransactionsFragment"> tools:context="cy.agorise.crystalwallet.fragments.TransactionsFragment">
<TextView
android:id="@+id/tvNobalances"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/You_dont_have_transactions"
android:textColor="@color/gray"
android:layout_marginTop="190dp"
android:layout_marginLeft="90dp"
android:textSize="15dp" />
<cy.agorise.crystalwallet.views.TransactionListView <cy.agorise.crystalwallet.views.TransactionListView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"

View file

@ -1,160 +1,129 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout <RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android" 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" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical" tools:context=".activities.CreateSeedActivity">
tools:context=".activities.ImportSeedActivity">
<EditText <RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true">
<android.support.design.widget.TextInputLayout
android:id="@+id/tilPin"
android:layout_width="290dp"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true">
<cy.agorise.crystalwallet.views.natives.CustomTextInputEditText
android:id="@+id/etPin" android:id="@+id/etPin"
android:layout_below="@+id/statusBar"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_marginLeft="@dimen/activity_horizontal_margin"
android:layout_marginRight="@dimen/activity_horizontal_margin"
android:layout_marginTop="20dp"
android:background="@drawable/edittext_bg"
android:inputType="number"
android:maxLines="1"
android:hint="@string/txt_6_digits_pin"
android:textColor="@color/black" />
<TextView
android:id="@+id/tvPinError"
android:layout_below="@+id/etPin"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/activity_horizontal_margin" android:hint="@string/txt_6_digits_pin"
android:layout_marginRight="@dimen/activity_horizontal_margin" android:inputType="number"
android:layout_marginTop="10dp" android:maxLength="32"
android:textColor="@color/red" android:singleLine="true" />
android:textStyle="bold" />
<EditText </android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:id="@+id/tilPinConfirmation"
android:layout_width="290dp"
android:layout_height="wrap_content"
android:layout_below="@+id/tilPin"
android:layout_marginTop="8dp"
android:layout_centerHorizontal="true">
<cy.agorise.crystalwallet.views.natives.CustomTextInputEditText
android:id="@+id/etPinConfirmation" android:id="@+id/etPinConfirmation"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_below="@+id/tvPinError"
android:layout_marginLeft="@dimen/activity_horizontal_margin"
android:layout_marginRight="@dimen/activity_horizontal_margin"
android:background="@drawable/edittext_bg"
android:inputType="number"
android:maxLines="1"
android:hint="@string/txt_6_digits_pin_confirm"
android:singleLine="true"
android:textColor="@color/black" />
<TextView
android:id="@+id/tvPinConfirmationError"
android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/activity_horizontal_margin" android:hint="@string/txt_6_digits_pin_confirm"
android:layout_marginRight="@dimen/activity_horizontal_margin" android:inputType="number"
android:layout_marginTop="10dp" android:maxLength="32"
android:textColor="@color/red" android:singleLine="true" />
android:layout_below="@+id/etPinConfirmation"
android:textStyle="bold" />
<EditText </android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:id="@+id/etSeedWordsLayout"
android:layout_width="290dp"
android:layout_height="wrap_content"
android:layout_below="@+id/tilPinConfirmation"
android:layout_marginTop="8dp"
android:layout_centerHorizontal="true">
<cy.agorise.crystalwallet.views.natives.CustomTextInputEditText
android:id="@+id/etSeedWords" android:id="@+id/etSeedWords"
android:layout_below="@+id/tvPinConfirmationError"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="120dp" android:layout_height="120dp"
android:layout_marginLeft="@dimen/activity_horizontal_margin"
android:layout_marginRight="@dimen/activity_horizontal_margin"
android:background="@drawable/edittext_bg"
android:gravity="top"
android:hint="@string/Seed" android:hint="@string/Seed"
android:inputType="textMultiLine" android:inputType="textMultiLine" />
android:textColor="@color/black" />
<TextView </android.support.design.widget.TextInputLayout>
android:id="@+id/tvSeedWordsError"
android:layout_below="@+id/etSeedWords" <android.support.design.widget.TextInputLayout
android:layout_width="match_parent" android:id="@+id/tilAccountName"
android:layout_width="290dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/activity_horizontal_margin" android:layout_below="@+id/etSeedWordsLayout"
android:layout_marginRight="@dimen/activity_horizontal_margin" android:layout_marginTop="8dp"
android:layout_marginTop="10dp" android:layout_centerHorizontal="true">
android:textColor="@color/red"
android:textStyle="bold" />
<EditText <cy.agorise.crystalwallet.views.natives.CustomTextInputEditText
android:id="@+id/etAccountName" android:id="@+id/etAccountName"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_below="@+id/tvSeedWordsError" android:digits="abcdefghijklmnopqrstuvwxyz1234567890 -"
android:layout_marginLeft="@dimen/activity_horizontal_margin"
android:layout_marginRight="@dimen/activity_horizontal_margin"
android:background="@drawable/edittext_bg"
android:gravity="top"
android:hint="@string/txt_account_name" android:hint="@string/txt_account_name"
android:inputType="textMultiLine" android:inputType="textMultiLine"
android:textColor="@color/black" /> android:maxLength="255"
android:singleLine="true" />
<TextView </android.support.design.widget.TextInputLayout>
android:id="@+id/tvAccountNameError"
android:layout_width="match_parent"
android:layout_below="@+id/etAccountName"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/activity_horizontal_margin"
android:layout_marginRight="@dimen/activity_horizontal_margin"
android:layout_marginTop="10dp"
android:textColor="@color/red"
android:textStyle="bold" />
<TextView
android:id="@+id/txtLeyend"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/tvAccountNameError"
android:layout_marginLeft="@dimen/activity_horizontal_margin"
android:layout_marginRight="@dimen/activity_horizontal_margin"
android:layout_marginTop="10dp"
android:text="@string/txt_brain_key_info"
android:textSize="15dp"
android:visibility="gone" />
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:id="@+id/linearlayoutButtons"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_below="@+id/txtLeyend" android:layout_below="@+id/tilAccountName"
android:layout_marginLeft="@dimen/activity_horizontal_margin" android:layout_marginTop="20dp">
android:layout_marginRight="@dimen/activity_horizontal_margin"
android:layout_marginTop="10dp"
android:gravity="center"
android:orientation="horizontal">
<Button <Button
android:id="@+id/btnCancel" android:id="@+id/btnCancel"
android:layout_width="140dp" android:layout_width="140dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_gravity="center"
android:layout_margin="10dp" android:layout_marginRight="5dp"
android:background="@color/redColor" android:background="@color/redColor"
android:text="@string/cancel" android:text="@string/cancel"
android:textColor="@color/white" /> android:textColor="@color/white"
android:textStyle="bold" />
<Button <Button
android:id="@+id/btnImport" android:id="@+id/btnImport"
android:layout_width="wrap_content" android:layout_width="140dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_gravity="center"
android:layout_margin="10dp" android:layout_marginLeft="5dp"
android:background="@color/colorPrimary" android:background="@color/colorPrimary"
android:padding="10dp"
android:text="@string/create_wallet" android:text="@string/create_wallet"
android:textColor="@color/white" /> android:textColor="@color/white"
android:textStyle="bold" />
</LinearLayout> </LinearLayout>
</RelativeLayout>
<cy.agorise.crystalwallet.util.BottomStatusBar <cy.agorise.crystalwallet.util.BottomStatusBar
android:id="@+id/bottomStatusBar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="bottom" android:layout_alignParentBottom="true"/>
android:id="@+id/statusBar"/>
</RelativeLayout> </RelativeLayout>

View file

@ -1,19 +1,10 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout <ScrollView
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:theme="@style/ActivityDialog">
<ScrollView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_margin="20dp" android:background="@color/white">
android:background="@color/white"
android:id="@+id/scrollMain">
<android.support.constraint.ConstraintLayout <android.support.constraint.ConstraintLayout
android:layout_width="match_parent" android:layout_width="match_parent"
@ -23,10 +14,12 @@
<View <View
android:id="@+id/topView" android:id="@+id/topView"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="119dp"
android:background="@drawable/send_transaction_top_view" android:background="@drawable/send_transaction_top_view"
android:layout_height="120dp"
android:layout_marginEnd="0dp"
android:layout_marginStart="0dp"
android:layout_marginTop="0dp"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
@ -83,7 +76,6 @@
android:inputType="text" android:inputType="text"
android:textSize="20sp" android:textSize="20sp"
android:hint="@string/to_capital" android:hint="@string/to_capital"
android:maxLength="255"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/gravatar" /> app:layout_constraintTop_toBottomOf="@+id/gravatar" />
@ -194,7 +186,7 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvMemoError" /> app:layout_constraintTop_toBottomOf="@id/tvMemoError" />
<me.dm7.barcodescanner.zxing.ZXingScannerView <ImageView
android:id="@+id/ivCamera" android:id="@+id/ivCamera"
android:layout_width="180dp" android:layout_width="180dp"
android:layout_height="180dp" android:layout_height="180dp"
@ -218,6 +210,25 @@
app:layout_constraintBottom_toBottomOf="@+id/ivCamera" app:layout_constraintBottom_toBottomOf="@+id/ivCamera"
app:layout_constraintStart_toStartOf="@+id/ivCamera" /> app:layout_constraintStart_toStartOf="@+id/ivCamera" />
<View
android:id="@+id/viewSend"
android:layout_width="120dp"
android:layout_height="140dp"
android:layout_marginEnd="0dp"
android:background="@drawable/send_transaction_send_view"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/ivCamera" />
<android.support.design.widget.FloatingActionButton
android:id="@+id/btnSend"
android:layout_width="90dp"
android:layout_height="90dp"
android:layout_marginTop="24dp"
app:backgroundTint="@color/send_strong_orange"
app:srcCompat="@drawable/ic_arrow_forward"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/viewSend" />
<LinearLayout <LinearLayout
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -239,33 +250,6 @@
</LinearLayout> </LinearLayout>
</android.support.constraint.ConstraintLayout> </android.support.constraint.ConstraintLayout>
</ScrollView> </ScrollView>
<View
android:id="@+id/viewSend"
android:layout_width="120dp"
android:layout_height="140dp"
android:layout_alignParentEnd="true"
android:layout_alignParentTop="true"
android:layout_marginTop="400dp"
android:background="@drawable/send_transaction_send_view" />
<android.support.design.widget.FloatingActionButton
android:id="@+id/btnSend"
android:layout_width="90dp"
android:scaleX="1.7"
android:scaleY="1.7"
app:fabSize="normal"
android:layout_height="90dp"
android:layout_alignParentEnd="true"
android:layout_alignParentTop="true"
android:layout_marginRight="30dp"
android:layout_marginTop="441dp"
android:scaleType="center"
app:backgroundTint="@color/send_strong_orange"
app:srcCompat="@drawable/ic_arrow_forward"/>
</RelativeLayout>

View file

@ -14,6 +14,10 @@
<string name="error_wif">Error creating WIF key</string> <string name="error_wif">Error creating WIF key</string>
<string name="error_brainkey_wif_export">WIF imported account doesn\'t support brainkey backup</string> <string name="error_brainkey_wif_export">WIF imported account doesn\'t support brainkey backup</string>
<string name="You_dont_have_balances">You dont have balances</string>
<string name="You_dont_have_transactions">You dont have transactions</string>
<string name="You_dont_have_contacts">You dont have contacts</string>
<string name="account_create_register_or_import">ACCOUNT CREATE/REGISTER OR IMPORT</string> <string name="account_create_register_or_import">ACCOUNT CREATE/REGISTER OR IMPORT</string>
<string name="txt_account_name">Account Name</string> <string name="txt_account_name">Account Name</string>
<string name="time_stamp">Time stamp</string> <string name="time_stamp">Time stamp</string>
@ -75,6 +79,8 @@
<string name="save">SAVE</string> <string name="save">SAVE</string>
<string name="next">NEXT</string> <string name="next">NEXT</string>
<string name="ASK_PERMISSION">A permission need to be granted before to continue</string>
<string name="please_enter_brainkey">Please enter brainkey</string> <string name="please_enter_brainkey">Please enter brainkey</string>
<string name="please_enter_correct_brainkey">Please enter correct brainkey</string> <string name="please_enter_correct_brainkey">Please enter correct brainkey</string>
<string name="balances">Balances</string> <string name="balances">Balances</string>