/***************************************************************************
                          dciconloader.h  -  description
                             -------------------
    begin                : Fri Jan 23 2004
    copyright            : (C) 2004 by Mathias Küster
    email                : mathen@users.berlios.de
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   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.                                   *
 *                                                                         *
 ***************************************************************************/

/* dnx274.dyndns.org */

#ifndef DCICONLOADER_H
#define DCICONLOADER_H

#include <QMap>
#include <QPixmap>

/**
 *@author Mathias Küster
 */

enum eIcons {
    eiBACK = 0,
    eiBALL_GREEN,
    eiBALL_RED,
    eiBALL_YELLOW,
    eiBOOKMARK_ADD,
    eiBOOKMARK_FOLDER,
    eiCHAT,
    eiCHOOSE_LANGUAGE,
    eiCLEAR,
    eiCLIENT,
    eiCOLORS,
    eiCONFIGURE,
    eiCONFIGURE_32x32,
    eiCONNECT,
    eiCONNECT_CREATING,
    eiCONNECT_NO,
    eiCONNECTED,
    eiDEBUG,
    eiDOWN,
    eiDOWNLOAD,
    eiDOWNLOAD_AS,
    eiEDIT,
    eiEDITADD,
    eiEDITCOPY,
    eiEDITDELETE,
    eiEMOTICON,
    eiEXIT,
    eiFILECLOSE,
    eiFILEFIND,
    eiFILETYPE_APPLICATION,
    eiFILETYPE_ARCHIVE,
    eiFILETYPE_DOCUMENT,
    eiFILETYPE_MP3,
    eiFILETYPE_PICTURE,
    eiFILETYPE_UNKNOWN,
    eiFILETYPE_VIDEO,
    eiFILTER,
    eiFIND,
    eiFIND_32x32,
    eiFLAG_BELARUS,
    eiFLAG_BOSNIA,
    eiFLAG_BRAZIL,
    eiFLAG_BRITAIN,
    eiFLAG_CZECH,
    eiFLAG_DENMARK,
    eiFLAG_FINLAND,
    eiFLAG_FRANCE,
    eiFLAG_GERMANY,
    eiFLAG_GREECE,
    eiFLAG_HUNGARY,
    eiFLAG_ICELAND,
    eiFLAG_ITALY,
    eiFLAG_LATVIA,
    eiFLAG_NETHERLANDS,
    eiFLAG_NORWAY,
    eiFLAG_POLAND,
    eiFLAG_ROMANIA,
    eiFLAG_RUSSIA,
    eiFLAG_SERBIA,
    eiFLAG_SLOVAKIA,
    eiFLAG_SPAIN,
    eiFLAG_SWEDEN,
    eiFOLDER_BLUE,
    eiFOLDER_BLUE_OPEN,
    eiFOLDER_RED,
    eiGLOBE,
    eiGUI,
    eiGV,
    eiHELP,
    eiICON_APPL,
    eiICON_MSG,
    eiICONS,
    eiINFO,
    eiINOTIFY,
    eiISAWAY,
    eiLOG,
    eiMENU,
    eiMESSAGE,
    eiNEXT,
    eiNOTCONNECTED,
    eiONLINEMANUAL,
    eiOPEN,
    eiOTHER,
    eiPLAYER_PAUSE,
    eiPLAYER_PLAY,
    eiQUICKOPTIONS,
    eiRECONNECT,
    eiRELOAD,
    eiRELOAD_32x32,
    eiRELOAD_PLUGINS,
    eiSAVE,
    eiSERVER,
    eiSORT_DOWN_ARROW,
    eiSPAM,
    eiSPLASH,
    eiSPY,
    eiSSL_NO,
    eiSSL_YES,
    eiSUPPORT,
    eiTEXT_SELECT_ALL,
    eiTRANSFER,
    eiTRANSLATE,
    eiUP,
    eiUPDATE,
    eiUSERS,
    eiUSERS_32x32,
    eiVIEW_SIDETREE,
    eiVRU,
    eiZOOM_IN,
    eiWINDOWS_CL_ALL,
    eiWINDOWS_CL_FIND,
    eiWINDOWS_CL_HUBS,
    eiWINDOWS_CL_LISTS,
    eiWINDOWS_CL_OFFLINE,
    eiWINDOWS_HORIZ,
    eiWINDOWS_ICON,
    eiWINDOWS_LISTS,
    eiWINDOWS_TILED,
    eiWINDOWS_VERT,
    eiWINDOWS_UNDOCK,
    eiZOOM_OUT
};

/** */
typedef QMap<enum eIcons, QPixmap> PixmapMap;

class DCIconLoader {
public:
    /** construtor */
    DCIconLoader();
    /** destructor */
    virtual ~DCIconLoader();

    /** */
    bool Load();
    /** */
    QPixmap & GetPixmap(enum eIcons);

    /** */
    static void SetInstance(DCIconLoader *);
    /** */
    static DCIconLoader *Instance();

private:
    /** */
    QPixmap LoadPixmap(QString file);

    /** */
    PixmapMap m_PixmapMap;
    /** */
    bool m_bError;

    static DCIconLoader *pIconLoader;
};

/** */
inline void DCIconLoader::SetInstance(DCIconLoader *ic) {
    pIconLoader = ic;
}

/** */
inline DCIconLoader *DCIconLoader::Instance() {
    return pIconLoader;
}

#endif
