File indexing completed on 2025-03-09 04:54:38
0001 /* 0002 SPDX-FileCopyrightText: 2013-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 0006 */ 0007 0008 #include "scamdetectionwarningwidget.h" 0009 #include "settings/messageviewersettings.h" 0010 0011 #include <KLocalizedString> 0012 #include <QAction> 0013 #include <QMenu> 0014 0015 using namespace MessageViewer; 0016 0017 class MessageViewer::ScamDetectionWarningWidgetPrivate 0018 { 0019 public: 0020 ScamDetectionWarningWidgetPrivate() = default; 0021 0022 bool mUseInTestApps = false; 0023 }; 0024 0025 ScamDetectionWarningWidget::ScamDetectionWarningWidget(QWidget *parent) 0026 : KMessageWidget(parent) 0027 , d(new MessageViewer::ScamDetectionWarningWidgetPrivate) 0028 { 0029 setVisible(false); 0030 setCloseButtonVisible(true); 0031 setMessageType(Warning); 0032 setWordWrap(true); 0033 setPosition(KMessageWidget::Header); 0034 setText(i18n("This message may be a scam. <a href=\"scamdetails\">(Details...)</a>")); 0035 0036 connect(this, &ScamDetectionWarningWidget::linkActivated, this, &ScamDetectionWarningWidget::slotShowDetails); 0037 0038 auto menu = new QMenu(this); 0039 auto action = new QAction(i18n("Move to Trash"), this); 0040 connect(action, &QAction::triggered, this, &ScamDetectionWarningWidget::moveMessageToTrash); 0041 action->setMenu(menu); 0042 addAction(action); 0043 0044 action = new QAction(i18n("I confirm it's not a scam"), this); 0045 menu->addAction(action); 0046 connect(action, &QAction::triggered, this, &ScamDetectionWarningWidget::slotMessageIsNotAScam); 0047 0048 action = new QAction(i18n("Add email to whitelist"), this); 0049 menu->addAction(action); 0050 connect(action, &QAction::triggered, this, &ScamDetectionWarningWidget::slotAddToWhiteList); 0051 0052 action = new QAction(i18n("Disable scam detection for all messages"), this); 0053 menu->addAction(action); 0054 connect(action, &QAction::triggered, this, &ScamDetectionWarningWidget::slotDisableScamDetection); 0055 } 0056 0057 ScamDetectionWarningWidget::~ScamDetectionWarningWidget() = default; 0058 0059 void ScamDetectionWarningWidget::setUseInTestApps(bool b) 0060 { 0061 d->mUseInTestApps = b; 0062 } 0063 0064 void ScamDetectionWarningWidget::slotMessageIsNotAScam() 0065 { 0066 Q_EMIT messageIsNotAScam(); 0067 setVisible(false); 0068 } 0069 0070 void ScamDetectionWarningWidget::slotShowDetails(const QString &content) 0071 { 0072 if (content == QLatin1StringView("scamdetails")) { 0073 Q_EMIT showDetails(); 0074 } 0075 } 0076 0077 void ScamDetectionWarningWidget::slotShowWarning() 0078 { 0079 animatedShow(); 0080 } 0081 0082 void ScamDetectionWarningWidget::slotDisableScamDetection() 0083 { 0084 if (!d->mUseInTestApps) { 0085 MessageViewer::MessageViewerSettings::self()->setScamDetectionEnabled(false); 0086 MessageViewer::MessageViewerSettings::self()->save(); 0087 } 0088 setVisible(false); 0089 } 0090 0091 void ScamDetectionWarningWidget::slotAddToWhiteList() 0092 { 0093 setVisible(false); 0094 Q_EMIT addToWhiteList(); 0095 } 0096 0097 #include "moc_scamdetectionwarningwidget.cpp"