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 --- miranda-wine/plugins/srmm/globals.c | 107 ++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 miranda-wine/plugins/srmm/globals.c (limited to 'miranda-wine/plugins/srmm/globals.c') diff --git a/miranda-wine/plugins/srmm/globals.c b/miranda-wine/plugins/srmm/globals.c new file mode 100644 index 0000000..3247e1a --- /dev/null +++ b/miranda-wine/plugins/srmm/globals.c @@ -0,0 +1,107 @@ +/* +SRMM + +Copyright 2000-2005 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. +*/ +#include "commonheaders.h" + +struct GlobalMessageData *g_dat=NULL; +extern HINSTANCE g_hInst; +static HANDLE g_hDbEvent = 0, g_hAck = 0; +static int dbaddedevent(WPARAM wParam, LPARAM lParam); +static int ackevent(WPARAM wParam, LPARAM lParam); + +void InitGlobals() { + g_dat = (struct GlobalMessageData *)malloc(sizeof(struct GlobalMessageData)); + g_dat->hMessageWindowList = (HANDLE) CallService(MS_UTILS_ALLOCWINDOWLIST, 0, 0); + g_hDbEvent = HookEvent(ME_DB_EVENT_ADDED, dbaddedevent); + g_hAck = HookEvent(ME_PROTO_ACK, ackevent); + ReloadGlobals(); + g_dat->hIcons[SMF_ICON_ADD] = (HICON) LoadImage(g_hInst, MAKEINTRESOURCE(IDI_ADDCONTACT), IMAGE_ICON, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), 0); + g_dat->hIcons[SMF_ICON_USERDETAIL] = (HICON) LoadImage(g_hInst, MAKEINTRESOURCE(IDI_USERDETAILS), IMAGE_ICON, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), 0); + g_dat->hIcons[SMF_ICON_HISTORY] = (HICON) LoadImage(g_hInst, MAKEINTRESOURCE(IDI_HISTORY), IMAGE_ICON, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), 0); + g_dat->hIcons[SMF_ICON_ARROW] = (HICON) LoadImage(g_hInst, MAKEINTRESOURCE(IDI_DOWNARROW), IMAGE_ICON, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), 0); + g_dat->hIcons[SMF_ICON_TYPING] = (HICON) LoadImage(g_hInst, MAKEINTRESOURCE(IDI_TYPING), IMAGE_ICON, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), 0); +} + +void FreeGlobals() { + int i; + + if (g_dat) { + for (i=0; i < SIZEOF(g_dat->hIcons); i++) + DestroyIcon(g_dat->hIcons[i]); + free(g_dat); + } + if (g_hDbEvent) UnhookEvent(g_hDbEvent); + if (g_hAck) UnhookEvent(g_hAck); +} + +void ReloadGlobals() { + g_dat->flags = 0; + if (DBGetContactSettingByte(NULL, SRMMMOD, SRMSGSET_SHOWINFOLINE, SRMSGDEFSET_SHOWINFOLINE)) + g_dat->flags |= SMF_SHOWINFO; + if (DBGetContactSettingByte(NULL, SRMMMOD, SRMSGSET_SHOWBUTTONLINE, SRMSGDEFSET_SHOWBUTTONLINE)) + g_dat->flags |= SMF_SHOWBTNS; + if (DBGetContactSettingByte(NULL, SRMMMOD, SRMSGSET_SENDBUTTON, SRMSGDEFSET_SENDBUTTON)) + g_dat->flags |= SMF_SENDBTN; + if (DBGetContactSettingByte(NULL, SRMMMOD, SRMSGSET_SHOWTYPING, SRMSGDEFSET_SHOWTYPING)) + g_dat->flags |= SMF_SHOWTYPING; + if (DBGetContactSettingByte(NULL, SRMMMOD, SRMSGSET_SHOWTYPINGWIN, SRMSGDEFSET_SHOWTYPINGWIN)) + g_dat->flags |= SMF_SHOWTYPINGWIN; + if (DBGetContactSettingByte(NULL, SRMMMOD, SRMSGSET_SHOWTYPINGNOWIN, SRMSGDEFSET_SHOWTYPINGNOWIN)) + g_dat->flags |= SMF_SHOWTYPINGTRAY; + if (DBGetContactSettingByte(NULL, SRMMMOD, SRMSGSET_SHOWTYPINGCLIST, SRMSGDEFSET_SHOWTYPINGCLIST)) + g_dat->flags |= SMF_SHOWTYPINGCLIST; + if (DBGetContactSettingByte(NULL, SRMMMOD, SRMSGSET_SHOWLOGICONS, SRMSGDEFSET_SHOWLOGICONS)) + g_dat->flags |= SMF_SHOWICONS; + if (DBGetContactSettingByte(NULL, SRMMMOD, SRMSGSET_SHOWTIME, SRMSGDEFSET_SHOWTIME)) + g_dat->flags |= SMF_SHOWTIME; + if (DBGetContactSettingByte(NULL, SRMMMOD, SRMSGSET_AVATARENABLE, SRMSGDEFSET_AVATARENABLE)) + g_dat->flags |= SMF_AVATAR; + if (DBGetContactSettingByte(NULL, SRMMMOD, SRMSGSET_SHOWDATE, SRMSGDEFSET_SHOWDATE)) + g_dat->flags |= SMF_SHOWDATE; + if (DBGetContactSettingByte(NULL, SRMMMOD, SRMSGSET_SHOWSECS, SRMSGDEFSET_SHOWSECS)) + g_dat->flags |= SMF_SHOWSECS; + if (DBGetContactSettingByte(NULL, SRMMMOD, SRMSGSET_HIDENAMES, SRMSGDEFSET_HIDENAMES)) + g_dat->flags |= SMF_HIDENAMES; + g_dat->openFlags = DBGetContactSettingDword(NULL, SRMMMOD, SRMSGSET_POPFLAGS, SRMSGDEFSET_POPFLAGS); +} + +static int dbaddedevent(WPARAM wParam, LPARAM lParam) { + if (wParam) { + HWND h = WindowList_Find(g_dat->hMessageWindowList, (HANDLE)wParam); + if(h) SendMessage(h, HM_DBEVENTADDED, wParam, lParam); + } + return 0; +} + +static int ackevent(WPARAM wParam, LPARAM lParam) { + ACKDATA *pAck = (ACKDATA *)lParam; + + if (!pAck) return 0; + else if (pAck->type==ACKTYPE_AVATAR) { + HWND h = WindowList_Find(g_dat->hMessageWindowList, (HANDLE)pAck->hContact); + if(h) SendMessage(h, HM_AVATARACK, wParam, lParam); + } + else if (pAck->type==ACKTYPE_MESSAGE) { + HWND h = WindowList_Find(g_dat->hMessageWindowList, (HANDLE)pAck->hContact); + if(h) SendMessage(h, HM_EVENTSENT, wParam, lParam); + } + return 0; +} -- cgit v1.2.3