From d582f2ea77213fdb823ffdab4bc7ca51c765e43a Mon Sep 17 00:00:00 2001 From: evgeny Date: Tue, 27 Oct 2026 16:36:49 +0100 Subject: [PATCH] Clarify settings dialog drafts, save semantics and borrowed dependencies --- tools/chatgui/src/databasesettingspage.h | 4 +- tools/chatgui/src/settingsdialog.h | 55 +++++++++++++----------- 2 files changed, 33 insertions(+), 26 deletions(-) diff --git a/tools/chatgui/src/databasesettingspage.h b/tools/chatgui/src/databasesettingspage.h index 289ff7aa..0d3932ac 100644 --- a/tools/chatgui/src/databasesettingspage.h +++ b/tools/chatgui/src/databasesettingspage.h @@ -16,7 +16,7 @@ public: /* Создать форму и прочитать информацию о файлах; nullptr/неоткрытая БД отключают кнопки операций. */ explicit DatabaseSettingsPage(DbManager* db, QWidget* parent = nullptr); /* Обновить доступность кнопок и доступную информацию о файлах; PRAGMA не запускает. - * Не заменяет результат последней проверки; вызывается при выборе страницы настроек. */ + * Подробности последней проверки сохраняются; при отсутствии БД подпись статуса сообщает о неподключённой БД. */ void refreshStatus(); private slots: @@ -31,7 +31,7 @@ private: DbManager* m_db; // Заимствованный менеджер, может быть nullptr; его handle читается при выполнении действия. QLabel* m_filePathLabel; // Дочерняя подпись пути sqlite3_db_filename(main), доступна для копирования. QLabel* m_fileSizeLabel; // Дочерняя подпись размера основного файла по QFileInfo. - QLabel* m_walSizeLabel; // Дочерняя подпись размера соседнего -wal либо n/a при его отсутствии. + QLabel* m_walSizeLabel; // Дочерняя подпись известного размера -wal; n/a для отсутствующего WAL у найденного файла БД. QPushButton* m_quickBtn; // Дочерняя кнопка быстрой проверки. QPushButton* m_fullBtn; // Дочерняя кнопка полной проверки. QPushButton* m_optimizeBtn; // Дочерняя кнопка PRAGMA optimize. diff --git a/tools/chatgui/src/settingsdialog.h b/tools/chatgui/src/settingsdialog.h index cc923a3c..19fab056 100644 --- a/tools/chatgui/src/settingsdialog.h +++ b/tools/chatgui/src/settingsdialog.h @@ -1,4 +1,7 @@ -// settingsdialog.h — Settings dialog with category list +/* GUI-диалог настроек с категориями и общим Save: черновик редактируемых страниц загружается при создании. + * Переключение категорий сохраняет черновик и обновляет диагностические страницы; виджетами владеет Qt-дерево диалога. + * Save последовательно меняет INI/локальные настройки и ставит команды в мост: возможны частичные изменения при отказе. + * Аватары и портал PTT имеют немедленные эффекты вне Save/Cancel; язык и listen-сокеты применяются после рестарта. */ #pragma once #include @@ -26,37 +29,41 @@ class AudioRecorder; class SettingsDialog : public QDialog { Q_OBJECT public: + /* configPath копируется; db/recorder заимствованы до уничтожения диалога, nullptr допустим. + * node передаётся StatusPage через QPointer и может быть удалён раньше. Все вызовы — GUI. */ explicit SettingsDialog(const QString& configPath, DbManager* db, UtunNode* node, AudioRecorder* recorder, QWidget* parent = nullptr); private slots: - void onCategoryChanged(int row); + void onCategoryChanged(int row); // Выбрать страницу; DB/status/nodes обновляются, редактируемый черновик сохраняется. + /* Пройти запись/применение страниц и вызвать accept при завершении UI-шагов. + * Команды владеют снимками значений; accept не подтверждает commit SQLite/применение ядром. Общей транзакции нет. */ void onSave(); - // Открывает текущий конфиг во внешнем текстовом редакторе; ошибки показывает пользователю. + // Запустить внешний редактор конфига; ошибки логируются/показываются, повторная загрузка — при создании нового диалога. void onEditConfig(); private: - void loadProfileFromConfig(const QString& path); + void loadProfileFromConfig(const QString& path); // Найти первую строку my_node_name=, заполнить поле и базу сравнения имени. - QString m_configPath; - QListWidget* m_categoryList; - QStackedWidget* m_pages; - QPushButton* m_saveBtn; - QLineEdit* m_nicknameEdit; - QComboBox* m_sortCombo; - QComboBox* m_languageCombo; - QComboBox* m_joinPolicyCombo; - QCheckBox* m_autoConnectCheck; + QString m_configPath; // Собственная копия пути INI. + QListWidget* m_categoryList; // Категории; индексы совпадают со страницами m_pages. + QStackedWidget* m_pages; // Владение страницами через Qt-дерево, включая scroll wrapper рации. + QPushButton* m_saveBtn; // Общая кнопка Save, также default action диалога. + QLineEdit* m_nicknameEdit; // Черновик собственного отображаемого имени. + QComboBox* m_sortCombo; // Индекс сортировки: 0=алфавит, 1=последняя активность. + QComboBox* m_languageCombo; // system/en/ru в item data; сохранённый язык для следующего запуска. + QComboBox* m_joinPolicyCombo; // Индекс join_policy: 0=авто, 1=спрашивать, 2=запрещать. + QCheckBox* m_autoConnectCheck; // Черновик group_autoconnect. QCheckBox* m_publishCallStatus; // Разрешение публикации своего статуса звонка. - QSpinBox* m_streamSubblocks; - QSpinBox* m_streamRedundant; - QString m_oldNickname; - NetworkSettingsPage* m_networkPage; - DatabaseSettingsPage* m_databasePage; - StatusPage* m_statusPage; - NodesPage* m_nodesPage; - SoundSettingsPage* m_soundPage; - AudioDeviceSettingsPage* m_audioDevicePage; - StorageSettingsPage* m_storagePage; - RadioSettingsPage* m_radioPage; + QSpinBox* m_streamSubblocks; // Полное N RS-блока, 1..255; настройка следующей трансляции. + QSpinBox* m_streamRedundant; // Избыточные R подблоки, 0..N-1; maximum следует за N. + QString m_oldNickname; // База сравнения имени: загрузка либо последняя попытка Save. + NetworkSettingsPage* m_networkPage; // Черновик listen-сокетов и LAN-флагов. + DatabaseSettingsPage* m_databasePage; // Сведения/обслуживание SQLite, обновление при выборе категории. + StatusPage* m_statusPage; // Диагностика ядра/времени, обновление при выборе категории. + NodesPage* m_nodesPage; // Снимок известных узлов БД, обновление при выборе категории. + SoundSettingsPage* m_soundPage; // Черновик звуков событий. + AudioDeviceSettingsPage* m_audioDevicePage; // Выбор устройств/аудиопараметров и тесты микрофона/динамика. + StorageSettingsPage* m_storagePage; // Черновик автозагрузки и лимитов media-хранилища. + RadioSettingsPage* m_radioPage; // Черновик активации рации и интерфейс PTT-хоткеев. };