So, I have stayed quiet for a number of days without blogging. Well, but I have been pretty busy in sending patches and making commits to Marble in all these days. So here goes a list of the commits made by me to Marble in all these days:
1. Added support for reading the gx:AnimatedUpdate KML tag: A Tours in Marble is represented as nothing but a kml file, containing the tag <gx:Tour> with a <gx:Playlist>. The playlist contains many children, out of which, one of them is the <gx:AnimatedUpdate>. Previously, there did not contain any handler, nor any GeoData class to parse the above tag. So I added those.
2. Simplified the ScreenOverlay unit test: The idea was to remove TestScreenOverlay, so that instead of putting the kml fine as inline in TestScreenOverlay, to move to a new file in tests/data and add it to the TestGeoDataWriter, so that, ScreenOverlay gets tested by testing TestGeoDataWriter itself and we don’t have to make some individual test like before for it. Also, the kml file I was talking about, there the ScreenOverlay was a child of <Folder>, so I added one more file, where it is a direct child of the <kml> tag. And made a few corrections in the writer of the above tag as well.
3. Implemented equality operators for GeoDataSimpleArrayData, GeoDataData and GeoDataExtendedData: Added operator== and operator!= to each of the three classes mentioned above, and extended tests/TestEquality by a new unit test method for each of the classes, which verifies the implementation for several instances of each class.
4. Added a .kml file as a unit test for gx:Track and gx:MultiTrack parsing/writing: Created a track from Marble itself, exported it to a kml file, calling it Track.kml and added it as a new unit test to tests/data and added the file to TestGeoDataWriter.
5. Changed GeoDataObject id and targetId from int to QString: The idea was to remove the id member from the following classes: GeoDataTourControl, GeoDataTour, GeoDataWait, GeoDataSoundCue and make them inherit it directly from GeoDataObject, without having to have any extra private id member in any of the above classes, nor any getters/setters for it. So I changed id of GeoDataObject from int to QString, and made them inherit it from GeoDataObject. Also made a few modifications in the test case TestGeoDataCopy, to comply with the changes.
6. Added equality operators for GeoDataFlyTo, GeoDataHotSpot, GeoDataImagePyramid, GeoDataItemIcon and GeoDataLink: Added operator== and operator!= functions to each of the classes mentioned above, and then extended tests/TestEquality by a new unit test method for each of the classes, which verifies the implementation for several instances of each class, and to check the working of the newly added methods.
7. KML unit test case for Camera and LookAt: Just added a CameraLookAt.kml file as unit test in tests/data/ which covers the tags supported by Camera and LookAt.
8. Equality operator for GeoDataTour and related classes: Added operator== and operator!= to GeoDataAnimatedUpdate, GeoDataSoundCue, GeoDataTourControl, GeoDataWait, GeoDataPlaylist and GeoDataTour.
9. Hiding of two never-used options from the Marble Configure dialog: There were two options present in the Configure Marble Dialog Box called “Place names:” and another one being “Drag location:”. These options had never been implemented in Marble till now. So it was decided to keep these options hidden from being shown in the dialog, without making any changes in the ui itself. I made the changes both in the Qt and the KDE version.
I owe my thanks to Dennis Nienhüser and Torsten Rahn for mentoring me in the above tasks 🙂