diff --git a/app/build.gradle b/app/build.gradle
index 1355a52..396043c 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -53,9 +53,10 @@ dependencies {
compile 'com.jakewharton:butterknife:8.8.1'
compile 'com.github.bilthon:graphenej:0.4.6-alpha1'
compile 'com.google.zxing:core:3.3.1'
- compile 'me.dm7.barcodescanner:zxing:1.9.8';
+ compile 'me.dm7.barcodescanner:zxing:1.9.8'
compile 'com.squareup.okhttp3:logging-interceptor:3.5.0'
+ compile 'de.hdodenhof:circleimageview:2.2.0'
testCompile 'junit:junit:4.12'
testCompile 'org.mockito:mockito-core:1.10.19'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 453f8ae..ad92f17 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -37,6 +37,13 @@
+
+
+
diff --git a/app/src/main/java/cy/agorise/crystalwallet/activities/AccountsActivity.java b/app/src/main/java/cy/agorise/crystalwallet/activities/AccountsActivity.java
new file mode 100644
index 0000000..10e001e
--- /dev/null
+++ b/app/src/main/java/cy/agorise/crystalwallet/activities/AccountsActivity.java
@@ -0,0 +1,46 @@
+package cy.agorise.crystalwallet.activities;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.support.v7.app.AppCompatActivity;
+import android.widget.TextView;
+
+import butterknife.BindView;
+import butterknife.ButterKnife;
+import butterknife.OnClick;
+import cy.agorise.crystalwallet.R;
+
+/**
+ * Created by xd on 1/9/18.
+ *
+ */
+
+public class AccountsActivity extends AppCompatActivity {
+
+ @BindView(R.id.tvSettings)
+ TextView tvSettings;
+
+ @BindView(R.id.tvClose)
+ TextView tvClose;
+
+ @Override
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_accounts);
+ ButterKnife.bind(this);
+ }
+
+ @OnClick(R.id.tvSettings)
+ public void onTvSettingsClick(){
+ onBackPressed();
+ Intent intent = new Intent(this, SettingsActivity.class);
+ startActivity(intent);
+ }
+
+ @OnClick(R.id.tvClose)
+ public void cancel(){
+ onBackPressed();
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/cy/agorise/crystalwallet/activities/BoardActivity.java b/app/src/main/java/cy/agorise/crystalwallet/activities/BoardActivity.java
index c857972..9ef1161 100644
--- a/app/src/main/java/cy/agorise/crystalwallet/activities/BoardActivity.java
+++ b/app/src/main/java/cy/agorise/crystalwallet/activities/BoardActivity.java
@@ -1,29 +1,26 @@
package cy.agorise.crystalwallet.activities;
+import android.app.ActivityOptions;
import android.arch.lifecycle.LiveData;
import android.arch.lifecycle.ViewModelProviders;
import android.content.Intent;
import android.content.res.Resources;
-import android.graphics.drawable.AnimationDrawable;
import android.media.MediaPlayer;
import android.os.Bundle;
-import android.support.design.widget.AppBarLayout;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.app.FragmentTransaction;
-import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
-import android.util.Log;
+import android.util.Pair;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.animation.LinearInterpolator;
-import android.widget.ImageButton;
import android.widget.ImageView;
import java.util.List;
@@ -33,17 +30,18 @@ import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import cy.agorise.crystalwallet.R;
-import cy.agorise.crystalwallet.fragments.AccountsFragment;
import cy.agorise.crystalwallet.fragments.BalanceFragment;
import cy.agorise.crystalwallet.fragments.ContactsFragment;
import cy.agorise.crystalwallet.fragments.ReceiveTransactionFragment;
import cy.agorise.crystalwallet.fragments.SendTransactionFragment;
import cy.agorise.crystalwallet.fragments.TransactionsFragment;
+import de.hdodenhof.circleimageview.CircleImageView;
import cy.agorise.crystalwallet.models.CryptoNetBalance;
import cy.agorise.crystalwallet.viewmodels.CryptoNetBalanceListViewModel;
/**
* Created by Henry Varona on 7/10/2017.
+ *
*/
public class BoardActivity extends AppCompatActivity {
@@ -75,7 +73,13 @@ public class BoardActivity extends AppCompatActivity {
public SurfaceView mSurfaceView;
@BindView(R.id.toolbar_user_img)
- public ImageView userImage;
+ public CircleImageView userImage;
+
+ @BindView(R.id.lightning)
+ public ImageView lightning;
+
+ @BindView(R.id.triangle)
+ public ImageView triangle;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -134,7 +138,7 @@ public class BoardActivity extends AppCompatActivity {
// Hide Add Contact fab, it won't hide until first page changed...
// Convert 72dp to pixels (fab is 56dp in diameter + 16dp margin)
- final int fabDistanceToHide = (int) (72 * Resources.getSystem().getDisplayMetrics().density);;
+ final int fabDistanceToHide = (int) (72 * Resources.getSystem().getDisplayMetrics().density);
fabAddContact.animate().translationY(fabDistanceToHide)
.setInterpolator(new LinearInterpolator()).start();
@@ -183,22 +187,27 @@ public class BoardActivity extends AppCompatActivity {
*/
@OnClick(R.id.toolbar_user_img)
public void accounts() {
- FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
- Fragment prev = getSupportFragmentManager().findFragmentByTag("AccountsDialog");
- if (prev != null) {
- ft.remove(prev);
- }
- ft.addToBackStack(null);
+ Intent intent = new Intent(this, AccountsActivity.class);
- // Create and show the dialog.
- AccountsFragment newFragment = AccountsFragment.newInstance(this.cryptoNetAccountId);
- newFragment.show(ft, "AccountsDialog");
+ // SharedElementTransition is only available from API level 21
+ if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
+ Pair p1 = Pair.create(userImage, "gravatarTransition");
+ Pair p2 = Pair.create(lightning, "lightningTransition");
+ Pair p3 = Pair.create(triangle, "triangleTransition");
+
+ ActivityOptions options = ActivityOptions
+ .makeSceneTransitionAnimation(this, p1, p2, p3);
+
+ startActivity(intent, options.toBundle());
+ } else {
+ startActivity(intent);
+ }
}
/*
* dispatch the user to the receive fragment using this account
*/
- public void receiveToThisAccount(){
+ public void receiveToThisAccount() {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
Fragment prev = getSupportFragmentManager().findFragmentByTag("ReceiveDialog");
if (prev != null) {
@@ -214,7 +223,7 @@ public class BoardActivity extends AppCompatActivity {
/*
* dispatch the user to the send fragment using this account
*/
- public void sendFromThisAccount(){
+ public void sendFromThisAccount() {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
Fragment prev = getSupportFragmentManager().findFragmentByTag("SendDialog");
if (prev != null) {
@@ -237,7 +246,7 @@ public class BoardActivity extends AppCompatActivity {
}
private class BoardPagerAdapter extends FragmentStatePagerAdapter {
- public BoardPagerAdapter(FragmentManager fm) {
+ BoardPagerAdapter(FragmentManager fm) {
super(fm);
}
diff --git a/app/src/main/java/cy/agorise/crystalwallet/activities/SettingsActivity.java b/app/src/main/java/cy/agorise/crystalwallet/activities/SettingsActivity.java
index 54c7368..70f68aa 100644
--- a/app/src/main/java/cy/agorise/crystalwallet/activities/SettingsActivity.java
+++ b/app/src/main/java/cy/agorise/crystalwallet/activities/SettingsActivity.java
@@ -12,13 +12,18 @@ import android.support.v7.widget.Toolbar;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.widget.ImageView;
+import android.widget.TextView;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
+import cy.agorise.crystalwallet.BuildConfig;
import cy.agorise.crystalwallet.R;
+import cy.agorise.crystalwallet.fragments.AccountsSettingsFragment;
+import cy.agorise.crystalwallet.fragments.BackupsSettingsFragment;
import cy.agorise.crystalwallet.fragments.BalanceFragment;
import cy.agorise.crystalwallet.fragments.GeneralSettingsFragment;
+import cy.agorise.crystalwallet.fragments.SecuritySettingsFragment;
/**
* Created by seven on 12/28/17.
@@ -38,6 +43,9 @@ public class SettingsActivity extends AppCompatActivity{
@BindView(R.id.surface_view)
public SurfaceView mSurfaceView;
+ @BindView(R.id.tvBuildVersion)
+ public TextView tvBuildVersion;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -76,6 +84,11 @@ public class SettingsActivity extends AppCompatActivity{
mPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mPager));
+
+ // Automatically get build version from app information
+ String buildVersion = "v";
+ buildVersion += BuildConfig.VERSION_NAME;
+ tvBuildVersion.setText(buildVersion);
}
private class SettingsPagerAdapter extends FragmentStatePagerAdapter {
@@ -88,14 +101,12 @@ public class SettingsActivity extends AppCompatActivity{
switch (position){
case 0:
return new GeneralSettingsFragment();
- /*case 1:
- return null;
- case 2:
- return null;*/
case 1:
+ return new SecuritySettingsFragment();
case 2:
+ return new BackupsSettingsFragment();
case 3:
- return new BalanceFragment();
+ return new AccountsSettingsFragment();
}
diff --git a/app/src/main/java/cy/agorise/crystalwallet/fragments/AccountsFragment.java b/app/src/main/java/cy/agorise/crystalwallet/fragments/AccountsFragment.java
index f0e3ae4..130cb2f 100644
--- a/app/src/main/java/cy/agorise/crystalwallet/fragments/AccountsFragment.java
+++ b/app/src/main/java/cy/agorise/crystalwallet/fragments/AccountsFragment.java
@@ -53,7 +53,7 @@ public class AccountsFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
- AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.AccountsTheme);
+ AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
View view = inflater.inflate(R.layout.fragment_accounts, null);
diff --git a/app/src/main/java/cy/agorise/crystalwallet/fragments/AccountsSettingsFragment.java b/app/src/main/java/cy/agorise/crystalwallet/fragments/AccountsSettingsFragment.java
new file mode 100644
index 0000000..5a84c0d
--- /dev/null
+++ b/app/src/main/java/cy/agorise/crystalwallet/fragments/AccountsSettingsFragment.java
@@ -0,0 +1,66 @@
+package cy.agorise.crystalwallet.fragments;
+
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.text.Spannable;
+import android.text.SpannableStringBuilder;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import butterknife.BindView;
+import butterknife.ButterKnife;
+import cy.agorise.crystalwallet.R;
+
+/**
+ * Created by xd on 1/16/18.
+ */
+
+public class AccountsSettingsFragment extends Fragment {
+ public AccountsSettingsFragment() {
+ // Required empty public constructor
+ }
+
+ public static AccountsSettingsFragment newInstance() {
+ AccountsSettingsFragment fragment = new AccountsSettingsFragment();
+ Bundle args = new Bundle();
+ fragment.setArguments(args);
+ return fragment;
+ }
+
+ @BindView(R.id.tvUpgrade)
+ public TextView tvUpgrade;
+
+ @BindView(R.id.tvImport)
+ public TextView tvImport;
+
+ @BindView(R.id.tvRefresh)
+ public TextView tvRefresh;
+
+ @BindView(R.id.tvRemove)
+ public TextView tvRemove;
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ // Inflate the layout for this fragment
+ View v = inflater.inflate(R.layout.fragment_accounts_settings, container, false);
+ ButterKnife.bind(this, v);
+
+ tvUpgrade.setText(makeFirstWordsBold(getResources().getString(R.string.upgrade_description)));
+ tvImport.setText(makeFirstWordsBold(getResources().getString(R.string.import_description)));
+ tvRefresh.setText(makeFirstWordsBold(getResources().getString(R.string.refresh_description)));
+ tvRemove.setText(makeFirstWordsBold(getResources().getString(R.string.remove_description)));
+
+ return v;
+ }
+
+ private SpannableStringBuilder makeFirstWordsBold(String str) {
+ SpannableStringBuilder ssb = new SpannableStringBuilder(str);
+ ssb.setSpan(new android.text.style.StyleSpan(android.graphics.Typeface.BOLD),
+ 0, str.indexOf('.')+1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+
+ return ssb;
+ }
+}
diff --git a/app/src/main/java/cy/agorise/crystalwallet/fragments/BackupsSettingsFragment.java b/app/src/main/java/cy/agorise/crystalwallet/fragments/BackupsSettingsFragment.java
new file mode 100644
index 0000000..7d8349e
--- /dev/null
+++ b/app/src/main/java/cy/agorise/crystalwallet/fragments/BackupsSettingsFragment.java
@@ -0,0 +1,62 @@
+package cy.agorise.crystalwallet.fragments;
+
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.text.Spannable;
+import android.text.SpannableStringBuilder;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import butterknife.BindView;
+import butterknife.ButterKnife;
+import cy.agorise.crystalwallet.R;
+
+/**
+ * Created by xd on 1/11/18.
+ */
+
+public class BackupsSettingsFragment extends Fragment{
+ public BackupsSettingsFragment() {
+ // Required empty public constructor
+ }
+
+ public static BackupsSettingsFragment newInstance() {
+ BackupsSettingsFragment fragment = new BackupsSettingsFragment();
+ Bundle args = new Bundle();
+ fragment.setArguments(args);
+ return fragment;
+ }
+
+ @BindView(R.id.tvBinFile)
+ public TextView tvBinFile;
+
+ @BindView(R.id.tvBrainkey)
+ public TextView tvBrainkey;
+
+ @BindView(R.id.tvWIFKey)
+ public TextView tvWIFKey;
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ // Inflate the layout for this fragment
+ View v = inflater.inflate(R.layout.fragment_backups_settings, container, false);
+ ButterKnife.bind(this, v);
+
+ tvBinFile.setText(makeFirstWordsBold(getResources().getString(R.string.bin_file_description)));
+ tvBrainkey.setText(makeFirstWordsBold(getResources().getString(R.string.brainkey_description)));
+ tvWIFKey.setText(makeFirstWordsBold(getResources().getString(R.string.wif_key_description)));
+
+ return v;
+ }
+
+ private SpannableStringBuilder makeFirstWordsBold(String str) {
+ SpannableStringBuilder ssb = new SpannableStringBuilder(str);
+ ssb.setSpan(new android.text.style.StyleSpan(android.graphics.Typeface.BOLD),
+ 0, str.indexOf('.')+1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+
+ return ssb;
+ }
+}
diff --git a/app/src/main/java/cy/agorise/crystalwallet/fragments/NoneSecurityFragment.java b/app/src/main/java/cy/agorise/crystalwallet/fragments/NoneSecurityFragment.java
new file mode 100644
index 0000000..a8cb92b
--- /dev/null
+++ b/app/src/main/java/cy/agorise/crystalwallet/fragments/NoneSecurityFragment.java
@@ -0,0 +1,38 @@
+package cy.agorise.crystalwallet.fragments;
+
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import butterknife.ButterKnife;
+import cy.agorise.crystalwallet.R;
+
+/**
+ * Created by xd on 1/18/18.
+ */
+
+public class NoneSecurityFragment extends Fragment {
+
+ public NoneSecurityFragment() {
+ // Required empty public constructor
+ }
+
+ public static NoneSecurityFragment newInstance() {
+ NoneSecurityFragment fragment = new NoneSecurityFragment();
+ Bundle args = new Bundle();
+ fragment.setArguments(args);
+ return fragment;
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ // Inflate the layout for this fragment
+ View v = inflater.inflate(R.layout.fragment_none_security, container, false);
+ ButterKnife.bind(this, v);
+
+ return v;
+ }
+}
diff --git a/app/src/main/java/cy/agorise/crystalwallet/fragments/PinSecurityFragment.java b/app/src/main/java/cy/agorise/crystalwallet/fragments/PinSecurityFragment.java
new file mode 100644
index 0000000..52e2c55
--- /dev/null
+++ b/app/src/main/java/cy/agorise/crystalwallet/fragments/PinSecurityFragment.java
@@ -0,0 +1,38 @@
+package cy.agorise.crystalwallet.fragments;
+
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import butterknife.ButterKnife;
+import cy.agorise.crystalwallet.R;
+
+/**
+ * Created by xd on 1/18/18.
+ */
+
+public class PinSecurityFragment extends Fragment {
+
+ public PinSecurityFragment() {
+ // Required empty public constructor
+ }
+
+ public static PinSecurityFragment newInstance() {
+ PinSecurityFragment fragment = new PinSecurityFragment();
+ Bundle args = new Bundle();
+ fragment.setArguments(args);
+ return fragment;
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ // Inflate the layout for this fragment
+ View v = inflater.inflate(R.layout.fragment_pin_security, container, false);
+ ButterKnife.bind(this, v);
+
+ return v;
+ }
+}
diff --git a/app/src/main/java/cy/agorise/crystalwallet/fragments/SecuritySettingsFragment.java b/app/src/main/java/cy/agorise/crystalwallet/fragments/SecuritySettingsFragment.java
new file mode 100644
index 0000000..0407bcf
--- /dev/null
+++ b/app/src/main/java/cy/agorise/crystalwallet/fragments/SecuritySettingsFragment.java
@@ -0,0 +1,83 @@
+package cy.agorise.crystalwallet.fragments;
+
+import android.os.Bundle;
+import android.support.design.widget.TabLayout;
+import android.support.v4.app.Fragment;
+import android.support.v4.app.FragmentManager;
+import android.support.v4.app.FragmentPagerAdapter;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import butterknife.BindView;
+import butterknife.ButterKnife;
+import cy.agorise.crystalwallet.R;
+import cy.agorise.crystalwallet.util.ChildViewPager;
+
+/**
+ * Created by xd on 1/17/18.
+ * In this fragment the user should be able to select its preferred security option.
+ */
+
+public class SecuritySettingsFragment extends Fragment {
+
+ public SecuritySettingsFragment() {
+ // Required empty public constructor
+ }
+
+ public static SecuritySettingsFragment newInstance() {
+ SecuritySettingsFragment fragment = new SecuritySettingsFragment();
+ Bundle args = new Bundle();
+ fragment.setArguments(args);
+ return fragment;
+ }
+
+ @BindView(R.id.pager)
+ public ChildViewPager mPager;
+
+ public SecurityPagerAdapter securityPagerAdapter;
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ // Inflate the layout for this fragment
+ View v = inflater.inflate(R.layout.fragment_security_settings, container, false);
+ ButterKnife.bind(this, v);
+
+ securityPagerAdapter = new SecurityPagerAdapter(getChildFragmentManager());
+ mPager.setAdapter(securityPagerAdapter);
+ mPager.setSwipeLocked(true);
+
+ TabLayout tabLayout = v.findViewById(R.id.tabs);
+
+ mPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
+ tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mPager));
+
+ return v;
+ }
+
+ private class SecurityPagerAdapter extends FragmentPagerAdapter {
+ SecurityPagerAdapter(FragmentManager fm) {
+ super(fm);
+ }
+
+ @Override
+ public Fragment getItem(int position) {
+ switch (position){
+ case 0:
+ return new NoneSecurityFragment();
+ case 1:
+ return new PinSecurityFragment();
+ case 2:
+ return new BackupsSettingsFragment();
+ }
+
+ return null; //new OnConstructionFragment();
+ }
+
+ @Override
+ public int getCount() {
+ return 3;
+ }
+ }
+}
diff --git a/app/src/main/java/cy/agorise/crystalwallet/util/ChildViewPager.java b/app/src/main/java/cy/agorise/crystalwallet/util/ChildViewPager.java
new file mode 100644
index 0000000..fbac369
--- /dev/null
+++ b/app/src/main/java/cy/agorise/crystalwallet/util/ChildViewPager.java
@@ -0,0 +1,49 @@
+package cy.agorise.crystalwallet.util;
+
+import android.content.Context;
+import android.support.v4.view.ViewPager;
+import android.util.AttributeSet;
+import android.view.MotionEvent;
+
+/**
+ * Created by xd on 1/18/18.
+ * This ViewPager is intended to be used inside another ViewPager therefore it has the
+ * setSwipeLocked which disables or enables the swipe gesture.
+ */
+
+
+public class ChildViewPager extends ViewPager {
+
+ private boolean swipeLocked;
+
+ public ChildViewPager(Context context) {
+ super(context);
+ }
+
+ public ChildViewPager(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public boolean getSwipeLocked() {
+ return swipeLocked;
+ }
+
+ public void setSwipeLocked(boolean swipeLocked) {
+ this.swipeLocked = swipeLocked;
+ }
+
+ @Override
+ public boolean onTouchEvent(MotionEvent event) {
+ return !swipeLocked && super.onTouchEvent(event);
+ }
+
+ @Override
+ public boolean onInterceptTouchEvent(MotionEvent event) {
+ return !swipeLocked && super.onInterceptTouchEvent(event);
+ }
+
+ @Override
+ public boolean canScrollHorizontally(int direction) {
+ return !swipeLocked && super.canScrollHorizontally(direction);
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/anim/accounts_in.xml b/app/src/main/res/anim/accounts_in.xml
index e229b12..95d3c0d 100644
--- a/app/src/main/res/anim/accounts_in.xml
+++ b/app/src/main/res/anim/accounts_in.xml
@@ -2,7 +2,7 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml
index f030f1a..484c17d 100644
--- a/app/src/main/res/layout/activity_settings.xml
+++ b/app/src/main/res/layout/activity_settings.xml
@@ -12,23 +12,17 @@
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="120dp"
- android:fitsSystemWindows="true"
android:background="@color/colorPrimary"
app:theme="@style/AppTheme.AppBarOverlay">
-
+ android:layout_height="match_parent">
+ android:layout_height="match_parent"/>
-
-
+
-
-
+ app:layout_behavior="@string/appbar_scrolling_view_behavior">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/board.xml b/app/src/main/res/layout/board.xml
index 31aa573..49f9d44 100644
--- a/app/src/main/res/layout/board.xml
+++ b/app/src/main/res/layout/board.xml
@@ -41,6 +41,7 @@
android:layout_height="?attr/actionBarSize"
android:background="@color/transparent"
android:layout_marginTop="8dp"
+ android:layout_marginBottom="-20dp"
app:layout_collapseMode="none"
app:popupTheme="@style/AppTheme.PopupOverlay">
@@ -59,28 +60,33 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
-
diff --git a/app/src/main/res/layout/fragment_accounts_settings.xml b/app/src/main/res/layout/fragment_accounts_settings.xml
new file mode 100644
index 0000000..e06f240
--- /dev/null
+++ b/app/src/main/res/layout/fragment_accounts_settings.xml
@@ -0,0 +1,114 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_backups_settings.xml b/app/src/main/res/layout/fragment_backups_settings.xml
new file mode 100644
index 0000000..f8377bf
--- /dev/null
+++ b/app/src/main/res/layout/fragment_backups_settings.xml
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_general_settings.xml b/app/src/main/res/layout/fragment_general_settings.xml
index 0a58521..6364bb0 100644
--- a/app/src/main/res/layout/fragment_general_settings.xml
+++ b/app/src/main/res/layout/fragment_general_settings.xml
@@ -1,153 +1,199 @@
-
-
-
-
-
-
-
-
+ android:paddingBottom="20dp">
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_none_security.xml b/app/src/main/res/layout/fragment_none_security.xml
new file mode 100644
index 0000000..3c4da4e
--- /dev/null
+++ b/app/src/main/res/layout/fragment_none_security.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_pin_security.xml b/app/src/main/res/layout/fragment_pin_security.xml
new file mode 100644
index 0000000..0fa46ce
--- /dev/null
+++ b/app/src/main/res/layout/fragment_pin_security.xml
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_security_settings.xml b/app/src/main/res/layout/fragment_security_settings.xml
new file mode 100644
index 0000000..a70a4e7
--- /dev/null
+++ b/app/src/main/res/layout/fragment_security_settings.xml
@@ -0,0 +1,116 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/transition/change_image_transform.xml b/app/src/main/res/transition/change_image_transform.xml
new file mode 100644
index 0000000..459686a
--- /dev/null
+++ b/app/src/main/res/transition/change_image_transform.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index dad7b53..fe57704 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -2,7 +2,7 @@
#0099d6
#0099d6
- #669900
+ #0099d6
#d3d3d3
#686767
#E3E3E3
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 84ccf5b..4829431 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -473,4 +473,27 @@
Go back arrow
Settings
Info icon
+ Bin file. Always save your backup .bin file to a secret MicroSD card or USB Stick.
+ Brainkey. Account recovery words that can be captured or copied, but not edited.
+ WIF Key (Advanced). A long string of cryptic text that can be used with other Wallets.
+ CREATE A BACKUP
+
+ Upgrade to LifeTime Membership (LTM). Bitshares\' LTM accounts pay near-zero fees, get 80% cashback and bonuses for referrals.
+ Upgrade
+ Import Accounts. Import multiple accounts from blockchains such as Bitshares, Bitcoin, Steem, Dash and more.
+ Import
+ Refresh keys. Ony for bitshares accounts.
+ Refresh
+ Remove an account from this Wallet. The account removed will still reside on the blockchain.
+ Remove
+ user_name Password
+ v1.0
+ block# 14966596
+ Current PIN
+ New PIN
+ Confirm PIN
+ Use \"Pocket\" Security
+ None
+ Pin
+ Pattern
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index be0ebc8..91f9541 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -32,6 +32,23 @@
- @color/white
- @font/opensans
- @font/opensans
+
+ - true
+
+
+
+
+
+
-
-
+
+