// 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());

    ~Package ();
private:
//force
                            Package (const Plasma::Package& other);
// FIXME bad enum/QFlags comp error.
//end
public:
//ig    void                    publish (Plasma::AnnouncementMethods methods, const QString& name);
//FIXME missing implementation
//ig    void                    unpublish (const QString& name = QString());
//ig    bool                    isPublished () const;
    QString                 contentsHash () const;
    explicit                Package ();
};
// Package

};
// Plasma


