File indexing completed on 2024-04-21 14:45:02

0001 /*
0002     SPDX-FileCopyrightText: 2018 Jasem Mutlaq <mutlaqja@ikarustech.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include <QDialog>
0010 #include <QtWebSockets/QWebSocket>
0011 #include <memory>
0012 
0013 #include "ekos/ekos.h"
0014 #include "ekos/manager.h"
0015 #include "ekos/align/align.h"
0016 #include "indi/indicommon.h"
0017 #include "ksnotification.h"
0018 
0019 // Ekos Live Communication Channels
0020 #include "message.h"
0021 #include "media.h"
0022 #include "cloud.h"
0023 #include "nodemanager.h"
0024 
0025 #include "ui_ekoslivedialog.h"
0026 
0027 class QProgressIndicator;
0028 class QNetworkAccessManager;
0029 class QNetworkReply;
0030 
0031 namespace EkosLive
0032 {
0033 class Client : public QDialog, public Ui::EkosLiveDialog
0034 {
0035         Q_OBJECT
0036     public:
0037         explicit Client(Ekos::Manager *manager);
0038         ~Client();
0039 
0040         bool isConnected() const
0041         {
0042             return m_isConnected;
0043         }
0044 
0045         const QPointer<Message> &message()
0046         {
0047             return m_Message;
0048         }
0049         const QPointer<Media> &media()
0050         {
0051             return m_Media;
0052         }
0053         const QPointer<Cloud> &cloud()
0054         {
0055             return m_Cloud;
0056         }
0057 
0058         // Current supported server types
0059         enum
0060         {
0061             Online,
0062             Offline
0063         };
0064 
0065         void setConnected(bool enabled);
0066         void syncURLs();
0067         void setConfig(bool rememberCredentials, bool autoConnect);
0068         void setUser(const QString &user, const QString &pass);
0069 
0070     protected:
0071         void showSelectServersDialog();
0072 
0073     signals:
0074         void connected();
0075         void disconnected();        
0076 
0077     private:
0078         void onConnected();
0079         void onDisconnected();
0080 
0081       Ekos::Manager *m_Manager { nullptr };
0082       bool m_isConnected {false};
0083 
0084       QProgressIndicator *pi { nullptr };
0085       QVector<QSharedPointer<NodeManager>> m_NodeManagers;
0086 
0087       QPointer<Message> m_Message;
0088       QPointer<Media> m_Media;
0089       QPointer<Cloud> m_Cloud;
0090 };
0091 }