-
Notifications
You must be signed in to change notification settings - Fork 51
Future directions
The struggle to get an Android version of Tagaini shows that the project is not well-designed to support several versions. Portability has been obtained by relying on Qt so far, but the limits of this approach are very obvious now: while Qt is perfectly appropriate for the desktop, it does not scale very well on touch-based devices. And the Android version of Qt is hardly a viable solution since it requires the import of huge libraries and basically break the Android UI experience.
For these reasons, it is desirable to rethink Tagaini without Qt as the cornerstone. Desktop versions should of course continue to rely on Qt - but Qt cannot be a hard requirement to build and run Tagaini anymore.
Most of the "intelligence" of Tagaini actually resides in its databases, which rely on SQLite. SQLite is virtually available everywhere, so it does not consitute a portability problem. However, most of the querying has been done using an additional abstraction layer relying on Qt. Android has its own interface to SQlite.
The first thing to consider would be to extract the queries outside of the program's code, and instead use a portable engine to control the DB out of these queries. This engine should be able to read text-encoded rules that define how a SQL query should be built from a set of query requirement. Porting the engine to a new platform would then be able to performa database queries.
As far as the GUI is concerned, there is no magic trick - a new GUI needs to be rewritten for every platform with different paradigms.