From 1a490056c84aa7ea6d8f16a9f9fc97940c8cbebf Mon Sep 17 00:00:00 2001 From: Albert Astals Cid Date: Sun, 6 Sep 2020 13:19:00 +0200 Subject: [PATCH] Be more expressive on the "This document is signed" message --- part.cpp | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/part.cpp b/part.cpp index 8d035778c..f227d6d4c 100644 --- a/part.cpp +++ b/part.cpp @@ -116,6 +116,7 @@ #include "ui/searchwidget.h" #include "ui/side_reviews.h" #include "ui/sidebar.h" +#include "ui/signatureguiutils.h" #include "ui/signaturepanel.h" #include "ui/thumbnaillist.h" #include "ui/toc.h" @@ -507,7 +508,6 @@ Part::Part(QWidget *parentWidget, QObject *parent, const QVariantList &args) m_signatureMessage = new KMessageWidget(rightContainer); m_signatureMessage->setVisible(false); m_signatureMessage->setWordWrap(true); - m_signatureMessage->setMessageType(KMessageWidget::Information); rightLayout->addWidget(m_signatureMessage); m_pageView = new PageView(rightContainer, m_document); QMetaObject::invokeMethod(m_pageView, "setFocus", Qt::QueuedConnection); // usability setting @@ -1544,7 +1544,27 @@ bool Part::openFile() if (m_embedMode == PrintPreviewMode) { m_signatureMessage->setText(i18n("All editing and interactive features for this document are disabled. Please save a copy and reopen to edit this document.")); } else { - m_signatureMessage->setText(i18n("This document is digitally signed.")); + const QVector signatureFormFields = SignatureGuiUtils::getSignatureFormFields(m_document, true, 0); + bool allSignaturesValid = true; + for (const Okular::FormFieldSignature *signature : signatureFormFields) { + const Okular::SignatureInfo &info = signature->signatureInfo(); + if (info.signatureStatus() != SignatureInfo::SignatureValid) { + allSignaturesValid = false; + } + } + + if (allSignaturesValid) { + if (signatureFormFields.last()->signatureInfo().signsTotalDocument()) { + m_signatureMessage->setMessageType(KMessageWidget::Information); + m_signatureMessage->setText(i18n("This document is digitally signed.")); + } else { + m_signatureMessage->setMessageType(KMessageWidget::Warning); + m_signatureMessage->setText(i18n("This document is digitally signed. There have been changes since last signed.")); + } + } else { + m_signatureMessage->setMessageType(KMessageWidget::Warning); + m_signatureMessage->setText(i18n("This document is digitally signed. Some of the signatures could not be validated properly.")); + } } m_signatureMessage->setVisible(true); }