diff options
Diffstat (limited to 'src/ui/keypair_details/KeySetExpireDateDialog.cpp')
-rw-r--r-- | src/ui/keypair_details/KeySetExpireDateDialog.cpp | 134 |
1 files changed, 91 insertions, 43 deletions
diff --git a/src/ui/keypair_details/KeySetExpireDateDialog.cpp b/src/ui/keypair_details/KeySetExpireDateDialog.cpp index f76fa3ab..d197a76b 100644 --- a/src/ui/keypair_details/KeySetExpireDateDialog.cpp +++ b/src/ui/keypair_details/KeySetExpireDateDialog.cpp @@ -1,7 +1,7 @@ /** - * This file is part of GPGFrontend. + * This file is part of GpgFrontend. * - * GPGFrontend is free software: you can redistribute it and/or modify + * GpgFrontend is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. @@ -24,51 +24,99 @@ #include "ui/keypair_details/KeySetExpireDateDialog.h" -KeySetExpireDateDialog::KeySetExpireDateDialog(GpgME::GpgContext *ctx, const GpgKey &key, const GpgSubKey *subkey, QWidget *parent) : -QDialog(parent), mKey(key), mSubkey(subkey), mCtx(ctx) { - - QDateTime maxDateTime = QDateTime::currentDateTime().addYears(2); - dateTimeEdit = new QDateTimeEdit(maxDateTime); - dateTimeEdit->setMinimumDateTime(QDateTime::currentDateTime().addSecs(1)); - dateTimeEdit->setMaximumDateTime(maxDateTime); - nonExpiredCheck = new QCheckBox(); - nonExpiredCheck->setTristate(false); - confirmButton = new QPushButton(tr("Confirm")); - - auto *gridLayout = new QGridLayout(); - gridLayout->addWidget(dateTimeEdit, 0, 0, 1, 2); - gridLayout->addWidget(nonExpiredCheck, 0, 2, 1, 1, Qt::AlignRight); - gridLayout->addWidget(new QLabel(tr("Never Expire")), 0, 3); - gridLayout->addWidget(confirmButton, 1, 3); - - connect(nonExpiredCheck, SIGNAL(stateChanged(int)), this, SLOT(slotNonExpiredChecked(int))); - connect(confirmButton, SIGNAL(clicked(bool)), this, SLOT(slotConfirm())); - - this->setLayout(gridLayout); - this->setWindowTitle("Edit Expire Datetime"); - this->setModal(true); - this->setAttribute(Qt::WA_DeleteOnClose, true); +#include <utility> + +#include "gpg/function/GpgKeyGetter.h" +#include "gpg/function/GpgKeyOpera.h" +#include "ui/SignalStation.h" + +namespace GpgFrontend::UI { + +KeySetExpireDateDialog::KeySetExpireDateDialog(const KeyId& key_id, + QWidget* parent) + : QDialog(parent), mKey(GpgKeyGetter::GetInstance().GetKey(key_id)) { + init(); +} + +KeySetExpireDateDialog::KeySetExpireDateDialog(const KeyId& key_id, + std::string subkey_fpr, + QWidget* parent) + : QDialog(parent), + mKey(GpgKeyGetter::GetInstance().GetKey(key_id)), + mSubkey(std::move(subkey_fpr)) { + init(); } void KeySetExpireDateDialog::slotConfirm() { - QDateTime *expires = nullptr; - if(this->nonExpiredCheck->checkState() == Qt::Unchecked) { - expires = new QDateTime(this->dateTimeEdit->dateTime()); - } - - if(!mCtx->setExpire(mKey, mSubkey, expires)) { - QMessageBox::critical(nullptr, - tr("Operation Failed"), - tr("An error occurred during the operation.")); - } - delete expires; - this->close(); + LOG(INFO) << "KeySetExpireDateDialog::slotConfirm Called"; + + std::unique_ptr<boost::gregorian::date> expires = nullptr; + if (this->nonExpiredCheck->checkState() == Qt::Unchecked) { + expires = std::make_unique<boost::gregorian::date>( + boost::posix_time::from_time_t( + this->dateTimeEdit->dateTime().toTime_t()) + .date()); + LOG(INFO) << "KeySetExpireDateDialog::slotConfirm" << mKey.id() << mSubkey + << *expires; + } else { + LOG(INFO) << "KeySetExpireDateDialog::slotConfirm" << mKey.id() << mSubkey + << "Non Expired"; + } + + auto err = GpgKeyOpera::GetInstance().SetExpire(mKey, mSubkey, expires); + + if (check_gpg_error_2_err_code(err) == GPG_ERR_NO_ERROR) { + auto* msg_box = new QMessageBox(nullptr); + msg_box->setAttribute(Qt::WA_DeleteOnClose); + msg_box->setStandardButtons(QMessageBox::Ok); + msg_box->setWindowTitle(_("Success")); + msg_box->setText(_("The expire date of the key pair has been updated.")); + msg_box->setModal(false); + msg_box->open(); + + emit signalKeyExpireDateUpdated(); + + } else { + QMessageBox::critical(this, _("Failure"), _(gpgme_strerror(err))); + } + + this->close(); +} + +void KeySetExpireDateDialog::init() { + QDateTime maxDateTime = QDateTime::currentDateTime().addYears(2); + dateTimeEdit = new QDateTimeEdit(maxDateTime); + dateTimeEdit->setMinimumDateTime(QDateTime::currentDateTime().addSecs(1)); + dateTimeEdit->setMaximumDateTime(maxDateTime); + nonExpiredCheck = new QCheckBox(); + nonExpiredCheck->setTristate(false); + confirmButton = new QPushButton(_("Confirm")); + + auto* gridLayout = new QGridLayout(); + gridLayout->addWidget(dateTimeEdit, 0, 0, 1, 2); + gridLayout->addWidget(nonExpiredCheck, 0, 2, 1, 1, Qt::AlignRight); + gridLayout->addWidget(new QLabel(_("Never Expire")), 0, 3); + gridLayout->addWidget(confirmButton, 1, 3); + + connect(nonExpiredCheck, SIGNAL(stateChanged(int)), this, + SLOT(slotNonExpiredChecked(int))); + connect(confirmButton, SIGNAL(clicked(bool)), this, SLOT(slotConfirm())); + + this->setLayout(gridLayout); + this->setWindowTitle("Edit Expire Datetime"); + this->setModal(true); + this->setAttribute(Qt::WA_DeleteOnClose, true); + + connect(this, SIGNAL(signalKeyExpireDateUpdated()), + SignalStation::GetInstance(), SIGNAL(KeyDatabaseRefresh())); } void KeySetExpireDateDialog::slotNonExpiredChecked(int state) { - if(state == 0) { - this->dateTimeEdit->setDisabled(false); - } else { - this->dateTimeEdit->setDisabled(true); - } + if (state == 0) { + this->dateTimeEdit->setDisabled(false); + } else { + this->dateTimeEdit->setDisabled(true); + } } + +} // namespace GpgFrontend::UI |