создал менеджер донатов

- добавление
- удаление
- сохранение
This commit is contained in:
2026-02-22 09:18:00 +03:00
parent 05662be287
commit eb494ae8fa
10 changed files with 499 additions and 11 deletions
+67
View File
@@ -365,6 +365,14 @@ void uGeneral::setupTables()
this, &uGeneral::onFilesGridDoubleClicked);
connect(ui->widget_3->tableWidget(), &QTableWidget::cellDoubleClicked,
this, &uGeneral::onNeiroGridDoubleClicked);
ui->sgDotateTriggers->setColumnCount(2);
headers.clear();
headers << "Название" << "Правило";
ui->sgDotateTriggers->setHorizontalHeaderLabels(headers);
ui->sgDotateTriggers->setSelectionBehavior(QAbstractItemView::SelectRows);
ui->sgDotateTriggers->setSelectionMode(QAbstractItemView::SingleSelection);
}
void uGeneral::initializeManagers()
@@ -468,6 +476,11 @@ void uGeneral::initializeManagers()
// Загружаем действия из БД
m_actionManager->loadFromDatabase();
updateActionsTable();
m_donationManager = new DonationManager(db, this);
connect(m_donationManager, &DonationManager::dataChanged, this, &uGeneral::updateDonationTriggersTable);
m_donationManager->loadFromDatabase();
updateDonationTriggersTable();
}
@@ -3719,3 +3732,57 @@ void uGeneral::clearActionInputs()
ui->edtActionPic->clear();
ui->edtActionSound->clear();
}
void uGeneral::updateDonationTriggersTable()
{
ui->sgDotateTriggers->setRowCount(0);
auto triggers = m_donationManager->getAllTriggers();
for (const auto &t : triggers) {
int row = ui->sgDotateTriggers->rowCount();
ui->sgDotateTriggers->insertRow(row);
ui->sgDotateTriggers->setItem(row, 0, new QTableWidgetItem(t.name));
ui->sgDotateTriggers->setItem(row, 1, new QTableWidgetItem(t.rule));
// Сохраним id в UserRole первого столбца для удаления
ui->sgDotateTriggers->item(row, 0)->setData(Qt::UserRole, t.id);
}
}
void uGeneral::on_btnDonateAdd_clicked()
{
QString name = ui->lineEdit->text().trimmed(); // поле для имени
QString rule = ui->lineEdit_2->text().trimmed(); // поле для правила
if (name.isEmpty() || rule.isEmpty()) {
QMessageBox::warning(this, "Ошибка", "Заполните оба поля!");
return;
}
if (!m_donationManager->addTrigger(name, rule)) {
QMessageBox::critical(this, "Ошибка", "Не удалось добавить триггер. Проверьте формат правила.");
} else {
ui->lineEdit->clear();
ui->lineEdit_2->clear();
}
}
void uGeneral::on_btnDonateDel_clicked()
{
int row = ui->sgDotateTriggers->currentRow();
if (row < 0) {
QMessageBox::warning(this, "Ошибка", "Выберите триггер для удаления!");
return;
}
int id = ui->sgDotateTriggers->item(row, 0)->data(Qt::UserRole).toInt();
if (QMessageBox::question(this, "Подтверждение", "Удалить выбранный триггер?") == QMessageBox::Yes) {
m_donationManager->deleteTrigger(id);
}
}
void uGeneral::on_sgDotateTriggers_cellDoubleClicked(int row, int column)
{
Q_UNUSED(column);
QString name = ui->sgDotateTriggers->item(row, 0)->text();
QString rule = ui->sgDotateTriggers->item(row, 1)->text();
ui->lineEdit->setText(name);
ui->lineEdit_2->setText(rule);
}