46 lines
1.6 KiB
C++
46 lines
1.6 KiB
C++
/* Диалог выдачи invite-ссылки и QR: запрашивает кандидатов и зарегистрированную ссылку у ядра.
|
|
* requestId связывает асинхронный ответ с текущим запросом; URL отображается после LINK_READY. */
|
|
#pragma once
|
|
|
|
#include <QDialog>
|
|
#include <QString>
|
|
#include <stdint.h>
|
|
|
|
class DbManager;
|
|
class QComboBox;
|
|
class QLineEdit;
|
|
class QLabel;
|
|
class QPushButton;
|
|
|
|
class ShareInviteDialog : public QDialog {
|
|
Q_OBJECT
|
|
public:
|
|
explicit ShareInviteDialog(const QString& channelId, DbManager* db, QWidget* parent = nullptr);
|
|
~ShareInviteDialog();
|
|
|
|
private slots:
|
|
void onNodeSelected(int index);
|
|
|
|
private:
|
|
void requestLink(uint64_t targetNodeId);
|
|
void setLink(const QString& link);
|
|
void onCandidates(const char* chId, int chIdLen, const uint8_t* data, int len);
|
|
void onLinkReady(const char* chId, int chIdLen, uint64_t requestId, const char* link);
|
|
void onLocalDevices(const uint8_t* data, int len);
|
|
void onLocalDelivery(const uint8_t* data, int len);
|
|
void sendLocalInvite();
|
|
void updateLocalSend();
|
|
|
|
uint64_t m_requestId = 0;
|
|
QString m_channelId;
|
|
DbManager* m_db;
|
|
QComboBox* m_nodeCombo;
|
|
QLineEdit* m_linkEdit;
|
|
QLabel* m_qrLabel;
|
|
QWidget* m_localRow; // выбор устройства; скрыт, пока устройств нет
|
|
QComboBox* m_devices;
|
|
QPushButton* m_sendLocal;
|
|
QLabel* m_delivery;
|
|
uint64_t m_localRequest = 0; // текущая доставка; 0 — нет ожидания ACK
|
|
};
|