#include "recordedit.h" #include "repayment.h" #include "ui_recordedit.h" #include "util.h" #include #include RecordEdit::RecordEdit(QWidget* parent, std::unique_ptr& comSqlOpr, std::unique_ptr& repaySqlOpr) : QDialog(parent), ui(new Ui::RecordEdit), comSqlOpr_(comSqlOpr), repaySqlOpr_(repaySqlOpr) { ui->setupUi(this); ui->cbCalssify->setEditable(true); ui->timeEdit->setDisplayFormat("HH:mm:ss"); ui->edCash->setValidator(new QDoubleValidator(0.0, 10000000.0, 2, this)); ui->edId->setReadOnly(true); connect(ui->btnModify, &QPushButton::clicked, this, &RecordEdit::Modify); connect(ui->btnCancel, &QPushButton::clicked, this, &RecordEdit::reject); connect(ui->btnCurDate, &QPushButton::clicked, this, [this]() { auto curContent = ui->pedMark->toPlainText(); curContent += "\n"; auto curDt = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss"); curContent += curDt; ui->pedMark->setPlainText(curContent); }); connect(ui->btnYiHuanQing, &QPushButton::clicked, this, [this]() { auto curContent = ui->pedMark->toPlainText(); if (curContent.contains("已还清")) { return; } curContent += "\n"; curContent += "已还清。"; ui->pedMark->setPlainText(curContent); }); connect(ui->btnRepay, &QPushButton::clicked, this, [this]() { QString info; info.append(QString::number(record_.id)); info.append(" "); info.append(QString::fromStdString(record_.payType)); info.append(" "); info.append(QString::fromStdString(record_.dt)); info.append(" "); info.append(QString::fromStdString(record_.classify)); auto* payment = new Repayment(this, repaySqlOpr_); payment->SetInformation(info); payment->SetRecord(record_); payment->exec(); }); setWindowTitle("编辑"); } RecordEdit::~RecordEdit() { delete ui; } int RecordEdit::exec() { modify_ = false; ShowData(); if (!over_) { return QDialog::Rejected; } return QDialog::exec(); } void RecordEdit::ShowData() { over_ = false; ClassifyRecordList classifyList; if (!comSqlOpr_->GetClassifyList(classifyList)) { QMessageBox::warning(this, "错误", QString::fromStdString(comSqlOpr_->GetLastErr())); return; } ui->cbCalssify->clear(); for (const auto& classify : classifyList) { ui->cbCalssify->addItem(QString::fromStdString(classify.value)); } if (!classifyList.empty()) { ui->cbCalssify->setCurrentText(QString::fromStdString(record_.classify)); } ui->edId->setText(QString::number(record_.id)); ui->cbType->addItem("现金支出"); ui->cbType->addItem("现金收入"); ui->cbType->addItem("信用支出"); ui->cbType->addItem("信用收入"); ui->cbType->addItem("信用借款"); QDateTime datetime = QDateTime::fromString(QString::fromStdString(record_.dt), "yyyy-MM-dd hh:mm:ss"); ui->dateEdit->setDate(datetime.date()); ui->timeEdit->setTime(datetime.time()); ui->edCash->setText(QString::number(record_.money / 100.0)); ui->pedContent->setPlainText(QString::fromStdString(record_.thing)); ui->pedMark->setPlainText(QString::fromStdString(record_.remark)); ui->cbType->setCurrentText(QString::fromStdString(record_.payType)); if (record_.payType == "现金支出" || record_.payType == "现金收入") { ui->btnRepay->setEnabled(false); } else { ui->btnRepay->setEnabled(true); } over_ = true; } void RecordEdit::GetData() { record_.classify = ui->cbCalssify->currentText().toStdString(); record_.payType = ui->cbType->currentText().toStdString(); QDateTime datetime; datetime.setDate(ui->dateEdit->date()); datetime.setTime(ui->timeEdit->time()); auto strMoney = ui->edCash->text(); record_.money = Util::CashInt(strMoney.toDouble()); record_.dt = datetime.toString("yyyy-MM-dd hh:mm:ss").toStdString(); record_.thing = ui->pedContent->toPlainText().toStdString(); record_.remark = ui->pedMark->toPlainText().toStdString(); } void RecordEdit::Modify() { if (QMessageBox::question(this, "确认修改", "确定修改记录吗?") != QMessageBox::Yes) { return; } modify_ = true; GetData(); accept(); }