File indexing completed on 2024-05-19 15:05:34
0001 // SPDX-License-Identifier: LGPL-2.1-or-later 0002 // 0003 // SPDX-FileCopyrightText: 2011 Guillaume Martres <smarter@ubuntu.com> 0004 // SPDX-FileCopyrightText: 2012 Rene Kuettner <rene@bitkanal.net> 0005 // 0006 0007 #ifndef MARBLE_SATELLITESPLUGIN_H 0008 #define MARBLE_SATELLITESPLUGIN_H 0009 0010 #include "RenderPlugin.h" 0011 #include "SatellitesConfigDialog.h" 0012 #include "DialogConfigurationInterface.h" 0013 #include "SatellitesModel.h" 0014 0015 #include <QHash> 0016 0017 namespace Marble 0018 { 0019 0020 class SatellitesConfigModel; 0021 0022 /** 0023 * @brief This plugin displays satellites and their orbits. 0024 * 0025 */ 0026 class SatellitesPlugin : public RenderPlugin, 0027 public DialogConfigurationInterface 0028 { 0029 Q_OBJECT 0030 Q_PLUGIN_METADATA(IID "org.kde.marble.SatellitesPlugin") 0031 Q_INTERFACES( Marble::RenderPluginInterface ) 0032 Q_INTERFACES( Marble::DialogConfigurationInterface ) 0033 MARBLE_PLUGIN( SatellitesPlugin ) 0034 0035 public: 0036 explicit SatellitesPlugin( const MarbleModel *marbleModel = nullptr ); 0037 ~SatellitesPlugin() override; 0038 0039 QStringList backendTypes() const override; 0040 QString renderPolicy() const override; 0041 QStringList renderPosition() const override; 0042 QString name() const override; 0043 QString nameId() const override; 0044 QString guiString() const override; 0045 QString version() const override; 0046 QString description() const override; 0047 QString copyrightYears() const override; 0048 QVector<PluginAuthor> pluginAuthors() const override; 0049 QString aboutDataText() const override; 0050 QIcon icon() const override; 0051 RenderType renderType() const override; 0052 void initialize() override; 0053 bool isInitialized() const override; 0054 0055 bool render( GeoPainter *painter, 0056 ViewportParams *viewport, 0057 const QString &renderPos, 0058 GeoSceneLayer *layer ) override; 0059 0060 bool eventFilter( QObject *object, QEvent *event ) override; 0061 0062 QHash<QString, QVariant> settings() const override; 0063 void setSettings( const QHash<QString, QVariant> &settings ) override; 0064 0065 SatellitesConfigDialog *configDialog() override; 0066 0067 private Q_SLOTS: 0068 void activate(); 0069 void enableModel( bool enabled ); 0070 void visibleModel( bool visible ); 0071 void readSettings(); 0072 void writeSettings(); 0073 void updateSettings(); 0074 void updateDataSourceConfig( const QString &source ); 0075 void dataSourceParsed( const QString &source ); 0076 void userDataSourceAdded( const QString &source ); 0077 0078 void showOrbit( bool show ); 0079 void trackPlacemark(); 0080 0081 protected: 0082 void activateDataSource( const QString &source ); 0083 void addBuiltInDataSources(); 0084 0085 private: 0086 SatellitesModel *m_satModel; 0087 SatellitesConfigModel *m_configModel; 0088 0089 bool m_isInitialized; 0090 QHash<QString, QVariant> m_settings; 0091 QStringList m_newDataSources; 0092 0093 SatellitesConfigDialog *m_configDialog; 0094 0095 QAction *m_showOrbitAction; 0096 QAction *m_trackPlacemarkAction; 0097 QVector<TrackerPluginItem*> m_trackerList; 0098 }; 0099 0100 } // namespace Marble 0101 0102 #endif // MARBLE_SATELLITESPLUGIN_H