Files
utun2/tools/chatgui/src/invitedialog.h
T

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