From cb4a46e7fbe62d788e66ed6121c717a2d22a4d7c Mon Sep 17 00:00:00 2001 From: watcherhd Date: Thu, 21 Apr 2011 14:14:52 +0000 Subject: svn.miranda.im is moving to a new home! git-svn-id: http://miranda-plugins.googlecode.com/svn/trunk@7 e753b5eb-9565-29b2-b5c5-2cc6f99dfbcb --- irc_mod/iconlib.cpp | 118 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 irc_mod/iconlib.cpp (limited to 'irc_mod/iconlib.cpp') diff --git a/irc_mod/iconlib.cpp b/irc_mod/iconlib.cpp new file mode 100644 index 0000000..b85838b --- /dev/null +++ b/irc_mod/iconlib.cpp @@ -0,0 +1,118 @@ +// ---------------------------------------------------------------------------80 +// ICQ plugin for Miranda Instant Messenger +// ________________________________________ +// +// Copyright © 2000,2001 Richard Hughes, Roland Rabien, Tristan Van de Vreede +// Copyright © 2001,2002 Jon Keating, Richard Hughes +// Copyright © 2002,2003,2004 Martin Öberg, Sam Kothari, Robert Rainwater +// Copyright © 2004,2005,2006 Joe Kucera +// +// 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. +// +// 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// +// ----------------------------------------------------------------------------- +// +// File name : $Source: /cvsroot/miranda/miranda/protocols/IcqOscarJ/iconlib.c,v $ +// Revision : $Revision: 1.6 $ +// Last change on : $Date: 2006/03/23 23:32:15 $ +// Last change by : $Author: jokusoftware $ +// +// DESCRIPTION: +// +// Support for IcoLib plug-in +// +// ----------------------------------------------------------------------------- + +#include "irc.h" + +static int bIcoReady = 0; +static int bIcoUtf = 0; + +extern char * IRCPROTONAME; + +void InitIconLib() +{ // check plugin presence, init variables + bIcoReady = ServiceExists(MS_SKIN2_GETICON); + if (bIcoReady) + { + SKINICONDESC sid = {0}; + + if (CallService(MS_SKIN2_ADDICON, 0, (LPARAM)&sid) >= PLUGIN_MAKE_VERSION(0,0,1,0)) + bIcoUtf = 1; + } +} + +int IconLibInstalled() +{ + return bIcoReady; +} + +void IconLibDefine(const char* desc, const char* section, const char* ident, HICON icon) +{ + if (bIcoReady) + { + SKINICONDESC sid = {0}; + char szTemp[MAX_PATH + 128]; + + if (bIcoUtf) + { + sid.cbSize = SKINICONDESC_SIZE; + sid.pwszSection = make_unicode_string((const unsigned char *)section); + sid.pwszDescription = make_unicode_string((const unsigned char *)desc); + sid.flags = SIDF_UNICODE; + } + else + { + sid.cbSize = SKINICONDESC_SIZE_V3; + utf8_decode(section, &sid.pszSection); + utf8_decode(desc, &sid.pszDescription); + } + + sid.pszDefaultFile = NULL; + null_snprintf(szTemp, sizeof(szTemp), "%s_%s", IRCPROTONAME, ident); + sid.pszName = szTemp; + sid.iDefaultIndex = 0; + sid.hDefaultIcon = icon; + sid.cx = sid.cy = 16; + + CallService(MS_SKIN2_ADDICON, 0, (LPARAM)&sid); + + SAFE_FREE((void **)&sid.pwszSection); + SAFE_FREE((void **)&sid.pwszDescription); + } +} + +HICON IconLibProcess(HICON icon, const char* ident) +{ + if (bIcoReady) + { + char szTemp[MAX_PATH + 128]; + HICON hNew; + + null_snprintf(szTemp, sizeof(szTemp), "%s_%s", IRCPROTONAME, ident); + hNew = (HICON)CallService(MS_SKIN2_GETICON, 0, (LPARAM)szTemp); + if (hNew) return hNew; + } + + return icon; +} + +HANDLE IconLibHookIconsChanged(MIRANDAHOOK hook) +{ + if (bIcoReady) + { + return HookEvent(ME_SKIN2_ICONSCHANGED, hook); + } + return NULL; +} \ No newline at end of file -- cgit v1.2.3