import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;
-import android.widget.Toast;
+import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.widget.Toolbar;
import androidx.core.view.GravityCompat;
import androidx.viewpager.widget.ViewPager;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
+import com.google.android.material.snackbar.Snackbar;
import net.ktnx.mobileledger.R;
import net.ktnx.mobileledger.async.DbOpQueue;
}
barDrawerToggle.syncState();
- TextView ver = drawer.findViewById(R.id.drawer_version_text);
-
try {
PackageInfo pi = getApplicationContext().getPackageManager()
.getPackageInfo(getPackageName(), 0);
- ver.setText(pi.versionName);
+ ((TextView) findViewById(R.id.nav_upper).findViewById(
+ R.id.drawer_version_text)).setText(pi.versionName);
+ ((TextView) findViewById(R.id.no_profiles_layout).findViewById(
+ R.id.drawer_version_text)).setText(pi.versionName);
}
catch (Exception e) {
e.printStackTrace();
(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();
// profiles not yet loaded from DB
findViewById(R.id.loading_layout).setVisibility(View.VISIBLE);
findViewById(R.id.no_profiles_layout).setVisibility(View.GONE);
- findViewById(R.id.pager_layout).setVisibility(View.GONE);
+ findViewById(R.id.main_app_layout).setVisibility(View.GONE);
return;
}
if (newList.isEmpty()) {
findViewById(R.id.no_profiles_layout).setVisibility(View.VISIBLE);
- findViewById(R.id.pager_layout).setVisibility(View.GONE);
+ findViewById(R.id.main_app_layout).setVisibility(View.GONE);
findViewById(R.id.loading_layout).setVisibility(View.GONE);
return;
}
- findViewById(R.id.pager_layout).setVisibility(View.VISIBLE);
+ findViewById(R.id.main_app_layout).setVisibility(View.VISIBLE);
findViewById(R.id.no_profiles_layout).setVisibility(View.GONE);
findViewById(R.id.loading_layout).setVisibility(View.GONE);
*/
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
TransactionListViewModel.scheduleTransactionListReload();
}
else
- Toast.makeText(this, error, Toast.LENGTH_LONG)
- .show();
+ Snackbar.make(mViewPager, error, Snackbar.LENGTH_LONG)
+ .show();
}
public void onRetrieveStart() {
ProgressBar progressBar = findViewById(R.id.transaction_list_progress_bar);
}
}
public void fabShouldShow() {
- if ((profile != null) && profile.isPostingPermitted())
+ 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()) {