mobile-ledger.git
4 days agomaterial (slightly larger) text sizes in template list master
Damyan Ivanov [Thu, 4 Mar 2021 10:37:14 +0000 (10:37 +0000)]
material (slightly larger) text sizes in template list

4 days agoshow hidden FAB after four seconds
Damyan Ivanov [Wed, 3 Mar 2021 21:18:54 +0000 (23:18 +0200)]
show hidden FAB after four seconds

4 days agoreplace unused coordinator layout with constraint layout
Damyan Ivanov [Wed, 3 Mar 2021 20:46:48 +0000 (22:46 +0200)]
replace unused coordinator layout with constraint layout

removing the nested scroll view also makes the behaviour of the FAB not
depend on the number of items in the recycle view

4 days agouse standard height toolbars in main activity and new transaction act.
Damyan Ivanov [Wed, 3 Mar 2021 20:29:43 +0000 (22:29 +0200)]
use standard height toolbars in main activity and new transaction act.

4 days agouse default toolbar height for the templates activity
Damyan Ivanov [Wed, 3 Mar 2021 20:07:05 +0000 (22:07 +0200)]
use default toolbar height for the templates activity

looks better and the extra height is not needed

4 days ago"fix" background of templates toolbar
Damyan Ivanov [Wed, 3 Mar 2021 20:06:21 +0000 (22:06 +0200)]
"fix" background of templates toolbar

this needs a better fix, but the workaround present in the other
activities will do for now

5 days agoinclude "last account" flag in debug output
Damyan Ivanov [Wed, 3 Mar 2021 17:34:43 +0000 (19:34 +0200)]
include "last account" flag in debug output

5 days agoset focus to the transaction description upon UI reset
Damyan Ivanov [Wed, 3 Mar 2021 17:34:23 +0000 (19:34 +0200)]
set focus to the transaction description upon UI reset

for example when the transaction is submitted

5 days agoNT: keep cursor position while setting account name text
Damyan Ivanov [Wed, 3 Mar 2021 17:33:20 +0000 (19:33 +0200)]
NT: keep cursor position while setting account name text

some times the ViewHolder is replaced and the already entred text needs
to be restored. this resets the cursor position to 0, which is rather
uncomfortable while entering text

5 days agoswitch new transaction UI to FabManager
Damyan Ivanov [Wed, 3 Mar 2021 13:30:29 +0000 (15:30 +0200)]
switch new transaction UI to FabManager

5 days agomeasure FAB
Damyan Ivanov [Wed, 3 Mar 2021 13:29:54 +0000 (15:29 +0200)]
measure FAB

requires that it is bottom-aligned to a supported layout

fixes a problem when the FAB needs to be hidden before view are measured
and laid out

5 days agoparent is guaranteed to be a View here, or null
Damyan Ivanov [Wed, 3 Mar 2021 12:35:23 +0000 (14:35 +0200)]
parent is guaranteed to be a View here, or null

5 days agodrop collapsing toolbar layout, plain toolbar is fine
Damyan Ivanov [Wed, 3 Mar 2021 12:32:31 +0000 (12:32 +0000)]
drop collapsing toolbar layout, plain toolbar is fine

same as the other places

5 days agoseparate FAB management in a helper class
Damyan Ivanov [Wed, 3 Mar 2021 12:31:51 +0000 (12:31 +0000)]
separate FAB management in a helper class

CoordinatorLayout + FAB with "hide bottom view on scroll" behaviour
might seem to work, but there is a corner case when the view is just
large enough so that the FAB overlaps it, but not large enough to cause
scrolling and in this case it is possible to either be stuck with the
FAB over the bottom of the business area, or to hide the FAB without an
intuitive to make it pop up again

also, use single FAB for the Templates activity

5 days agodrop last remnants of new transaction bottom padding
Damyan Ivanov [Wed, 3 Mar 2021 07:13:53 +0000 (09:13 +0200)]
drop last remnants of new transaction bottom padding

5 days agoadd divider before fallback templates
Damyan Ivanov [Tue, 2 Mar 2021 21:12:27 +0000 (23:12 +0200)]
add divider before fallback templates

6 days agocheck if transaction is submittable after applying a template
Damyan Ivanov [Tue, 2 Mar 2021 16:57:24 +0000 (18:57 +0200)]
check if transaction is submittable after applying a template

6 days agoTemplates: order fallback templates at the bottom of the list
Damyan Ivanov [Tue, 2 Mar 2021 16:56:14 +0000 (18:56 +0200)]
Templates: order fallback templates at the bottom of the list

6 days agoslight optimization
Damyan Ivanov [Mon, 1 Mar 2021 19:53:46 +0000 (21:53 +0200)]
slight optimization

6 days agofix storing/restoring focus on reconfiguration
Damyan Ivanov [Mon, 1 Mar 2021 19:53:33 +0000 (21:53 +0200)]
fix storing/restoring focus on reconfiguration

7 days agooptimize calls to checkTransactionSubmittable()
Damyan Ivanov [Mon, 1 Mar 2021 17:58:42 +0000 (19:58 +0200)]
optimize calls to checkTransactionSubmittable()

this an expensive function traversing over all rows, so a cheap
avoidance would be nice

7 days agoflag initial amount hint as present (still null)
Damyan Ivanov [Mon, 1 Mar 2021 05:57:58 +0000 (07:57 +0200)]
flag initial amount hint as present (still null)

this avoids unnecessary item replacement manifesting as selection change
when the first letter of the account name is entered

7 days agowhen comparing account rows, ignore amount hints if amount is present
Damyan Ivanov [Sun, 28 Feb 2021 21:27:53 +0000 (23:27 +0200)]
when comparing account rows, ignore amount hints if amount is present

avoids unnecessary view holder update, possibly messing with the amount
being entered

7 days agoformat amounts when the input field loses focus
Damyan Ivanov [Sun, 28 Feb 2021 21:26:26 +0000 (23:26 +0200)]
format amounts when the input field loses focus

previously this relied on an update via the model

7 days agofix IME hints for amount inputs
Damyan Ivanov [Sun, 28 Feb 2021 20:42:00 +0000 (22:42 +0200)]
fix IME hints for amount inputs

7 days agofocus the first amount after loading a previous transaction
Damyan Ivanov [Sun, 28 Feb 2021 17:32:55 +0000 (19:32 +0200)]
focus the first amount after loading a previous transaction

7 days agonew-transaction: avoid auto-completion pop-ups when applying data
Damyan Ivanov [Sun, 28 Feb 2021 17:32:34 +0000 (19:32 +0200)]
new-transaction: avoid auto-completion pop-ups when applying data

the data comes from the model, i.e. either from an applied template or
loading of a previous transaction (auto-completion of transaction
description)

7 days agofix removal of empty transaction rows after the major rework
Damyan Ivanov [Sun, 28 Feb 2021 17:06:03 +0000 (19:06 +0200)]
fix removal of empty transaction rows after the major rework

7 days agofix sending empty transaction comments as "", not as null
Damyan Ivanov [Sun, 28 Feb 2021 16:55:53 +0000 (18:55 +0200)]
fix sending empty transaction comments as "", not as null

null causes a '400 expecting String, found Null'

7 days agoavoid crash when there is no information about focused element
Damyan Ivanov [Sun, 28 Feb 2021 16:55:00 +0000 (18:55 +0200)]
avoid crash when there is no information about focused element

observed when sending the transaction to the backend throws an exception

7 days agonew transaction: replace bottom filler with scroll FAB behaviour
Damyan Ivanov [Sat, 27 Feb 2021 20:27:30 +0000 (22:27 +0200)]
new transaction: replace bottom filler with scroll FAB behaviour

code becomes more consistent when the last item in the list is not a
special case

and FAB UI behaviour also becomes consistent with the rest of the app

7 days agorework new transaction activity/model/etc with proper concept separation
Damyan Ivanov [Sat, 27 Feb 2021 20:06:18 +0000 (20:06 +0000)]
rework new transaction activity/model/etc with proper concept separation

activity monitors the model and sends changes to adapter; view holder
propagates changes to the model

this makes it possible to properly handle QR scan results in the
activity without dirty tricks

7 days agomove sample text scanning to the template activity
Damyan Ivanov [Sun, 21 Feb 2021 10:30:25 +0000 (12:30 +0200)]
move sample text scanning to the template activity

the initial idea was to have an abstract fragment class that could
handle the details about launching the QR scanner and accept the result.

however, the right place to do this is the activity, because only an
activity can receive the scan result, and launch the QR app.

Before, this was worked around by a LiveData thing that the activity
observed, and which the "Scan" buttons triggered. This has a nasty side
effect that the LiveData is triggered whenever the activity is
re-instantiated

7 days agoaccount name auto-complete: convert input to upper case
Damyan Ivanov [Sun, 21 Feb 2021 10:13:18 +0000 (12:13 +0200)]
account name auto-complete: convert input to upper case

the database uses case_sensitive_like pragma for other reasons, so
thi lookup query needs to be adapted. this wasn't a problem before
the adoption of Room for database structure migration with all the
connection-level pragmas, used by the account storage part

7 days agobump version (name and code)
Damyan Ivanov [Sat, 20 Feb 2021 12:23:28 +0000 (14:23 +0200)]
bump version (name and code)

7 days agoRoom takes over DB migrations
Damyan Ivanov [Sat, 20 Feb 2021 06:49:45 +0000 (08:49 +0200)]
Room takes over DB migrations

7 days agodescribe transaction_accounts to Room
Damyan Ivanov [Fri, 19 Feb 2021 16:37:56 +0000 (16:37 +0000)]
describe transaction_accounts to Room

7 days agodescribe transactions to Room
Damyan Ivanov [Fri, 19 Feb 2021 16:31:28 +0000 (16:31 +0000)]
describe transactions to Room

7 days agoinitialize Room after all legacy upgrading is done
Damyan Ivanov [Fri, 19 Feb 2021 16:23:38 +0000 (16:23 +0000)]
initialize Room after all legacy upgrading is done

this is here until all database tables are described in Room and the
structure changes can be migrated too Room too.

7 days agodescribe description_history to Room
Damyan Ivanov [Fri, 19 Feb 2021 16:20:13 +0000 (16:20 +0000)]
describe description_history to Room

2 weeks agodescribe account_values to Room
Damyan Ivanov [Fri, 19 Feb 2021 16:15:47 +0000 (16:15 +0000)]
describe account_values to Room

2 weeks agodescribe options to Room
Damyan Ivanov [Thu, 18 Feb 2021 20:37:25 +0000 (22:37 +0200)]
describe options to Room

2 weeks agodescribe profiles for Room
Damyan Ivanov [Thu, 18 Feb 2021 20:26:02 +0000 (22:26 +0200)]
describe profiles for Room

2 weeks agoremove unnecessary qualification
Damyan Ivanov [Thu, 18 Feb 2021 19:21:00 +0000 (21:21 +0200)]
remove unnecessary qualification

2 weeks agooffer fallback templates only when no other template matches
Damyan Ivanov [Thu, 18 Feb 2021 19:17:33 +0000 (21:17 +0200)]
offer fallback templates only when no other template matches

2 weeks agomore pattern → template renaming
Damyan Ivanov [Thu, 18 Feb 2021 19:10:12 +0000 (21:10 +0200)]
more pattern → template renaming

2 weeks agofix crash when there is no test text and the pattern is tested
Damyan Ivanov [Thu, 18 Feb 2021 19:08:17 +0000 (21:08 +0200)]
fix crash when there is no test text and the pattern is tested

2 weeks agoanother approach at supporting multi-line SQL statements
Damyan Ivanov [Thu, 18 Feb 2021 18:41:41 +0000 (20:41 +0200)]
another approach at supporting multi-line SQL statements

2 weeks agowhitespace
Damyan Ivanov [Thu, 18 Feb 2021 17:43:17 +0000 (19:43 +0200)]
whitespace

2 weeks agonot boolean, integer
Damyan Ivanov [Thu, 18 Feb 2021 17:43:09 +0000 (19:43 +0200)]
not boolean, integer

for room compatibility

2 weeks agoadd fallback flag to templates
Damyan Ivanov [Thu, 18 Feb 2021 17:42:40 +0000 (19:42 +0200)]
add fallback flag to templates

2 weeks agoslightly easier account item rearrangement
Damyan Ivanov [Mon, 8 Feb 2021 06:12:22 +0000 (06:12 +0000)]
slightly easier account item rearrangement

2 weeks agono need for gravity, only one edge is constrained anyway
Damyan Ivanov [Mon, 8 Feb 2021 06:08:39 +0000 (06:08 +0000)]
no need for gravity, only one edge is constrained anyway

2 weeks agodebug++
Damyan Ivanov [Mon, 8 Feb 2021 06:07:50 +0000 (06:07 +0000)]
debug++

2 weeks agotemplate details: ensure single empty account when account data is changed
Damyan Ivanov [Mon, 8 Feb 2021 06:07:24 +0000 (06:07 +0000)]
template details: ensure single empty account when account data is changed

2 weeks agomember rearrangement
Damyan Ivanov [Mon, 8 Feb 2021 06:06:28 +0000 (06:06 +0000)]
member rearrangement

2 weeks agodebug++
Damyan Ivanov [Mon, 8 Feb 2021 06:06:17 +0000 (06:06 +0000)]
debug++

2 weeks agomodel: adjust items' positions when an item is removed
Damyan Ivanov [Mon, 8 Feb 2021 06:05:54 +0000 (06:05 +0000)]
model: adjust items' positions when an item is removed

2 weeks agomodel: adjust items' positions when an item is moved
Damyan Ivanov [Mon, 8 Feb 2021 06:05:17 +0000 (06:05 +0000)]
model: adjust items' positions when an item is moved

2 weeks agomodel: reorder account rows by their position
Damyan Ivanov [Mon, 8 Feb 2021 06:01:32 +0000 (06:01 +0000)]
model: reorder account rows by their position

it is stupid that this cannot be achieved in Room

2 weeks agomodel: ensure exactly one empty account row
Damyan Ivanov [Mon, 8 Feb 2021 05:58:50 +0000 (05:58 +0000)]
model: ensure exactly one empty account row

also properly apply the check after removing an item. the intermediate
items.setValue(newList) is complete unnecessary

also make the check when receiving items from the database

2 weeks agotemplate details model: method for creating a copy of the data list
Damyan Ivanov [Mon, 8 Feb 2021 05:56:11 +0000 (05:56 +0000)]
template details model: method for creating a copy of the data list

this is a clone-like list, that shares no common objects with the original
needed so that any changes to it do not touch the original items and
differ discovers the changes

2 weeks agoadapter/debug: dump new item list
Damyan Ivanov [Mon, 8 Feb 2021 05:53:22 +0000 (05:53 +0000)]
adapter/debug: dump new item list

2 weeks agodrop unused method
Damyan Ivanov [Mon, 8 Feb 2021 05:52:53 +0000 (05:52 +0000)]
drop unused method

2 weeks agoposition becomes plain long (not Long)
Damyan Ivanov [Mon, 8 Feb 2021 05:51:54 +0000 (05:51 +0000)]
position becomes plain long (not Long)

2 weeks agoAccountRow.isEmpty(): is this a disposable empty row?
Damyan Ivanov [Mon, 8 Feb 2021 05:50:38 +0000 (05:50 +0000)]
AccountRow.isEmpty(): is this a disposable empty row?

i.e., without account name/comment/amount source/value

2 weeks agoAccountRow.equalContents: compare positions too
Damyan Ivanov [Mon, 8 Feb 2021 05:49:56 +0000 (05:49 +0000)]
AccountRow.equalContents: compare positions too

2 weeks agoAccountRow: copy constructor
Damyan Ivanov [Mon, 8 Feb 2021 05:49:33 +0000 (05:49 +0000)]
AccountRow: copy constructor

2 weeks agoAccountRow: set position from DB
Damyan Ivanov [Mon, 8 Feb 2021 05:48:06 +0000 (05:48 +0000)]
AccountRow: set position from DB

2 weeks agotouch helper: avoid moving an item to its present position
Damyan Ivanov [Mon, 8 Feb 2021 05:47:16 +0000 (05:47 +0000)]
touch helper: avoid moving an item to its present position

2 weeks agoheader row has (adapter) ID of 0, not -1
Damyan Ivanov [Mon, 8 Feb 2021 05:44:37 +0000 (05:44 +0000)]
header row has (adapter) ID of 0, not -1

-1 is the ID of the first newly added account and IDs must be unique

2 weeks agostop propagating UI changes to the model during view binding
Damyan Ivanov [Mon, 8 Feb 2021 05:43:36 +0000 (05:43 +0000)]
stop propagating UI changes to the model during view binding

prevents endless recursion

2 weeks agoinclude account position in template account head
Damyan Ivanov [Mon, 8 Feb 2021 05:35:58 +0000 (05:35 +0000)]
include account position in template account head

the account block is rather large, a prominent indicator of its
sequential number seems appropriate

2 weeks agosilence click-accessibility warning
Damyan Ivanov [Tue, 16 Feb 2021 20:21:05 +0000 (22:21 +0200)]
silence click-accessibility warning

this view is not clickable

2 weeks agomethod rearrangement
Damyan Ivanov [Tue, 16 Feb 2021 20:16:55 +0000 (22:16 +0200)]
method rearrangement

2 weeks agouse expression lambda
Damyan Ivanov [Tue, 16 Feb 2021 20:16:42 +0000 (22:16 +0200)]
use expression lambda

2 weeks agoimplement swipe-remove and drag-move in template details
Damyan Ivanov [Tue, 16 Feb 2021 20:15:40 +0000 (22:15 +0200)]
implement swipe-remove and drag-move in template details

2 weeks agotemplate modes: mark newly added accounts with negative IDs
Damyan Ivanov [Tue, 16 Feb 2021 20:14:06 +0000 (22:14 +0200)]
template modes: mark newly added accounts with negative IDs

unique IDs are mandatory, and the ones from the database are positive.
newly created may use negative IDs (given by a model-wide decrementing
atomic integer) and this comes handy when saving them to to db

2 weeks agofix saving template account removals
Damyan Ivanov [Tue, 16 Feb 2021 20:07:39 +0000 (22:07 +0200)]
fix saving template account removals

simple idea. account positions are positive numbers. upon save, all
positions are set to -1, then all accounts are saved with positions from
1 on, and finally all the accounts with positions still at -1 are
deleted

2 weeks agofix duplicate accounts in template account autocompletion
Damyan Ivanov [Mon, 15 Feb 2021 20:41:18 +0000 (22:41 +0200)]
fix duplicate accounts in template account autocompletion

visible when multiple profiles contain accounts with the same name

2 weeks agobump several library versions
Damyan Ivanov [Mon, 15 Feb 2021 20:14:40 +0000 (22:14 +0200)]
bump several library versions

2 weeks agouse stock drag handle icon for profile list
Damyan Ivanov [Sun, 14 Feb 2021 08:03:29 +0000 (10:03 +0200)]
use stock drag handle icon for profile list

2 weeks agocorrect copyright notices on icon resources
Damyan Ivanov [Sun, 14 Feb 2021 07:59:33 +0000 (09:59 +0200)]
correct copyright notices on icon resources

2 weeks agofix visibility of amount sign switch texts
Damyan Ivanov [Sun, 14 Feb 2021 07:26:00 +0000 (09:26 +0200)]
fix visibility of amount sign switch texts

2 weeks agotemplate details: replace the framework trash icon with stock one
Damyan Ivanov [Sun, 14 Feb 2021 07:24:43 +0000 (09:24 +0200)]
template details: replace the framework trash icon with stock one

to keep it consistent with the other icons

2 weeks agofix marking of unmatched part at the end of the test text
Damyan Ivanov [Sat, 13 Feb 2021 21:38:36 +0000 (23:38 +0200)]
fix marking of unmatched part at the end of the test text

2 weeks agodrop unused variable
Damyan Ivanov [Sat, 13 Feb 2021 21:37:55 +0000 (23:37 +0200)]
drop unused variable

2 weeks agomanipulation of templates via pop-up menu, add template duplication
Damyan Ivanov [Sat, 13 Feb 2021 21:08:16 +0000 (23:08 +0200)]
manipulation of templates via pop-up menu, add template duplication

2 weeks agomethods for duplication of a template with its data
Damyan Ivanov [Sat, 13 Feb 2021 21:02:54 +0000 (23:02 +0200)]
methods for duplication of a template with its data

2 weeks agomake pattern editor survive reconfiguration
Damyan Ivanov [Sat, 13 Feb 2021 19:55:12 +0000 (21:55 +0200)]
make pattern editor survive reconfiguration

2 weeks agotemplate details: explicitly enabled layout changes animation
Damyan Ivanov [Sat, 13 Feb 2021 18:54:31 +0000 (20:54 +0200)]
template details: explicitly enabled layout changes animation

2 weeks agofix mis-translation
Damyan Ivanov [Sat, 13 Feb 2021 18:54:04 +0000 (20:54 +0200)]
fix mis-translation

2 weeks agoself-explanatory amount reversal switch
Damyan Ivanov [Sat, 13 Feb 2021 18:53:37 +0000 (20:53 +0200)]
self-explanatory amount reversal switch

2 weeks agowhitespace
Damyan Ivanov [Sat, 13 Feb 2021 16:24:37 +0000 (18:24 +0200)]
whitespace

2 weeks agotype (packend → backend)
Damyan Ivanov [Sat, 13 Feb 2021 16:24:23 +0000 (18:24 +0200)]
type (packend → backend)

2 weeks agotranslatable text for template element value from the pattern
Damyan Ivanov [Sat, 13 Feb 2021 16:24:04 +0000 (18:24 +0200)]
translatable text for template element value from the pattern

2 weeks agouse explicit indices for format strings in string resources
Damyan Ivanov [Sat, 13 Feb 2021 16:13:46 +0000 (18:13 +0200)]
use explicit indices for format strings in string resources

2 weeks agofu: visual improvements in template editor
Damyan Ivanov [Sat, 13 Feb 2021 16:01:12 +0000 (18:01 +0200)]
fu: visual improvements in template editor

2 weeks agobetter sub-section headings
Damyan Ivanov [Sat, 13 Feb 2021 15:45:59 +0000 (17:45 +0200)]
better sub-section headings

2 weeks agovisual improvements in template editor
Damyan Ivanov [Sat, 13 Feb 2021 15:45:35 +0000 (17:45 +0200)]
visual improvements in template editor

more air between independent elements, consistent look for sub-section
headings, clear icon