From ebbf2d887675d4aedf6e6e4ad5a17863a5103987 Mon Sep 17 00:00:00 2001 From: Ivailo Monev Date: Thu, 24 Mar 2022 16:17:23 +0200 Subject: [PATCH] kgpg: disable start button when source or destination is not valid Signed-off-by: Ivailo Monev --- kgpg/kgpg.cpp | 44 ++++++++++++++++++++++++++++++++++++++++++++ kgpg/kgpg.h | 3 +++ kgpg/kgpgwidget.ui | 3 +++ 3 files changed, 50 insertions(+) diff --git a/kgpg/kgpg.cpp b/kgpg/kgpg.cpp index 60cb715f..facbc577 100644 --- a/kgpg/kgpg.cpp +++ b/kgpg/kgpg.cpp @@ -40,6 +40,11 @@ KGPG::KGPG(QWidget *parent) m_ui.startbutton->setEnabled(false); m_ui.progressbar->setVisible(false); + connect(m_ui.sourcerequester, SIGNAL(textChanged(QString)), this, SLOT(slotSourceOrDestinationChanged(QString))); + connect(m_ui.sourcerequester, SIGNAL(urlSelected(KUrl)), this, SLOT(slotSourceOrDestinationChanged(KUrl))); + connect(m_ui.destinationrequester, SIGNAL(textChanged(QString)), this, SLOT(slotSourceOrDestinationChanged(QString))); + connect(m_ui.destinationrequester, SIGNAL(urlSelected(KUrl)), this, SLOT(slotSourceOrDestinationChanged(KUrl))); + connect(m_ui.keysbox, SIGNAL(currentIndexChanged(int)), this, SLOT(slotKeysBox(int))); connect(m_ui.startbutton, SIGNAL(clicked()), this, SLOT(slotStart())); @@ -524,6 +529,31 @@ void KGPG::start() // qDebug() << Q_FUNC_INFO << "verify" << gpgbuffer; +#if 0 + const gpgme_verify_result_t gpgverify = gpgme_op_verify_result(m_gpgctx); + if (!gpgverify->signatures) { + setError(i18n("No signatures")); + gpgme_data_release(gpgindata); + gpgme_data_release(gpgsigndata); + break; + } + + gpgme_signature_t gpgsignature; + bool breakswitch = false; + for (gpgsignature = gpgverify->signatures; gpgsignature; gpgsignature = gpgsignature->next) { + if (gpgsignature->validity_reason != 0) { + setError(gpgme_strerror(gpgsignature->validity_reason)); + gpgme_data_release(gpgindata); + gpgme_data_release(gpgsigndata); + breakswitch = true; + break; + } + } + if (breakswitch) { + break; + } +#endif + gpgme_free(gpgbuffer); gpgme_data_release(gpgindata); gpgme_data_release(gpgsigndata); @@ -585,6 +615,20 @@ void KGPG::slotQuit() qApp->quit(); } +void KGPG::slotSourceOrDestinationChanged(const QString &url) +{ + Q_UNUSED(url); + const KUrl sourceurl = m_ui.sourcerequester->url(); + const KUrl destinationurl = m_ui.destinationrequester->url(); + m_ui.startbutton->setEnabled(sourceurl.isValid() && destinationurl.isValid()); +} + +void KGPG::slotSourceOrDestinationChanged(const KUrl &url) +{ + Q_UNUSED(url); + slotSourceOrDestinationChanged(QString()); +} + void KGPG::updateKeys(const gpgme_keylist_mode_t gpgmode, const bool gpgsecret) { if (!m_initialized) { diff --git a/kgpg/kgpg.h b/kgpg/kgpg.h index d4a3271c..356936b3 100644 --- a/kgpg/kgpg.h +++ b/kgpg/kgpg.h @@ -77,6 +77,9 @@ private Q_SLOTS: void slotVerifyMode(); void slotQuit(); + void slotSourceOrDestinationChanged(const QString &url); + void slotSourceOrDestinationChanged(const KUrl &url); + private: void updateKeys(const gpgme_keylist_mode_t gpgmode, const bool gpgsecret); diff --git a/kgpg/kgpgwidget.ui b/kgpg/kgpgwidget.ui index 086909d3..c916fee0 100644 --- a/kgpg/kgpgwidget.ui +++ b/kgpg/kgpgwidget.ui @@ -196,6 +196,9 @@ + + false + Start