File indexing completed on 2024-04-28 03:50:23

0001 // SPDX-License-Identifier: LGPL-2.1-or-later
0002 //
0003 // SPDX-FileCopyrightText: 2012 Rene Kuettner <rene@bitkanal.net>
0004 //
0005 
0006 #ifndef MARBLE_SATELLITESCONFIGDIALOG_H
0007 #define MARBLE_SATELLITESCONFIGDIALOG_H
0008 
0009 #include <QDialog>
0010 #include <QMap>
0011 
0012 namespace Ui {
0013     class SatellitesConfigDialog;
0014 }
0015 
0016 namespace Marble {
0017 
0018 class SatellitesConfigAbstractItem;
0019 class SatellitesConfigNodeItem;
0020 
0021 class SatellitesConfigDialog : public QDialog
0022 {
0023     Q_OBJECT
0024 
0025 public:
0026     enum {
0027         IsLoadedRole    = Qt::UserRole + 1
0028     };
0029 
0030     explicit SatellitesConfigDialog( QWidget *parent = nullptr );
0031     ~SatellitesConfigDialog() override;
0032 
0033     void update();
0034 
0035     void setUserDataSources( const QStringList &sources );
0036     QStringList userDataSources() const;
0037     void setUserDataSourceLoaded( const QString& source, bool loaded );
0038 
0039     SatellitesConfigAbstractItem* addSatelliteItem( const QString &body,
0040                                                     const QString &category,
0041                                                     const QString &title,
0042                                                     const QString &id,
0043                                                     const QString &url = QString() );
0044     SatellitesConfigAbstractItem* addTLESatelliteItem( const QString &category,
0045                                                        const QString &title,
0046                                                        const QString &url );
0047 
0048     Ui::SatellitesConfigDialog* configWidget();
0049 
0050 Q_SIGNALS:
0051     void dataSourcesReloadRequested();
0052     void userDataSourceAdded( const QString &source );
0053     void userDataSourceRemoved( const QString &source );
0054     void userDataSourcesChanged();
0055     void activatePluginClicked();
0056 
0057 public Q_SLOTS:
0058     void setDialogActive( bool active );
0059 
0060 protected:
0061     void initialize();
0062     void setupDataSourcesTab();
0063     SatellitesConfigNodeItem* getSatellitesCategoryItem(
0064         const QString &body,
0065         const QString &category,
0066         bool create = false );
0067     SatellitesConfigNodeItem* getSatellitesBodyItem(
0068         const QString &body,
0069         bool create = false );
0070     void expandTreeView();
0071 
0072 protected Q_SLOTS:
0073     void reloadDataSources();
0074     void addDataSource();
0075     void openDataSource();
0076     void removeSelectedDataSource();
0077     void updateButtonState();
0078 
0079 private:
0080     QString translation( const QString &from ) const;
0081 
0082     QStringList m_userDataSources;
0083     Ui::SatellitesConfigDialog *m_configWidget;
0084     QMap<QString, QString> m_translations;
0085 };
0086 
0087 } // namespace Marble
0088 
0089 #endif // MARBLE_SATELLITESCONFIGDIALOG_H
0090