/*
- * Copyright © 2019 Damyan Ivanov.
+ * Copyright © 2020 Damyan Ivanov.
* This file is part of MoLe.
* MoLe is free software: you can distribute it and/or modify it
* under the term of the GNU General Public License as published by
drawer.addDrawerListener(barDrawerToggle);
}
barDrawerToggle.syncState();
- drawer.addDrawerListener(new DrawerLayout.DrawerListener() {
- @Override
- public void onDrawerSlide(@NonNull View drawerView, float slideOffset) {
- if (slideOffset > 0.2)
- fabHide();
- }
- @Override
- public void onDrawerOpened(@NonNull View drawerView) {
- fabHide();
- }
- @Override
- public void onDrawerClosed(@NonNull View drawerView) {
- fabShouldShow();
- }
- @Override
- public void onDrawerStateChanged(int newState) {}
- });
-
try {
PackageInfo pi = getApplicationContext().getPackageManager()
(v) -> mProfileListAdapter.flipEditingProfiles());
if (drawerListener == null) {
drawerListener = new DrawerLayout.SimpleDrawerListener() {
+ @Override
+ public void onDrawerSlide(@NonNull View drawerView, float slideOffset) {
+ if (slideOffset > 0.2)
+ fabHide();
+ }
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
mProfileListAdapter.setAnimationsEnabled(false);
mProfileListAdapter.editingProfiles.setValue(false);
+ Data.drawerOpen.setValue(false);
+ fabShouldShow();
}
@Override
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
mProfileListAdapter.setAnimationsEnabled(true);
+ Data.drawerOpen.setValue(true);
+ fabHide();
}
};
drawer.addDrawerListener(drawerListener);
}
- setupProfile();
+
+ Data.drawerOpen.observe(this, open -> {
+ if (open)
+ drawer.open();
+ else
+ drawer.close();
+ });
}
private void scheduleDataRetrievalIfStale(Date lastUpdate) {
long now = new Date().getTime();
if (!p.isPostingPermitted())
continue;
- ShortcutInfo si =
- new ShortcutInfo.Builder(this, "new_transaction_" + p.getUuid()).setShortLabel(
- p.getName())
- .setIcon(
- Icon.createWithResource(
- this,
- R.drawable.svg_thick_plus_white))
- .setIntent(
- new Intent(
- Intent.ACTION_VIEW,
- null,
- this,
- NewTransactionActivity.class).putExtra(
- "profile_uuid",
- p.getUuid()))
- .setRank(i)
- .build();
+ final ShortcutInfo.Builder builder =
+ new ShortcutInfo.Builder(this, "new_transaction_" + p.getUuid());
+ ShortcutInfo si = builder.setShortLabel(p.getName())
+ .setIcon(Icon.createWithResource(this,
+ R.drawable.thick_plus_icon))
+ .setIntent(new Intent(Intent.ACTION_VIEW, null, this,
+ NewTransactionActivity.class).putExtra("profile_uuid",
+ p.getUuid()))
+ .setRank(i)
+ .build();
shortcuts.add(si);
i++;
}
*/
private void onProfileChanged(MobileLedgerProfile profile) {
boolean haveProfile = profile != null;
- findViewById(R.id.no_profiles_layout).setVisibility(haveProfile ? View.GONE : View.VISIBLE);
- findViewById(R.id.pager_layout).setVisibility(haveProfile ? View.VISIBLE : View.VISIBLE);
if (haveProfile)
setTitle(profile.getName());
this.profile = profile;
- mProfileListAdapter.notifyDataSetChanged();
-
int newProfileTheme = haveProfile ? profile.getThemeHue() : -1;
if (newProfileTheme != Colors.profileThemeId) {
debug("profiles",
String.format(Locale.ENGLISH, "profile theme %d → %d", Colors.profileThemeId,
newProfileTheme));
- MainActivity.this.profileThemeChanged();
Colors.profileThemeId = newProfileTheme;
+ profileThemeChanged();
// profileThemeChanged would restart the activity, so no need to reload the
// data sets below
return;
}
- drawer.closeDrawers();
+ findViewById(R.id.no_profiles_layout).setVisibility(haveProfile ? View.GONE : View.VISIBLE);
+ findViewById(R.id.pager_layout).setVisibility(haveProfile ? View.VISIBLE : View.VISIBLE);
+
+ mProfileListAdapter.notifyDataSetChanged();
Data.transactions.clear();
debug("transactions", "requesting list reload");
scheduleDataRetrievalIfStale(newValue);
}
private void profileThemeChanged() {
- Bundle bundle = new Bundle();
- onSaveInstanceState(bundle);
-
storeThemeIdInPrefs(profile.getThemeHue());
- // restart activity to reflect theme change
- finish();
-
// un-hook all observed LiveData
Data.profile.removeObservers(this);
Data.profiles.removeObservers(this);
Data.lastUpdateDate.removeObservers(this);
- Intent intent = new Intent(this, this.getClass());
- intent.putExtra(BUNDLE_SAVED_STATE, bundle);
- startActivity(intent);
+
+ recreate();
}
private void storeThemeIdInPrefs(int themeId) {
// store the new theme id in the preferences
public void fabShouldShow() {
if ((profile != null) && profile.isPostingPermitted() && !drawer.isOpen())
fab.show();
+ else
+ fabHide();
}
public void fabHide() {
fab.hide();
}
public void onAccountSummaryRowViewClicked(View view) {
ViewGroup row;
- if (view.getId() == R.id.account_expander)
- row = (ViewGroup) view.getParent()
- .getParent();
- else
- row = (ViewGroup) view.getParent();
+ switch (view.getId()) {
+ case R.id.account_expander:
+ row = (ViewGroup) view.getParent()
+ .getParent()
+ .getParent();
+ break;
+ case R.id.account_expander_container:
+ case R.id.account_row_acc_name:
+ row = (ViewGroup) view.getParent()
+ .getParent();
+ break;
+ default:
+ row = (ViewGroup) view.getParent();
+ break;
+ }
LedgerAccount acc = (LedgerAccount) row.getTag();
switch (view.getId()) {