создал менеджер донатов
- добавление - удаление - сохранение
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user