[Marble-devel] Review Request 113392: Support for Qt5
Dennis Nienhüser
earthwings at gentoo.org
Wed Oct 23 08:56:48 UTC 2013
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://git.reviewboard.kde.org/r/113392/
-----------------------------------------------------------
(Updated Oct. 23, 2013, 8:56 a.m.)
Review request for Marble.
Changes
-------
Uses a hopefully more generic way to enable position independent code generation.
Repository: marble
Description
-------
Merge request for the qt5 branch which adds support for compiling against Qt5 (using Qt4 still possible). Kudos to Michael Zanetti who did most of the work.
The first patch here is an excerpt of some files to show the approach done for porting without information overload by thousands of lines of a diff. The second and possibly following patches are the full diff.
1) cmake changes (cf. src/lib/CMakeLists.txt)
Qt4 used one Qt4 cmake module, QT_QT${COMPONENT}_LIBRARY style variables, and qt4_ prefixed commands. Qt5 has been split up into several modules, uses Qt5${Component}_LIBRARIES style variables, and qt5_ prefixed commands. Based on whichever Qt version is found (Qt4 is preferred over Qt5), the necessary include directories are added and link targets set up. Three qt_ macros are introduced to make it easier to call qt4_/qt5_ commands often used.
2) API changes (cf. src/lib/MapWizard.cpp)
A small number of classes has API changes, e.g. QUrl. Checks like
#if QT_VERSION < 0x050000
are introduced to distinguish between the Qt4 and Qt5 counterparts. This can't be avoided really, but fortunately the amount of changes is not too high.
3) Renamed classes (cf. src/lib/AbstractDataPlugin.{h,cpp})
To minimize the number of ifdefs introduced, the patch adds typedefs for renamed classes. typedefs are never introduced in headers to avoid spoiling someone else's code. In cpp files the old (Qt4) class name is typedefed to the new (Qt5) one.
4) new virtual methods (cf. src/lib/AbstractDataPluginModel.cpp)
Actually I'm only aware of QAbstractItemModel::roleNames() here. In Qt4 this method was not virtual, and a protected method setRoleNames() was there to do changes. In Qt5 setRoleNames() is deprecated and roleNames() is virtual. To avoid using the now deprecated setRoleNames the patch introduces a roleNames() overload in the Qt5 version only.
Diffs (updated)
-----
CMakeLists.txt d150ed4
MarbleMacros.cmake 02e1ada
src/CMakeLists.txt 7f54f85
src/ControlView.h 0f3274e
src/lib/AbstractDataPlugin.h fc4829a
src/lib/AbstractDataPlugin.cpp 70b24c2
src/lib/AbstractDataPluginModel.cpp 6504941
src/lib/CMakeLists.txt 4f2eee1
src/lib/MapWizard.cpp 63eca5d
src/lib/MarblePlacemarkModel.h 38286a6
src/lib/MarblePlacemarkModel.cpp 2737850
src/lib/NewstuffModel.h 415890b
src/lib/NewstuffModel.cpp 995fa25
src/lib/ServerLayout.cpp 46c2aa3
src/lib/SphericalScanlineTextureMapper.cpp 6d665ae
src/lib/VectorComposer.cpp f4ac0c7
src/lib/cloudsync/CloudRouteModel.h 7e0355f
src/lib/cloudsync/CloudRouteModel.cpp e3e5ef7
src/lib/geodata/data/GeoDataCoordinates.cpp 49490f0
src/lib/geodata/data/GeoDataFeature.cpp 6d4cfcd
src/lib/geodata/data/GeoDataGeometry.cpp 7f32c89
src/lib/geodata/handlers/dgml/DgmlDownloadUrlTagHandler.cpp 9e3b978
src/lib/geodata/writers/dgml/DgmlTextureTagWriter.cpp eb00c09
src/lib/kbihash_p.h fde6669
src/lib/marble_export.h 611f4b1
src/lib/routing/RoutingModel.h 884d070
src/lib/routing/RoutingModel.cpp d5ede57
src/lib/routing/SpeakersModel.h 42d4c47
src/lib/routing/SpeakersModel.cpp a4f7faa
src/marble-mobile/CMakeLists.txt 961a289
src/marble-mobile/main.cpp 599a1bf
src/plugins/declarative/Bookmarks.cpp 7ec3ee3
src/plugins/declarative/CMakeLists.txt a22129a
src/plugins/declarative/Coordinate.h 76fa5ed
src/plugins/declarative/DeclarativeDataPlugin.h 6ae6930
src/plugins/declarative/DeclarativeDataPlugin.cpp f944164
src/plugins/declarative/DeclarativeMapThemeManager.h d7e0280
src/plugins/declarative/DeclarativeMapThemeManager.cpp d554768
src/plugins/declarative/MapThemeModel.h 8572658
src/plugins/declarative/MapThemeModel.cpp 7687950
src/plugins/declarative/MarbleDeclarativePlugin.h ee10e84
src/plugins/declarative/MarbleDeclarativePlugin.cpp 959063b
src/plugins/declarative/MarbleDeclarativeWidget.h b466a63
src/plugins/declarative/MarbleDeclarativeWidget.cpp 1004a90
src/plugins/declarative/Navigation.h fb8163c
src/plugins/declarative/OfflineDataModel.h 912d9fb
src/plugins/declarative/OfflineDataModel.cpp ca809c7
src/plugins/declarative/Placemark.h fbb85ac
src/plugins/declarative/PositionSource.h 8edca3c
src/plugins/declarative/RouteRequestModel.h ca59f6a
src/plugins/declarative/RouteRequestModel.cpp e784c6b
src/plugins/declarative/Routing.h bed44d3
src/plugins/declarative/Routing.cpp 5848135
src/plugins/declarative/Search.h f6587bf
src/plugins/declarative/Search.cpp a261b2e
src/plugins/declarative/Tracking.h eb2896a
src/plugins/declarative/Tracking.cpp d29a1d2
src/plugins/designer/CMakeLists.txt 58a5577
src/plugins/designer/latloneditwidget/CMakeLists.txt 6572f53
src/plugins/designer/latloneditwidget/LatLonEditPlugin.h fedb9ca
src/plugins/designer/marblewidget/CMakeLists.txt bd121b9
src/plugins/designer/marblewidget/MarbleWidgetPlugin.h 3831913
src/plugins/designer/navigator/CMakeLists.txt f8610e3
src/plugins/designer/navigator/MarbleNavigatorPlugin.h 8d22c72
src/plugins/positionprovider/CMakeLists.txt 8c1f1f4
src/plugins/positionprovider/flightgear/CMakeLists.txt d1a7772
src/plugins/positionprovider/flightgear/FlightGearPositionProviderPlugin.h 50f2e62
src/plugins/positionprovider/geoclue/GeoCluePositionProviderPlugin.h da734e7
src/plugins/positionprovider/gpsd/CMakeLists.txt 02a86c0
src/plugins/positionprovider/gpsd/GpsdPositionProviderPlugin.h e66c83c
src/plugins/positionprovider/maemo/MaemoPositionProviderPlugin.h ed2d746
src/plugins/positionprovider/placemark/CMakeLists.txt 6c27c96
src/plugins/positionprovider/placemark/PlacemarkPositionProviderPlugin.h f2071b7
src/plugins/positionprovider/qtmobility/CMakeLists.txt 24c5952
src/plugins/positionprovider/qtmobility/QtMobilityPositionProviderPlugin.h 7d0d534
src/plugins/positionprovider/routesimulation/CMakeLists.txt 82f4c8f
src/plugins/positionprovider/routesimulation/RouteSimulationPositionProviderPlugin.h 82ec4f6
src/plugins/positionprovider/wlocate/CMakeLists.txt 7d7e200
src/plugins/positionprovider/wlocate/WlocatePositionProviderPlugin.h 13f171a
src/plugins/render/annotate/AnnotatePlugin.h 41ad2cb
src/plugins/render/annotate/CMakeLists.txt d6097e2
src/plugins/render/aprs/AprsPlugin.h e54abd3
src/plugins/render/aprs/CMakeLists.txt 079cd1b
src/plugins/render/atmosphere/AtmospherePlugin.h 4386ed3
src/plugins/render/atmosphere/CMakeLists.txt e929ebf
src/plugins/render/compass/CMakeLists.txt b0a0ca2
src/plugins/render/compass/CompassFloatItem.h 77e89f6
src/plugins/render/crosshairs/CMakeLists.txt 8cd0abf
src/plugins/render/crosshairs/CrosshairsPlugin.h 8a57bd5
src/plugins/render/earthquake/CMakeLists.txt 717971c
src/plugins/render/earthquake/EarthquakePlugin.h 4d4af6b
src/plugins/render/elevationprofilefloatitem/CMakeLists.txt 4a1b016
src/plugins/render/elevationprofilefloatitem/ElevationProfileFloatItem.h cb3bff1
src/plugins/render/elevationprofilemarker/CMakeLists.txt 9ec0dd2
src/plugins/render/elevationprofilemarker/ElevationProfileMarker.h c0b7fcb
src/plugins/render/fileview/FileViewFloatItem.h 99d7029
src/plugins/render/foursquare/CMakeLists.txt 520322d
src/plugins/render/foursquare/FoursquarePlugin.h 6f4e606
src/plugins/render/gpsinfo/CMakeLists.txt 819bfcd
src/plugins/render/gpsinfo/GpsInfo.h 52331fd
src/plugins/render/graticule/CMakeLists.txt f31f236
src/plugins/render/graticule/GraticulePlugin.h 6746ed6
src/plugins/render/inhibit-screensaver/InhibitScreensaverPlugin.h 5f9a453
src/plugins/render/license/CMakeLists.txt 6a1d177
src/plugins/render/license/License.h b387c02
src/plugins/render/mapscale/CMakeLists.txt be21128
src/plugins/render/mapscale/MapScaleFloatItem.h deddc64
src/plugins/render/measure/CMakeLists.txt 2b47387
src/plugins/render/measure/MeasureToolPlugin.h db90311
src/plugins/render/navigation/CMakeLists.txt c10d2b2
src/plugins/render/navigation/NavigationFloatItem.h 5651ba7
src/plugins/render/opencaching/OpenCachingPlugin.h af55da2
src/plugins/render/opencachingcom/CMakeLists.txt 09176d8
src/plugins/render/opencachingcom/OpenCachingComPlugin.h c7ce4ed
src/plugins/render/opendesktop/CMakeLists.txt 7483487
src/plugins/render/opendesktop/OpenDesktopPlugin.h 4f82257
src/plugins/render/overviewmap/CMakeLists.txt b8928e6
src/plugins/render/overviewmap/OverviewMap.h 1e7ddc5
src/plugins/render/panoramio/PanoramioPlugin.h 20ec2de
src/plugins/render/photo/CMakeLists.txt 63b9ce2
src/plugins/render/photo/PhotoPlugin.h 5dae6e5
src/plugins/render/positionmarker/CMakeLists.txt 26eb35b
src/plugins/render/positionmarker/PositionMarker.h b3f58ce
src/plugins/render/postalcode/CMakeLists.txt 5d8f20c
src/plugins/render/postalcode/PostalCodeModel.cpp 49acb18
src/plugins/render/postalcode/PostalCodePlugin.h edf086d
src/plugins/render/progress/CMakeLists.txt 2edd5dd
src/plugins/render/progress/ProgressFloatItem.h 31e8bf1
src/plugins/render/routing/CMakeLists.txt a258f8d
src/plugins/render/routing/RoutingPlugin.h dc88848
src/plugins/render/routing/RoutingPlugin.cpp 1dc1918
src/plugins/render/satellites/CMakeLists.txt a38a97f
src/plugins/render/satellites/SatellitesPlugin.h 5a27256
src/plugins/render/speedometer/CMakeLists.txt ba4ce1b
src/plugins/render/speedometer/Speedometer.h 0daba3a
src/plugins/render/stars/CMakeLists.txt c95bca9
src/plugins/render/stars/StarsPlugin.h e1d34f1
src/plugins/render/sun/CMakeLists.txt 8a68464
src/plugins/render/sun/SunPlugin.h 93df6b9
src/plugins/render/test/TestPlugin.h 3ba3018
src/plugins/render/twitter/twitterPlugin.h b059f4f
src/plugins/render/weather/BBCParser.cpp 66a0957
src/plugins/render/weather/CMakeLists.txt df2b79a
src/plugins/render/weather/GeoNamesWeatherService.cpp ecbe56d
src/plugins/render/weather/WeatherPlugin.h f6a1e3b
src/plugins/render/wikipedia/CMakeLists.txt 18b43b0
src/plugins/render/wikipedia/WikipediaModel.cpp c816980
src/plugins/render/wikipedia/WikipediaPlugin.h 0aa6bb4
src/plugins/runner/cache/CMakeLists.txt 29fa99a
src/plugins/runner/cache/CachePlugin.h 4292980
src/plugins/runner/gosmore-reversegeocoding/CMakeLists.txt 3137412
src/plugins/runner/gosmore-reversegeocoding/GosmoreReverseGeocodingPlugin.h 8884b43
src/plugins/runner/gosmore-routing/CMakeLists.txt 66e2b90
src/plugins/runner/gosmore-routing/GosmoreRoutingPlugin.h 94bce5f
src/plugins/runner/gpx/CMakeLists.txt 74afed1
src/plugins/runner/gpx/GpxPlugin.h d005fce
src/plugins/runner/hostip/CMakeLists.txt fcdb7a3
src/plugins/runner/hostip/HostipPlugin.h 252b2f7
src/plugins/runner/json/CMakeLists.txt a5e9f70
src/plugins/runner/json/JsonPlugin.h 7377231
src/plugins/runner/kml/CMakeLists.txt 1c35096
src/plugins/runner/kml/KmlPlugin.h 527c2f1
src/plugins/runner/latlon/CMakeLists.txt ff8ff37
src/plugins/runner/latlon/LatLonPlugin.h 90efe79
src/plugins/runner/local-osm-search/CMakeLists.txt 116f4b3
src/plugins/runner/local-osm-search/LocalOsmSearchPlugin.h 818fe3b
src/plugins/runner/localdatabase/CMakeLists.txt 5d78a48
src/plugins/runner/localdatabase/LocalDatabasePlugin.h 5842f73
src/plugins/runner/log/CMakeLists.txt d41b587
src/plugins/runner/log/LogPlugin.h 7330254
src/plugins/runner/mapquest/CMakeLists.txt cc594b4
src/plugins/runner/mapquest/MapQuestPlugin.h fff7275
src/plugins/runner/monav/CMakeLists.txt f129104
src/plugins/runner/monav/MonavMapsModel.cpp 9af5f40
src/plugins/runner/monav/MonavPlugin.h 1234731
src/plugins/runner/nominatim-reversegeocoding/CMakeLists.txt 2567c5c
src/plugins/runner/nominatim-reversegeocoding/NominatimReverseGeocodingPlugin.h bd9224f
src/plugins/runner/nominatim-search/CMakeLists.txt 8b1ef00
src/plugins/runner/nominatim-search/NominatimSearchPlugin.h ddf61be
src/plugins/runner/open-source-routing-machine/CMakeLists.txt beff781
src/plugins/runner/open-source-routing-machine/OSRMPlugin.h 0e520c6
src/plugins/runner/openrouteservice/CMakeLists.txt 60184ef
src/plugins/runner/openrouteservice/OpenRouteServicePlugin.h 4672478
src/plugins/runner/osm/CMakeLists.txt d2cf23a
src/plugins/runner/osm/OsmPlugin.h a95a00b
src/plugins/runner/pn2/CMakeLists.txt bcd273a
src/plugins/runner/pn2/Pn2Plugin.h c9bbd8a
src/plugins/runner/pnt/CMakeLists.txt b52f461
src/plugins/runner/pnt/PntPlugin.h 3d735bd
src/plugins/runner/routino/CMakeLists.txt 49bb68e
src/plugins/runner/routino/RoutinoPlugin.h 3e64726
src/plugins/runner/shp/CMakeLists.txt f0ade06
src/plugins/runner/shp/ShpPlugin.h 3888e6b
src/plugins/runner/traveling-salesman/TravelingSalesmanPlugin.h 56b24bb
src/plugins/runner/yours/CMakeLists.txt 2cab1e5
src/plugins/runner/yours/YoursPlugin.h dd75fec
src/plugins/templates/floatitem/FITemplateFloatItem.h 3c13b39
src/qt-components/marble-touch/CMakeLists.txt 240d33a
src/qt-components/marble-touch/main.cpp 9c60e3a
src/qtmain.cpp 4c9a21f
src/routing-instructions/CMakeLists.txt 531516d
tests/CMakeLists.txt 03ae812
tests/FrameGraphicsItemTest.cpp fdc4955
tests/MarbleWidgetSpeedTest.cpp e1b4848
tests/MarbleWidgetTest.cpp 22fc19d
tests/TestUtils.h be0ece6
Diff: http://git.reviewboard.kde.org/r/113392/diff/
Testing
-------
Note: Do not apply patch 1, just patch 2 or any later (see description).
Both Qt4 and Qt5 version compile and run fine here. If both are installed, cmake will pick up Qt4. Pass -DQT5BUILD=TRUE to cmake to override that.
Thanks,
Dennis Nienhüser
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/marble-devel/attachments/20131023/9ce5cf93/attachment-0001.html>
More information about the Marble-devel
mailing list