Marble/GoMarble/JJ: Difference between revisions

    From KDE TechBase
    No edit summary
    No edit summary
    Line 75: Line 75:


    m_widget->setDebugInfo( DebugText | ShowTileID );
    m_widget->setDebugInfo( DebugText | ShowTileID );
    Level of difficulty: EASY/MEDIUM


    ===Adding a planet filter===
    ===Adding a planet filter===
    Line 88: Line 91:


    * The map theme list view should be changed so that it will only show those themes which are provided for the planet that has been currently chosen. If the selected planet is changed by the user then the map themes that are shown in the listview should be replaced by the available map themes for the selected planet. Also the currently selected map theme should be changed to the first map theme that is available in the listview.
    * The map theme list view should be changed so that it will only show those themes which are provided for the planet that has been currently chosen. If the selected planet is changed by the user then the map themes that are shown in the listview should be replaced by the available map themes for the selected planet. Also the currently selected map theme should be changed to the first map theme that is available in the listview.
    Level of difficulty: HARD


    ===Adding Bookmarks===
    ===Adding Bookmarks===
    * It would be nice if Marble had its own bookmark feature: Like in Konqueror you'd be able to click Bookmark->Add Bookmark and the current position and zoom value would get stored as a bookmark. Once the user would click the bookmark item the original coordinate and zoom value would get restored. You can use MarbleWidget::centerLongitude(), MarbleWidget::centerLatitude(), MarbleWidget::zoom() and the setters for the same properties to retrieve and set the coordinates.
    * It would be nice if Marble had its own bookmark feature: Like in Konqueror you'd be able to click Bookmark->Add Bookmark and the current position and zoom value would get stored as a bookmark. Once the user would click the bookmark item the original coordinate and zoom value would get restored. You can use MarbleWidget::centerLongitude(), MarbleWidget::centerLatitude(), MarbleWidget::zoom() and the setters for the same properties to retrieve and set the coordinates.
    Level of difficulty: HARD

    Revision as of 12:09, 22 March 2009

    Marble Junior Jobs

    If you are new to Marble then you want to check this page. We list a few things you can do which are easy tasks and introduce you to Marble development.

    Quality Assurance / Documentation

    We want our Marble source code to look good. The documentation should be concise and helpful and the comments shouldn't have spelling errors. Also it shouldn't have any obvious "formal" bugs. Help us to improve our code quality. This is an easy job that helps you to get familiar with the source code. It's the first thing that absolute beginners usually want to look at. We list a few important issues that need to be checked for regularly:

    • Try to find spelling errors in the source code comments and in Marble UI strings. (EASY)
    • KDE Krazy check: Have a look at the results of the static code checker: http://www.englishbreakfastnetwork.org/krazy/reports/kde-4.x/kdeedu/marble/index.html. Try to understand possible problems and create a fix for them. (EASY/MEDIUM)
    • Get rid of compile warnings: Compile Marble from scratch and check all the warnings that possibly appear. Try to get rid of the warnings by adding fixes. If parameters are not used, examine why and either remove them or hide the warning or leave it as it is. (EASY-MEDIUM)
    • Compile marble with the cmake option -DPEDANTIC=ON. Fix all errors that come up until Marble compiles through (MEDIUM).
    • Add comments. You don't understand some source code in Marble? Then probably other people won't either. Try to understand it and ask Marble developers. The add some comments so that the next person will be able to understand the source code much easier (MEDIUM).
    • Create API-Documentation (EASY).
    • Review the API. Make sure that the API is Qt-ish (MEDIUM). Read http://doc.trolltech.com/qq/qq13-apis.html and read the Marble source code. Try to find cases which seem to be non-standard. (MEDIUM)
    • Read our Marble Coding Standards: http://websvn.kde.org/trunk/KDE/kdeedu/marble/CODING?revision=700337&view=markup. Ensure that the Marble source code follows it (EASY).
    • Help to translate Marble into your own language. Try to find "weird" translations or translations that don't express things in words that a normal user would understand and correct/report them (MEDIUM).
    • Check KDE's Bugzilla for any open Marble bugs: https://bugs.kde.org/buglist.cgi?quicksearch=Marble. Try to reproduce the bugs and check whether the bugs are still valid. Remove them if they're not valid anymore and seem to be fixed already (EASY). Try to fix them if they are still valid (MEDIUM/HARD).

    If you come across a problem don't hesitate to ask us (there are no stupid questions, just people who are afraid of asking for stupid reasons ;-) If you want to send in your patch for review, please send it to our mailing list [email protected].


    KML

    This section deals with junior jobs that deal with Marble's data structure:

    Implement a "simple" tag for KML support (e.g. LookAt)

    The <LookAt> tag in KML should be quite easy to implement -- at least compared to the other tags. Alternatively you can try to find a different tag that looks like it would be easy to implement, however you need to check in the handler or data directory whether it is implemented already.

    • Have a look at the KML reference:

    http://code.google.com/apis/kml/documentation/kmlreference.html#lookat

    • Have a look at Marble's geodata source (in marble/src/lib/geodata).
    • Try to understand what the parser, the handler and the data stuff does.
    • Create a new handler (EASY)
    • Try to wire Marble's MarbleMap::centerOn() command in a way that it would do what the lookat tag specifies.

    Fix the "Earth at Night" map

    The earth at night map still shows some shading, when sun shading is enabled.

    • Make sure that the sun shading doesn't get rendered if the map is not supposed to show shading (EASY).

    Create an "Open Recent ..." menu entry

    In marble/src/KdeMainWindow.cpp use

    http://api.kde.org/4.x-api/kdelibs-apidocs/kdeui/html/classKRecentFilesAction.html

    to create an open recent menu entry for the KDE version of Marble. Adding the same functionality to the Qt version of Marble is a bonus task.

    Marble Qt-only Version

    There is a Marble version that only depends on Qt. The KDE version of Marble is always a bit ahead of the Marble Qt version as KDE is a pretty powerful framework. Still not everybody can and wants to use KDE libraries. And especially for our Windows and Mac packages the Marble Qt version is a lot smaller. So help us to bring the Marble Qt version on par with the Marble KDE version in terms of features. You need to look into marble/src/qtmain.cpp and marble/src/QtMainWindow.{cpp,h}

    • Add an Online Manual action to "About->Handbook for Marble Desktop Globe". This action should start a browser pointing to http://docs.kde.org/stable/en/kdeedu/marble/index.html. You can use the Qt class QDesktopServices to start the browser. (EASY)
    • Add the "Lock Position" functionality for the Info Boxes into the "View->Info Boxes" menu. (EASY)
    • Try to find a workaround solution for the GHNS feature "Download Maps". (HARD)

    Displaying Debug Info on request

    (Harshit is working on this JJ already)

    • Have a look at:

    http://doc.trolltech.com/4.5/qtglobal.html#qInstallMsgHandler

    It would be nice if Marble would switch off all debug info by default. Only when passing the command line parameter --debug-info it should display the debug text.

    • In a second step one could change the MarbleWidget::setTileId method to a

    MarbleWidget::setDebugInfo( DebugFlags )

    method where DebugFlags is using QFlags

    http://doc.trolltech.com/4.5/qflags.html

    One could then set enable the qDebug messages by e.g. setting

    m_widget->setDebugInfo( DebugText | ShowTileID );


    Level of difficulty: EASY/MEDIUM

    Adding a planet filter

    In marble/src/lib/MarbleControlBox.cpp, line 107-109 there are the lines:

       d->uiWidget.celestialBodyLabel->setVisible( false );
       d->uiWidget.celestialBodyComboBox->setVisible( false );
    

    comment them out on your local checkout (but don't commit this change until you have finished the implementation of this feature). After recompiling you should see a "Celestial Body" combo box above the Map Theme selection list view.

    • This Celestial Body combobox should always show the celestial bodies for which a theme is available. So it should NOT show all possible celestial bodies. And it should also NOT show all the planets in the solar system. It should just show those celestial bodies for which themes are available. It should be possible to find this information by extending the MapThemeManager class (which is located inside marble/src/lib/MapThemeManager{.cpp,.h}.
    • The map theme list view should be changed so that it will only show those themes which are provided for the planet that has been currently chosen. If the selected planet is changed by the user then the map themes that are shown in the listview should be replaced by the available map themes for the selected planet. Also the currently selected map theme should be changed to the first map theme that is available in the listview.

    Level of difficulty: HARD

    Adding Bookmarks

    • It would be nice if Marble had its own bookmark feature: Like in Konqueror you'd be able to click Bookmark->Add Bookmark and the current position and zoom value would get stored as a bookmark. Once the user would click the bookmark item the original coordinate and zoom value would get restored. You can use MarbleWidget::centerLongitude(), MarbleWidget::centerLatitude(), MarbleWidget::zoom() and the setters for the same properties to retrieve and set the coordinates.

    Level of difficulty: HARD