- public static ObservableList<TransactionListItem> transactions = new ObservableList<>(new ArrayList<>());
- public static ObservableList<LedgerAccount> accounts = new ObservableList<>(new ArrayList<>());
- public static ObservableAtomicInteger backgroundTaskCount = new ObservableAtomicInteger(0);
- public static MutableLiveData<Date> lastUpdateDate = new MutableLiveData<>();
- public static ObservableValue<MobileLedgerProfile> profile = new ObservableValue<>();
- public static ObservableList<MobileLedgerProfile> profiles =
- new ObservableList<>(new ArrayList<>());
- public static ObservableValue<Boolean> optShowOnlyStarred = new ObservableValue<>();
- public static MutableLiveData<String> accountFilter = new MutableLiveData<>();
- public static void setCurrentProfile(MobileLedgerProfile newProfile) {
+ public static final MutableLiveData<Boolean> backgroundTasksRunning =
+ new MutableLiveData<>(false);
+ public static final MutableLiveData<RetrieveTransactionsTask.Progress> backgroundTaskProgress =
+ new MutableLiveData<>();
+ public static final MutableLiveData<ArrayList<MobileLedgerProfile>> profiles =
+ new MutableLiveData<>(null);
+ public static final MutableLiveData<Currency.Position> currencySymbolPosition =
+ new MutableLiveData<>();
+ public static final MutableLiveData<Boolean> currencyGap = new MutableLiveData<>(true);
+ public static final MutableLiveData<Locale> locale = new MutableLiveData<>();
+ public static final MutableLiveData<Boolean> drawerOpen = new MutableLiveData<>(false);
+ public static final MutableLiveData<Date> lastUpdateDate = new MutableLiveData<>(null);
+ public static final MutableLiveData<Integer> lastUpdateTransactionCount =
+ new MutableLiveData<>(0);
+ public static final MutableLiveData<Integer> lastUpdateAccountCount = new MutableLiveData<>(0);
+ public static final ObservableValue<String> lastTransactionsUpdateText =
+ new ObservableValue<>();
+ public static final ObservableValue<String> lastAccountsUpdateText = new ObservableValue<>();
+ private static final MutableLiveData<MobileLedgerProfile> profile =
+ new InertMutableLiveData<>();
+ private static final AtomicInteger backgroundTaskCount = new AtomicInteger(0);
+ private static final Locker profilesLocker = new Locker();
+
+ static {
+ locale.setValue(Locale.getDefault());
+ }
+
+ @NonNull
+ public static MobileLedgerProfile getProfile() {
+ return Objects.requireNonNull(profile.getValue());
+ }
+ public static void backgroundTaskStarted() {
+ int cnt = backgroundTaskCount.incrementAndGet();
+ debug("data",
+ String.format(Locale.ENGLISH, "background task count is %d after incrementing",
+ cnt));
+ backgroundTasksRunning.postValue(cnt > 0);
+ }
+ public static void backgroundTaskFinished() {
+ int cnt = backgroundTaskCount.decrementAndGet();
+ debug("data",
+ String.format(Locale.ENGLISH, "background task count is %d after decrementing",
+ cnt));
+ backgroundTasksRunning.postValue(cnt > 0);
+ }
+ public static void setCurrentProfile(@NonNull MobileLedgerProfile newProfile) {
+ MLDB.setOption(MLDB.OPT_PROFILE_UUID, newProfile.getUuid());
+ profile.setValue(newProfile);
+ }
+ public static void postCurrentProfile(@NonNull MobileLedgerProfile newProfile) {