reorganization of profile list
authorDamyan Ivanov <dam+mobileledger@ktnx.net>
Sun, 5 May 2019 12:53:47 +0000 (15:53 +0300)
committerDamyan Ivanov <dam+mobileledger@ktnx.net>
Sun, 5 May 2019 12:53:47 +0000 (15:53 +0300)
always visible, gear icon too

add profile icon appears only when editing the profile list

the idea is that switching profiles is the main action to perform when the
drawer is open, so no need to hide it behind a collapsible list

adding a profile is still a second level action, hidden behind the gead icon

app/src/main/java/net/ktnx/mobileledger/ui/activity/MainActivity.java
app/src/main/res/layout/main_navigation.xml
app/src/main/res/layout/nav_profile_list_head.xml

index bbc8fa7..00b2652 100644 (file)
@@ -32,7 +32,6 @@ import android.util.Log;
 import android.view.View;
 import android.view.ViewGroup;
 import android.view.ViewPropertyAnimator;
-import android.view.animation.Animation;
 import android.view.animation.AnimationUtils;
 import android.widget.LinearLayout;
 import android.widget.ProgressBar;
@@ -89,8 +88,7 @@ public class MainActivity extends ProfileThemedActivity {
     private static final String PREF_THEME_ID = "themeId";
     public AccountSummaryFragment mAccountSummaryFragment;
     DrawerLayout drawer;
-    private LinearLayout profileListContainer;
-    private View profileListHeadArrow, profileListHeadMore, profileListHeadCancel;
+    private View profileListHeadMore, profileListHeadCancel, profileListHeadAddProfile;
     private FragmentManager fragmentManager;
     private View bTransactionListCancelDownload;
     private ProgressBar progressBar;
@@ -157,12 +155,11 @@ public class MainActivity extends ProfileThemedActivity {
         setContentView(R.layout.activity_main);
 
         fab = findViewById(R.id.btn_add_transaction);
-        profileListContainer = findViewById(R.id.nav_profile_list_container);
-        profileListHeadArrow = findViewById(R.id.nav_profiles_arrow);
         profileListHeadMore = findViewById(R.id.nav_profiles_start_edit);
         profileListHeadCancel = findViewById(R.id.nav_profiles_cancel_edit);
         LinearLayout profileListHeadMoreAndCancel =
                 findViewById(R.id.nav_profile_list_head_buttons);
+        profileListHeadAddProfile = findViewById(R.id.nav_new_profile_button);
         drawer = findViewById(R.id.drawer_layout);
         bTransactionListCancelDownload = findViewById(R.id.transaction_list_cancel_download);
         progressBar = findViewById(R.id.transaction_list_progress_bar);
@@ -267,18 +264,20 @@ public class MainActivity extends ProfileThemedActivity {
                     profileListHeadCancel.setVisibility(View.VISIBLE);
                     profileListHeadCancel
                             .startAnimation(AnimationUtils.loadAnimation(this, R.anim.fade_in));
+                    profileListHeadAddProfile.setVisibility(View.VISIBLE);
+                    profileListHeadAddProfile
+                            .startAnimation(AnimationUtils.loadAnimation(this, R.anim.fade_in));
                 }
                 else {
                     profileListHeadCancel.setVisibility(View.GONE);
                     profileListHeadCancel
                             .startAnimation(AnimationUtils.loadAnimation(this, R.anim.fade_out));
-                    profileListHeadMore.setVisibility(View.GONE);
-                    if (profileListExpanded) {
-                        profileListHeadMore.setVisibility(View.VISIBLE);
-                        profileListHeadMore
-                                .startAnimation(AnimationUtils.loadAnimation(this, R.anim.fade_in));
-                    }
-                    else profileListHeadMore.setVisibility(View.GONE);
+                    profileListHeadMore.setVisibility(View.VISIBLE);
+                    profileListHeadMore
+                            .startAnimation(AnimationUtils.loadAnimation(this, R.anim.fade_in));
+                    profileListHeadAddProfile.setVisibility(View.GONE);
+                    profileListHeadAddProfile
+                            .startAnimation(AnimationUtils.loadAnimation(this, R.anim.fade_out));
                 }
             };
             mProfileListAdapter.addEditingProfilesObserver(editingProfilesObserver);
@@ -294,20 +293,6 @@ public class MainActivity extends ProfileThemedActivity {
         profileListHeadMoreAndCancel
                 .setOnClickListener((v) -> mProfileListAdapter.flipEditingProfiles());
 
-        if (drawerListener == null) {
-            drawerListener = new DrawerLayout.SimpleDrawerListener() {
-                @Override
-                public void onDrawerClosed(View drawerView) {
-                    super.onDrawerClosed(drawerView);
-                    collapseProfileList();
-                }
-            };
-            drawer.addDrawerListener(drawerListener);
-        }
-
-        findViewById(R.id.nav_profile_list_head_layout)
-                .setOnClickListener(this::navProfilesHeadClicked);
-        findViewById(R.id.nav_profiles_label).setOnClickListener(this::navProfilesHeadClicked);
         setupProfile();
     }
     private void scheduleDataRetrievalIfStale(Date lastUpdate) {
@@ -395,7 +380,6 @@ public class MainActivity extends ProfileThemedActivity {
             // data sets below
             return;
         }
-        collapseProfileList();
 
         drawer.closeDrawers();
 
@@ -614,75 +598,6 @@ public class MainActivity extends ProfileThemedActivity {
     public void fabHide() {
         fab.hide();
     }
-    public void navProfilesHeadClicked(View view) {
-        if (profileListExpanded) {
-            collapseProfileList();
-        }
-        else {
-            expandProfileList();
-        }
-    }
-    private void expandProfileList() {
-        profileListExpanded = true;
-
-
-        profileListContainer.setVisibility(View.VISIBLE);
-        profileListContainer.startAnimation(AnimationUtils.loadAnimation(this, R.anim.slide_down));
-        profileListHeadArrow.startAnimation(AnimationUtils.loadAnimation(this, R.anim.rotate_180));
-        profileListHeadMore.setVisibility(View.VISIBLE);
-        profileListHeadMore.startAnimation(AnimationUtils.loadAnimation(this, R.anim.fade_in));
-        final ArrayList<MobileLedgerProfile> profiles = Data.profiles.getValue();
-        findViewById(R.id.nav_profile_list).setMinimumHeight(
-                (int) (getResources().getDimension(R.dimen.thumb_row_height) *
-                       (profiles != null ? profiles.size() : 0)));
-    }
-    private void collapseProfileList() {
-        boolean wasExpanded = profileListExpanded;
-        profileListExpanded = false;
-
-        if (wasExpanded) {
-            final Animation animation = AnimationUtils.loadAnimation(this, R.anim.slide_up);
-            animation.setAnimationListener(new Animation.AnimationListener() {
-                @Override
-                public void onAnimationStart(Animation animation) {
-
-                }
-                @Override
-                public void onAnimationEnd(Animation animation) {
-                    profileListContainer.setVisibility(View.GONE);
-                }
-                @Override
-                public void onAnimationRepeat(Animation animation) {
-
-                }
-            });
-            mProfileListAdapter.stopEditingProfiles();
-
-            profileListContainer.startAnimation(animation);
-            profileListHeadArrow.setRotation(0f);
-            profileListHeadArrow
-                    .startAnimation(AnimationUtils.loadAnimation(this, R.anim.rotate_180_back));
-            final Animation moreAnimation = AnimationUtils.loadAnimation(this, R.anim.fade_out);
-            moreAnimation.setAnimationListener(new Animation.AnimationListener() {
-                @Override
-                public void onAnimationStart(Animation animation) {
-                }
-                @Override
-                public void onAnimationEnd(Animation animation) {
-                    profileListHeadMore.setVisibility(View.GONE);
-                }
-                @Override
-                public void onAnimationRepeat(Animation animation) {
-                }
-            });
-            profileListHeadMore.startAnimation(moreAnimation);
-        }
-        else {
-            profileListContainer.setVisibility(View.GONE);
-            profileListHeadArrow.setRotation(0f);
-            profileListHeadMore.setVisibility(View.GONE);
-        }
-    }
     public void onAccountSummaryRowViewClicked(View view) {
         ViewGroup row;
         if (view.getId() == R.id.account_expander) row = (ViewGroup) view.getParent().getParent();
index 25a8f93..14c2ecc 100644 (file)
                         android:layout_height="wrap_content"
                         android:animateLayoutChanges="true"
                         android:nestedScrollingEnabled="false"
-                        android:orientation="vertical"
-                        android:visibility="gone">
+                        android:orientation="vertical">
 
                         <androidx.recyclerview.widget.RecyclerView
                             android:id="@+id/nav_profile_list"
 
                         </androidx.recyclerview.widget.RecyclerView>
 
-                        <include layout="@layout/nav_profile_list_new_profile_row" />
                     </LinearLayout>
 
                 </LinearLayout>
index 5bd0f4a..9755033 100644 (file)
     android:layout_height="@dimen/thumb_row_height">
 
     <ImageView
-        android:id="@+id/nav_profiles_arrow"
+        android:id="@+id/nav_new_profile_button"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:background="@drawable/ic_expand_more_black_24dp"
-        android:gravity="start|center_vertical"
+        android:layout_gravity="center"
+        android:paddingStart="8dp"
+        android:paddingEnd="8dp"
+        android:visibility="gone"
         app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toStartOf="@id/nav_profile_list_head_buttons"
         app:layout_constraintStart_toEndOf="@id/nav_profiles_label"
-        app:layout_constraintTop_toTopOf="parent" />
+        app:layout_constraintTop_toTopOf="parent"
+        app:srcCompat="@drawable/ic_add_circle_white_24dp" />
 
     <LinearLayout
         android:id="@+id/nav_profile_list_head_buttons"
@@ -50,6 +54,8 @@
             android:layout_height="wrap_content"
             android:background="@drawable/ic_clear_black_24dp"
             android:gravity="end|center_vertical"
+            android:paddingStart="8dp"
+            android:paddingEnd="8dp"
             android:visibility="gone"
             app:layout_constraintBottom_toBottomOf="parent"
             app:layout_constraintEnd_toEndOf="parent"
@@ -61,7 +67,8 @@
             android:layout_height="wrap_content"
             android:background="@drawable/ic_settings_black_24dp"
             android:gravity="end|center_vertical"
-            android:visibility="gone"
+            android:paddingStart="8dp"
+            android:paddingEnd="8dp"
             app:layout_constraintBottom_toBottomOf="parent"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintTop_toTopOf="parent" />
@@ -73,7 +80,6 @@
         style="@style/nav_button"
         android:layout_width="wrap_content"
         android:layout_height="0dp"
-        android:drawableStart="@drawable/ic_view_list_black_24dp"
         android:gravity="start|center_vertical"
         android:text="@string/profiles"
         app:layout_constraintBottom_toBottomOf="parent"