137 lines
3.9 KiB
C++
137 lines
3.9 KiB
C++
#ifndef UDATABASE_H
|
||
#define UDATABASE_H
|
||
|
||
#include "qlistwidget.h"
|
||
#include <QObject>
|
||
#include <QString>
|
||
#include <QSqlDatabase>
|
||
#include <QSqlQuery>
|
||
#include <QSqlError>
|
||
#include <QVariant>
|
||
#include <QDebug>
|
||
#include <QFile>
|
||
#include <QTableWidget>
|
||
#include "timerinfo.h"
|
||
#include "webserverchat.h"
|
||
#include "webservernotify.h"
|
||
|
||
struct ChatSettings {
|
||
int id;
|
||
QString name;
|
||
QString type; // "chat" или "notification"
|
||
int port;
|
||
QStringList fontList;
|
||
QString backgroundColor;
|
||
QString blockColor;
|
||
QString borderColor;
|
||
int borderSize;
|
||
int padding;
|
||
int transparency;
|
||
QString fontFamily;
|
||
int fontSize;
|
||
QString fontColor;
|
||
bool freez;
|
||
int messageTimeout;
|
||
int maxMsgCount;
|
||
bool deleteByTime;
|
||
};
|
||
|
||
struct NotificationSettings {
|
||
int id;
|
||
QString name;
|
||
QString type;
|
||
int port;
|
||
QString blockColor;
|
||
QString borderColor;
|
||
int borderSize;
|
||
int transparency;
|
||
QString pageBackgroundColor;
|
||
QString titleFamily;
|
||
int titleSize;
|
||
QString titleColor;
|
||
QString contentFamily;
|
||
int contentSize;
|
||
QString contentColor;
|
||
int duration;
|
||
QDateTime createdAt;
|
||
};
|
||
|
||
|
||
|
||
class uDataBase : public QObject
|
||
{
|
||
Q_OBJECT
|
||
// Информация о таймере
|
||
|
||
|
||
public:
|
||
// Конструктор с указанием файла базы данных
|
||
explicit uDataBase(const QString& dbFileName, QObject* parent = nullptr);
|
||
|
||
// Деструктор
|
||
~uDataBase();
|
||
|
||
|
||
|
||
// Чтение настройки
|
||
QString readSetting(const QString& aName, const QString& aDefault = "");
|
||
|
||
// Запись настройки
|
||
bool writeSetting(const QString& aName, const QString& aValue);
|
||
|
||
|
||
bool LoadTableWidget(QTableWidget *tableWidget);
|
||
bool clearTable(const QString &tableName);
|
||
bool createTableForWidget(const QString &tableName, int columnCount);
|
||
bool tableExists(const QString &tableName);
|
||
bool SaveTableWidget(QTableWidget *tableWidget);
|
||
bool SaveTimers(QTableWidget *tableWidget, const QList<TimerInfo> &timers);
|
||
bool LoadTimers(QTableWidget *tableWidget, QList<TimerInfo> &timers);
|
||
bool SaveGroupResponses(const QString &groupName, const QStringList &responses);
|
||
bool createGroupResponseTable();
|
||
bool DeleteResponse(const QString &groupName, const QString &ResponseName);
|
||
bool DeleteGroup(const QString &groupName);
|
||
bool AddGroupResponse(const QString &groupName, const QString &response);
|
||
QString ProcessResponseTemplate(const QString &templateText);
|
||
QString GetRandomResponse(const QString &groupName);
|
||
bool LoadRandomResponses(const QString &groupName, QListWidget *listWidget);
|
||
bool LoadRandomGroups(QListWidget *listWidget);
|
||
QString ProcessResponseTemplateRecursive(const QString &templateText, int depth);
|
||
|
||
|
||
bool createChatsTable();
|
||
bool saveChat(const QString &name, const QString &type,
|
||
HttpServerChat *server, const QString &fontList);
|
||
bool updateChat(const QString &name, HttpServerChat *server,
|
||
const QString &fontList, int oldPort);
|
||
bool deleteChat(int port);
|
||
QList<ChatSettings> loadAllChats();
|
||
|
||
// Методы для уведомлений
|
||
bool createNotificationsTable();
|
||
bool saveNotification(const QString &name, HttpServer *server);
|
||
bool updateNotification(const QString &name, HttpServer *server, int oldPort);
|
||
QList<NotificationSettings> loadAllNotifications();
|
||
bool deleteNotification(int port);
|
||
|
||
// Проверка подключения к БД
|
||
bool isConnected() const;
|
||
|
||
bool close();
|
||
// Получение последней ошибки
|
||
QString lastError() const;
|
||
|
||
private:
|
||
|
||
|
||
|
||
// Инициализация базы данных (создание таблицы, если нужно)
|
||
bool initializeDatabase();
|
||
|
||
QSqlDatabase m_db;
|
||
QString m_dbFileName;
|
||
QString m_lastError;
|
||
};
|
||
|
||
#endif // DBSETTINGS_H
|