Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Plasma
System Settings
Commits
e373a9a9
Commit
e373a9a9
authored
May 15, 2022
by
Alexander Lohnau
💬
Browse files
Avoid double lookup when de-duplicating plugins
parent
de05be8b
Pipeline
#176837
passed with stage
in 50 seconds
Changes
1
Pipelines
2
Hide whitespace changes
Inline
Side-by-side
core/kcmmetadatahelpers.h
View file @
e373a9a9
...
...
@@ -13,6 +13,7 @@
#include
<QGuiApplication>
#include
<QStandardPaths>
#include
<kservice.h>
#include
<set>
enum
MetaDataSource
{
SystemSettings
=
1
,
...
...
@@ -54,7 +55,7 @@ inline QList<KPluginMetaData> findExternalKCMModules(MetaDataSource source)
inline
QList
<
KPluginMetaData
>
findKCMsMetaData
(
MetaDataSource
source
,
bool
useSystemsettingsConstraint
=
true
)
{
QList
<
KPluginMetaData
>
modules
;
QS
et
<
QString
>
uniquePluginIds
;
std
::
s
et
<
QString
>
uniquePluginIds
;
auto
filter
=
[](
const
KPluginMetaData
&
data
)
{
const
auto
supportedPlatforms
=
data
.
value
(
QStringLiteral
(
"X-KDE-OnlyShowOnQtPlatforms"
),
QStringList
());
...
...
@@ -81,19 +82,19 @@ inline QList<KPluginMetaData> findKCMsMetaData(MetaDataSource source, bool useSy
continue
;
}
modules
<<
m
;
auto
insertionIterator
=
uniquePluginIds
.
insert
(
m
.
pluginId
());
Q_ASSERT_X
(
insertionIterator
!=
uniquePluginIds
.
end
(),
Q_FUNC_INFO
,
qPrintable
(
QStringLiteral
(
"the plugin %1 was found in multiple namespaces"
).
arg
(
m
.
pluginId
())));
const
bool
inserted
=
uniquePluginIds
.
insert
(
m
.
pluginId
())
.
second
;
if
(
!
inserted
)
{
qWarning
()
<<
"the plugin"
<<
m
.
pluginId
()
<<
" was found in multiple namespaces"
;
}
}
for
(
const
auto
&
s
:
qAsConst
(
services
))
{
if
(
!
s
->
noDisplay
()
&&
!
s
->
exec
().
isEmpty
()
&&
KAuthorized
::
authorizeControlModule
(
s
->
menuId
()))
{
const
QString
path
=
QStandardPaths
::
locate
(
QStandardPaths
::
GenericDataLocation
,
QLatin1String
(
"kservices5/"
)
+
s
->
entryPath
());
const
KPluginMetaData
data
=
KPluginMetaData
::
fromDesktopFile
(
path
);
if
(
!
uniquePluginIds
.
contains
(
data
.
pluginId
()))
{
const
bool
inserted
=
uniquePluginIds
.
insert
(
data
.
pluginId
()).
second
;
if
(
inserted
)
{
modules
<<
data
;
uniquePluginIds
<<
data
.
pluginId
();
}
}
}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment