Warning, file /utilities/kdebugsettings/src/loadgroupmenu.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 /* 0002 SPDX-FileCopyrightText: 2020-2023 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 0006 */ 0007 0008 #include "loadgroupmenu.h" 0009 #include "kdebugsettingsutil.h" 0010 0011 #include <KLocalizedString> 0012 0013 #include <QDir> 0014 #include <QStandardPaths> 0015 0016 LoadGroupMenu::LoadGroupMenu(QWidget *parent) 0017 : QMenu(parent) 0018 { 0019 setTitle(i18n("Load Group")); 0020 init(); 0021 } 0022 0023 LoadGroupMenu::~LoadGroupMenu() = default; 0024 0025 void LoadGroupMenu::refreshMenu() 0026 { 0027 clear(); 0028 init(); 0029 } 0030 0031 QString LoadGroupMenu::defaultWritableGroupPath() 0032 { 0033 return QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation) + QLatin1String("/groups"); 0034 } 0035 0036 QStringList LoadGroupMenu::defaultReadableGroupPath() const 0037 { 0038 return QStandardPaths::locateAll(QStandardPaths::AppLocalDataLocation, QStringLiteral("/groups/"), QStandardPaths::LocateDirectory); 0039 } 0040 0041 void LoadGroupMenu::init() 0042 { 0043 // Load all ? 0044 mGroupNames.clear(); 0045 const QStringList groupPath = defaultReadableGroupPath(); 0046 if (groupPath.isEmpty()) { 0047 setEnabled(false); 0048 return; 0049 } 0050 for (const QString &dirName : groupPath) { 0051 QDir dir(dirName); 0052 const QStringList dirNameList = dir.entryList(QDir::Files | QDir::NoDotAndDotDot); 0053 mGroupNames += dirNameList; 0054 for (const QString &file : dirNameList) { 0055 QAction *act = addAction(file); 0056 const QString fullPath = dirName + QLatin1Char('/') + file; 0057 connect(act, &QAction::triggered, this, [this, fullPath] { 0058 Q_EMIT loadGroupRequested(fullPath); 0059 }); 0060 } 0061 } 0062 if (isEmpty()) { 0063 setEnabled(false); 0064 return; 0065 } 0066 if (KDebugSettingsUtil::hasWritableGroups()) { 0067 addSeparator(); 0068 QAction *manageGroup = addAction(i18n("Manage Group")); 0069 connect(manageGroup, &QAction::triggered, this, &LoadGroupMenu::manageGroupRequested); 0070 } 0071 } 0072 0073 QStringList LoadGroupMenu::groupNames() const 0074 { 0075 return mGroupNames; 0076 } 0077 0078 void LoadGroupMenu::setGroupNames(const QStringList &groupNames) 0079 { 0080 mGroupNames = groupNames; 0081 }