File indexing completed on 2024-04-28 03:43:19
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 }