File indexing completed on 2024-04-21 14:45:38
0001 /* 0002 SPDX-FileCopyrightText: 2016 Jasem Mutlaq <mutlaqja@ikarustech.com> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include "oal/scope.h" 0010 #include "ui_profileeditor.h" 0011 #include "indi/indicommon.h" 0012 #include <QDialog> 0013 #include <QFrame> 0014 #include <QString> 0015 #include <QStringList> 0016 #include <QPointer> 0017 #include <QProgressDialog> 0018 #include <QNetworkAccessManager> 0019 0020 class ProfileInfo; 0021 class QStandardItemModel; 0022 class DriverInfo; 0023 0024 class ProfileEditorUI : public QFrame, public Ui::ProfileEditorUI 0025 { 0026 Q_OBJECT 0027 0028 public: 0029 /** @short Constructor */ 0030 explicit ProfileEditorUI(QWidget *parent); 0031 }; 0032 0033 class ProfileEditor : public QDialog 0034 { 0035 Q_OBJECT 0036 public: 0037 /** @short Constructor */ 0038 explicit ProfileEditor(QWidget *ks); 0039 0040 /** @short Destructor */ 0041 virtual ~ProfileEditor() override = default; 0042 0043 void setPi(const QSharedPointer<ProfileInfo> &newProfile); 0044 0045 void loadDrivers(); 0046 0047 void setProfileName(const QString &name); 0048 void setAuxDrivers(const QStringList &aux); 0049 void setHostPort(const QString &host, const QString &port); 0050 void setWebManager(bool enabled, const QString &port = "8624"); 0051 void setGuiderType(int type); 0052 void setConnectionOptionsEnabled(bool enable); 0053 0054 void setSettings(const QJsonObject &profile); 0055 0056 public slots: 0057 void saveProfile(); 0058 void setRemoteMode(bool enable); 0059 0060 private slots: 0061 void updateGuiderSelection(int id); 0062 void scanNetwork(); 0063 void showINDIHub(); 0064 void executeScriptEditor(); 0065 0066 private: 0067 void populateManufacturerCombo(QStandardItemModel *model, QComboBox *combo, const QString &selectedDriver, bool isLocal, 0068 const QList<DeviceFamily> &families); 0069 QString getTooltip(const QSharedPointer<DriverInfo> &driver); 0070 void scanIP(const QString &ip); 0071 void clearAllRequests(); 0072 0073 ProfileEditorUI *ui { nullptr }; 0074 QSharedPointer<ProfileInfo> pi; 0075 QStandardItemModel *m_MountModel { nullptr }; 0076 QStandardItemModel *m_CameraModel { nullptr }; 0077 QStandardItemModel *m_GuiderModel { nullptr }; 0078 QStandardItemModel *m_FocuserModel { nullptr }; 0079 QStandardItemModel *m_Aux1Model { nullptr }, *m_Aux2Model { nullptr }, *m_Aux3Model { nullptr }, *m_Aux4Model { nullptr }; 0080 uint8_t m_INDIHub { 0 }; 0081 0082 QPointer<QProgressDialog> m_ProgressDialog; 0083 QNetworkAccessManager m_Manager; 0084 QList<QNetworkReply*> m_Replies; 0085 0086 bool m_CancelScan { false }; 0087 };