File indexing completed on 2024-04-28 11:33:38

0001 /*
0002     This file is part of the KDE libraries
0003     SPDX-FileCopyrightText: 2012 David Faure <faure+bluesystems@kde.org>
0004 
0005     SPDX-License-Identifier: LGPL-2.0-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0006 */
0007 
0008 #include "frameworkintegrationplugin.h"
0009 #include <KConfigGroup>
0010 #include <KNotification>
0011 #include <KSharedConfig>
0012 
0013 #include <QDebug>
0014 #include <qplugin.h>
0015 
0016 #if KWIDGETSADDONS_BUILD_DEPRECATED_SINCE(5, 100)
0017 bool KMessageBoxDontAskAgainConfigStorage::shouldBeShownYesNo(const QString &dontShowAgainName, KMessageBox::ButtonCode &result)
0018 #else
0019 bool KMessageBoxDontAskAgainConfigStorage::shouldBeShownTwoActions(const QString &dontShowAgainName, KMessageBox::ButtonCode &result)
0020 #endif
0021 {
0022     KConfigGroup cg(KMessageBox_againConfig ? KMessageBox_againConfig : KSharedConfig::openConfig().data(), "Notification Messages");
0023     const QString dontAsk = cg.readEntry(dontShowAgainName, QString()).toLower();
0024     if (dontAsk == QLatin1String("yes") || dontAsk == QLatin1String("true")) {
0025         result = KMessageBox::PrimaryAction;
0026         return false;
0027     }
0028     if (dontAsk == QLatin1String("no") || dontAsk == QLatin1String("false")) {
0029         result = KMessageBox::SecondaryAction;
0030         return false;
0031     }
0032     return true;
0033 }
0034 
0035 bool KMessageBoxDontAskAgainConfigStorage::shouldBeShownContinue(const QString &dontShowAgainName)
0036 {
0037     KConfigGroup cg(KMessageBox_againConfig ? KMessageBox_againConfig : KSharedConfig::openConfig().data(), "Notification Messages");
0038     return cg.readEntry(dontShowAgainName, true);
0039 }
0040 
0041 #if KWIDGETSADDONS_BUILD_DEPRECATED_SINCE(5, 100)
0042 void KMessageBoxDontAskAgainConfigStorage::saveDontShowAgainYesNo(const QString &dontShowAgainName, KMessageBox::ButtonCode result)
0043 #else
0044 void KMessageBoxDontAskAgainConfigStorage::saveDontShowAgainTwoActions(const QString &dontShowAgainName, KMessageBox::ButtonCode result)
0045 #endif
0046 {
0047     KConfigGroup::WriteConfigFlags flags = KConfig::Persistent;
0048     if (dontShowAgainName[0] == QLatin1Char(':')) {
0049         flags |= KConfigGroup::Global;
0050     }
0051     KConfigGroup cg(KMessageBox_againConfig ? KMessageBox_againConfig : KSharedConfig::openConfig().data(), "Notification Messages");
0052     cg.writeEntry(dontShowAgainName, result == KMessageBox::PrimaryAction, flags);
0053     cg.sync();
0054 }
0055 
0056 void KMessageBoxDontAskAgainConfigStorage::saveDontShowAgainContinue(const QString &dontShowAgainName)
0057 {
0058     KConfigGroup::WriteConfigFlags flags = KConfigGroup::Persistent;
0059     if (dontShowAgainName[0] == QLatin1Char(':')) {
0060         flags |= KConfigGroup::Global;
0061     }
0062     KConfigGroup cg(KMessageBox_againConfig ? KMessageBox_againConfig : KSharedConfig::openConfig().data(), "Notification Messages");
0063     cg.writeEntry(dontShowAgainName, false, flags);
0064     cg.sync();
0065 }
0066 
0067 void KMessageBoxDontAskAgainConfigStorage::enableAllMessages()
0068 {
0069     KConfig *config = KMessageBox_againConfig ? KMessageBox_againConfig : KSharedConfig::openConfig().data();
0070     if (!config->hasGroup("Notification Messages")) {
0071         return;
0072     }
0073 
0074     KConfigGroup cg(config, "Notification Messages");
0075 
0076     typedef QMap<QString, QString> configMap;
0077 
0078     const configMap map = cg.entryMap();
0079 
0080     configMap::ConstIterator it;
0081     for (it = map.begin(); it != map.end(); ++it) {
0082         cg.deleteEntry(it.key());
0083     }
0084 }
0085 
0086 void KMessageBoxDontAskAgainConfigStorage::enableMessage(const QString &dontShowAgainName)
0087 {
0088     KConfig *config = KMessageBox_againConfig ? KMessageBox_againConfig : KSharedConfig::openConfig().data();
0089     if (!config->hasGroup("Notification Messages")) {
0090         return;
0091     }
0092 
0093     KConfigGroup cg(config, "Notification Messages");
0094 
0095     cg.deleteEntry(dontShowAgainName);
0096     config->sync();
0097 }
0098 
0099 void KMessageBoxNotify::sendNotification(QMessageBox::Icon notificationType, const QString &message, QWidget *parent)
0100 {
0101     QString messageType;
0102     switch (notificationType) {
0103     case QMessageBox::Warning:
0104         messageType = QStringLiteral("messageWarning");
0105         break;
0106     case QMessageBox::Critical:
0107         messageType = QStringLiteral("messageCritical");
0108         break;
0109     case QMessageBox::Question:
0110         messageType = QStringLiteral("messageQuestion");
0111         break;
0112     default:
0113         messageType = QStringLiteral("messageInformation");
0114         break;
0115     }
0116 
0117     KNotification::event(messageType, message, QPixmap(), parent, KNotification::DefaultEvent | KNotification::CloseOnTimeout);
0118 }
0119 
0120 KFrameworkIntegrationPlugin::KFrameworkIntegrationPlugin()
0121     : QObject()
0122 {
0123     setProperty(KMESSAGEBOXDONTASKAGAIN_PROPERTY, QVariant::fromValue<KMessageBoxDontAskAgainInterface *>(&m_dontAskAgainConfigStorage));
0124     setProperty(KMESSAGEBOXNOTIFY_PROPERTY, QVariant::fromValue<KMessageBoxNotifyInterface *>(&m_notify));
0125 }
0126 
0127 void KFrameworkIntegrationPlugin::reparseConfiguration()
0128 {
0129     KSharedConfig::openConfig()->reparseConfiguration();
0130 }
0131 
0132 #include "moc_frameworkintegrationplugin.cpp"