package co.smartreceipts.android.receipts; import android.support.v7.app.ActionBar; import co.smartreceipts.android.R; import co.smartreceipts.android.fragments.WBListFragment; import co.smartreceipts.android.model.Trip; import co.smartreceipts.android.persistence.PersistenceManager; import co.smartreceipts.android.settings.catalog.UserPreference; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; public abstract class ReceiptsFragment extends WBListFragment { public static final String TAG = "ReceiptsFragment"; protected Trip trip; private Disposable disposable; public static ReceiptsListFragment newListInstance() { return new ReceiptsListFragment(); } @Override public void onPause() { if (disposable != null) { disposable.dispose(); disposable = null; } super.onPause(); } protected void updateActionBarTitle(boolean updateSubtitle) { if (trip == null) { return; } final ActionBar actionBar = getSupportActionBar(); if (actionBar != null && getUserVisibleHint()) { if (updateSubtitle) { PersistenceManager persistenceManager = getPersistenceManager(); if (persistenceManager.getPreferenceManager().get(UserPreference.Receipts.ShowReceiptID)) { disposable = persistenceManager.getDatabase().getNextReceiptAutoIncremenetIdHelper() .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(receiptId -> { if (isResumed()) { final ActionBar bar = getSupportActionBar(); if (bar != null) { bar.setSubtitle(getString(R.string.next_id, receiptId)); } } }); } else { actionBar.setSubtitle(getString(R.string.daily_total, trip.getDailySubTotal().getCurrencyFormattedPrice())); } } } } protected abstract PersistenceManager getPersistenceManager(); }