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;
import java.util.Date;
import java.util.List;
import java.util.Locale;
-import java.util.Observer;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.widget.Toolbar;
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;
private SectionsPagerAdapter mSectionsPagerAdapter;
private ViewPager mViewPager;
private FloatingActionButton fab;
- private boolean profileListExpanded = false;
private ProfilesRecyclerViewAdapter mProfileListAdapter;
private int mCurrentPage;
private String mAccountFilter;
private DrawerLayout.SimpleDrawerListener drawerListener;
private ActionBarDrawerToggle barDrawerToggle;
private ViewPager.SimpleOnPageChangeListener pageChangeListener;
- private Observer editingProfilesObserver;
private MobileLedgerProfile profile;
@Override
protected void onStart() {
barDrawerToggle = null;
if (mViewPager != null) mViewPager.removeOnPageChangeListener(pageChangeListener);
pageChangeListener = null;
- if (mProfileListAdapter != null)
- mProfileListAdapter.deleteEditingProfilesObserver(editingProfilesObserver);
- editingProfilesObserver = null;
super.onDestroy();
}
@Override
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);
if (mProfileListAdapter == null) mProfileListAdapter = new ProfilesRecyclerViewAdapter();
root.setAdapter(mProfileListAdapter);
- if (editingProfilesObserver == null) {
- editingProfilesObserver = (o, arg) -> {
- if (mProfileListAdapter.isEditingProfiles()) {
- profileListHeadMore.setVisibility(View.GONE);
- profileListHeadMore
- .startAnimation(AnimationUtils.loadAnimation(this, R.anim.fade_out));
- profileListHeadCancel.setVisibility(View.VISIBLE);
- profileListHeadCancel
- .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) {
+ mProfileListAdapter.editingProfiles
+ .observe(this, newValue -> {
+ if (newValue) {
+ profileListHeadMore.setVisibility(View.GONE);
+ profileListHeadCancel.setVisibility(View.VISIBLE);
+ profileListHeadAddProfile.setVisibility(View.VISIBLE);
+ if (drawer.isDrawerOpen(GravityCompat.START)) {
+ profileListHeadMore.startAnimation(AnimationUtils
+ .loadAnimation(MainActivity.this, R.anim.fade_out));
+ profileListHeadCancel.startAnimation(AnimationUtils
+ .loadAnimation(MainActivity.this, R.anim.fade_in));
+ profileListHeadAddProfile.startAnimation(AnimationUtils
+ .loadAnimation(MainActivity.this, R.anim.fade_in));
+ }
+ }
+ else {
+ profileListHeadCancel.setVisibility(View.GONE);
profileListHeadMore.setVisibility(View.VISIBLE);
- profileListHeadMore
- .startAnimation(AnimationUtils.loadAnimation(this, R.anim.fade_in));
+ profileListHeadAddProfile.setVisibility(View.GONE);
+ if (drawer.isDrawerOpen(GravityCompat.START)) {
+ profileListHeadCancel.startAnimation(AnimationUtils
+ .loadAnimation(MainActivity.this, R.anim.fade_out));
+ profileListHeadMore.startAnimation(AnimationUtils
+ .loadAnimation(MainActivity.this, R.anim.fade_in));
+ profileListHeadAddProfile.startAnimation(AnimationUtils
+ .loadAnimation(MainActivity.this, R.anim.fade_out));
+ }
}
- else profileListHeadMore.setVisibility(View.GONE);
- }
- };
- mProfileListAdapter.addEditingProfilesObserver(editingProfilesObserver);
- }
+
+ mProfileListAdapter.notifyDataSetChanged();
+ });
LinearLayoutManager llm = new LinearLayoutManager(this);
profileListHeadCancel.setOnClickListener((v) -> mProfileListAdapter.flipEditingProfiles());
profileListHeadMoreAndCancel
.setOnClickListener((v) -> mProfileListAdapter.flipEditingProfiles());
-
if (drawerListener == null) {
drawerListener = new DrawerLayout.SimpleDrawerListener() {
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
- collapseProfileList();
+ mProfileListAdapter.setAnimationsEnabled(false);
+ mProfileListAdapter.editingProfiles.setValue(false);
+ }
+ @Override
+ public void onDrawerOpened(View drawerView) {
+ super.onDrawerOpened(drawerView);
+ mProfileListAdapter.setAnimationsEnabled(true);
}
};
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) {
// data sets below
return;
}
- collapseProfileList();
drawer.closeDrawers();
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();