Cross platform vocable and grammar trainer using spaced repetition algorithm - unfinished rewrite of existing and working (but due to license reasons unpublished) app / program
Might put this in a seperate repo for license reasons but this should be supported on both ends, so it needs to be here as well.
Implement parser for wiktionary tables (is ok license wise because we don't use the LUA code)
Implement grammar provider based on this parser
Implement android service which provides grammar information from wiktionary (This convoluted arrangement is necessary for using the LUA scripts from wiktionary which are under an incompatible license).
Implement android service which provides grammar information from other code (Find this open source code again)
Android services are something for much later. I consider the base functionality of the grammar provider working good enough for version 0.1 (the whole grammarprovider was originally planned for a later release 0.2, but we needed to implement this earlier).
There should be a better vocable editor than in old coleitra to make it usable for people other than myself.
Find more clever way to access database singleton (could be QObject parent of edit class)
Create good edit element for entering text
Create expert mode which allows entering everything
Create simple mode for easy entering
Modify expert mode for search / editing capability
Modify simple mode for search / editing capability
On further thought I think search / editing capabilities don't belong in those modes. Database mode is better for this and fine (should be complete though)
Write Qt TableView (C++) for json data structure for language
Write QML Element for showing this as editable table
Write interfacing functions for QML to show it from context with filled out table from editing mode (to easily switch back and forth between this mode and editing mode)
Bug does occur always when quitting program from simple edit mode.
Steps to reproduce
Goto Simple Edit mode
Quit program
Observe segmentation fault
Perceived severity by user
No response
Additional information
Order of destructors is not enforced right now and m_grammar_provider is not available anymore when the destructor is called. Do we even have to disconnect this signals or should we care?
Add lua again (should be fast as it works just fine on old coleitra).
But than also think about how to elegantly replace compiled C code at runtime with LUA scripts where possible and safe. This requires exposure of the necessary functions.
There are some weaknesses in the old coleitra of the database schema / the implementation of the database handling:
Foreign keys are probably not used throughout
Languages are not stored as a separate table but strings are used
Only the time when a vocable leaves the buffer is stored (i.e. when it is known), but it should be stored, when a vocable is displayed and when it is not known as well
There should be an easy way to delete all rows depending on a foreign key postponed for later
There is still some bug in the old code, where the program wont start with an empty / new database - this should be covered in a unit test Unit tests should be a separate issue
Access to the database should be done without multiple database objects, if necessary there should be a singleton
Make sure it is possible to store SM information with the vocable (i.e. degree of knowing) even if not used right now in any algorithm
Implement the algorithm used in old coleitra. This should get us started for a working version. There should be a real function interface so we can change between algorithms easily and on the fly. (Postponed for later milestone).
It should be improved over the old coleitra regarding the following points:
Text should be scaled to fill available space as large as possible (with necessary line breaks)
Multiple meanings should be handled correctly (it should be possible therefore to divide space further and display multiple vocables in the divided spaces - a minimum size where a scrollarea is implemented should be postponed for a later version though)