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

0001 // SPDX-License-Identifier: LGPL-2.1-or-later
0002 //
0003 // SPDX-FileCopyrightText: 2009 Bastian Holst <bastianholst@gmx.de>
0004 //
0005 
0006 #ifndef ABSTRACTWEATHERSERVICE_H
0007 #define ABSTRACTWEATHERSERVICE_H
0008 
0009 #include <QObject>
0010 #include <QStringList>
0011 
0012 class QUrl;
0013 
0014 namespace Marble
0015 {
0016 
0017 class AbstractDataPluginItem;
0018 class GeoDataLatLonAltBox;
0019 class MarbleModel;
0020 class MarbleWidget;
0021 
0022 class AbstractWeatherService : public QObject
0023 {
0024     Q_OBJECT
0025     
0026  public:
0027     explicit AbstractWeatherService( const MarbleModel *model, QObject *parent );
0028     ~AbstractWeatherService() override;
0029     void setMarbleWidget( MarbleWidget* widget );
0030     
0031  public Q_SLOTS:
0032     virtual void setFavoriteItems( const QStringList& favorite );
0033     QStringList favoriteItems() const;
0034 
0035     virtual void getAdditionalItems( const GeoDataLatLonAltBox& box,
0036                                      qint32 number = 10 ) = 0;
0037     virtual void getItem( const QString &id ) = 0;
0038     virtual void parseFile( const QByteArray& file );
0039     
0040  Q_SIGNALS:
0041     void requestedDownload( const QUrl& url, const QString& type, AbstractDataPluginItem *item );
0042     void createdItems( const QList<AbstractDataPluginItem*>& items );
0043     void downloadDescriptionFileRequested( const QUrl& );
0044 
0045 protected:
0046     const MarbleModel* marbleModel() const;
0047     MarbleWidget* marbleWidget();
0048 
0049 private:
0050     const MarbleModel *const m_marbleModel;
0051     QStringList m_favoriteItems;
0052     MarbleWidget* m_marbleWidget;
0053 };
0054 
0055 } // namespace Marble
0056 
0057 #endif // ABSTRACTWEATHERSERVICE_H