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

41 lines
3.4 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* GUI-страница обслуживания SQLite: информация о файле/WAL, quick_check, integrity_check и optimize через DbManager.
* Действия отключают кнопки и откладываются QTimer на 50мс; сам SQL выполняется синхронно в GUI, без worker.
* DbManager заимствован до уничтожения страницы; отложенные callbacks привязаны к её QObject lifetime. */
#pragma once
#include <QWidget>
#include <QPushButton>
#include <QLabel>
#include <QPlainTextEdit>
class DbManager;
class DatabaseSettingsPage : public QWidget {
Q_OBJECT
public:
/* Создать форму и прочитать информацию о файлах; nullptr/неоткрытая БД отключают кнопки операций. */
explicit DatabaseSettingsPage(DbManager* db, QWidget* parent = nullptr);
/* Обновить доступность кнопок и доступную информацию о файлах; PRAGMA не запускает.
* Подробности последней проверки сохраняются; при отсутствии БД подпись статуса сообщает о неподключённой БД. */
void refreshStatus();
private slots:
void onQuickCheck(); // Запросить quick_check после проверки наличия handle; результат показывается после выполнения SQL.
void onFullCheck(); // Аналогично для integrity_check со сверкой индексов.
void onOptimize(); // Запросить обслуживание статистики планировщика, успех не означает проверку целостности.
private:
void showResult(const QString& checkName, const struct IntegrityResult& result); // Показать ok/ошибку, время и сообщения; включить кнопки.
void setBusy(bool busy); // Переключить кнопки; busy=true также показывает Checking. SQL/worker не запускает.
DbManager* m_db; // Заимствованный менеджер, может быть nullptr; его handle читается при выполнении действия.
QLabel* m_filePathLabel; // Дочерняя подпись пути sqlite3_db_filename(main), доступна для копирования.
QLabel* m_fileSizeLabel; // Дочерняя подпись размера основного файла по QFileInfo.
QLabel* m_walSizeLabel; // Дочерняя подпись известного размера -wal; n/a для отсутствующего WAL у найденного файла БД.
QPushButton* m_quickBtn; // Дочерняя кнопка быстрой проверки.
QPushButton* m_fullBtn; // Дочерняя кнопка полной проверки.
QPushButton* m_optimizeBtn; // Дочерняя кнопка PRAGMA optimize.
QLabel* m_statusLabel; // Дочерняя подпись состояния/последнего результата и времени SQL.
QPlainTextEdit* m_resultText; // Дочерний read-only текст первого и дополнительных сообщений результата.
};