[plasma/union] /: Exclude hidden packages by default in PackageHandler::allPackages()

Arjen Hiemstra <[email protected]> Wed, 5 Aug 2026 11:20:05 +0000 (UTC)
Newsgroups gmane.comp.kde.cvs
Message-ID <[email protected]>
Git commit 15817df44ddcacf988c0ce7547e91a6120c9d170 by Arjen Hiemstra.
Committed on 05/08/2026 at 11:15.
Pushed by ahiemstra into branch 'master'.

Exclude hidden packages by default in PackageHandler::allPackages()

But allow overriding default behaviour and use that in styletool::list.

M  +5    -1    src/PackageHandler.cpp
M  +20   -1    src/PackageHandler.h
M  +7    -1    tools/styletool/styletool.cpp

https://invent.kde.org/plasma/union/-/commit/15817df44ddcacf988c0ce7547e91a6120c9d170

diff --git a/src/PackageHandler.cpp b/src/PackageHandler.cpp
index e544b163..ae0cfa5b 100644
--- a/src/PackageHandler.cpp
+++ b/src/PackageHandler.cpp
@@ -48,7 +48,7 @@ StylePackage PackageHandler::package(const QString &id)
     return StylePackage{};
 }
 
-QList<StylePackage> PackageHandler::allPackages()
+QList<StylePackage> PackageHandler::allPackages(PackageFilter filter)
 {
     QSet<QString> seenPackages;
     QList<StylePackage> result;
@@ -62,6 +62,10 @@ QList<StylePackage> PackageHandler::allPackages()
 
             auto package = StylePackage{entry.path()};
             if (package.isValid() && !seenPackages.contains(package.id())) {
+                if (filter != PackageFilter::IncludeHidden && package.isHidden()) {
+                    continue;
+                }
+
                 result.append(package);
                 seenPackages.insert(package.id());
             }
diff --git a/src/PackageHandler.h b/src/PackageHandler.h
index 9c52447b..6dc244d5 100644
--- a/src/PackageHandler.h
+++ b/src/PackageHandler.h
@@ -63,6 +63,25 @@ public:
         UnknownInputType,
     };
 
+    /*!
+     * \enum PackageHandler::PackageFilter
+     *
+     * What kind of filtering to perform on the list of all packages.
+     *
+     * \value Default
+     *      Use the default, which excludes style packages explicitly marked as
+     *      hidden.
+     * \value IncludeHidden
+     *      Include hidden packages.
+     */
+    enum class PackageFilter {
+        Default,
+        IncludeHidden,
+    };
+
+    /*!
+     * A struct containing data for the create() method.
+     */
     struct CreateInfo {
         std::filesystem::path path;
         QString inputType;
@@ -85,7 +104,7 @@ public:
     /*!
      * Returns a list of all installed packages.
      */
-    QList<StylePackage> allPackages();
+    QList<StylePackage> allPackages(PackageFilter filter = PackageFilter::Default);
 
     /*!
      * Create a new package.
diff --git a/tools/styletool/styletool.cpp b/tools/styletool/styletool.cpp
index d0f10e1e..88d05cca 100644
--- a/tools/styletool/styletool.cpp
+++ b/tools/styletool/styletool.cpp
@@ -171,7 +171,13 @@ int handleListCommand([[maybe_unused]] const QStringList &arguments)
     });
 
     auto handler = Union::StyleRegistry::instance()->packageHandler();
-    auto packages = handler->allPackages();
+
+    auto packageFilter = Union::PackageHandler::PackageFilter::Default;
+    if (parser->isSet(u"hidden"_s)) {
+        packageFilter = Union::PackageHandler::PackageFilter::IncludeHidden;
+    }
+
+    auto packages = handler->allPackages(packageFilter);
     if (packages.isEmpty()) {
         std::cerr << "No styles could be found.\n";
         return 1;