This file describes what we need to do before certain milestones.

Mark those tasks that you want to perform with your name:
 INGE   Inge Wallin            inge@lysator.liu.se
 TACK   Tackat (Torsten Rahn)
 CARU   Carlos Licea
 MURA   Murad Tagirov




Before Release of Marble 0.6:
=============================

Layer Management Class tasks: 

*** New widget independent image canvas concept and implementation      DONE
    -- Check Apidox if there is anything missing.                       --

*** Split off MapTheme / DGML parsing into geodata/parser.              ----
    Have a GeoDataMapTheme class that basically only includes those 
    parts of the current MapTheme except for parsing.

*** Create all available MapTheme objects instead of the                ----
    selected one. (right now it just creates a single one, 
    so you can't access many in parallel without parsing 
    over and over)

*** Implement / move <head> features as lined out in                    ----
    layermanagement.txt This should happen after the QXmlStreamReader
    port.

*** Implement basic Qt-Plugin based LMC class                           ----

*** Move backends into plugins / threads                                ----

*** Design and implement a QPainter-style API for GeoPainter            ----

*** Cloud Layer                                                         STRE

*** Mercator Projection                                                 CARU

*** Design and implement Projection class                               INGE

*** Fix GPS Support                                                     ANDR


REFINEMENTS:

Low hanging (but important) fruits:
-----------------------------------

*** Update screenshots in the docs!                                     ----

*** Fix Double Click on map (which should center the map on the point   ----
    being double clicked).

*** Add a *small* percentage bar to the status bar that indicates map   ----
    downloads (should be really tiny and not obtrusive just to see
    that something is going on). Ideally the user would get a tooltip
    once he hovers that progress bar with numbers of files in the
    queue, maybe amount of data that has been downloaded during the
    session.

Add maps to GHNS:
 * Annual precipation,                                                  ----
    - precipation July                                                  --
    - precipation December                                              --
 * Annual temperature                                                   ----
    - temperature July                                                  --
    - temperature December                                              --


BUGS:

*** Find the reason why labels overlap when a KML file gets loaded.     TACK
    I'm afraid this will have to get delayed for 4.0.2 ...


More sophisticated issues
-------------------------

These need some thinking and discussion (some issues might be delayed
to 4.1):

*** Create map tiles at compile time

*** Download manager fixes:
 - After maps get downloaded sometimes the resolution doesn't get
   updated to what is has just been stored on the disc
 - Implement "retry to download the tile 3 times during the current
   session if the tile couldn't get fetched on first try"

*** Minor Backend feature fixes and polishment:
 - Create a LatLonBoundingBox
 - Create a QPersistentModelIndex for MarblePlaceMarkModel items to
   improve speed on close up zooms.

*** Make Marble have a RenderingQuality setting in ViewParams: 
 - LOW: For slow hardware with different defaults ( No relief in Atlas
   View, using setShowQuickAndDirty(true) for really sloppy
   interpolation )
 - MEDIUM: Basically what we have now
 - HIGH: Uses Antialiased vector lines
 - PRINT: Adds some Really Slow (TM) nice things that are typical for
   printed maps: e.g. Blue antialiased coast lines for the Atlas map.

 ** Make Marble use different render settings while panning (MOVE) and
    after releasing the mouse (DROP).

    For KDE 4.0.1 it should use the render quality MEDIUM for panning
    and HIGH or PRINT after the mouse button has been released. Note:
    For KDE 4.1 there should be two comboboxes in the settings dialog:

    Display Quality:

    During mouse move: [^ Medium ]
    On mouse drop:     [^ High   ]

 ** Rerender the map at "PRINT quality" once "File -> Print" or 
    "Edit -> Copy" get selected.



Whenever -- not tied to any release
================================================================

Documentation
 * Write more in DESIGN                                                 INGE
   - Describe the view parameters                                       --
   - Describe the vector engine                                         --
   - Describe the placemark engine                                      --
 * Write more in USECASES                                               INGE


Integration of Google Summer of Code projects (0.6)
----------------------------------------------------------------

GPS support (Andrew Manson)
 * Read GPX files                                                       ----
 * Show waypoints                                                       ----
 * Show tracks                                                          ----
 * Show 'You are here' using the GPS.                                   ----

KML support (Murad Tagirov)
 * One overall aim: make Digikam KML output and plasma weather applet 
   work together with Marble. 


Before KDE 4.0.2
================================================================

Bugs
  See the BUGS file.

Documentation:
 * APIDOX for classes in geodata/data                                   INGE
    - IconStyle                                                         inge
    - HotSpot?                                                          --
    - Serializable?                                                     --
 * APIDOX for classes in AbstractLayer                                  ----
    - ...
 * APIDOX for classes in src/lib:                                       INGE
   - Mainpage.dox                                                       done
   - MarbleWidget                                                       done
   - MarbleControlBox                                                   --
   - MarbleModel                                                        --
   - MarbleNavigator                                                    done
   - MarblePlacemarkModel                                               --

Widget:
 * Separate the view from the globe (model)                             INGE
    - Let the view parameters be in the view instead of in the globe    done
    - Don't open any dialogs from the globe, do it from the controller. inge
    - Let the view know about the globe, but not the other way.         done

Documentation:
 * Programmers manual for using Marble components in other applications ----
 * Apidox for all public classes                                        ----

 
Before KDE 4.1
================================================================

Planning and architecture:
 * write proposals for Marble 0.6 / KDE 4.1                             ----
    - Layer Management class                                            --
    - Data source plugins                                               --
    - Visualization plugins (layers?)                                   --
    - Projection class                                                  --
    - Bounding boxes                                                    --
    - Model-View concept                                                --
    - Spatial Indices                                                   --

Make it a more complete KDE4 application as a real member of kdeedu.
 * DBus Support                                                         TACK

Vector backend
 * Better scalability                                                   ----

Features:
 * Areas, e.g. countries or districts                                   ----
 * Support for OpenStreetMap                                            TACK
    - load tiles                                                        --
    - display tiles                                                     --
    - Generate tiles (adapt fonts, etc, to Marble)                      --
    - Put tiles on server                                               --
 * Support to display Timezones, Data available e.g. at:                ----
        http://sarangworld.com/NMLUG/WorldTZ_102.zip

Internal structure:
 * New class MarbleMap that can paint a map on any QPainter             DONE
 * Refactor KML to use QXmlStreamReader                                 ----
 * Make MarbleModel a real model and MarbleWidget a real view           ----
 * Make it possible to paint on whatever QPainter Marble is given       ----

Installation issues
 * Only install the public include files                                ----
 * Creating tiles during build instead of first run                     TACK

Data:
 * Evaluate the implementation of tile specifications like              ----
   - http://wiki.osgeo.org/index.php/WMS_Tiling_Client_Recommendation   --
   - http://wiki.osgeo.org/index.php/Tile_Map_Service_Specification     --

   for practical relevance and implement those bits into our client
   that make sense for us to have.

Integration with Qt designer
 * control files for the following widgets                              TACK
   - MarbleControlBox                                                   --
   - MarbleLocator (search field for placemarks)                        --
   - MarbleLegendBrowser                                                --
