File indexing completed on 2024-12-29 04:52:23

0001 /*
0002    SPDX-FileCopyrightText: 2014-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "cryptostateindicatorwidget.h"
0008 #include <MessageCore/ColorUtil>
0009 
0010 #include <KLocalizedString>
0011 
0012 #include <QHBoxLayout>
0013 #include <QLabel>
0014 
0015 CryptoStateIndicatorWidget::CryptoStateIndicatorWidget(QWidget *parent)
0016     : QWidget(parent)
0017     , mSignatureStateIndicator(new QLabel(this))
0018     , mEncryptionStateIndicator(new QLabel(this))
0019 {
0020     auto hbox = new QHBoxLayout(this);
0021     hbox->setContentsMargins({});
0022     mSignatureStateIndicator->setAlignment(Qt::AlignHCenter);
0023     mSignatureStateIndicator->setTextFormat(Qt::PlainText);
0024     mSignatureStateIndicator->setContentsMargins(4, 4, 4, 4);
0025     hbox->addWidget(mSignatureStateIndicator);
0026     mSignatureStateIndicator->setObjectName(QLatin1StringView("signatureindicator"));
0027     QPalette p(mSignatureStateIndicator->palette());
0028     p.setColor(QPalette::Window, MessageCore::ColorUtil::self()->pgpSignedTrustedMessageColor());
0029     p.setColor(QPalette::Text, MessageCore::ColorUtil::self()->pgpSignedTrustedTextColor());
0030     mSignatureStateIndicator->setPalette(p);
0031     mSignatureStateIndicator->setAutoFillBackground(true);
0032 
0033     mEncryptionStateIndicator->setAlignment(Qt::AlignHCenter);
0034     mEncryptionStateIndicator->setTextFormat(Qt::PlainText);
0035     mEncryptionStateIndicator->setContentsMargins(4, 4, 4, 4);
0036     hbox->addWidget(mEncryptionStateIndicator);
0037     p = mEncryptionStateIndicator->palette();
0038     p.setColor(QPalette::Window, MessageCore::ColorUtil::self()->pgpEncryptedMessageColor());
0039     p.setColor(QPalette::Text, MessageCore::ColorUtil::self()->pgpEncryptedTextColor());
0040     mEncryptionStateIndicator->setPalette(p);
0041     mEncryptionStateIndicator->setAutoFillBackground(true);
0042     mEncryptionStateIndicator->setObjectName(QLatin1StringView("encryptionindicator"));
0043     hide();
0044 }
0045 
0046 CryptoStateIndicatorWidget::~CryptoStateIndicatorWidget() = default;
0047 
0048 void CryptoStateIndicatorWidget::setShowAlwaysIndicator(bool status)
0049 {
0050     if (mShowAlwaysIndicator != status) {
0051         mShowAlwaysIndicator = status;
0052         updateShowAlwaysIndicator();
0053     }
0054 }
0055 
0056 void CryptoStateIndicatorWidget::updateShowAlwaysIndicator()
0057 {
0058     if (mShowAlwaysIndicator) {
0059         mSignatureStateIndicator->setVisible(mIsSign);
0060         mEncryptionStateIndicator->setVisible(mIsEncrypted);
0061         if (mIsSign || mIsEncrypted) {
0062             show();
0063         } else {
0064             hide();
0065         }
0066     } else {
0067         mSignatureStateIndicator->setVisible(false);
0068         mEncryptionStateIndicator->setVisible(false);
0069         hide();
0070     }
0071 }
0072 
0073 void CryptoStateIndicatorWidget::updateSignatureAndEncrypionStateIndicators(bool isSign, bool isEncrypted)
0074 {
0075     mIsEncrypted = isEncrypted;
0076     mIsSign = isSign;
0077 
0078     mSignatureStateIndicator->setText(isSign ? i18n("Message will be signed") : i18n("Message will not be signed"));
0079     mEncryptionStateIndicator->setText(isEncrypted ? i18n("Message will be encrypted") : i18n("Message will not be encrypted"));
0080     updateShowAlwaysIndicator();
0081 }
0082 
0083 #include "moc_cryptostateindicatorwidget.cpp"