[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-panel-devel
Subject:    Plasma package
From:       Petri =?iso-8859-1?q?Damst=E9n?= <petri.damsten () gmail ! com>
Date:       2008-09-26 14:58:07
Message-ID: 200809261758.07547.petri.damsten () gmail ! com
[Download RAW message or body]

[Attachment #2 (multipart/signed)]

[Attachment #4 (multipart/mixed)]


hi,

This patch enables custom packages to use default install function by adding 
defaultPackageRoot and servicePrefix to package handling.

Petri


["plasma_package.diff" (text/x-patch)]

Index: libs/plasma/package.h
===================================================================
--- libs/plasma/package.h	(revision 865053)
+++ libs/plasma/package.h	(working copy)
@@ -53,7 +53,7 @@
 
         /**
           * Construct a Package object.
-          * 
+          *
           * @arg packagePath full path to the package directory
           * @arg structure the package structure describing this package
           */
@@ -131,7 +131,8 @@
          * @return true on successful installation, false otherwise
          **/
         static bool installPackage(const QString &package,
-                                   const QString &packageRoot);
+                                   const QString &packageRoot,
+                                   const QString &servicePrefix);
 
         /**
          * Uninstalls a package.
@@ -142,7 +143,8 @@
          * @return true on successful uninstallation, false otherwise
          **/
         static bool uninstallPackage(const QString &package,
-                                   const QString &packageRoot);
+                                     const QString &packageRoot,
+                                     const QString &servicePrefix);
 
 
         /**
Index: libs/plasma/package.cpp
===================================================================
--- libs/plasma/package.cpp	(revision 865053)
+++ libs/plasma/package.cpp	(working copy)
@@ -219,7 +219,8 @@
 }
 
 bool Package::installPackage(const QString& package,
-                             const QString& packageRoot) // static
+                             const QString& packageRoot,
+                             const QString& servicePrefix) // static
 {
     //TODO: report *what* failed if something does fail
     QDir root(packageRoot);
@@ -332,11 +333,7 @@
 
     //TODO: reduce code duplication with registerPackage below
 
-    QString serviceName;
-    if (KGlobal::hasMainComponent()) {
-        serviceName = KGlobal::mainComponent().componentName();
-    }
-    serviceName.append("_plasma_applet_" + meta.pluginName());
+    QString serviceName = servicePrefix + meta.pluginName();
 
     QString service = KStandardDirs::locateLocal("services", serviceName + ".desktop");
     KIO::FileCopyJob *job = KIO::file_copy(metaPath, service, -1, KIO::HideProgressInfo);
@@ -356,7 +353,8 @@
 }
 
 bool Package::uninstallPackage(const QString& pluginName,
-			       const QString& packageRoot) // static
+                               const QString& packageRoot,
+                               const QString& servicePrefix) // static
 {
     // We need to remove the package directory and its metadata file.
     QString targetName = pluginName;
@@ -367,11 +365,7 @@
         return false;
     }
 
-    QString serviceName;
-    if (KGlobal::hasMainComponent()) {
-        serviceName = KGlobal::mainComponent().componentName();
-    }
-    serviceName.append("_plasma_applet_" + pluginName);
+    QString serviceName = servicePrefix + pluginName;
 
     QString service = KStandardDirs::locateLocal("services", serviceName + ".desktop");
     kDebug() << "Removing service file " << service;
Index: libs/plasma/packagestructure.cpp
===================================================================
--- libs/plasma/packagestructure.cpp	(revision 865053)
+++ libs/plasma/packagestructure.cpp	(working copy)
@@ -66,6 +66,8 @@
     QString type;
     QString path;
     QString contentsPrefix;
+    QString packageRoot;
+    QString servicePrefix;
     QMap<QByteArray, ContentStructure> contents;
     QStringList mimetypes;
     static QHash<QString, PackageStructure::Ptr> structures;
@@ -79,6 +81,8 @@
 {
     d->type = type;
     d->contentsPrefix = "contents/";
+    d->packageRoot = "plasma/plasmoids/";
+    d->servicePrefix = "plasma-applet-";
 }
 
 PackageStructure::~PackageStructure()
@@ -327,7 +331,7 @@
 {
     d->contents.clear();
     d->mimetypes.clear();
-    d->type = config->group("").readEntry("Type", QString()); 
+    d->type = config->group("").readEntry("Type", QString());
 
     QStringList groups = config->groupList();
     foreach (const QString &group, groups) {
@@ -386,14 +390,34 @@
 
 bool PackageStructure::installPackage(const QString &package, const QString &packageRoot)
 {
-    return Package::installPackage(package, packageRoot);
+    return Package::installPackage(package, packageRoot, d->servicePrefix);
 }
 
 bool PackageStructure::uninstallPackage(const QString &packageName, const QString &packageRoot)
 {
-    return Package::uninstallPackage(packageName, packageRoot);
+    return Package::uninstallPackage(packageName, packageRoot, d->servicePrefix);
 }
 
+QString PackageStructure::defaultPackageRoot() const
+{
+    return d->packageRoot;
+}
+
+QString PackageStructure::servicePrefix() const
+{
+    return d->servicePrefix;
+}
+
+void PackageStructure::setDefaultPackageRoot(const QString &packageRoot)
+{
+    d->packageRoot = packageRoot;
+}
+
+void PackageStructure::setServicePrefix(const QString &servicePrefix)
+{
+    d->servicePrefix = servicePrefix;
+}
+
 } // Plasma namespace
 
 #include "packagestructure.moc"
Index: libs/plasma/packagestructure.h
===================================================================
--- libs/plasma/packagestructure.h	(revision 865053)
+++ libs/plasma/packagestructure.h	(working copy)
@@ -185,7 +185,7 @@
      * Define mimetypes for a given part of the structure
      * The path must already have been added using addDirectoryDefinition
      * or addFileDefinition.
-     * 
+     *
      * @param path the path of the entry within the package
      * @param mimetypes a list of mimetypes
      **/
@@ -242,6 +242,21 @@
      */
     QString contentsPrefix() const;
 
+    /**
+     * @return preferred package root. This defaults to plasma/plasmoids/
+     */
+    QString defaultPackageRoot() const;
+
+    /**
+     * @return service prefix used in desktop files. This defaults to plasma-applet-
+     */
+    QString servicePrefix() const;
+
+    /**
+     * Sets service prefix.
+     */
+    void setServicePrefix(const QString &servicePrefix);
+
 protected:
     /**
      * Sets the prefix that all the contents in this package should
@@ -254,6 +269,11 @@
     void setContentsPrefix(const QString &prefix);
 
     /**
+     * Sets preferred package root.
+     */
+    void setDefaultPackageRoot(const QString &packageRoot);
+
+    /**
      * Called whenever the path changes so that subclasses may take
      * package specific actions.
      */
Index: plasma/tools/plasmapkg/main.cpp
===================================================================
--- plasma/tools/plasmapkg/main.cpp	(revision 865053)
+++ plasma/tools/plasmapkg/main.cpp	(working copy)
@@ -96,17 +96,17 @@
         Plasma::PackageStructure *installer = new Plasma::PackageStructure();
         if (type == i18n("plasmoid") || type == "plasmoid") {
             packageRoot = "plasma/plasmoids/";
-            servicePrefix = "plasma-applet-";
+            installer->setServicePrefix("plasma-applet-");
         } else if (type == i18n("theme") || type == "theme") {
             packageRoot = "desktoptheme/";
         } else if (type == i18n("wallpaper") || type == "wallpaper") {
             packageRoot = "wallpapers/";
         } else if (type == i18n("dataengine") || type == "dataengine") {
             packageRoot = "plasma/dataengines/";
-            servicePrefix = "plasma-dataengine-";
+            installer->setServicePrefix("plasma-dataengine-");
         } else if (type == i18n("runner") || type == "runner") {
             packageRoot = "plasma/runners/";
-            servicePrefix = "plasma-abstractrunner-";
+            installer->setServicePrefix("plasma-runner-");
         } else {
             // support for non-native widget packages
             delete installer;
@@ -128,8 +128,7 @@
                             type, error));
                 return 1;
             }
-
-            packageRoot = "plasma/plasmoids";
+            packageRoot = installer->defaultPackageRoot();
         }
 
         if (args->isSet("packageroot")) {

["signature.asc" (application/pgp-signature)]

_______________________________________________
Plasma-devel mailing list
Plasma-devel@kde.org
https://mail.kde.org/mailman/listinfo/plasma-devel


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic