// 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 Service : QObject /Abstract/
{
%TypeHeaderCode
#include <plasma/service.h>
%End

public:
    static Plasma::Service*  load (const QString& name, QObject* parent /Transfer/ = 0);
    void                    setDestination (const QString& destination);
    QString                 destination () const;
    QStringList             operationNames () const;
    KConfigGroup            operationDescription (const QString& operationName);


//mt undefined symbol: ServiceJob* None -- need mapped type?
//mt     ServiceJob*        startOperationCall (const KConfigGroup& description, QObject* parent /Transfer/ = 0);


    bool                    isOperationEnabled (const QString& operation) const;
    QString                 name () const;
    void                    associateWidget (QWidget* widget, const QString& operation);
    void                    disassociateWidget (QWidget* widget);
    void                    associateWidget (QGraphicsWidget* widget, const QString& operation);
    void                    disassociateWidget (QGraphicsWidget* widget);

signals:


//mt undefined symbol: ServiceJob* job -- need mapped type?
//mt     void               finished (Plasma::ServiceJob* job);


    void                    operationsChanged ();

protected:
    explicit                Service (QObject* parent /TransferThis/ = 0);
                            Service (QObject* parent /TransferThis/, const QVariantList& args);


//mt undefined symbol: ServiceJob* None -- need mapped type?
//mt     virtual ServiceJob*  createJob (const QString& operation, QMap<QString,QVariant>& parameters) = 0;


    virtual void            registerOperationsScheme ();
    void                    setOperationsScheme (QIODevice* xml);
    void                    setName (const QString& name);
    void                    setOperationEnabled (const QString& operation, bool enable);
};   // Service

};   // Plasma


