/*************************************************************************** * icons.h * * Tue Aug 16 23:50:42 2005 * Copyright 2005 User * Email ****************************************************************************/ #ifndef _ICONS_H #define _ICONS_H #include "settings.h" #include "imuserdaemon.h" #include "imownerdaemon.h" // stock icon names #define ICON_BIRTHDAY "icqnd-birthday" #define ICON_BLANK "icqnd-blank" #define ICON_CHARSET "icqnd-charset" #define ICON_CHAT "icqnd-chat" #define ICON_CONNECT "icqnd-connect" #define ICON_FILE "icqnd-file" #define ICON_HISTORY "icqnd-history" #define ICON_INFO "icqnd-info" #define ICON_MESSAGE "icqnd-message" #define ICON_SECURE_ON "icqnd-secure-on" #define ICON_SECUREBDAY "icqnd-securebday" #define ICON_SMILEYS "icqnd-smileys" #define ICON_URL "icqnd-url" #define ICON_SHOWOFFLINE "icon-showoffline" #define ICON_DONTSHOWOFFLINE "icqnd-nooffline" #define ICON_GROUPS "icqnd-groups" #define ICON_SYSMSG "icqnd-sysmsg" #define ICON_KEYRING "icqnd-keyring" #define ICON_AUTH "icqnd-auth" #define ICON_CONTACTS "icqnd-contact" #define ICON_OPENGROUP "icqnd-opengroup" #define ICON_TYPING1 "icqnd-typing1" #define ICON_TYPING2 "icqnd-typing2" #define ICON_TYPING3 "icqnd-typing3" #define STATE_CHAT "Frei für Chat" #define STATE_ONLINE "Online" #define STATE_AWAY "Weg" #define STATE_NA "Nicht verfügbar" #define STATE_OCCUPIED "Beschäftigt" #define STATE_DND "Nicht stören" #define STATE_OFFLINE "Offline" #define STATE_INVISIBLE "Unsichtbar" #define STATE_CONNECTING "Verbinde ..." #define ICQND_ICON_SIZE_STD_STR "icqnd-icon-std" #define ICQND_ICON_SIZE_LARGE_STR "icqnd-icon-large" #define ICON_ARROW_CLOSED1 "icqnd-arrow-closed1" #define ICON_ARROW_CLOSED2 "icqnd-arrow-closed2" #define ICON_ARROW_OPEN1 "icqnd-arrow-open1" #define ICON_ARROW_OPEN2 "icqnd-arrow-open2" enum iconExtendedType { IET_ARESPONSE = 1, IET_BIRTHDAY = 2, IET_CELL = 4, IET_PHONE = 8, IET_TYPING = 16, IET_ENCRYPTED = 32, IET_NUM = 6 }; enum iconArrows { ARROW_CLOSED1 = 10000, ARROW_CLOSED2 = 10001, ARROW_OPEN1 = 10002, ARROW_OPEN2 = 10003 }; struct iconManagerCat { gchar *protocolID; GList *icons; }; struct iconManagerIcon { GdkPixbuf *pb, *apb; gulong identifier; }; struct smileysNode { gchar character; GString *summary; gshort smileysIndex; GList *children, *similies; }; struct iconManagerSmiley { GdkPixbuf *icon; gchar *token; gboolean isFirstIcon; }; struct stockIconType { gchar *stockID, *fileName; glong id; }; class iconManager { public: iconManager(); ~iconManager(); GdkPixbuf *getStatusPixbuf(gchar* protoID, glong status, gboolean inv); GdkPixbuf *getUserStatusPixbuf(IMUserDaemon* user); GdkPixbuf *getEventPixbuf(guint ev); GdkPixbuf *getExtendedPixbuf(guint num); // load reload themes void loadStatusIcons(gchar* base, GList** list, gboolean setStock); void loadEventIcons(gchar* base, GList** list); void loadExtendedIcons(gchar* base, GList** list); void loadSmileys(gchar* base, iconManagerSmiley** smileysList, gboolean buildTree); struct _images { iconManagerSmiley *smileys; GdkPixbufAnimation *searchingAni; } images; smileysNode *smileyTree; private: GList *icons, *eventIcons, *extendedIcons; void createSmileyTree(smileysNode *node, guchar pos); void clearStatusIcons(GList** list); void clearIcons(GList** iconList); void clearSmileys(iconManagerSmiley** smileysList, gboolean clearTree); GList* clearSmileysTree(smileysNode *node, GList* deletedChildren = NULL); void loadIcons(gchar *base, stockIconType* icons, GList **iconList); // theme changed callback static void cb_iconThemesChanged(gchar* sname, GList *values, iconManager* self); }; iconManager *i_getIcons(); #endif /* _ICONS_H */