File indexing completed on 2024-05-12 04:45:34
0001 /* 0002 SnoreNotify is a Notification Framework based on Qt 0003 Copyright (C) 2015 Hannah von Reth <vonreth@kde.org> 0004 0005 SnoreNotify is free software: you can redistribute it and/or modify 0006 it under the terms of the GNU Lesser General Public License as published by 0007 the Free Software Foundation, either version 3 of the License, or 0008 (at your option) any later version. 0009 0010 SnoreNotify is distributed in the hope that it will be useful, 0011 but WITHOUT ANY WARRANTY; without even the implied warranty of 0012 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0013 GNU Lesser General Public License for more details. 0014 0015 You should have received a copy of the GNU Lesser General Public License 0016 along with SnoreNotify. If not, see <http://www.gnu.org/licenses/>. 0017 */ 0018 #include "settings.h" 0019 #include "libsnore/snore_p.h" 0020 #include "libsnore/plugins/settingsplugin.h" 0021 #include "libsnore/settings/pluginsettingswidget.h" 0022 0023 #include <QList> 0024 0025 using namespace Snore; 0026 0027 QList<PluginSettingsWidget *> Settings::settingWidgets(SnorePlugin::PluginTypes type) 0028 { 0029 SnoreCorePrivate *core(SnoreCorePrivate::instance()); 0030 QList<PluginSettingsWidget *> list; 0031 foreach(const QString & name, core->m_pluginNames[type]) { 0032 //TODO: mem leak? 0033 0034 SnorePlugin *plugin = core->m_plugins[qMakePair(type, name)]; 0035 SettingsPlugin *settingsPlugin = qobject_cast< Snore::SettingsPlugin * >(core->m_plugins[qMakePair(Snore::SnorePlugin::Settings, name + SnorePlugin::typeToString(type))]); 0036 if (settingsPlugin) { 0037 PluginSettingsWidget *widget = settingsPlugin->settingsWidget(plugin); 0038 if (widget) { 0039 list.append(widget); 0040 } 0041 } else { 0042 if (!qobject_cast< Snore::SnoreBackend * >(plugin)) { 0043 list.append(new PluginSettingsWidget(plugin)); 0044 } 0045 } 0046 } 0047 qSort(list.begin(), list.end(), [](PluginSettingsWidget * a, PluginSettingsWidget * b) { 0048 return a->name() < b->name(); 0049 }); 0050 return list; 0051 }