File indexing completed on 2024-05-19 15:05:33
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