summaryrefslogtreecommitdiffstats
path: root/src/kvirc/kernel/kvi_iconmanager.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/kvirc/kernel/kvi_iconmanager.h')
-rw-r--r--src/kvirc/kernel/kvi_iconmanager.h501
1 files changed, 501 insertions, 0 deletions
diff --git a/src/kvirc/kernel/kvi_iconmanager.h b/src/kvirc/kernel/kvi_iconmanager.h
new file mode 100644
index 00000000..d8f2abb9
--- /dev/null
+++ b/src/kvirc/kernel/kvi_iconmanager.h
@@ -0,0 +1,501 @@
+#ifndef _KVI_ICONMANAGER_H_
+#define _KVI_ICONMANAGER_H_
+
+//=============================================================================
+//
+// File : kvi_iconmanager.h
+// Creation date : Sat Jun 24 2000 14:49:24 by Szymon Stefanek
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 1999-2004 Szymon Stefanek (pragma at kvirc dot 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 opinion) 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 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.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_string.h"
+#include "kvi_avatar.h"
+#include "kvi_time.h"
+
+#include <qpixmap.h>
+#include <qobject.h>
+#include <qwidget.h>
+#include "kvi_pointerhashtable.h"
+
+
+
+#define KVI_SMALLICON_NONE 0
+#define KVI_SMALLICON_CLOSE 1
+#define KVI_SMALLICON_MAXIMIZE 2
+#define KVI_SMALLICON_MINIMIZE 3
+#define KVI_SMALLICON_RESTORE 4
+#define KVI_SMALLICON_DEFAULTICON 5
+#define KVI_SMALLICON_DOCK 6
+#define KVI_SMALLICON_UNDOCK 7
+#define KVI_SMALLICON_QUITAPP 8
+#define KVI_SMALLICON_CONSOLE 9
+#define KVI_SMALLICON_FLOPPY 10
+#define KVI_SMALLICON_PARSERERROR 11
+#define KVI_SMALLICON_PARSERWARNING 12
+#define KVI_SMALLICON_SERVER 13
+#define KVI_SMALLICON_WORLD 14
+#define KVI_SMALLICON_PROXY 15
+#define KVI_SMALLICON_KVIRC 16
+#define KVI_SMALLICON_CUT 17
+#define KVI_SMALLICON_COPY 18
+#define KVI_SMALLICON_PASTE 19
+#define KVI_SMALLICON_OPTIONS 20
+#define KVI_SMALLICON_SOCKETMESSAGE 21
+#define KVI_SMALLICON_SOCKETWARNING 22
+#define KVI_SMALLICON_SOCKETERROR 23
+#define KVI_SMALLICON_SYSTEMERROR 24
+#define KVI_SMALLICON_RAW 25
+#define KVI_SMALLICON_SYSTEMWARNING 26
+#define KVI_SMALLICON_SYSTEMMESSAGE 27
+#define KVI_SMALLICON_UNHANDLED 28
+#define KVI_SMALLICON_SERVERINFO 29
+#define KVI_SMALLICON_MOTD 30
+#define KVI_SMALLICON_CHANNEL 31
+#define KVI_SMALLICON_HIDEDOUBLEVIEW 32
+#define KVI_SMALLICON_SHOWDOUBLEVIEW 33
+#define KVI_SMALLICON_OP 34
+#define KVI_SMALLICON_VOICE 35
+#define KVI_SMALLICON_SERVERPING 36
+#define KVI_SMALLICON_SHOWLISTVIEW 37
+#define KVI_SMALLICON_HIDELISTVIEW 38
+#define KVI_SMALLICON_JOIN 39
+#define KVI_SMALLICON_PART 40
+#define KVI_SMALLICON_UNRECOGNIZED 41
+#define KVI_SMALLICON_TOPIC 42
+#define KVI_SMALLICON_ACCEPT 43
+#define KVI_SMALLICON_DISCARD 44
+#define KVI_SMALLICON_OWNPRIVMSG 45
+#define KVI_SMALLICON_CHANPRIVMSG 46
+#define KVI_SMALLICON_QUERY 47
+#define KVI_SMALLICON_QUERYPRIVMSG 48
+#define KVI_SMALLICON_HELP 49
+#define KVI_SMALLICON_MDIHELP 50
+#define KVI_SMALLICON_CTCPREPLY 51
+#define KVI_SMALLICON_CTCPREQUESTREPLIED 52
+#define KVI_SMALLICON_CTCPREQUESTIGNORED 53
+#define KVI_SMALLICON_CTCPREQUESTFLOOD 54
+#define KVI_SMALLICON_CTCPREQUESTUNKNOWN 55
+#define KVI_SMALLICON_ACTION 56
+#define KVI_SMALLICON_AVATAR 57
+#define KVI_SMALLICON_QUIT 58
+#define KVI_SMALLICON_SPLIT 59
+#define KVI_SMALLICON_QUITSPLIT 60
+#define KVI_SMALLICON_NICK 61
+#define KVI_SMALLICON_DEOP 62
+#define KVI_SMALLICON_DEVOICE 63
+#define KVI_SMALLICON_MODE 64
+#define KVI_SMALLICON_KEY 65
+#define KVI_SMALLICON_LIMIT 66
+#define KVI_SMALLICON_BAN 67
+#define KVI_SMALLICON_UNBAN 68
+#define KVI_SMALLICON_BANEXCEPT 69
+#define KVI_SMALLICON_BANUNEXCEPT 70
+#define KVI_SMALLICON_INVITEEXCEPT 71
+#define KVI_SMALLICON_INVITEUNEXCEPT 72
+#define KVI_SMALLICON_CHANMODE 73
+#define KVI_SMALLICON_CHANMODEHIDE 74
+#define KVI_SMALLICON_WHO 75
+#define KVI_SMALLICON_EDITOR 76
+#define KVI_SMALLICON_DCCREQUEST 77
+#define KVI_SMALLICON_DCCMSG 78
+#define KVI_SMALLICON_DCCERROR 79
+#define KVI_SMALLICON_ICONMANAGER 80
+#define KVI_SMALLICON_SCRIPTCENTER 81
+#define KVI_SMALLICON_BOMB 82
+#define KVI_SMALLICON_EVENT 83
+#define KVI_SMALLICON_EVENTNOHANDLERS 84
+#define KVI_SMALLICON_HANDLER 85
+#define KVI_SMALLICON_HANDLERDISABLED 86
+#define KVI_SMALLICON_NICKNAMEPROBLEM 87
+#define KVI_SMALLICON_WHOISUSER 88
+#define KVI_SMALLICON_WHOISCHANNELS 89
+#define KVI_SMALLICON_WHOISIDLE 90
+#define KVI_SMALLICON_WHOISSERVER 91
+#define KVI_SMALLICON_WHOISOTHER 92
+#define KVI_SMALLICON_TIME 93
+#define KVI_SMALLICON_NOTIFYONLINE 94
+#define KVI_SMALLICON_NOTIFYOFFLINE 95
+#define KVI_SMALLICON_LOCKED 96
+#define KVI_SMALLICON_UNLOCKED 97
+#define KVI_SMALLICON_LOCKEDOFF 98
+#define KVI_SMALLICON_UNLOCKEDOFF 99
+#define KVI_SMALLICON_OWNPRIVMSGCRYPTED 100
+#define KVI_SMALLICON_CHANPRIVMSGCRYPTED 101
+#define KVI_SMALLICON_QUERYPRIVMSGCRYPTED 102
+#define KVI_SMALLICON_DCCCHATMSG 103
+#define KVI_SMALLICON_DCCCHATMSGCRYPTED 104
+#define KVI_SMALLICON_IRC 105
+#define KVI_SMALLICON_FOLDER 106
+#define KVI_SMALLICON_HOME 107
+#define KVI_SMALLICON_BOOKMARKS 108
+#define KVI_SMALLICON_SPY 109
+#define KVI_SMALLICON_KICK 110
+#define KVI_SMALLICON_LINUX 111
+#define KVI_SMALLICON_LINKS 112
+#define KVI_SMALLICON_REGUSERS 113
+#define KVI_SMALLICON_DOCKWIDGET 114
+#define KVI_SMALLICON_CASCADEWINDOWS 115
+#define KVI_SMALLICON_MAXVERTICAL 116
+#define KVI_SMALLICON_MAXHORIZONTAL 117
+#define KVI_SMALLICON_TILEWINDOWS 118
+#define KVI_SMALLICON_LOG 119
+#define KVI_SMALLICON_SPAM 120
+#define KVI_SMALLICON_FILE 121
+#define KVI_SMALLICON_ICQ 122
+#define KVI_SMALLICON_ICQYELLOW 123
+#define KVI_SMALLICON_ICQRED 124
+#define KVI_SMALLICON_ICQBLUE 125
+#define KVI_SMALLICON_ICQLIGHTGREEN 126
+#define KVI_SMALLICON_ICQLIGHTYELLOW 127
+#define KVI_SMALLICON_MESSAGE 128
+#define KVI_SMALLICON_MESSAGESENT 129
+#define KVI_SMALLICON_BLUESQUARE 130
+#define KVI_SMALLICON_VIOLETSQUARE 131
+#define KVI_SMALLICON_YELLOWSQUARE 132
+#define KVI_SMALLICON_GREENSQUARE 133
+#define KVI_SMALLICON_BLACKSQUARE 134
+#define KVI_SMALLICON_REDSQUARE 135
+#define KVI_SMALLICON_CYANSQUARE 136
+#define KVI_SMALLICON_DKGREENSQUARE 137
+#define KVI_SMALLICON_TERMINAL 138
+#define KVI_SMALLICON_WALLOPS 139
+#define KVI_SMALLICON_INVISIBLE 140
+#define KVI_SMALLICON_SERVERNOTICE 141
+#define KVI_SMALLICON_GNUTELLA 142
+#define KVI_SMALLICON_SEARCH 143
+#define KVI_SMALLICON_FILES 144
+#define KVI_SMALLICON_TRANSFER 145
+#define KVI_SMALLICON_PACKAGE 146
+#define KVI_SMALLICON_RETRY 147
+#define KVI_SMALLICON_IDEA 148
+#define KVI_SMALLICON_COLORS 149
+#define KVI_SMALLICON_GUI 150
+#define KVI_SMALLICON_IRCVIEW 151
+#define KVI_SMALLICON_ALIAS 152
+#define KVI_SMALLICON_CHANNELNOTICE 153
+#define KVI_SMALLICON_CHANNELNOTICECRYPTED 154
+#define KVI_SMALLICON_QUERYNOTICE 155
+#define KVI_SMALLICON_QUERYNOTICECRYPTED 156
+// FIXME: rename the icon 157: it was colliding with 141
+#define KVI_SMALLICON_SERVNOTICE 157
+#define KVI_SMALLICON_POPUP 158
+#define KVI_SMALLICON_PROLOGUE 159
+#define KVI_SMALLICON_EPILOGUE 160
+#define KVI_SMALLICON_SHAREDFILES 161
+#define KVI_SMALLICON_CTCPREPLYUNKNOWN 162
+#define KVI_SMALLICON_CANVAS 163
+#define KVI_SMALLICON_NICKSERV 164
+#define KVI_SMALLICON_CHANSERV 165
+#define KVI_SMALLICON_DCCVOICE 166
+#define KVI_SMALLICON_PLAY 167
+#define KVI_SMALLICON_RECORD 168
+#define KVI_SMALLICON_AUTOTILEWINDOWS 169
+#define KVI_SMALLICON_AWAY 170
+#define KVI_SMALLICON_IDENT 171
+#define KVI_SMALLICON_HOMEPAGE 172
+#define KVI_SMALLICON_LIST 173
+#define KVI_SMALLICON_HALFOP 174
+#define KVI_SMALLICON_HALFDEOP 175
+#define KVI_SMALLICON_INVITE 176
+#define KVI_SMALLICON_MULTIMEDIA 177
+#define KVI_SMALLICON_LOOK 178
+#define KVI_SMALLICON_INPUT 179
+#define KVI_SMALLICON_MESSAGES 180
+#define KVI_SMALLICON_QUERYTRACE 181
+#define KVI_SMALLICON_NOCHANNEL 182
+#define KVI_SMALLICON_BROADCASTPRIVMSG 183
+#define KVI_SMALLICON_BROADCASTNOTICE 184
+#define KVI_SMALLICON_URL 185
+#define KVI_SMALLICON_RAWEVENT 186
+#define KVI_SMALLICON_RAWEVENTNOHANDLERS 187
+#define KVI_SMALLICON_MEKICK 188
+#define KVI_SMALLICON_MEOP 189
+#define KVI_SMALLICON_MEVOICE 190
+#define KVI_SMALLICON_MEDEOP 191
+#define KVI_SMALLICON_MEDEVOICE 192
+#define KVI_SMALLICON_MEHALFOP 193
+#define KVI_SMALLICON_MEDEHALFOP 194
+#define KVI_SMALLICON_MEBAN 195
+#define KVI_SMALLICON_MEUNBAN 196
+#define KVI_SMALLICON_MEBANEXCEPT 197
+#define KVI_SMALLICON_MEBANUNEXCEPT 198
+#define KVI_SMALLICON_MEINVITEEXCEPT 199
+#define KVI_SMALLICON_MEINVITEUNEXCEPT 200
+#define KVI_SMALLICON_CLASSICTASKBAR 201
+#define KVI_SMALLICON_TREETASKBAR 202
+#define KVI_SMALLICON_IGNORE 203
+#define KVI_SMALLICON_USERLIST 204
+#define KVI_SMALLICON_STATS 205
+#define KVI_SMALLICON_POPUPMENU 206
+#define KVI_SMALLICON_XY 207
+#define KVI_SMALLICON_IRC0 208
+#define KVI_SMALLICON_IRC1 209
+#define KVI_SMALLICON_IRC2 210
+#define KVI_SMALLICON_IRC3 211
+#define KVI_SMALLICON_IRC4 212
+#define KVI_SMALLICON_IRC5 213
+#define KVI_SMALLICON_HEART 214
+#define KVI_SMALLICON_HEARTBROKEN 215
+#define KVI_SMALLICON_ROSE 216
+#define KVI_SMALLICON_BIGGRIN 217
+#define KVI_SMALLICON_BIGGRINGLASSES 218
+#define KVI_SMALLICON_BIGGRINEYES 219
+#define KVI_SMALLICON_TEXTEXCLAMATIVE 220
+#define KVI_SMALLICON_TEXTPOINTS 221
+#define KVI_SMALLICON_KISS 222
+#define KVI_SMALLICON_SURPRISED1 223
+#define KVI_SMALLICON_UGLY 224
+#define KVI_SMALLICON_ANGRY 225
+#define KVI_SMALLICON_SURPRISED2 226
+#define KVI_SMALLICON_SMILE 227
+#define KVI_SMALLICON_TONGUE 228
+#define KVI_SMALLICON_SSL 229
+#define KVI_SMALLICON_CRY 230
+#define KVI_SMALLICON_EYE 231
+#define KVI_SMALLICON_DEADCHANNEL 232
+#define KVI_SMALLICON_DEADQUERY 233
+#define KVI_SMALLICON_SOUND 234
+#define KVI_SMALLICON_TOOLBAR 235
+#define KVI_SMALLICON_TEXTENCODING 236
+#define KVI_SMALLICON_NEWITEM 237
+#define KVI_SMALLICON_NEWITEMBYWIZARD 238
+#define KVI_SMALLICON_DELETEITEM 239
+#define KVI_SMALLICON_EDITITEM 240
+#define KVI_SMALLICON_FILETRANSFER 241
+#define KVI_SMALLICON_CHANADMIN 242
+#define KVI_SMALLICON_CHANUNADMIN 243
+#define KVI_SMALLICON_MECHANADMIN 244
+#define KVI_SMALLICON_MECHANUNADMIN 245
+#define KVI_SMALLICON_USEROP 246
+#define KVI_SMALLICON_DEUSEROP 247
+#define KVI_SMALLICON_MEUSEROP 248
+#define KVI_SMALLICON_MEDEUSEROP 249
+#define KVI_SMALLICON_APPLET 250
+#define KVI_SMALLICON_CAPTION 251
+#define KVI_SMALLICON_TRANSPARENT 252
+#define KVI_SMALLICON_ALERT 253
+#define KVI_SMALLICON_USERWINDOW 254
+#define KVI_SMALLICON_STATUSBAR 255
+#define KVI_SMALLICON_NOTAWAY 256
+#define KVI_SMALLICON_PLUS 257
+#define KVI_SMALLICON_MINUS 258
+#define KVI_SMALLICON_BINARYTEXT 259
+#define KVI_SMALLICON_CHANOWNER 260
+#define KVI_SMALLICON_CHANUNOWNER 261
+#define KVI_SMALLICON_MECHANOWNER 262
+#define KVI_SMALLICON_MECHANUNOWNER 263
+#define KVI_SMALLICON_AFRAID 264
+#define KVI_SMALLICON_TONGUE2 265
+#define KVI_SMALLICON_SAYICON 266
+#define KVI_SMALLICON_SAYCOLORS 267
+#define KVI_SMALLICON_FINGER 268
+#define KVI_SMALLICON_SCRIPTACTION 269
+#define KVI_SMALLICON_TEARSMILE 270
+#define KVI_SMALLICON_SHY 271
+#define KVI_SMALLICON_SERVERERROR 272
+#define KVI_SMALLICON_CAFE 273
+#define KVI_SMALLICON_ADDONS 274
+#define KVI_SMALLICON_CHANOWNERAWAY 275
+#define KVI_SMALLICON_OPAWAY 276
+#define KVI_SMALLICON_VOICEAWAY 277
+#define KVI_SMALLICON_CHANADMINAWAY 278
+#define KVI_SMALLICON_USEROPAWAY 279
+#define KVI_SMALLICON_HALFOPAWAY 280
+#define KVI_SMALLICON_ALIASHIGHLIGHTED 281
+#define KVI_SMALLICON_DEMORALIZED 282
+#define KVI_SMALLICON_SLURP 283
+#define KVI_SMALLICON_NAMESPACE 284
+#define KVI_SMALLICON_SAYSMILE 285
+#define KVI_SMALLICON_SAYKVS 286
+#define KVI_SMALLICON_THEMEOPTIONS 287
+#define KVI_SMALLICON_BUG 288
+#define KVI_SMALLICON_REFRESH 289
+#define KVI_SMALLICON_THEME 290
+#define KVI_SMALLICON_SCREENSHOT 291
+
+#define KVI_NUM_SMALL_ICONS 292
+
+
+#define KVI_BIGICON_DISCONNECTED "kvi_bigicon_disconnected.png"
+#define KVI_BIGICON_CONNECTING "kvi_bigicon_connecting.png"
+#define KVI_BIGICON_CONNECTED "kvi_bigicon_connected.png"
+#define KVI_BIGICON_TOOLS "kvi_bigicon_tools.png"
+#define KVI_BIGICON_ACTIONS "kvi_bigicon_actions.png"
+#define KVI_BIGICON_FOLDER "kvi_bigicon_folder.png"
+#define KVI_BIGICON_UNKNOWN "kvi_bigicon_unknown.png"
+#define KVI_BIGICON_SEPARATOR "kvi_bigicon_separator.png"
+#define KVI_BIGICON_KVS "kvi_bigicon_kvs.png"
+#define KVI_BIGICON_THEME "kvi_bigicon_theme.png"
+#define KVI_BIGICON_ADDONS "kvi_bigicon_addons.png"
+
+#define KVI_BIGICON_HELPINDEX "kvi_bigicon_helpindex.png"
+#define KVI_BIGICON_HELPBACK "kvi_bigicon_helpback.png"
+#define KVI_BIGICON_HELPFORWARD "kvi_bigicon_helpforward.png"
+#define KVI_BIGICON_HELPCLOSE "kvi_bigicon_helpclose.png"
+#define KVI_BIGICON_HELPSEARCH "kvi_bigicon_helpsearch.png"
+
+#define KVI_BIGICON_OPEN "kvi_bigicon_open.png"
+#define KVI_BIGICON_SAVE "kvi_bigicon_save.png"
+#define KVI_BIGICON_REMOVE "kvi_bigicon_remove.png"
+#define KVI_BIGICON_WWW "kvi_bigicon_www.png"
+#define KVI_BIGICON_PACK "kvi_bigicon_pack.png"
+#define KVI_BIGICON_SCREENSHOT "kvi_bigicon_screenshot.png"
+#define KVI_BIGICON_REGUSERS "kvi_bigicon_regusers.png"
+
+#define KVI_SMALLICONS_SUBDIRECTORY "coresmall"
+#define KVI_SMALLICONS_PREFIX "kcs_"
+
+// FIXME: this should be removed
+#define KVI_SMALLICONS_IMAGELIB_PREFIX "kvi_smallicon_"
+
+#define KVI_USERCHANSTATE_IMAGE_NAME "kvi_userchanstate.png"
+#define KVI_ACTIVITYMETER_IMAGE_NAME "kvi_activitymeter.png"
+
+#define KVI_REFRESH_IMAGE_NAME "kvi_icon_refresh.png"
+
+class KviIconManager;
+
+class KVIRC_API KviCachedPixmap
+{
+public:
+ // the pixmap MUST be allocated with new QPixmap()
+ // this calss takes the ownership
+ KviCachedPixmap(QPixmap * ptr,const QString &szPath);
+ ~KviCachedPixmap();
+private:
+ QString m_szPath;
+ kvi_time_t m_tLastAccess;
+ QPixmap * m_pPixmap;
+ unsigned int m_uSize;
+public:
+ QPixmap * pixmap(){ return m_pPixmap; };
+ const QString & path(){ return m_szPath; };
+ unsigned int size(){ return m_uSize; };
+ kvi_time_t lastAccessTime(){ return m_tLastAccess; };
+ void updateLastAccessTime();
+};
+
+class KVIRC_API KviIconWidget : public QWidget
+{
+ Q_OBJECT
+public:
+ KviIconWidget();
+ KviIconWidget(QWidget * par);
+ ~KviIconWidget();
+protected:
+ void init();
+ virtual void closeEvent(QCloseEvent *e);
+ virtual bool eventFilter(QObject * o,QEvent *e);
+signals:
+ void closed();
+ void selected(int iIcon);
+};
+
+
+
+//
+// This class manages the images used by KVIrc.
+//
+// We handle three types of images: builtin small icons, builtin big icons and generic images.
+//
+// The builtin small icons are in the pics/coresmall directory (this is to optimize the directory size
+// since it's a linear search...), are 16x16 in size and are indexed by numbers in a way that their
+// access is really fast. The icons used here are used mostly in KviIrcView (but not exclusively).
+//
+// The generic images are just "any" image that the underlying Qt engine
+// is able to load. They are loaded by (relative) path and
+// cached by name.
+//
+// The builtin big icons are (actually) just generic images
+// that are eventually scaled to 32x32 if needed. One can request
+// a builtin small icon indexed by number to be scaled
+// to the size of 32x32 as a big icon too.
+//
+
+class KVIRC_API KviIconManager : public QObject
+{
+ Q_OBJECT
+public:
+ KviIconManager();
+ ~KviIconManager();
+private:
+ QPixmap * m_smallIcons[KVI_NUM_SMALL_ICONS];
+ KviIconWidget * m_pIconWidget;
+
+ KviPointerHashTable<QString,KviCachedPixmap> * m_pCachedImages;
+ KviPointerHashTable<QString,int> * m_pIconNames;
+ unsigned int m_uCacheTotalSize;
+ unsigned int m_uCacheMaxSize;
+public:
+ // WARNING: Don't store this pointer!
+ // id == filename | number that indicates an internal pixmap
+ // 0 stands for "any"
+ QPixmap * getImage(const char * id,bool bCanBeNumber = true,QString* pRetPath = 0);
+
+ // The returned pointer is owned by the icon manager
+ // and can be deleted at any time : so don't store it
+ KviCachedPixmap * getPixmapWithCache(const QString &szName);
+
+ // The returned pointer is owned by the icon manager
+ // and can be deleted at any time : so don't store it
+ KviCachedPixmap * getPixmapWithCacheScaleOnLoad(const QString &szName,int iMaxWidth,int iMaxHeight);
+
+ // The returned pointer is owned by the icon manager
+ // and can be deleted at any time : so don't store it
+ QPixmap * getPixmap(const QString &szName)
+ { KviCachedPixmap * p = getPixmapWithCache(szName); return p ? p->pixmap() : 0; };
+
+ // this one never fails... if the image can't be found
+ // a default 32x32 image is returned
+ QPixmap * getBigIcon(const QString &szName);
+
+ // this one never fails... if the icon isn't there
+ // then a default 16x16 image is returned
+ QPixmap * getSmallIcon(int idx){ return idx < KVI_NUM_SMALL_ICONS ? (m_smallIcons[idx] ? m_smallIcons[idx] : loadSmallIcon(idx) ) : 0; };
+
+ const char * getSmallIconName(int idx);
+ int getSmallIconIdFromName(const QString &szName);
+
+ // if szLocalPath is empty then szName can be the identification
+ // string for the avatar
+ // if szName is empty then it is found from szLocalPath
+ KviAvatar * getAvatar(const QString &szLocalPath,const QString &szName);
+
+ void urlToCachedFileName(KviStr &szFName);
+ void urlToCachedFileName(QString &szFName);
+
+ void clearCache();
+ void reloadImages();
+
+ void cacheCleanup();
+protected:
+ void addToCache(const QString &szName,KviCachedPixmap * p);
+ //void loadSmallIcons();
+ QPixmap * loadSmallIcon(int idx);
+public slots:
+ void showIconWidget();
+protected slots:
+ void iconWidgetClosed();
+};
+
+extern KVIRC_API KviIconManager * g_pIconManager;
+
+#endif //_KVI_ICONMANAGER_H_