File indexing completed on 2024-05-12 15:31:21

0001 // SPDX-License-Identifier: LGPL-2.1-or-later
0002 //
0003 // SPDX-FileCopyrightText: 2009 Bastian Holst <bastianholst@gmx.de>
0004 //
0005 
0006 #ifndef WEATHERPLUGIN_H
0007 #define WEATHERPLUGIN_H
0008 
0009 #include "AbstractDataPlugin.h"
0010 #include "DialogConfigurationInterface.h"
0011 
0012 // Qt
0013 #include <QHash>
0014 #include <QIcon>
0015 
0016 namespace Ui
0017 {
0018     class WeatherConfigWidget;
0019 }
0020 
0021 namespace Marble
0022 {
0023 
0024 class WeatherPlugin : public AbstractDataPlugin, public DialogConfigurationInterface
0025 {
0026     Q_OBJECT
0027     Q_PLUGIN_METADATA(IID "org.kde.marble.WeatherPlugin")
0028     Q_INTERFACES( Marble::RenderPluginInterface )
0029     Q_INTERFACES( Marble::DialogConfigurationInterface )
0030     MARBLE_PLUGIN( WeatherPlugin )
0031     
0032  public:
0033     WeatherPlugin();
0034 
0035     explicit WeatherPlugin( const MarbleModel *marbleModel );
0036 
0037     ~WeatherPlugin() override;
0038     
0039     void initialize() override;
0040 
0041     QString name() const override;
0042     
0043     QString guiString() const override;
0044 
0045     QString nameId() const override;
0046     
0047     QString version() const override;
0048 
0049     QString description() const override;
0050 
0051     QString copyrightYears() const override;
0052 
0053     QVector<PluginAuthor> pluginAuthors() const override;
0054 
0055     QString aboutDataText() const override;
0056 
0057     QIcon icon() const override;
0058 
0059     QDialog *configDialog() override;
0060 
0061     QHash<QString,QVariant> settings() const override;
0062 
0063     void setSettings( const QHash<QString,QVariant> &settings ) override;
0064 
0065 protected:
0066     bool eventFilter(QObject *object, QEvent *event) override;
0067 
0068  private Q_SLOTS:
0069     void readSettings();
0070     void writeSettings();
0071     void updateItemSettings();
0072     void favoriteItemsChanged( const QStringList& favoriteItems ) override;
0073     
0074  Q_SIGNALS:
0075     void changedSettings();
0076 
0077  private:
0078     void updateSettings();
0079 
0080     quint32 m_updateInterval;
0081     const QIcon m_icon;
0082     QDialog * m_configDialog;
0083     Ui::WeatherConfigWidget * ui_configWidget;
0084 
0085     QHash<QString,QVariant> m_settings;
0086 };
0087 
0088 }
0089 
0090 #endif // WEATHERPLUGIN_H