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 };