[plasma/union] src: Add an uninstall method to PackageHandler
Arjen Hiemstra <[email protected]> Wed, 5 Aug 2026 10:33:24 +0000 (UTC)
| Newsgroups | gmane.comp.kde.cvs |
|---|---|
| Message-ID | <[email protected]> |
Git commit 49ca9201703561c9e810fdce1d3d6071bb36a2b6 by Arjen Hiemstra.
Committed on 05/08/2026 at 10:24.
Pushed by ahiemstra into branch 'master'.
Add an uninstall method to PackageHandler
It will uninstall a package if it is currently installed.
M +20 -0 src/PackageHandler.cpp
M +12 -0 src/PackageHandler.h
https://invent.kde.org/plasma/union/-/commit/49ca9201703561c9e810fdce1d3d6071bb36a2b6
diff --git a/src/PackageHandler.cpp b/src/PackageHandler.cpp
index 490b7861..df32be0f 100644
--- a/src/PackageHandler.cpp
+++ b/src/PackageHandler.cpp
@@ -90,3 +90,23 @@ PackageHandler::Error PackageHandler::install(const StylePackage &package)
return Error::None;
}
+
+PackageHandler::Error PackageHandler::uninstall(const StylePackage &package)
+{
+ if (!package.isValid()) {
+ return Error::InvalidPackage;
+ }
+
+ const auto installPaths = d->platform->stylePackagePaths();
+ if (!installPaths.contains(package.path().parent_path())) {
+ return Error::NotInstalled;
+ }
+
+ std::error_code ec;
+ fs::remove_all(package.path(), ec);
+ if (ec) {
+ return Error::FilesystemError;
+ }
+
+ return Error::None;
+}
diff --git a/src/PackageHandler.h b/src/PackageHandler.h
index c82e7896..8408d5ca 100644
--- a/src/PackageHandler.h
+++ b/src/PackageHandler.h
@@ -38,12 +38,15 @@ public:
* The operation failed because a file system error occurred during the
* operation. Note that this can be anything from insufficient
* permissions to disk failure.
+ * \value NotInstalled
+ * The operation failed because the provided package is not installed.
*/
enum class Error {
None,
InvalidPackage,
AlreadyInstalled,
FilesystemError,
+ NotInstalled,
};
PackageHandler(const std::shared_ptr<PlatformPlugin> &platformPlugin);
@@ -70,6 +73,15 @@ public:
* system error occurs.
*/
Error install(const StylePackage &package);
+ /*!
+ * Uninstall a package.
+ *
+ * This will uninstall the package \p package if it is currently installed.
+ * It will return Error::None if uninstallation was successful. It will
+ * return Error::NotInstalled if the package is not installed. It will
+ * return Error::FilesystemError if an operating system error occurs.
+ */
+ Error uninstall(const StylePackage &package);
private:
class Private;