diff --git a/app/src/main/java/cy/agorise/crystalwallet/activities/BackupSeedActivity.java b/app/src/main/java/cy/agorise/crystalwallet/activities/BackupSeedActivity.java index 64cee76..52fef67 100644 --- a/app/src/main/java/cy/agorise/crystalwallet/activities/BackupSeedActivity.java +++ b/app/src/main/java/cy/agorise/crystalwallet/activities/BackupSeedActivity.java @@ -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(); } } diff --git a/app/src/main/java/cy/agorise/crystalwallet/activities/ImportSeedActivity.java b/app/src/main/java/cy/agorise/crystalwallet/activities/ImportSeedActivity.java index 8e75c1a..c583459 100644 --- a/app/src/main/java/cy/agorise/crystalwallet/activities/ImportSeedActivity.java +++ b/app/src/main/java/cy/agorise/crystalwallet/activities/ImportSeedActivity.java @@ -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()); } } } diff --git a/app/src/main/java/cy/agorise/crystalwallet/activities/LicenseActivity.java b/app/src/main/java/cy/agorise/crystalwallet/activities/LicenseActivity.java index 0cf6e82..6e9a0d7 100644 --- a/app/src/main/java/cy/agorise/crystalwallet/activities/LicenseActivity.java +++ b/app/src/main/java/cy/agorise/crystalwallet/activities/LicenseActivity.java @@ -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) diff --git a/app/src/main/java/cy/agorise/crystalwallet/fragments/BackupsSettingsFragment.java b/app/src/main/java/cy/agorise/crystalwallet/fragments/BackupsSettingsFragment.java index 66dd34e..0b57370 100644 --- a/app/src/main/java/cy/agorise/crystalwallet/fragments/BackupsSettingsFragment.java +++ b/app/src/main/java/cy/agorise/crystalwallet/fragments/BackupsSettingsFragment.java @@ -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 generalSettingLD = CrystalDatabase.getAppDatabase(getContext()).generalSettingDao().getByName(GeneralSetting.SETTING_PASSWORD); @@ -105,13 +146,13 @@ public class BackupsSettingsFragment extends Fragment{ generalSettingLD.observe(this, new Observer() { @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; + } + } } diff --git a/app/src/main/java/cy/agorise/crystalwallet/fragments/BalanceFragment.java b/app/src/main/java/cy/agorise/crystalwallet/fragments/BalanceFragment.java index 39a12c6..c696b49 100644 --- a/app/src/main/java/cy/agorise/crystalwallet/fragments/BalanceFragment.java +++ b/app/src/main/java/cy/agorise/crystalwallet/fragments/BalanceFragment.java @@ -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 cryptoNetBalances) { vCryptoNetBalanceListView.setData(cryptoNetBalances, fragment); + + final int size = cryptoNetBalances.size(); + if(size==1){ + tvNobalances.setVisibility(View.VISIBLE); + } + else{ + tvNobalances.setVisibility(View.INVISIBLE); + } } }); diff --git a/app/src/main/java/cy/agorise/crystalwallet/fragments/ContactsFragment.java b/app/src/main/java/cy/agorise/crystalwallet/fragments/ContactsFragment.java index d17c179..644c213 100644 --- a/app/src/main/java/cy/agorise/crystalwallet/fragments/ContactsFragment.java +++ b/app/src/main/java/cy/agorise/crystalwallet/fragments/ContactsFragment.java @@ -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 contacts) { adapter.submitList(contacts); + + final int size = contacts.size(); + if(size==0){ + tvNobalances.setVisibility(View.VISIBLE); + } + else{ + tvNobalances.setVisibility(View.INVISIBLE); + } } }); diff --git a/app/src/main/java/cy/agorise/crystalwallet/fragments/SendTransactionFragment.java b/app/src/main/java/cy/agorise/crystalwallet/fragments/SendTransactionFragment.java index d0ece8c..14bc512 100644 --- a/app/src/main/java/cy/agorise/crystalwallet/fragments/SendTransactionFragment.java +++ b/app/src/main/java/cy/agorise/crystalwallet/fragments/SendTransactionFragment.java @@ -99,8 +99,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) @@ -172,7 +172,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() { @@ -211,7 +211,7 @@ public class SendTransactionFragment extends DialogFragment implements UIValidat viewSend.animate().y(600); } } - }); + });*/ this.cryptoNetAccountId = getArguments().getLong("CRYPTO_NET_ACCOUNT_ID",-1); diff --git a/app/src/main/java/cy/agorise/crystalwallet/fragments/TransactionsFragment.java b/app/src/main/java/cy/agorise/crystalwallet/fragments/TransactionsFragment.java index 6e61b70..860c769 100644 --- a/app/src/main/java/cy/agorise/crystalwallet/fragments/TransactionsFragment.java +++ b/app/src/main/java/cy/agorise/crystalwallet/fragments/TransactionsFragment.java @@ -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 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); + } } }); } diff --git a/app/src/main/res/layout/fragment_balance.xml b/app/src/main/res/layout/fragment_balance.xml index 28edad8..781c0da 100644 --- a/app/src/main/res/layout/fragment_balance.xml +++ b/app/src/main/res/layout/fragment_balance.xml @@ -4,14 +4,15 @@ android:layout_height="match_parent" tools:context="cy.agorise.crystalwallet.fragments.BalanceFragment"> - - + + + + android:text="Comming soon ..." + android:textColor="@color/gray" + android:layout_centerHorizontal="true" + android:layout_marginTop="190dp" + android:textSize="15dp" /> diff --git a/app/src/main/res/layout/fragment_transactions.xml b/app/src/main/res/layout/fragment_transactions.xml index c847c93..14db754 100644 --- a/app/src/main/res/layout/fragment_transactions.xml +++ b/app/src/main/res/layout/fragment_transactions.xml @@ -4,6 +4,16 @@ android:layout_height="match_parent" tools:context="cy.agorise.crystalwallet.fragments.TransactionsFragment"> + + + tools:context=".activities.CreateSeedActivity"> - - - + android:layout_centerInParent="true"> - - - - - - - - - - - - - - - - - -