#pragma once #include #include #include #include #include #include class UtunNode; class DbManager; class JoinDialog : public QDialog { Q_OBJECT public: explicit JoinDialog(UtunNode* node, DbManager* db, QWidget* parent = nullptr); ~JoinDialog() override; signals: void joined(const QString& channelId); private slots: void onConnectClicked(); void onLinkTextChanged(); private: void setStatus(const QString& text, bool isError = false); void onConnectResult(uint64_t nodeId, uint64_t channelId, int result); UtunNode* m_node; DbManager* m_db; QLineEdit* m_linkEdit; QLabel* m_statusLabel; QPushButton* m_connectBtn; QPushButton* m_cancelBtn; QTimer* m_decodeTimer; bool m_connecting = false; uint64_t m_pendingNodeId = 0; uint64_t m_pendingChannelId = 0; };