Date.setCurrentProfile may accept null as argument for example when the last profile has been removed
make decimal separator available globally updated with locale changes
remove duplicate call
Data.profile doesn't need to be an inert MutableLiveData the normal MutableLiveData doesn't fire if not given an initial value
fix creation of a new profile after Room-y of Profile adoption
Room-based profile management MobileLedgerProfile is gone, Room spreads gradually
asynchronous profile initialisation the problem here was that the startup profile is read from the DB, synchronously, and all DB operations need to happen via Room off the main thread since at activity startup only the theme is needed, that, and the startup profile ID can be stored in the android preferences. actual loading of profile and further data can be done after the theme is setup, in the background, via Room
adopt Room for displaying account lists
another step towards surrogate ID db objects rename profile's uuid column to catch (and remove) all its usages use default theme id for the initial theme id
migrate to surrogate IDs for all database objects along with foreign keys etc
fu: Data.parseNumber
rename formatNumber to formatCurrency and provide formatNumber w/o curr. also provide number parsing, using the same NumberFormat object
global function for formatting numbers (locale-aware)
fixed a hard to reproduce crash upon returning to the app to reproduce, set the background process limit in the developer options to "1"
splash: setup DB in the background this puts all initial DB work in the background - creation and upgrade avoids empty screen when there is a ig DB rework on upgrade
show the number of accounts in the account list head item
last update text also includes transaction count and is maintained by the main activity, which has access to all the relevant bits - string resources, live data observation, up to date transaction count
convert the last update global header to a list header to avoid taking up precious space, and to help animation of transactions coming in the front of the list -- before they were silently inserted above the first, in above the visible scroller window. now there is an item fixed at the first position
major rework of parsed transaction/descriptions/accounts storage new approach avoids mass deletion followed by mass inserts and allows activation of foreign key constraints in SQLite the list of accounts and transactions are managed by an asynchronous differ members of Data that are relevant only to the MainActivity and its fragments are moved to a new MainModel ViewModel class
rework transaction retrieval without MainActivity reference use a public LiveData to which interested parties can subscribe