File indexing completed on 2023-10-01 03:59:53
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"