Merge branch 'develop'

feat_androidx_migration
hvarona 2018-09-27 22:34:40 -04:00
commit 14c307ccbc
15 changed files with 543 additions and 443 deletions

View File

@ -56,6 +56,14 @@ public class BackupSeedActivity extends AppCompatActivity {
accountSeedViewModel.loadSeed(seedId);
} 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();
}
}

View File

@ -7,7 +7,6 @@ import android.support.v7.app.AppCompatActivity;
import android.text.Editable;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import butterknife.BindView;
@ -15,20 +14,10 @@ import butterknife.ButterKnife;
import butterknife.OnClick;
import butterknife.OnTextChanged;
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.CryptoNetInfoRequests;
import cy.agorise.crystalwallet.requestmanagers.ImportBackupRequest;
import cy.agorise.crystalwallet.requestmanagers.ValidateImportBitsharesAccountRequest;
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.UIValidatorListener;
import cy.agorise.crystalwallet.viewmodels.validators.validationfields.ValidationField;
@ -40,23 +29,23 @@ public class ImportSeedActivity extends AppCompatActivity implements UIValidator
@BindView(R.id.etPin)
EditText etPin;
@BindView(R.id.tvPinError)
TextView tvPinError;
//@BindView(R.id.tvPinError)
//TextView tvPinError;
@BindView(R.id.etPinConfirmation)
EditText etPinConfirmation;
@BindView(R.id.tvPinConfirmationError)
TextView tvPinConfirmationError;
//@BindView(R.id.tvPinConfirmationError)
//TextView tvPinConfirmationError;
@BindView(R.id.etSeedWords)
EditText etSeedWords;
@BindView(R.id.tvSeedWordsError)
TextView tvSeedWordsError;
//@BindView(R.id.tvSeedWordsError)
//TextView tvSeedWordsError;
@BindView (R.id.etAccountName)
EditText etAccountName;
@BindView(R.id.tvAccountNameError)
TextView tvAccountNameError;
//@BindView(R.id.tvAccountNameError)
//TextView tvAccountNameError;
@BindView(R.id.btnImport)
Button btnImport;
@ -183,13 +172,13 @@ public class ImportSeedActivity extends AppCompatActivity implements UIValidator
public void run() {
if (field.getView() == etPin) {
tvPinError.setText("");
//tvPinError.setText("");
} else if (field.getView() == etPinConfirmation){
tvPinConfirmationError.setText("");
//tvPinConfirmationError.setText("");
} else if (field.getView() == etAccountName){
tvAccountNameError.setText("");
//tvAccountNameError.setText("");
} else if (field.getView() == etSeedWords){
tvSeedWordsError.setText("");
//tvSeedWordsError.setText("");
}
if (activity.importSeedValidator.isValid()){
@ -205,13 +194,13 @@ public class ImportSeedActivity extends AppCompatActivity implements UIValidator
@Override
public void onValidationFailed(ValidationField field) {
if (field.getView() == etPin) {
tvPinError.setText(field.getMessage());
//tvPinError.setText(field.getMessage());
} else if (field.getView() == etPinConfirmation){
tvPinConfirmationError.setText(field.getMessage());
//tvPinConfirmationError.setText(field.getMessage());
} else if (field.getView() == etAccountName){
tvAccountNameError.setText(field.getMessage());
//tvAccountNameError.setText(field.getMessage());
} 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);
// 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());
int licenseVersion = getResources().getInteger(R.integer.license_version);
GeneralSetting generalSettingLastLicenseRead = db.generalSettingDao().getSettingByName(GeneralSetting.SETTING_LAST_LICENSE_READ);
@ -43,6 +38,14 @@ public class LicenseActivity extends AppCompatActivity {
startActivity(intent);
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)

View File

@ -1,14 +1,21 @@
package cy.agorise.crystalwallet.fragments;
import android.Manifest;
import android.arch.lifecycle.LiveData;
import android.arch.lifecycle.Observer;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.Fragment;
import android.support.v4.content.ContextCompat;
import android.text.Spannable;
import android.text.SpannableStringBuilder;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@ -39,6 +46,11 @@ import cy.agorise.crystalwallet.requestmanagers.FileServiceRequests;
*/
public class BackupsSettingsFragment extends Fragment{
private static final int PERMISSION_REQUEST_CODE = 1;
public BackupsSettingsFragment() {
// Required empty public constructor
}
@ -65,6 +77,7 @@ public class BackupsSettingsFragment extends Fragment{
@BindView(R.id.btnBinFile)
public Button btnBinFile;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
@ -92,12 +105,40 @@ public class BackupsSettingsFragment extends Fragment{
public void btnBrainOnClick(){
Intent intent = new Intent(getContext(), BackupSeedActivity.class);
intent. putExtra("SEED_ID","");
startActivity(intent);
}
@OnClick(R.id.btnBinFile)
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)) {
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>() {
@Override
public void onChanged(@Nullable GeneralSetting generalSetting) {
String password = "";
if (generalSetting != null) {
password = generalSetting.getValue();
}
final CreateBackupRequest backupFileRequest = new CreateBackupRequest(getContext(), password);
backupFileRequest.setListener(new FileServiceRequestListener() {
@Override
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.net.Uri;
import android.os.Bundle;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import java.util.List;
@ -27,6 +29,13 @@ public class BalanceFragment extends Fragment {
@BindView(R.id.vCryptoNetBalanceListView)
CryptoNetBalanceListView vCryptoNetBalanceListView;
@BindView(R.id.tvNobalances)
public TextView tvNobalances;
public BalanceFragment() {
// Required empty public constructor
}
@ -60,6 +69,14 @@ public class BalanceFragment extends Fragment {
@Override
public void onChanged(List<CryptoNetBalance> cryptoNetBalances) {
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.View;
import android.view.ViewGroup;
import android.widget.TextView;
import butterknife.BindView;
import butterknife.ButterKnife;
@ -27,6 +28,9 @@ public class ContactsFragment extends Fragment {
@BindView(R.id.rvContacts)
RecyclerView rvContacts;
@BindView(R.id.tvNobalances)
public TextView tvNobalances;
ContactListAdapter adapter;
FloatingActionButton fabAddContact;
@ -86,6 +90,14 @@ public class ContactsFragment extends Fragment {
@Override
public void onChanged(@Nullable PagedList<Contact> contacts) {
adapter.submitList(contacts);
final int size = contacts.size();
if(size==0){
tvNobalances.setVisibility(View.VISIBLE);
}
else{
tvNobalances.setVisibility(View.INVISIBLE);
}
}
});

View File

@ -97,8 +97,8 @@ public class SendTransactionFragment extends DialogFragment implements UIValidat
Spinner spAsset;
@BindView(R.id.tvAssetError)
TextView tvAssetError;
@BindView(R.id.scrollMain)
ScrollView scrollMain;
//@BindView(R.id.scrollMain)
//ScrollView scrollMain;
@BindView(R.id.etAmount)
EditText etAmount;
@BindView(R.id.tvAmountError)
@ -167,7 +167,7 @@ public class SendTransactionFragment extends DialogFragment implements UIValidat
/*
* Detet scroll changes
* */
scrollMain.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
/*scrollMain.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
@Override
public void onScrollChanged() {
@ -206,7 +206,7 @@ public class SendTransactionFragment extends DialogFragment implements UIValidat
viewSend.animate().y(600);
}
}
});
});*/
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.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
@ -42,6 +43,9 @@ public class TransactionsFragment extends Fragment {
@BindView(R.id.etTransactionSearch)
EditText etTransactionSearch;
@BindView(R.id.tvNobalances)
public TextView tvNobalances;
RecyclerView balanceRecyclerView;
FloatingActionButton fabSend;
FloatingActionButton fabReceive;
@ -125,6 +129,14 @@ public class TransactionsFragment extends Fragment {
public void onChanged(@Nullable PagedList<CryptoCoinTransactionExtended> cryptoCoinTransactions) {
Log.i("Transactions","Transactions have change! Count:"+cryptoCoinTransactions.size());
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"
tools:context="cy.agorise.crystalwallet.fragments.BalanceFragment">
<!--<android.support.design.widget.TabLayout
android:id="@+id/tabLayout"
android:layout_gravity="start"
android:layout_width="match_parent"
android:layout_height="45dp"
android:background="#d9d9d9"
android:animateLayoutChanges="true" />-->
<TextView
android:id="@+id/tvNobalances"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/You_dont_have_balances"
android:textColor="@color/gray"
android:layout_marginTop="190dp"
android:layout_marginLeft="90dp"
android:textSize="15dp" />
<cy.agorise.crystalwallet.views.CryptoNetBalanceListView
android:layout_width="match_parent"

View File

@ -4,6 +4,16 @@
android:layout_height="match_parent"
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:id="@+id/rvContacts"
android:layout_width="match_parent"

View File

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

View File

@ -4,6 +4,16 @@
android:layout_height="match_parent"
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
android:layout_width="match_parent"
android:layout_height="wrap_content"

View File

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

View File

@ -1,271 +1,255 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:theme="@style/ActivityDialog">
android:layout_height="wrap_content"
android:background="@color/white">
<ScrollView
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:background="@color/white"
android:id="@+id/scrollMain">
android:paddingBottom="24dp">
<android.support.constraint.ConstraintLayout
<View
android:id="@+id/topView"
android:layout_width="match_parent"
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_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="24dp">
android:layout_marginStart="24dp"
android:layout_marginTop="24dp"
android:text="@string/title_capital"
android:textColor="@color/white"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/topView"
android:layout_width="match_parent"
android:layout_height="119dp"
android:background="@drawable/send_transaction_top_view"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<cy.agorise.crystalwallet.util.CircularImageView
android:id="@+id/gravatar"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_marginStart="32dp"
android:layout_marginTop="90dp"
android:src="@drawable/avatar_placeholder"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.jaredrummler.materialspinner.MaterialSpinner
android:id="@+id/spFrom"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_marginEnd="24dp"
android:layout_marginStart="16dp"
android:textColor="@color/white"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/gravatar"
app:layout_constraintBottom_toBottomOf="@+id/topView"/>
<TextView
android:id="@+id/tvFromError"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textColor="@color/red"
app:layout_constraintEnd_toEndOf="@+id/spFrom"
app:layout_constraintStart_toStartOf="@+id/spFrom"
app:layout_constraintTop_toBottomOf="@+id/topView" />
<EditText
android:id="@+id/etTo"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="24dp"
android:layout_marginStart="24dp"
android:layout_marginTop="24dp"
android:gravity="top"
android:inputType="text"
android:textSize="20sp"
android:hint="@string/to_capital"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/gravatar" />
<ImageView
android:id="@+id/ivPeople"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginEnd="5dp"
app:srcCompat="@drawable/ic_people"
android:layout_marginBottom="15dp"
app:layout_constraintEnd_toEndOf="@id/etTo"
app:layout_constraintBottom_toBottomOf="@id/etTo"
android:contentDescription="@string/people_icon" />
<TextView
android:id="@+id/tvToError"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textColor="@color/red"
app:layout_constraintEnd_toEndOf="@+id/etTo"
app:layout_constraintStart_toStartOf="@+id/etTo"
app:layout_constraintTop_toBottomOf="@+id/etTo" />
<EditText
android:id="@+id/etAmount"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginStart="24dp"
android:inputType="numberDecimal"
android:textSize="20sp"
android:hint="@string/amount"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tvToError" />
<TextView
android:id="@+id/tvAmountError"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textColor="@color/red"
app:layout_constraintEnd_toEndOf="@+id/etAmount"
app:layout_constraintStart_toStartOf="@+id/etAmount"
app:layout_constraintTop_toBottomOf="@+id/etAmount" />
<Spinner
android:id="@+id/spAsset"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_marginEnd="24dp"
android:layout_marginTop="8dp"
android:gravity="top"
android:inputType="textMultiLine"
android:textColor="@color/white"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/etAmount" />
<View
android:id="@+id/viewSpinner"
android:layout_width="0dp"
android:layout_height="1dp"
android:layout_marginBottom="7dp"
android:background="@color/darkGray"
app:layout_constraintEnd_toEndOf="@+id/spAsset"
app:layout_constraintStart_toStartOf="@+id/spAsset"
app:layout_constraintBottom_toBottomOf="@id/etAmount" />
<TextView
android:id="@+id/tvAssetError"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textColor="@color/red"
app:layout_constraintBottom_toBottomOf="@+id/tvAmountError"
app:layout_constraintEnd_toEndOf="@+id/spAsset"
app:layout_constraintStart_toStartOf="@+id/spAsset" />
<EditText
android:id="@+id/etMemo"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="24dp"
android:layout_marginStart="24dp"
android:layout_marginTop="8dp"
android:inputType="textMultiLine"
android:hint="@string/memo_capital"
android:textSize="20sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tvAmountError" />
<TextView
android:id="@+id/tvMemoError"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textColor="@color/red"
app:layout_constraintEnd_toEndOf="@+id/etMemo"
app:layout_constraintStart_toStartOf="@+id/etMemo"
app:layout_constraintTop_toBottomOf="@+id/etMemo" />
<TextView
android:id="@+id/tvScan"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:layout_marginStart="24dp"
android:text="@string/scan_capital"
android:textSize="14sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvMemoError" />
<ImageView
android:id="@+id/ivCamera"
android:layout_width="180dp"
android:layout_height="180dp"
android:layout_marginBottom="24dp"
android:layout_marginStart="24dp"
android:layout_marginTop="8dp"
android:src="#666"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvScan"
android:contentDescription="@string/camera_feed_to_scan_qr" />
<android.support.design.widget.FloatingActionButton
android:id="@+id/fabCloseCamera"
android:layout_width="30dp"
android:layout_height="30dp"
app:fabSize="mini"
android:layout_marginBottom="165dp"
android:layout_marginStart="165dp"
app:backgroundTint="@color/send_strong_orange"
app:srcCompat="@drawable/ic_close"
app:layout_constraintBottom_toBottomOf="@+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
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="600dp"
android:layout_marginEnd="24dp"
android:layout_marginTop="20dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:padding="5dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginTop="24dp"
android:text="@string/title_capital"
android:textColor="@color/white"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
android:id="@+id/btnCancel"
android:layout_width="20dp"
android:layout_height="26dp"
android:background="@drawable/ic_close"
android:text=""
android:textSize="18sp"
android:textStyle="bold" />
<cy.agorise.crystalwallet.util.CircularImageView
android:id="@+id/gravatar"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_marginStart="32dp"
android:layout_marginTop="90dp"
android:src="@drawable/avatar_placeholder"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</LinearLayout>
<com.jaredrummler.materialspinner.MaterialSpinner
android:id="@+id/spFrom"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_marginEnd="24dp"
android:layout_marginStart="16dp"
android:textColor="@color/white"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/gravatar"
app:layout_constraintBottom_toBottomOf="@+id/topView"/>
</android.support.constraint.ConstraintLayout>
<TextView
android:id="@+id/tvFromError"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textColor="@color/red"
app:layout_constraintEnd_toEndOf="@+id/spFrom"
app:layout_constraintStart_toStartOf="@+id/spFrom"
app:layout_constraintTop_toBottomOf="@+id/topView" />
<EditText
android:id="@+id/etTo"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="24dp"
android:layout_marginStart="24dp"
android:layout_marginTop="24dp"
android:gravity="top"
android:inputType="text"
android:textSize="20sp"
android:hint="@string/to_capital"
android:maxLength="255"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/gravatar" />
<ImageView
android:id="@+id/ivPeople"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginEnd="5dp"
app:srcCompat="@drawable/ic_people"
android:layout_marginBottom="15dp"
app:layout_constraintEnd_toEndOf="@id/etTo"
app:layout_constraintBottom_toBottomOf="@id/etTo"
android:contentDescription="@string/people_icon" />
<TextView
android:id="@+id/tvToError"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textColor="@color/red"
app:layout_constraintEnd_toEndOf="@+id/etTo"
app:layout_constraintStart_toStartOf="@+id/etTo"
app:layout_constraintTop_toBottomOf="@+id/etTo" />
<EditText
android:id="@+id/etAmount"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginStart="24dp"
android:inputType="numberDecimal"
android:textSize="20sp"
android:hint="@string/amount"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tvToError" />
<TextView
android:id="@+id/tvAmountError"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textColor="@color/red"
app:layout_constraintEnd_toEndOf="@+id/etAmount"
app:layout_constraintStart_toStartOf="@+id/etAmount"
app:layout_constraintTop_toBottomOf="@+id/etAmount" />
<Spinner
android:id="@+id/spAsset"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_marginEnd="24dp"
android:layout_marginTop="8dp"
android:gravity="top"
android:inputType="textMultiLine"
android:textColor="@color/white"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/etAmount" />
<View
android:id="@+id/viewSpinner"
android:layout_width="0dp"
android:layout_height="1dp"
android:layout_marginBottom="7dp"
android:background="@color/darkGray"
app:layout_constraintEnd_toEndOf="@+id/spAsset"
app:layout_constraintStart_toStartOf="@+id/spAsset"
app:layout_constraintBottom_toBottomOf="@id/etAmount" />
<TextView
android:id="@+id/tvAssetError"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textColor="@color/red"
app:layout_constraintBottom_toBottomOf="@+id/tvAmountError"
app:layout_constraintEnd_toEndOf="@+id/spAsset"
app:layout_constraintStart_toStartOf="@+id/spAsset" />
<EditText
android:id="@+id/etMemo"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="24dp"
android:layout_marginStart="24dp"
android:layout_marginTop="8dp"
android:inputType="textMultiLine"
android:hint="@string/memo_capital"
android:textSize="20sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tvAmountError" />
<TextView
android:id="@+id/tvMemoError"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textColor="@color/red"
app:layout_constraintEnd_toEndOf="@+id/etMemo"
app:layout_constraintStart_toStartOf="@+id/etMemo"
app:layout_constraintTop_toBottomOf="@+id/etMemo" />
<TextView
android:id="@+id/tvScan"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:layout_marginStart="24dp"
android:text="@string/scan_capital"
android:textSize="14sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvMemoError" />
<me.dm7.barcodescanner.zxing.ZXingScannerView
android:id="@+id/ivCamera"
android:layout_width="180dp"
android:layout_height="180dp"
android:layout_marginBottom="24dp"
android:layout_marginStart="24dp"
android:layout_marginTop="8dp"
android:src="#666"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvScan"
android:contentDescription="@string/camera_feed_to_scan_qr" />
<android.support.design.widget.FloatingActionButton
android:id="@+id/fabCloseCamera"
android:layout_width="30dp"
android:layout_height="30dp"
app:fabSize="mini"
android:layout_marginBottom="165dp"
android:layout_marginStart="165dp"
app:backgroundTint="@color/send_strong_orange"
app:srcCompat="@drawable/ic_close"
app:layout_constraintBottom_toBottomOf="@+id/ivCamera"
app:layout_constraintStart_toStartOf="@+id/ivCamera" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="600dp"
android:layout_marginEnd="24dp"
android:layout_marginTop="20dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:padding="5dp">
<TextView
android:id="@+id/btnCancel"
android:layout_width="20dp"
android:layout_height="26dp"
android:background="@drawable/ic_close"
android:text=""
android:textSize="18sp"
android:textStyle="bold" />
</LinearLayout>
</android.support.constraint.ConstraintLayout>
</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>
</ScrollView>

View File

@ -14,6 +14,10 @@
<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="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="txt_account_name">Account Name</string>
<string name="time_stamp">Time stamp</string>
@ -75,6 +79,8 @@
<string name="save">SAVE</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_correct_brainkey">Please enter correct brainkey</string>
<string name="balances">Balances</string>