// Copyright 2008 Simon Edwards <simon@simonzone.com>

//                 Generated by twine

// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU Library General Public License as
// published by the Free Software Foundation; either version 2, or
// (at your option) any later version.

// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details

// You should have received a copy of the GNU Library General Public
// License along with this program; if not, write to the
// Free Software Foundation, Inc.,
// 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.


namespace Plasma
{

class Package
{
%TypeHeaderCode
#include <plasma/package.h>
%End


public:
                            Package (const QString& packageRoot, const QString& package, Plasma::PackageStructure::Ptr structure);
                            Package (const QString& packagePath, Plasma::PackageStructure::Ptr structure);
    bool                    isValid () const;
    QString                 filePath (const char* fileType, const QString& filename) const;
    QString                 filePath (const char* fileType) const;
    QStringList             entryList (const char* fileType) const;
    Plasma::PackageMetadata  metadata () const;
    void                    setPath (const QString& path);
    const QString           path () const;
    const Plasma::PackageStructure::Ptr  structure () const;
    static QStringList      listInstalled (const QString& packageRoot);
    static QStringList      listInstalledPaths (const QString& packageRoot);
    static bool             installPackage (const QString& package, const QString& packageRoot, const QString& servicePrefix);
    static bool             uninstallPackage (const QString& package, const QString& packageRoot, const QString& servicePrefix);
    static bool             registerPackage (const Plasma::PackageMetadata& data, const QString& iconPath);
    static bool             createPackage (const Plasma::PackageMetadata& metadata, const QString& source, const QString& destination, const QString& icon = QString());

private:
                            Package (const Plasma::Package&);
};   // Package

};   // Plasma


