From a30cc711b287d245e0edc7c63e53da95c0999203 Mon Sep 17 00:00:00 2001 From: Vadim Dashevskiy Date: Tue, 24 Jul 2012 06:59:45 +0000 Subject: SplashScreen, SRMM: changed folder structure git-svn-id: http://svn.miranda-ng.org/main/trunk@1151 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/SRMM/src/globals.cpp | 186 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 186 insertions(+) create mode 100644 plugins/SRMM/src/globals.cpp (limited to 'plugins/SRMM/src/globals.cpp') diff --git a/plugins/SRMM/src/globals.cpp b/plugins/SRMM/src/globals.cpp new file mode 100644 index 0000000000..e6d0175f1c --- /dev/null +++ b/plugins/SRMM/src/globals.cpp @@ -0,0 +1,186 @@ +/* +Copyright 2000-2012 Miranda /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; +static HANDLE g_hooks[4]; + +static int dbaddedevent(WPARAM wParam, LPARAM lParam); +static int ackevent(WPARAM wParam, LPARAM lParam); +static int AvatarChanged(WPARAM wParam, LPARAM lParam); + +typedef struct IconDefStruct +{ + char *szName; + char *szDescr; + int defIconID; +} IconList; + +static const IconList iconList[] = +{ + { "INCOMING", LPGEN("Incoming message (10x10)"), IDI_INCOMING }, + { "OUTGOING", LPGEN("Outgoing message (10x10)"), IDI_OUTGOING }, + { "NOTICE", LPGEN("Notice (10x10)"), IDI_NOTICE }, +}; + + +HANDLE hIconLibItem[SIZEOF(iconList)]; + +static void InitIcons(void) +{ + char szSettingName[100]; + + TCHAR szFile[MAX_PATH]; + GetModuleFileName(g_hInst, szFile, SIZEOF(szFile)); + + SKINICONDESC sid = {0}; + sid.cbSize = sizeof(SKINICONDESC); + sid.ptszDefaultFile = szFile; + sid.pszName = szSettingName; + sid.pszSection = LPGEN("Messaging"); + sid.flags = SIDF_PATH_TCHAR; + sid.cx = 10; sid.cy = 10; + + for (int i=0; i < SIZEOF(iconList); i++) { + mir_snprintf(szSettingName, sizeof(szSettingName), "SRMM_%s", iconList[i].szName); + sid.pszDescription = iconList[i].szDescr; + sid.iDefaultIndex = -iconList[i].defIconID; + hIconLibItem[i] = Skin_AddIcon(&sid); + } +} + +static int IconsChanged(WPARAM wParam, LPARAM lParam) +{ + FreeMsgLogIcons(); + LoadMsgLogIcons(); + + return 0; +} + +void InitGlobals() +{ + g_dat = (struct GlobalMessageData *)mir_alloc(sizeof(struct GlobalMessageData)); + g_dat->hMessageWindowList = (HANDLE) CallService(MS_UTILS_ALLOCWINDOWLIST, 0, 0); + g_hooks[0] = HookEvent(ME_DB_EVENT_ADDED, dbaddedevent); + g_hooks[1] = HookEvent(ME_PROTO_ACK, ackevent); + g_hooks[2] = HookEvent(ME_SKIN2_ICONSCHANGED, IconsChanged); + g_hooks[3] = HookEvent(ME_AV_AVATARCHANGED, AvatarChanged); + + ReloadGlobals(); + InitIcons(); +} + +void FreeGlobals() +{ + int i; + mir_free(g_dat); + + for (i=0; i < SIZEOF(g_hooks); ++i) + if (g_hooks[i]) + UnhookEvent(g_hooks[i]); +} + +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; + if (DBGetContactSettingByte(NULL, SRMMMOD, SRMSGSET_CHARCOUNT, SRMSGDEFSET_CHARCOUNT)) + g_dat->flags |= SMF_SHOWREADCHAR; + if (DBGetContactSettingByte(NULL, SRMMMOD, SRMSGSET_SENDONENTER, SRMSGDEFSET_SENDONENTER)) + g_dat->flags |= SMF_SENDONENTER; + if (DBGetContactSettingByte(NULL, SRMMMOD, SRMSGSET_SENDONDBLENTER, SRMSGDEFSET_SENDONDBLENTER)) + g_dat->flags |= SMF_SENDONDBLENTER; + if (DBGetContactSettingByte(NULL, SRMMMOD, SRMSGSET_AUTOCLOSE, SRMSGDEFSET_AUTOCLOSE)) + g_dat->flags |= SMF_AUTOCLOSE; + if (DBGetContactSettingByte(NULL, SRMMMOD, SRMSGSET_AUTOMIN, SRMSGDEFSET_AUTOMIN)) + g_dat->flags |= SMF_AUTOMIN; + if (DBGetContactSettingByte(NULL, SRMMMOD, SRMSGSET_TYPINGUNKNOWN, SRMSGDEFSET_TYPINGUNKNOWN)) + g_dat->flags |= SMF_TYPINGUNKNOWN; + if (DBGetContactSettingByte(NULL, SRMMMOD, SRMSGSET_CTRLSUPPORT, SRMSGDEFSET_CTRLSUPPORT)) + g_dat->flags |= SMF_CTRLSUPPORT; + if (DBGetContactSettingByte(NULL, SRMMMOD, SRMSGSET_SHOWFORMAT, SRMSGDEFSET_SHOWFORMAT)) + g_dat->flags |= SMF_SHOWFORMAT; + + g_dat->openFlags = DBGetContactSettingDword(NULL, SRMMMOD, SRMSGSET_POPFLAGS, SRMSGDEFSET_POPFLAGS); + g_dat->nFlashMax = DBGetContactSettingByte(NULL, SRMMMOD, SRMSGSET_FLASHCOUNT, SRMSGDEFSET_FLASHCOUNT); + + g_dat->msgTimeout = DBGetContactSettingDword(NULL, SRMMMOD, SRMSGSET_MSGTIMEOUT, SRMSGDEFSET_MSGTIMEOUT); + if (g_dat->msgTimeout < SRMSGSET_MSGTIMEOUT_MIN) g_dat->msgTimeout = SRMSGDEFSET_MSGTIMEOUT; +} + +static int dbaddedevent(WPARAM wParam, LPARAM lParam) +{ + HANDLE hContact = (HANDLE)wParam; + if (hContact) + { + HWND h = WindowList_Find(g_dat->hMessageWindowList, hContact); + if (h) SendMessage(h, HM_DBEVENTADDED, (WPARAM)hContact, lParam); + } + return 0; +} + +static int ackevent(WPARAM wParam, LPARAM lParam) +{ + ACKDATA *pAck = (ACKDATA *)lParam; + + if (!pAck) return 0; + if (pAck->type == ACKTYPE_MESSAGE) + { + msgQueue_processack(pAck->hContact, pAck->hProcess, pAck->result == ACKRESULT_SUCCESS, (char*)pAck->lParam); + + if (pAck->result == ACKRESULT_SUCCESS) + SkinPlaySound("SendMsg"); + } + return 0; +} + +int AvatarChanged(WPARAM wParam, LPARAM lParam) +{ + HANDLE hContact = (HANDLE)wParam; + HWND h = WindowList_Find(g_dat->hMessageWindowList, hContact); + if (h) SendMessage(h, HM_AVATARACK, wParam, lParam); + return 0; +} + -- cgit v1.2.3