File indexing completed on 2024-04-21 04:48:58
0001 /* 0002 SPDX-FileCopyrightText: 2018 (c) Matthieu Gallien <matthieu_gallien@yahoo.fr> 0003 0004 SPDX-License-Identifier: LGPL-3.0-or-later 0005 */ 0006 0007 #include "elisaqmlplugin.h" 0008 0009 #include "config-upnp-qt.h" 0010 0011 #if UPNPQT_FOUND 0012 #include "upnp/upnpcontrolconnectionmanager.h" 0013 #include "upnp/upnpcontrolmediaserver.h" 0014 #include "upnp/upnpcontrolcontentdirectory.h" 0015 #include "upnp/upnpcontentdirectorymodel.h" 0016 #include "upnpdevicedescription.h" 0017 #include "upnp/didlparser.h" 0018 #include "upnp/upnpdiscoverallmusic.h" 0019 0020 #include "upnpssdpengine.h" 0021 #include "upnpabstractservice.h" 0022 #include "upnpcontrolabstractdevice.h" 0023 #include "upnpcontrolabstractservice.h" 0024 #include "upnpbasictypes.h" 0025 #endif 0026 0027 #if KFDBusAddons_FOUND 0028 #include <KDBusService> 0029 #endif 0030 #include <KColorSchemeManager> 0031 0032 #include "elisautils.h" 0033 #include "elisaapplication.h" 0034 #include "progressindicator.h" 0035 #include "mediaplaylist.h" 0036 #include "mediaplaylistproxymodel.h" 0037 #include "managemediaplayercontrol.h" 0038 #include "manageheaderbar.h" 0039 #include "manageaudioplayer.h" 0040 #include "musiclistenersmanager.h" 0041 #include "trackslistener.h" 0042 #include "viewmanager.h" 0043 #include "viewslistdata.h" 0044 #include "viewconfigurationdata.h" 0045 #include "databaseinterface.h" 0046 #include "datatypes.h" 0047 #include "models/datamodel.h" 0048 #include "models/trackmetadatamodel.h" 0049 #include "models/trackcontextmetadatamodel.h" 0050 #include "models/editabletrackmetadatamodel.h" 0051 #include "models/viewsmodel.h" 0052 #include "models/viewsproxymodel.h" 0053 #include "models/gridviewproxymodel.h" 0054 #include "models/lyricsmodel.h" 0055 #include "localFileConfiguration/elisaconfigurationdialog.h" 0056 0057 #if KFFileMetaData_FOUND 0058 #include "embeddedcoverageimageprovider.h" 0059 #endif 0060 #include "colorschemepreviewimageprovider.h" 0061 0062 #if KFKIO_FOUND 0063 #include "models/filebrowsermodel.h" 0064 #include "models/filebrowserproxymodel.h" 0065 #endif 0066 0067 #include "audiowrapper.h" 0068 0069 #if QtDBus_FOUND 0070 #include "mpris2/mpris2.h" 0071 #include "mpris2/mediaplayer2player.h" 0072 #endif 0073 0074 0075 #include <QAction> 0076 #include <QStandardPaths> 0077 #include <QAbstractProxyModel> 0078 #include <QAbstractItemModel> 0079 0080 #include <QQmlEngine> 0081 0082 ElisaQmlTestPlugin::ElisaQmlTestPlugin(QObject *aParent) 0083 : QQmlExtensionPlugin(aParent) 0084 { 0085 } 0086 0087 void ElisaQmlTestPlugin::initializeEngine(QQmlEngine *engine, const char *uri) 0088 { 0089 QQmlExtensionPlugin::initializeEngine(engine, uri); 0090 #if KFFileMetaData_FOUND 0091 engine->addImageProvider(QStringLiteral("cover"), new EmbeddedCoverageImageProvider); 0092 #endif 0093 } 0094 0095 void ElisaQmlTestPlugin::registerTypes(const char *uri) 0096 { 0097 #if UPNPQT_FOUND 0098 qmlRegisterType<UpnpSsdpEngine>(uri, 1, 0, "UpnpSsdpEngine"); 0099 qmlRegisterType<UpnpDiscoverAllMusic>(uri, 1, 0, "UpnpDiscoverAllMusic"); 0100 0101 qmlRegisterType<UpnpAbstractDevice>(uri, 1, 0, "UpnpAbstractDevice"); 0102 qmlRegisterType<UpnpAbstractService>(uri, 1, 0, "UpnpAbstractService"); 0103 qmlRegisterType<UpnpControlAbstractDevice>(uri, 1, 0, "UpnpControlAbstractDevice"); 0104 qmlRegisterType<UpnpControlAbstractService>(uri, 1, 0, "UpnpControlAbstractService"); 0105 qmlRegisterType<UpnpControlConnectionManager>(uri, 1, 0, "UpnpControlConnectionManager"); 0106 qmlRegisterType<UpnpControlMediaServer>(uri, 1, 0, "UpnpControlMediaServer"); 0107 qmlRegisterType<UpnpContentDirectoryModel>(uri, 1, 0, "UpnpContentDirectoryModel"); 0108 qmlRegisterType<DidlParser>(uri, 1, 0, "DidlParser"); 0109 qmlRegisterType<UpnpControlContentDirectory>(uri, 1, 0, "UpnpControlContentDirectory"); 0110 qmlRegisterType<UpnpDeviceDescription>(uri, 1, 0, "UpnpDeviceDescription"); 0111 0112 qRegisterMetaType<A_ARG_TYPE_InstanceID>(); 0113 qRegisterMetaType<QPointer<UpnpAbstractDevice> >(); 0114 qRegisterMetaType<UpnpControlConnectionManager*>(); 0115 qRegisterMetaType<UpnpContentDirectoryModel*>(); 0116 qRegisterMetaType<UpnpDeviceDescription*>(); 0117 #endif 0118 0119 qmlRegisterType<MediaPlayList>(uri, 1, 0, "MediaPlayList"); 0120 qmlRegisterType<MediaPlayListProxyModel>(uri, 1, 0, "MediaPlayListProxyModel"); 0121 qmlRegisterType<ManageMediaPlayerControl>(uri, 1, 0, "ManageMediaPlayerControl"); 0122 qmlRegisterType<ManageHeaderBar>(uri, 1, 0, "ManageHeaderBar"); 0123 qmlRegisterType<ManageAudioPlayer>(uri, 1, 0, "ManageAudioPlayer"); 0124 qmlRegisterType<ProgressIndicator>(uri, 1, 0, "ProgressIndicator"); 0125 qmlRegisterType<MusicListenersManager>(uri, 1, 0, "MusicListenersManager"); 0126 qmlRegisterType<ViewManager>(uri, 1, 0, "ViewManager"); 0127 qmlRegisterType<ViewsListData>(uri, 1, 0, "ViewsListData"); 0128 qmlRegisterType<ViewConfigurationData>(uri, 1, 0, "ViewConfigurationData"); 0129 qmlRegisterType<DataModel>(uri, 1, 0, "DataModel"); 0130 qmlRegisterType<TrackMetadataModel>(uri, 1, 0, "TrackMetadataModel"); 0131 qmlRegisterType<TrackContextMetaDataModel>(uri, 1, 0, "TrackContextMetaDataModel"); 0132 qmlRegisterType<EditableTrackMetadataModel>(uri, 1, 0, "EditableTrackMetadataModel"); 0133 qmlRegisterType<ViewsModel>(uri, 1, 0, "ViewsModel"); 0134 qmlRegisterType<ViewsProxyModel>(uri, 1, 0, "ViewsProxyModel"); 0135 qmlRegisterType<ViewsListData>(uri, 1, 0, "ViewsListData"); 0136 qmlRegisterType<GridViewProxyModel>(uri, 1, 0, "GridViewProxyModel"); 0137 qmlRegisterType<LyricsModel>(uri, 1, 0, "LyricsModel"); 0138 0139 #if KFKIO_FOUND 0140 qmlRegisterType<FileBrowserModel>(uri, 1, 0, "FileBrowserModel"); 0141 qmlRegisterType<FileBrowserProxyModel>(uri, 1, 0, "FileBrowserProxyModel"); 0142 #endif 0143 0144 qmlRegisterType<AudioWrapper>(uri, 1, 0, "AudioWrapper"); 0145 qmlRegisterUncreatableType<DatabaseInterface>(uri, 1, 0, "DatabaseInterface", QStringLiteral("Only created in c++")); 0146 qmlRegisterUncreatableType<QAbstractItemModel>(uri, 1, 0, "AbstractItemModel", QStringLiteral("Abstract Qt type")); 0147 qmlRegisterUncreatableType<QAbstractProxyModel>(uri, 1, 0, "AbstractProxyModel", QStringLiteral("Abstract Qt type")); 0148 qmlRegisterUncreatableType<DataTypes>(uri, 1, 0, "DataTypes", QStringLiteral("Abstract type not to be used in aml directtly")); 0149 0150 #if QtDBus_FOUND 0151 qmlRegisterType<Mpris2>(uri, 1, 0, "Mpris2"); 0152 qRegisterMetaType<MediaPlayer2Player*>(); 0153 #endif 0154 0155 qRegisterMetaType<AbstractMediaProxyModel*>(); 0156 qRegisterMetaType<QHash<QString,QUrl>>("QHash<QString,QUrl>"); 0157 qRegisterMetaType<QHash<QUrl,QDateTime>>("QHash<QUrl,QDateTime>"); 0158 qRegisterMetaType<QVector<qulonglong>>("QVector<qulonglong>"); 0159 qRegisterMetaType<QHash<qulonglong,int>>("QHash<qulonglong,int>"); 0160 qRegisterMetaType<DataTypes::ListTrackDataType>("DataTypes::ListTrackDataType"); 0161 qRegisterMetaType<DataTypes::ListRadioDataType>("DataTypes::ListRadioDataType"); 0162 qRegisterMetaType<DataTypes::ListAlbumDataType>("DataTypes::ListAlbumDataType"); 0163 qRegisterMetaType<DataTypes::ListArtistDataType>("DataTypes::ListArtistDataType"); 0164 qRegisterMetaType<DataTypes::ListGenreDataType>("DataTypes::ListGenreDataType"); 0165 qRegisterMetaType<ModelDataLoader::ListTrackDataType>("ModelDataLoader::ListTrackDataType"); 0166 qRegisterMetaType<ModelDataLoader::ListRadioDataType>("ModelDataLoader::ListRadioDataType"); 0167 qRegisterMetaType<ModelDataLoader::ListAlbumDataType>("ModelDataLoader::ListAlbumDataType"); 0168 qRegisterMetaType<ModelDataLoader::ListArtistDataType>("ModelDataLoader::ListArtistDataType"); 0169 qRegisterMetaType<ModelDataLoader::ListGenreDataType>("ModelDataLoader::ListGenreDataType"); 0170 qRegisterMetaType<ModelDataLoader::AlbumDataType>("ModelDataLoader::AlbumDataType"); 0171 qRegisterMetaType<TracksListener::ListTrackDataType>("TracksListener::ListTrackDataType"); 0172 qRegisterMetaType<QMap<QString, int>>(); 0173 qRegisterMetaType<QAction*>(); 0174 qRegisterMetaType<QMap<QString,int>>("QMap<QString,int>"); 0175 qRegisterMetaType<ElisaUtils::PlayListEnqueueMode>("ElisaUtils::PlayListEnqueueMode"); 0176 qRegisterMetaType<ElisaUtils::PlayListEnqueueTriggerPlay>("ElisaUtils::PlayListEnqueueTriggerPlay"); 0177 qRegisterMetaType<ElisaUtils::PlayListEntryType>("ElisaUtils::PlayListEntryType"); 0178 qRegisterMetaType<DataTypes::EntryData>("DataTypes::EntryData"); 0179 qRegisterMetaType<DataTypes::EntryDataList>("DataTypes::EntryDataList"); 0180 qRegisterMetaType<ElisaUtils::FilterType>("ElisaUtils::FilterType"); 0181 qRegisterMetaType<DataTypes::TrackDataType>("DataTypes::TrackDataType"); 0182 qRegisterMetaType<DataTypes::AlbumDataType>("DataTypes::AlbumDataType"); 0183 qRegisterMetaType<DataTypes::ArtistDataType>("DataTypes::ArtistDataType"); 0184 qRegisterMetaType<DataTypes::GenreDataType>("DataTypes::GenreDataType"); 0185 qRegisterMetaType<DataTypes::ColumnsRoles>("DataTypes::ColumnsRoles"); 0186 qRegisterMetaType<ModelDataLoader::TrackDataType>("ModelDataLoader::TrackDataType"); 0187 qRegisterMetaType<TracksListener::TrackDataType>("TracksListener::TrackDataType"); 0188 qRegisterMetaType<DataTypes::DataType>("DataTypes::DataType"); 0189 0190 qmlRegisterSingletonType<ElisaConfigurationDialog>(uri, 1, 0, "ElisaConfigurationDialog", 0191 [](QQmlEngine *engine, QJSEngine *scriptEngine) -> QObject* { 0192 Q_UNUSED(engine) 0193 Q_UNUSED(scriptEngine) 0194 0195 return new ElisaConfigurationDialog; 0196 }); 0197 0198 qmlRegisterSingletonType<ElisaApplication>(uri, 1, 0, "ElisaApplication", 0199 [](QQmlEngine *engine, QJSEngine *scriptEngine) -> QObject* { 0200 Q_UNUSED(scriptEngine) 0201 0202 auto newApplication = std::make_unique<ElisaApplication>(); 0203 0204 #if KFDBusAddons_FOUND 0205 auto *elisaService = new KDBusService(KDBusService::Unique, newApplication.get()); 0206 #endif 0207 0208 #if KFDBusAddons_FOUND 0209 QObject::connect(elisaService, &KDBusService::activateActionRequested, newApplication.get(), &ElisaApplication::activateActionRequested); 0210 QObject::connect(elisaService, &KDBusService::activateRequested, newApplication.get(), &ElisaApplication::activateRequested); 0211 QObject::connect(elisaService, &KDBusService::openRequested, newApplication.get(), &ElisaApplication::openRequested); 0212 #endif 0213 0214 newApplication->setQmlEngine(engine); 0215 engine->addImageProvider(QStringLiteral("colorScheme"), new ColorSchemePreviewImageProvider(newApplication->getSchemes())); 0216 0217 return newApplication.release(); 0218 }); 0219 0220 qmlRegisterUncreatableMetaObject(ElisaUtils::staticMetaObject, uri, 1, 0, "ElisaUtils", QStringLiteral("Namespace ElisaUtils")); 0221 } 0222 0223 #include "moc_elisaqmlplugin.cpp"