Editing ModRana Roadmap

Warning: You are not logged in. Your IP address will be recorded in this page's edit history.
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 31: Line 31:
*** clickable in text links [easy with QML]
*** clickable in text links [easy with QML]
*** multiline text editing for POI descriptions, etc. [very easy with QML]
*** multiline text editing for POI descriptions, etc. [very easy with QML]
-
 
-
=== Planed enhancements ===
 
-
* an option for forcing screen redraw interval (might improve Android chroot performance)
 
-
* more efficient centering
 
-
** just redraw the position cursor and only redraw the map once it nears the screen edge
 
-
** this should improve performance while moving at high speed on slow devices and in Android chroot
 
== What needs to be done to get the Qt GUI in a usable state ==
== What needs to be done to get the Qt GUI in a usable state ==
-
=== Separating the GUI logic to a GUI module - DONE ===
+
=== Separating the GUI logic to a GUI module ===
Most of the core GUI logic currently resides in the modRana "kernel" the ''modrana.py'' file. This logic needs to be transfered to a separate GUI module tat can be loaded by modRana at startup, either by providing a CLI parameter or automatically (once implemented).
Most of the core GUI logic currently resides in the modRana "kernel" the ''modrana.py'' file. This logic needs to be transfered to a separate GUI module tat can be loaded by modRana at startup, either by providing a CLI parameter or automatically (once implemented).
Line 47: Line 41:
'''What needs to be done ?'''
'''What needs to be done ?'''
-
* add pluggable GUI module support '''DONE'''
+
* add pluggable GUI module support
-
* move the current GTK logic to a GTK GUI module '''DONE'''
+
* move the current GTK logic to a GTK GUI module
-
** make sure the modularized GTK GUI works with all the changes '''DONE'''
+
* add proper CLI argument handling
-
* add proper CLI argument handling '''DONE'''
+
** -d, --device - set device module
-
** -d, --device - set device module '''DONE'''
+
** -u, --ui - set which GUI to use
-
** -u, --ui - set which GUI to use '''DONE'''
+
-
* optional
+
** --lat, --lon, --zoom, --layer - set a given map screen parameters at startup
** --lat, --lon, --zoom, --layer - set a given map screen parameters at startup
** --no_gps - don't start GPS on startup
** --no_gps - don't start GPS on startup
Line 60: Line 52:
** something else ?
** something else ?
-
=== Writing a Qt GUI module - DONE ===
+
=== Writing a Qt GUI module ===
The Qt GUI module needs to start the interface on startup - create the application window, fullscreen it and start displaying the modRana interface.
The Qt GUI module needs to start the interface on startup - create the application window, fullscreen it and start displaying the modRana interface.
'''What needs to be done ?'''
'''What needs to be done ?'''
* Qt GUI module
* Qt GUI module
-
** create application window and fullscreen it '''DONE'''
+
** create application window and fullscreen it
-
** fullscreen toggle '''DONE'''
+
** fullscreen toggle
-
** automatic rotation '''DONE'''
+
** automatic rotation & rotation lock
-
** shutdown support '''DONE'''
+
-
* TODO
+
-
** rotation lock
+
** set window title (if applicable)
** set window title (if applicable)
-
 
+
** shutdown support
-
=== Connecting the tile handling subsystem with QML - 50% DONE ===
+
-
ModRana currently uses tile based maps, individual map tiles need to be downloaded & stored so that they are downloaded only once.
+
-
* using the modRana tile handling subsystem in QML '''DONE'''
+
-
** modifying PinchMap to load tiles from local resources '''DONE'''
+
-
** implementing a localhost tileserver (yeah, really - it runs on port 9009 :D) '''DONE'''
+
-
** implementing a tile ImageProvider as a fallback for the unlikely possibility that the server won't start '''DONE'''
+
-
* create a batch-tile-download UI in QML
+
-
 
+
-
 
+
-
 
+
=== Getting data from modules to the Qt GUI ===
=== Getting data from modules to the Qt GUI ===
Line 124: Line 103:
** tracklogs
** tracklogs
-
<del>* implement the ''simple data API''</del>
+
* implement the ''simple data API''
-
<del>** add the mGet method to the options module and export it to modules</del>
+
** add the mGet method to the options module and export it to modules
-
<del>** add the getData method to the base_module API</del>
+
** add the getData method to the base_module API
-
* super-seeded by directly calling Python module methods
+
-
** currently only for methods that don't take any arguments and return a single string, boolean, integer or float
+
-
** exported through the[https://github.com/M4rtinK/modrana/blob/67f43044ded31472d04613fe5a402832c7f71b99/modules/gui_modules/gui_qml/gui_qml.py#L308 ''modules''] property to QML
+
-
** QML code just uses the respective call (''getS'', ''getB'', ''getI'', ''getF'') with two strings as arguments:
+
-
*** module name
+
-
*** function name
+
-
** example (get main forum URL from mod_info):
+
-
modules.getS('info', 'getForumUrl')
+
=== Writing the various GUI views ===
=== Writing the various GUI views ===
Line 239: Line 210:
The modRana project Trac has [http://modrana.org/trac/report/1 quite a large list] a feature requests and bugs already.
The modRana project Trac has [http://modrana.org/trac/report/1 quite a large list] a feature requests and bugs already.
-
== Packaging ==
+
== Idle loop & timers ==
-
* create an automated packaging script '''DONE'''
+
-
** get source from Github '''DONE'''
+
-
** build on OBS '''DONE'''
+
-
** build packages locally without OBS
+
-
+
-
 
+
-
=== Fremantle @ N900 - DONE===
+
-
* create an installable package '''DONE'''
+
-
** package installs additional icon for the QML version '''DONE'''
+
-
 
+
-
* upload the package to Extras-devel once it's stabile enough '''DONE''' - since May 2012
+
-
 
+
-
=== Harmattan @ N9,N950 ===
+
-
Having a proper package is very important on Harmattan due to Aegis restrictions. If an application needs to use location and other ''priviledged'' services, it needs to be properly packaged with an aegis manifest.
+
-
 
+
-
* create an installable package with a working Aegis manifest '''DONE'''
+
-
* add portrait and landscape splash-screens
+
-
 
+
-
== Configuration file upgrade - DONE ==
+
-
ModRana installs configuration files to ~/.modrana, so that they are writable & can be easily edited by the user (the configuration files are extensively commented for this reason). But when something changes in the default configuration file (say - a map layer URL) modRana needs to replace the installed configuration file and backup the existing one (so that any user-provided modifications are not lost).
+
-
 
+
-
'''Tasks:'''
+
-
* only run upgrade check if modRana version changes '''DONE'''
+
-
* add "revision" field to the configuration files '''DONE'''
+
-
** stores current configuration file revision as an integer
+
-
** the lowest valid value is 1
+
-
* if an installed configuration file has a lower revision number than the default one, upgrade it '''DONE'''
+
-
** rename it
+
-
** copy default configuration file in its place
+
-
 
+
-
== Idle loop & timers - 50% DONE ==
+
MoDrana uses the idle loop to execute some workloads that are not time critical and uses timers to schedule actions that need to happen in the future. ModRana uses the cron module (it dosn't use the cron demon in any way) to provide an abstract API for this. The cron module currently uses GTK for the idle loop and timers.
MoDrana uses the idle loop to execute some workloads that are not time critical and uses timers to schedule actions that need to happen in the future. ModRana uses the cron module (it dosn't use the cron demon in any way) to provide an abstract API for this. The cron module currently uses GTK for the idle loop and timers.
=== Connecting to the Qt Idle loop ===
=== Connecting to the Qt Idle loop ===
When the Qt GUI is used, the cron module needs to use Qt for the idle loop.
When the Qt GUI is used, the cron module needs to use Qt for the idle loop.
-
 
'''Tasks:'''
'''Tasks:'''
* use the Qt idle loop
* use the Qt idle loop
-
=== Using Qt timers - DONE ===
+
=== Using Qt timers ===
When the Qt GUI is used, the cron module needs to use Qt for timers.
When the Qt GUI is used, the cron module needs to use Qt for timers.
-
 
'''Tasks:'''
'''Tasks:'''
-
* use Qt timers '''DONE'''
+
* use Qt timers
-
 
+
-
== Improved hardware & platform support ==
+
-
While most parts of modRana are device independent and improvements translate to usage on most devices, modRana also needs to support hardware and features that are only available on a limited range of devices.
+
-
 
+
-
=== Harmattan @ Nokia N9/N950 ===
+
-
* zooming with volume keys
+
-
 
+
-
=== Maemo 5 Fremantle @ Nokia N900 ===
+
-
* app menu improvements
+
-
** map layer selection
+
-
** zoom slider
+
-
** more shortcuts
+
-
 
+
-
=== Nemo @ N900 ===
+
-
* check how modRana runs on [http://wiki.merproject.org/wiki/Nemo Nemo]
+
-
* since September 2012, PySide packages needed for the modRana QML GUI are available from the main Nemo repo
+
-
** there are also unofficial and untested PyGTK packages for Nemo in [https://build.pub.meego.com/project/show?project=home%3AMartinK%3Anemo this OBS repository]
+
-
* packaging
+
-
 
+
-
=== SHR @ OpenMoko Neo FreeRunner ===
+
-
* navigation board support
+
-
* OpenEmbeaded recipe
+
-
 
+
-
 
+
-
=== Android ===
+
-
* get modRana running on Android
+
-
** [http://thp.io/2011/pyside-android/ Qt + PySide] & [http://redmine.semperpax.com/projects/qt-components-android QtComponents ] should be available
+
-
* packaging
+
-
 
+
-
=== WebOs ===
+
-
* compile [http://www.webos-internals.org/wiki/HowtoQt Qt] & [http://thp.io/2011/webos/ Python]
+
-
* port PySide
+
-
* port QtComponents
+
-
* get modRana running
+
-
* packaging
+
-
 
+
-
[[Category:ModRana]]
+
-
[[Category:Development]]
+

Learn more about Contributing to the wiki.


Please note that all contributions to maemo.org wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see maemo.org wiki:Copyrights for details). Do not submit copyrighted work without permission!


Cancel | Editing help (opens in new window)