From f920ef497f3299ae24fe783ce03bdd93b419f764 Mon Sep 17 00:00:00 2001 From: Kirill Volinsky Date: Fri, 18 May 2012 22:02:50 +0000 Subject: plugins folders renaming git-svn-id: http://svn.miranda-ng.org/main/trunk@60 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/Clist_nicer/SRC/clcmsgs.cpp | 221 ++++++++++++++++++++++++++++++++++++ 1 file changed, 221 insertions(+) create mode 100644 plugins/Clist_nicer/SRC/clcmsgs.cpp (limited to 'plugins/Clist_nicer/SRC/clcmsgs.cpp') diff --git a/plugins/Clist_nicer/SRC/clcmsgs.cpp b/plugins/Clist_nicer/SRC/clcmsgs.cpp new file mode 100644 index 0000000000..97a4d0bb99 --- /dev/null +++ b/plugins/Clist_nicer/SRC/clcmsgs.cpp @@ -0,0 +1,221 @@ +/* + * astyle --force-indent=tab=4 --brackets=linux --indent-switches + * --pad=oper --one-line=keep-blocks --unpad=paren + * + * Miranda IM: the free IM client for Microsoft* Windows* + * + * Copyright 2000-2010 Miranda ICQ/IM project, + * all portions of this codebase are copyrighted to the people + * listed in contributors.txt. + * + * 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. + * + * part of clist_nicer plugin for Miranda. + * + * (C) 2005-2010 by silvercircle _at_ gmail _dot_ com and contributors + * + * $Id: clcmsgs.cpp 12535 2010-08-29 23:48:32Z silvercircle $ + * + */ + +#include + +//processing of all the CLM_ messages incoming + +extern LRESULT ( *saveProcessExternalMessages )(HWND hwnd, struct ClcData *dat, UINT msg, WPARAM wParam, LPARAM lParam); + +LRESULT ProcessExternalMessages(HWND hwnd, struct ClcData *dat, UINT msg, WPARAM wParam, LPARAM lParam) +{ + switch (msg) { + case CLM_SETSTICKY: + { + struct ClcContact *contact; + struct ClcGroup *group; + + if (wParam == 0 || !FindItem(hwnd, dat, (HANDLE) wParam, &contact, &group, NULL)) + return 0; + if (lParam) + contact->flags |= CONTACTF_STICKY; + else + contact->flags &= ~CONTACTF_STICKY; + break; + } + + case CLM_SETEXTRAIMAGEINT: + { + struct ClcContact *contact = NULL; + int index = -1; + + if (LOWORD(lParam) >= MAXEXTRACOLUMNS || wParam == 0) + return 0; + + if (!FindItem(hwnd, dat, (HANDLE) wParam, &contact, NULL, NULL)) + return 0; + + index = contact->extraCacheEntry; + + if(contact->type != CLCIT_CONTACT) // || contact->bIsMeta) + return 0; + + //if(contact->bIsMeta && LOWORD(lParam) != EIMG_EXTRA && LOWORD(lParam) != EIMG_CLIENT) + // return 0; + + /* + if(contact->hContact == 5846286) { + _DebugTraceA("set extra image %d", LOWORD(lParam)); + } + */ + if(index >= 0 && index < cfg::nextCacheEntry) { + cfg::eCache[index].iExtraImage[LOWORD(lParam)] = (BYTE)HIWORD(lParam); + cfg::eCache[index].iExtraValid = cfg::eCache[index].iExtraImage[LOWORD(lParam)] != (BYTE)0xff ? (cfg::eCache[index].iExtraValid | (1 << LOWORD(lParam))) : (cfg::eCache[index].iExtraValid & ~(1 << LOWORD(lParam))); + PostMessage(hwnd, INTM_INVALIDATE, 0, (LPARAM)(contact ? contact->hContact : 0)); + } + } + return 0; + case CLM_SETEXTRAIMAGEINTMETA: + { + HANDLE hMasterContact = 0; + int index = -1; + + if (LOWORD(lParam) >= MAXEXTRACOLUMNS) + return 0; + + index = cfg::getCache((HANDLE)wParam, NULL); + if(index >= 0 && index < cfg::nextCacheEntry) { + cfg::eCache[index].iExtraImage[LOWORD(lParam)] = (BYTE)HIWORD(lParam); + cfg::eCache[index].iExtraValid = cfg::eCache[index].iExtraImage[LOWORD(lParam)] != (BYTE)0xff ? (cfg::eCache[index].iExtraValid | (1 << LOWORD(lParam))) : (cfg::eCache[index].iExtraValid & ~(1 << LOWORD(lParam))); + } + + hMasterContact = (HANDLE)cfg::getDword((HANDLE)wParam, cfg::dat.szMetaName, "Handle", 0); + + index = cfg::getCache(hMasterContact, NULL); + if(index >= 0 && index < cfg::nextCacheEntry) { + cfg::eCache[index].iExtraImage[LOWORD(lParam)] = (BYTE)HIWORD(lParam); + cfg::eCache[index].iExtraValid = cfg::eCache[index].iExtraImage[LOWORD(lParam)] != (BYTE)0xff ? (cfg::eCache[index].iExtraValid | (1 << LOWORD(lParam))) : (cfg::eCache[index].iExtraValid & ~(1 << LOWORD(lParam))); + PostMessage(hwnd, INTM_INVALIDATE, 0, 0); + } + } + return 0; + + case CLM_GETSTATUSMSG: + { + struct ClcContact *contact = NULL; + + if (wParam == 0) + return 0; + + if (!FindItem(hwnd, dat, (HANDLE)wParam, &contact, NULL, NULL)) + return 0; + if(contact->type != CLCIT_CONTACT) + return 0; + if(contact->extraCacheEntry >= 0 && contact->extraCacheEntry <= cfg::nextCacheEntry) { + if(cfg::eCache[contact->extraCacheEntry].bStatusMsgValid != STATUSMSG_NOTFOUND) + return((INT_PTR)cfg::eCache[contact->extraCacheEntry].statusMsg); + } } + return 0; + + case CLM_SETHIDESUBCONTACTS: + dat->bHideSubcontacts = (BOOL)lParam; + return 0; + + case CLM_TOGGLEPRIORITYCONTACT: + { + struct ClcContact *contact = NULL; + + if (wParam == 0) + return 0; + + if (!FindItem(hwnd, dat, (HANDLE)wParam, &contact, NULL, NULL)) + return 0; + if(contact->type != CLCIT_CONTACT) + return 0; + contact->flags ^= CONTACTF_PRIORITY; + cfg::writeByte(contact->hContact, "CList", "Priority", (BYTE)(contact->flags & CONTACTF_PRIORITY ? 1 : 0)); + pcli->pfnClcBroadcast(CLM_AUTOREBUILD, 0, 0); + return 0; + } + case CLM_QUERYPRIORITYCONTACT: + { + struct ClcContact *contact = NULL; + + if (wParam == 0) + return 0; + + if (!FindItem(hwnd, dat, (HANDLE)wParam, &contact, NULL, NULL)) + return 0; + if(contact->type != CLCIT_CONTACT) + return 0; + return(contact->flags & CONTACTF_PRIORITY ? 1 : 0); + } + case CLM_TOGGLEFLOATINGCONTACT: + { + struct ClcContact *contact = NULL; + BYTE state; + int iEntry; + + if (wParam == 0) + return 0; + + if (!FindItem(hwnd, dat, (HANDLE)wParam, &contact, NULL, NULL)) + return 0; + if(contact->type != CLCIT_CONTACT) + return 0; + + iEntry = contact->extraCacheEntry; + + if(iEntry >= 0 && iEntry <= cfg::nextCacheEntry) { + state = !cfg::getByte(contact->hContact, "CList", "floating", 0); + if(state) { + if(cfg::eCache[iEntry].floater == NULL) + FLT_Create(iEntry); + ShowWindow(cfg::eCache[contact->extraCacheEntry].floater->hwnd, SW_SHOW); + } + else { + if(cfg::eCache[iEntry].floater && cfg::eCache[iEntry].floater->hwnd) { + DestroyWindow(cfg::eCache[iEntry].floater->hwnd); + cfg::eCache[iEntry].floater = 0; + } + } + cfg::writeByte(contact->hContact, "CList", "floating", state); + } + return 0; + } + case CLM_QUERYFLOATINGCONTACT: + { + return(cfg::getByte((HANDLE)wParam, "CList", "floating", 0)); + } + case CLM_SETEXTRAIMAGELIST: + dat->himlExtraColumns = (HIMAGELIST) lParam; + InvalidateRect(hwnd, NULL, FALSE); + return 0; + + case CLM_SETFONT: + if(HIWORD(lParam)<0 || HIWORD(lParam)>FONTID_LAST) + return 0; + dat->fontInfo[HIWORD(lParam)].hFont = (HFONT)wParam; + dat->fontInfo[HIWORD(lParam)].changed = 1; + + RowHeight::getMaxRowHeight(dat, hwnd); + + if(LOWORD(lParam)) + InvalidateRect(hwnd,NULL,FALSE); + return 0; + + case CLM_ISMULTISELECT: + return dat->isMultiSelect; + } + + return saveProcessExternalMessages(hwnd, dat, msg, wParam, lParam); +} -- cgit v1.2.3