34 lines
2.4 KiB
C++
34 lines
2.4 KiB
C++
/* GUI-страница известных узлов SQLite: таблица и подробности собираются из одного LEFT JOIN nodes/node_addresses.
|
|
* refreshNodes синхронно читает полный результат во временные Qt-значения; виджеты заполняются после успешного finalize.
|
|
* Ошибка чтения/данных очищает таблицу и показывает Query error, отсутствие БД — Database not connected; повторный Refresh допустим. */
|
|
#pragma once
|
|
|
|
#include <QWidget>
|
|
#include <QTableWidget>
|
|
#include <QPlainTextEdit>
|
|
#include <QPushButton>
|
|
|
|
class DbManager;
|
|
|
|
class NodesPage : public QWidget {
|
|
Q_OBJECT
|
|
public:
|
|
/* db заимствован до уничтожения страницы, nullptr допустим. Создание не читает список узлов. */
|
|
explicit NodesPage(DbManager* db, QWidget* parent = nullptr);
|
|
/* GUI: заменить таблицу/подробности полным результатом либо явным состоянием ошибки; этапы/причины логируются в CONFIG. */
|
|
void refreshNodes();
|
|
|
|
private slots:
|
|
void onRefreshClicked(); // Ручное обновление; также refreshNodes вызывает диалог при выборе категории.
|
|
|
|
private:
|
|
static QString shortenKey(const QByteArray& key); // HEX uppercase: первые/последние 4 байта, при длине <8 целиком.
|
|
static QString addrStr(const void* addr, int family); // Проверенный сетевой адрес: family=4/6, обязательные 4/16 байт до возврата.
|
|
static QString protoStr(int protocol); // UDP/TCP/REALITY из битмаски; неизвестный обычный protocol — число.
|
|
|
|
DbManager* m_db; // Заимствованный читатель/handle, живёт до уничтожения страницы.
|
|
QTableWidget* m_table; // Дочерняя read-only таблица: ID, имя, X25519, Ed25519, число адресов.
|
|
QPlainTextEdit* m_dumpText; // Дочерние подробности того же результата либо сообщение об ошибке.
|
|
QPushButton* m_refreshBtn; // Дочерняя кнопка повторного чтения.
|
|
};
|