/***************************************************************************
 *   Copyright (C) 2003-2005 by liuspider                                  *
 *   liuspider@users.sourceforge.net                                       *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 **************************************************************************/
#ifndef SKIMPLUGIN_H
#define SKIMPLUGIN_H

#include "skimpluginmanager.h"

#include <qobject.h>
#include <kxmlguiclient.h>

/**
@author spider
*/
class SkimPlugin : public QObject, public KXMLGUIClient
{
Q_OBJECT
public:
    typedef QValueList<class KAction *> CustomActionsList;
    SkimPlugin(KInstance *instance, QObject *parent, const char *name);

    virtual ~SkimPlugin();

    CustomActionsList customActions();
    QString pluginId() const;
    
    QString pluginIcon() const;
    
    QString displayName() const;
    
    virtual void aboutToUnload();
    //TODO
  //     virtual QPtrList<KAction> *customChatWindowPopupActions( const KopeteMessage &, DOM::Node &node );
signals:
    /**
    * Notify that the settings of a plugin were changed.
    * These changes are passed on from the new KCDialog code in kdelibs/kutils.
    */
    void settingsChanged();
  
    /**
    * Indicate when we're ready for unload. See aboutToUnload()
    */
    void readyForUnload();
  
public slots:
//     /**
//     * deserialize() and tell the plugin
//     * to apply the previously stored data again.
//     * This method is also responsible for retrieving the settings from the
//     * address book. Settings that were registered can be retrieved with
//     * @ref KopeteMetaContact::addressBookField().
//     *
//     * The default implementation does nothing.
//     */
//     virtual void deserialize( KopeteMetaContact *metaContact, const QMap<QString, QString> &data );
protected:
    class scim::SocketServerThread * inputServer;
    class SkimGlobalActions * globalActionCollection;
private:
//     KopetePluginPrivate *d;
    
};

#endif
