File indexing completed on 2024-04-28 04:44:17

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 
0019 #ifndef SETTINGSUTILS_H
0020 #define SETTINGSUTILS_H
0021 
0022 #include <QSettings>
0023 
0024 class SettingsUtils
0025 {
0026 public:
0027     template<typename Func>
0028     static const QStringList allSettingsKeysWithPrefix(const QString &prefix, QSettings &settings, Func fun)
0029     {
0030         QStringList groups = prefix.split(QLatin1Char('/'));
0031         QStringList out;
0032 
0033         foreach(const QString & group, groups) {
0034             settings.beginGroup(group);
0035         }
0036         out = fun(settings);
0037 
0038         for (int i = 0; i < groups.size(); ++i) {
0039             settings.endGroup();
0040         }
0041         return out;
0042     }
0043 
0044     static const QStringList knownApps();
0045 
0046     static QSettings &settings();
0047 
0048 };
0049 
0050 #endif // SETTINGSUTILS_H