сохранение веб сервисов с чатом

This commit is contained in:
2026-01-29 21:13:51 +03:00
parent c348019bf5
commit eff857a55e
6 changed files with 382 additions and 10 deletions
+59 -7
View File
@@ -130,7 +130,7 @@ uGeneral::uGeneral(QWidget *parent)
// Инициализируем окна создания
m_createNotifyDialog = new FCreateNotify(this);
m_createChatDialog = new FCreateChat(this);
m_createChatDialog = new FCreateChat(db, this);
}
@@ -1344,12 +1344,11 @@ void uGeneral::loadSettings(){
form->setDatabase(db);
table = form->findChild<QTableWidget*>("sgNeiro");
db->LoadTableWidget(table);
db->LoadRandomGroups(ui->lbRandomGroup);
ui->cbTheme->setCurrentIndex(db->readSetting(ui->cbTheme->objectName(), "0").toInt());
db->LoadTableWidget(ui->sgWebServers);
loadSavedChats();
}
@@ -2097,6 +2096,7 @@ void uGeneral::on_btnSaveSettings_clicked()
for (QCheckBox* cb : checkBoxes) {
db->writeSetting(cb->objectName(), cb->isChecked() ? "True" : "False");
}
db->SaveTableWidget(ui->sgWebServers);
}
void uGeneral::execCommand(const QString &sender, const QString &message)
@@ -3073,9 +3073,10 @@ void uGeneral::applyStyleSheet(const QString &filename)
void uGeneral::on_btnWSCreateChat_clicked()
{
// Создаем диалог каждый раз
FCreateChat *createDialog = new FCreateChat(this);
FCreateChat *createDialog = new FCreateChat(db, this);
connect(createDialog, &FCreateChat::serverCreated, this, &uGeneral::onChatServerCreated);
createDialog->setAttribute(Qt::WA_DeleteOnClose); // Автоматическое удаление при закрытии
connect(createDialog, &FCreateChat::serverUpdated, this, &uGeneral::onChatServerUpdated);
createDialog->setAttribute(Qt::WA_DeleteOnClose);
createDialog->exec();
}
@@ -3398,7 +3399,7 @@ void uGeneral::on_sgWebServers_cellDoubleClicked(int row, int column)
HttpServerChat *existingServer = qobject_cast<HttpServerChat*>(serverObj);
if (existingServer) {
FCreateChat *createChatDialog = new FCreateChat(this);
FCreateChat *createChatDialog = new FCreateChat(db, this);
createChatDialog->loadExistingServer(existingServer, nameItem->text());
connect(createChatDialog, &FCreateChat::serverUpdated, this, &uGeneral::onChatServerUpdated);
createChatDialog->setAttribute(Qt::WA_DeleteOnClose);
@@ -3670,3 +3671,54 @@ void uGeneral::on_btnThemesFolder_clicked()
QDesktopServices::openUrl(url);
}
/**
* @brief Загружает сохраненные чаты из базы данных и создает серверы
*/
void uGeneral::loadSavedChats()
{
QList<ChatSettings> chats = db->loadAllChats();
for (const ChatSettings &settings : chats) {
if (settings.type.toLower() == "chat") {
// Создаем сервер чата
HttpServerChat *server = new HttpServerChat(
settings.fontList,
settings.port,
settings.backgroundColor,
this
);
// Настраиваем сервер
server->setBlockColor(settings.blockColor);
server->setBorderColor(settings.borderColor);
server->setBorderSize(settings.borderSize);
server->setPadding(settings.padding);
server->setTransparency(settings.transparency);
server->setFontFamily(settings.fontFamily);
server->setFontSize(settings.fontSize);
server->setFontColor(settings.fontColor);
server->setFreez(settings.freez);
server->setMessageTimeout(settings.messageTimeout);
server->setDeleteMode(settings.deleteByTime, settings.maxMsgCount);
// Запускаем сервер
if (server->start()) {
m_chatServers.append(server);
// Добавляем в таблицу
QString url = QString("http://localhost:%1").arg(settings.port);
addServerToTable(settings.name, "Чат", settings.port, url, server);
toLog("uGeneral", "loadSavedChats",
QString("Загружен и запущен чат '%1' на порту %2")
.arg(settings.name).arg(settings.port), 0);
} else {
delete server;
toLog("uGeneral", "loadSavedChats",
QString("Не удалось запустить чат '%1' на порту %2")
.arg(settings.name).arg(settings.port), 2);
}
}
}
}