File indexing completed on 2024-05-05 03:49:17
0001 // SPDX-License-Identifier: LGPL-2.1-or-later 0002 // 0003 // SPDX-FileCopyrightText: 2010 Dennis Nienhüser <nienhueser@kde.org> 0004 // 0005 0006 #include "MarbleDeclarativePlugin.h" 0007 0008 #include "Coordinate.h" 0009 #include "MapTheme.h" 0010 #include "DeclarativeMapThemeManager.h" 0011 #include "MarbleDeclarativeObject.h" 0012 #include "PositionSource.h" 0013 #include "Bookmarks.h" 0014 #include "Tracking.h" 0015 #include "Routing.h" 0016 #include "Navigation.h" 0017 #include "RouteRequestModel.h" 0018 #include "Settings.h" 0019 #include "MapThemeModel.h" 0020 #include "NewstuffModel.h" 0021 #include "OfflineDataModel.h" 0022 #include "Placemark.h" 0023 #include "routing/SpeakersModel.h" 0024 #include "routing/VoiceNavigationModel.h" 0025 #include "routing/RoutingModel.h" 0026 #include "AbstractFloatItem.h" 0027 #include "RenderPlugin.h" 0028 #include "MarblePlacemarkModel.h" 0029 #include "SearchBackend.h" 0030 #include "MarbleQuickItem.h" 0031 #include "GeoItem.h" 0032 #include "GeoPolyline.h" 0033 0034 #include <QQmlEngine> 0035 #include <QQmlContext> 0036 0037 void MarbleDeclarativePlugin::registerTypes( const char *uri ) 0038 { 0039 qRegisterMetaType<Marble::MarbleMap*>("MarbleMap"); 0040 0041 //@uri org.kde.marble 0042 qmlRegisterType<Coordinate>( uri, 0, 20, "Coordinate" ); 0043 qRegisterMetaType<Coordinate::Notation>(); 0044 qRegisterMetaType<Marble::MapTheme*>("MapTheme"); 0045 0046 qmlRegisterType<Marble::Placemark>( uri, 0, 20, "Placemark" ); 0047 qmlRegisterType<Marble::PositionSource>( uri, 0, 20, "PositionSource" ); 0048 qmlRegisterType<Marble::Bookmarks>( uri, 0, 20, "Bookmarks" ); 0049 qmlRegisterType<Marble::Tracking>( uri, 0, 20, "Tracking" ); 0050 qmlRegisterType<Marble::Routing>( uri, 0, 20, "Routing" ); 0051 qmlRegisterType<Marble::Navigation>( uri, 0, 20, "Navigation" ); 0052 qmlRegisterType<RouteRequestModel>( uri, 0, 20, "RouteRequestModel" ); 0053 qmlRegisterType<Settings>( uri, 0, 20, "Settings" ); 0054 0055 qmlRegisterType<MapThemeManager>( uri, 0, 20, "MapThemeManager" ); 0056 qmlRegisterType<Marble::SpeakersModel>( uri, 0, 20, "SpeakersModel" ); 0057 qmlRegisterType<Marble::VoiceNavigationModel>( uri, 0, 20, "VoiceNavigation" ); 0058 qmlRegisterType<Marble::NewstuffModel>( uri, 0, 20, "NewstuffModel" ); 0059 qmlRegisterType<OfflineDataModel>( uri, 0, 20, "OfflineDataModel" ); 0060 qmlRegisterType<MapThemeModel>( uri, 0, 20, "MapThemeModel" ); 0061 0062 qmlRegisterType<Marble::SearchBackend>(uri, 0, 20, "SearchBackend"); 0063 qRegisterMetaType<Marble::MarblePlacemarkModel*>("MarblePlacemarkModel*"); 0064 qmlRegisterType<Marble::MarbleQuickItem>(uri, 0, 20, "MarbleItem"); 0065 qmlRegisterType<Marble::GeoItem>(uri, 0, 20, "GeoItem"); 0066 qmlRegisterType<Marble::GeoPolyline>(uri, 0, 20, "GeoPolyline"); 0067 0068 qmlRegisterUncreatableType<Marble::MarblePlacemarkModel>(uri, 1, 0, "MarblePlacemarkModel", 0069 QStringLiteral("MarblePlacemarkModel is not instantiable")); 0070 qmlRegisterUncreatableType<Marble::RoutingModel>(uri, 0, 20, "RoutingModel", 0071 QStringLiteral("RoutingModel is not instantiable")); 0072 qmlRegisterUncreatableType<Marble::RouteRelationModel>(uri, 0, 20, "RouteRelationModel", 0073 QStringLiteral("RouteRelationModel is not instantiable")); 0074 qmlRegisterUncreatableType<Marble::BookmarksModel>(uri, 0, 20, "BookmarksModel", 0075 QStringLiteral("Do not create")); 0076 qmlRegisterUncreatableType<Marble::AbstractFloatItem>(uri, 0, 20, "FloatItem", 0077 QStringLiteral("Do not create")); 0078 qmlRegisterUncreatableType<Marble::RenderPlugin>(uri, 0, 20, "RenderPlugin", 0079 QStringLiteral("Do not create")); 0080 qmlRegisterUncreatableType<Marble::MarbleMap>(uri, 0, 20, "MarbleMap", 0081 QStringLiteral("Do not create")); 0082 } 0083 0084 void MarbleDeclarativePlugin::initializeEngine( QQmlEngine *engine, const char *) 0085 { 0086 engine->addImageProvider(QStringLiteral("maptheme"), new MapThemeImageProvider ); 0087 // Register the global Marble object. Can be used in .qml files for requests like Marble.resolvePath("some/icon.png") 0088 const QString marbleObjectName = QStringLiteral("Marble"); 0089 if (!engine->rootContext()->contextProperty(marbleObjectName).isValid()) { 0090 engine->rootContext()->setContextProperty(marbleObjectName, new MarbleDeclarativeObject(this)); 0091 } 0092 } 0093 0094 #include "moc_MarbleDeclarativePlugin.cpp"