File indexing completed on 2024-05-19 04:58:06
0001 /* 0002 This file is part of Choqok, the KDE micro-blogging client 0003 0004 SPDX-FileCopyrightText: 2008-2012 Mehrdad Momeny <mehrdad.momeny@gmail.com> 0005 0006 SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0007 */ 0008 0009 #include "behaviorconfig_shorten.h" 0010 0011 #include <QComboBox> 0012 #include <QDialog> 0013 #include <QDialogButtonBox> 0014 #include <QLayout> 0015 #include <QTabWidget> 0016 0017 #include <KAboutData> 0018 #include <KAboutPluginDialog> 0019 #include <KCMultiDialog> 0020 0021 #include "choqokbehaviorsettings.h" 0022 #include "behaviordebug.h" 0023 #include "pluginmanager.h" 0024 #include "shortenmanager.h" 0025 0026 BehaviorConfig_Shorten::BehaviorConfig_Shorten(QWidget *parent) 0027 : QWidget(parent), currentShortener(nullptr) 0028 { 0029 qCDebug(CHOQOK); 0030 setupUi(this); 0031 Choqok::ShortenManager::self(); 0032 connect(shortenPlugins, (void (QComboBox::*)(int))&QComboBox::currentIndexChanged, 0033 this, &BehaviorConfig_Shorten::currentPluginChanged); 0034 connect(aboutPlugin, &QPushButton::clicked, this, &BehaviorConfig_Shorten::slotAboutClicked); 0035 connect(configPlugin, &QPushButton::clicked, this, &BehaviorConfig_Shorten::slotConfigureClicked); 0036 } 0037 0038 BehaviorConfig_Shorten::~BehaviorConfig_Shorten() 0039 { 0040 qCDebug(CHOQOK); 0041 } 0042 0043 void BehaviorConfig_Shorten::currentPluginChanged(int index) 0044 { 0045 if (shortenPlugins->itemData(index).toString() == prevShortener) { 0046 Q_EMIT changed(false); 0047 } else { 0048 Q_EMIT changed(true); 0049 } 0050 QString key = shortenPlugins->itemData(index).toString(); 0051 0052 if (!key.isEmpty() && key != QLatin1String("none") && !availablePlugins.value(key).value(QStringLiteral("X-KDE-ConfigModule")).isEmpty()) { 0053 configPlugin->setEnabled(true); 0054 } else { 0055 configPlugin->setEnabled(false); 0056 } 0057 // if(currentShortener){ 0058 // layout()->removeWidget(currentShortener->configWidget()); 0059 // // currentShortener->deleteLater(); 0060 // // currentShortener = 0; 0061 // } 0062 // currentShortener = qobject_cast<Choqok::Shortener*>(Choqok::PluginManager::self()->loadPlugin( 0063 // kcfg_plugins->itemData(index).toString() ) ); 0064 // if(currentShortener && currentShortener->configWidget()) 0065 // layout()->addWidget(currentShortener->configWidget()); 0066 } 0067 0068 void BehaviorConfig_Shorten::load() 0069 { 0070 shortenPlugins->clear(); 0071 shortenPlugins->addItem(i18nc("No shortener service", "None"), QLatin1String("none")); 0072 for (const auto &plugin : Choqok::PluginManager::self()->availablePlugins(QLatin1String("Shorteners"))) { 0073 shortenPlugins->addItem(QIcon::fromTheme(plugin.iconName()), plugin.name(), plugin.pluginId()); 0074 availablePlugins.insert(plugin.pluginId(), plugin); 0075 } 0076 prevShortener = Choqok::BehaviorSettings::shortenerPlugin(); 0077 if (!prevShortener.isEmpty()) { 0078 shortenPlugins->setCurrentIndex(shortenPlugins->findData(prevShortener)); 0079 // currentPluginChanged(kcfg_plugins->currentIndex()); 0080 } 0081 } 0082 0083 void BehaviorConfig_Shorten::save() 0084 { 0085 const QString shorten = shortenPlugins->itemData(shortenPlugins->currentIndex()).toString(); 0086 Choqok::BehaviorSettings::setShortenerPlugin(shorten); 0087 if (prevShortener != shorten) { 0088 qCDebug(CHOQOK) << prevShortener << "->" << shorten; 0089 Choqok::BehaviorSettings::self()->save(); 0090 Choqok::ShortenManager::self()->reloadConfig(); 0091 } 0092 } 0093 0094 void BehaviorConfig_Shorten::slotAboutClicked() 0095 { 0096 const QString shorten = shortenPlugins->itemData(shortenPlugins->currentIndex()).toString(); 0097 if (shorten == QLatin1String("none")) { 0098 return; 0099 } 0100 auto metaData = availablePlugins.value(shorten); 0101 0102 KAboutPluginDialog aboutPlugin(metaData, this); 0103 aboutPlugin.setWindowIcon(QIcon::fromTheme(metaData.iconName())); 0104 aboutPlugin.exec(); 0105 } 0106 0107 void BehaviorConfig_Shorten::slotConfigureClicked() 0108 { 0109 auto dialog = new KCMultiDialog(this); 0110 auto pluginInfo = availablePlugins.value(shortenPlugins->itemData(shortenPlugins->currentIndex()).toString()); 0111 const QString configModuleName = pluginInfo.value(QStringLiteral("X-KDE-ConfigModule")); 0112 KPluginMetaData md(configModuleName); 0113 dialog->addModule(md); 0114 dialog->setAttribute(Qt::WA_DeleteOnClose); 0115 dialog->show(); 0116 } 0117 0118 #include "moc_behaviorconfig_shorten.cpp"