From 85863331bd2920991e8e7093a472e60d749b4a7a Mon Sep 17 00:00:00 2001 From: mataes2007 Date: Sat, 24 Dec 2011 20:50:18 +0000 Subject: patch by FREAK_THEMIGHTY: - fixed navigation in options + new option: "Open message window" + New option: "Open contact list" + new option: "Respect ignore settings (status changes)" * status changes are now stored in UTF8 - Removed popup on sending nudges (on popular request) * popup options are moved into popup classes, needs a recent version of popup+ or YAPP git-svn-id: http://miranda-plugins.googlecode.com/svn/trunk@251 e753b5eb-9565-29b2-b5c5-2cc6f99dfbcb --- Nudge/ChangeLog.txt | 7 + Nudge/headers.h | 13 +- Nudge/main.cpp | 617 +++++++++++++++++++------------------------------ Nudge/main.h | 71 +----- Nudge/nudge.cpp | 50 ++-- Nudge/nudge.h | 15 +- Nudge/nudge_10.vcxproj | 6 +- Nudge/options.cpp | 282 ++++++---------------- Nudge/options.h | 3 - Nudge/resource.h | 9 +- Nudge/resource.rc | 295 +++++++++-------------- Nudge/shake.cpp | 20 +- 12 files changed, 462 insertions(+), 926 deletions(-) diff --git a/Nudge/ChangeLog.txt b/Nudge/ChangeLog.txt index 477a256..5404a70 100644 --- a/Nudge/ChangeLog.txt +++ b/Nudge/ChangeLog.txt @@ -6,6 +6,13 @@ + open message window on popup click + open message window on preview + moved sounds in "Nudge" section +- fixed navigation in options ++ new option: "Open message window" ++ New option: "Open contact list" ++ new option: "Respect ignore settings (status changes)" +* status changes are now stored in UTF8 +- Removed popup on sending nudges (on popular request) +* popup options are moved into popup classes, needs a recent version of popup+ or YAPP 0.0.1.21 =========== diff --git a/Nudge/headers.h b/Nudge/headers.h index 9753adf..810edc6 100644 --- a/Nudge/headers.h +++ b/Nudge/headers.h @@ -28,24 +28,18 @@ #include #include -#include -#include #include -#include -#include -#define MIRANDA_VER 0x1000 +#define MIRANDA_VER 0x0A00 #include //CallService,UnHookEvent -#include //window broadcasting #include #include #include #include #include #include -#include #include -#include +#include #include #include #include @@ -61,8 +55,7 @@ /* * ****************************/ -void InitOptions(); -void UninitOptions(); +int NudgeOptInit(WPARAM wParam,LPARAM lParam); /* * diff --git a/Nudge/main.cpp b/Nudge/main.cpp index 28c10c4..47a9d73 100644 --- a/Nudge/main.cpp +++ b/Nudge/main.cpp @@ -4,83 +4,30 @@ #include "m_msg_buttonsbar.h" -static INT_PTR CALLBACK DlgProcOptsTrigger(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); -LRESULT CALLBACK NudgePopUpProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam); - int nProtocol = 0; -static HANDLE g_hEventModulesLoaded = NULL, g_hEventIconsChanged = NULL,hEventOptionsInitialize, g_hIcon = NULL, g_hEventDbWindowEvent = NULL, g_hEventToolbarLoaded = NULL, g_hEventButtonPressed = NULL; +static HANDLE g_hEventModulesLoaded = NULL, hEventOptionsInitialize = NULL, g_hIcon = NULL, g_hEventDbWindowEvent = NULL, g_hEventToolbarLoaded = NULL, g_hEventButtonPressed = NULL, g_hEventAccountsChanged = NULL; HINSTANCE hInst; PLUGINLINK *pluginLink; -NudgeElementList *NudgeList; +NudgeElementList *NudgeList = NULL; CNudgeElement DefaultNudge; CShake shake; CNudge GlobalNudge; MM_INTERFACE mmi; +UTF8_INTERFACE utfi; int hLangpack = 0; -BOOL (WINAPI *MyEnableThemeDialogTexture)(HANDLE, DWORD) = 0; -HMODULE hUxTheme = 0; - -// function pointers, use typedefs for casting to shut up the compiler when using GetProcAddress() - -typedef BOOL (WINAPI *PITA)(); -typedef HANDLE (WINAPI *POTD)(HWND, LPCWSTR); -typedef UINT (WINAPI *PDTB)(HANDLE, HDC, int, int, RECT *, RECT *); -typedef UINT (WINAPI *PCTD)(HANDLE); -typedef UINT (WINAPI *PDTT)(HANDLE, HDC, int, int, LPCWSTR, int, DWORD, DWORD, RECT *); - -PITA pfnIsThemeActive = 0; -POTD pfnOpenThemeData = 0; -PDTB pfnDrawThemeBackground = 0; -PCTD pfnCloseThemeData = 0; -PDTT pfnDrawThemeText = 0; - -#define FIXED_TAB_SIZE 100 // default value for fixed width tabs - -/* - * visual styles support (XP+) - * returns 0 on failure - */ - -int InitVSApi() -{ - if((hUxTheme = LoadLibraryA("uxtheme.dll")) == 0) - return 0; - - pfnIsThemeActive = (PITA)GetProcAddress(hUxTheme, "IsThemeActive"); - pfnOpenThemeData = (POTD)GetProcAddress(hUxTheme, "OpenThemeData"); - pfnDrawThemeBackground = (PDTB)GetProcAddress(hUxTheme, "DrawThemeBackground"); - pfnCloseThemeData = (PCTD)GetProcAddress(hUxTheme, "CloseThemeData"); - pfnDrawThemeText = (PDTT)GetProcAddress(hUxTheme, "DrawThemeText"); - - MyEnableThemeDialogTexture = (BOOL (WINAPI *)(HANDLE, DWORD))GetProcAddress(hUxTheme, "EnableThemeDialogTexture"); - if(pfnIsThemeActive != 0 && pfnOpenThemeData != 0 && pfnDrawThemeBackground != 0 && pfnCloseThemeData != 0 && pfnDrawThemeText != 0) { - return 1; - } - return 0; -} - -/* - * unload uxtheme.dll - */ - -int FreeVSApi() -{ - if(hUxTheme != 0) - FreeLibrary(hUxTheme); - return 0; -} - -DWORD MirVer; - //======================== // MirandaPluginInfo //======================== PLUGININFOEX pluginInfo={ sizeof(PLUGININFOEX), +#ifdef WIN64 + "Nudge (x64)", +#else "Nudge", +#endif PLUGIN_MAKE_VERSION(0,0,1,19), "Plugin to shake the clist and chat window", "Tweety/GouZ", @@ -89,7 +36,11 @@ PLUGININFOEX pluginInfo={ "http://addons.miranda-im.org/details.php?action=viewfile&id=2708", // www UNICODE_AWARE, 0, //doesn't replace anything built-in +#ifdef WIN64 + { 0xf6f60ea4, 0xfa8e, 0x4d17, { 0xb2, 0x9d, 0xff, 0x74, 0x1a, 0x3c, 0xc, 0x51 } } // {F6F60EA4-FA8E-4D17-B29D-FF741A3C0C51} +#else { 0x9ceee701, 0x35cd, 0x4ff7, { 0x8c, 0xc4, 0xef, 0x7d, 0xd2, 0xac, 0x53, 0x5c } } // {9CEEE701-35CD-4ff7-8CC4-EF7DD2AC535C} +#endif }; @@ -123,8 +74,7 @@ void RegisterToUpdate(void) INT_PTR NudgeShowMenu(WPARAM wParam,LPARAM lParam) { - NudgeElementList *n; - for(n = NudgeList;n != NULL; n = n->next) + for(NudgeElementList *n = NudgeList;n != NULL; n = n->next) { if(!strcmp((char *) wParam,n->item.ProtocolName)) { @@ -147,8 +97,7 @@ INT_PTR NudgeSend(WPARAM wParam,LPARAM lParam) //MessageBox(NULL,msg,NULL,0); if(GlobalNudge.useByProtocol) { - NudgeElementList *n; - for(n = NudgeList;n != NULL; n = n->next) + for(NudgeElementList *n = NudgeList;n != NULL; n = n->next) { if(!strcmp(protoName,n->item.ProtocolName)) { @@ -172,10 +121,8 @@ INT_PTR NudgeSend(WPARAM wParam,LPARAM lParam) { if(!strcmp(protoName,n->item.ProtocolName)) { - if(n->item.showPopup) - Nudge_ShowPopup(n->item, (HANDLE) wParam, n->item.senText); - if(n->item.showEvent) - Nudge_SentEvent(n->item, (HANDLE) wParam); + //if(n->item.showPopup) + // Nudge_ShowPopup(n->item, (HANDLE) wParam, n->item.senText); if(n->item.showStatus) Nudge_SentStatus(n->item, (HANDLE) wParam); } @@ -183,22 +130,23 @@ INT_PTR NudgeSend(WPARAM wParam,LPARAM lParam) } else { - if(DefaultNudge.showPopup) - Nudge_ShowPopup(DefaultNudge, (HANDLE) wParam, DefaultNudge.senText); - if(DefaultNudge.showEvent) - Nudge_SentEvent(DefaultNudge, (HANDLE) wParam); + //if(DefaultNudge.showPopup) + // Nudge_ShowPopup(DefaultNudge, (HANDLE) wParam, DefaultNudge.senText); if(DefaultNudge.showStatus) Nudge_SentStatus(DefaultNudge, (HANDLE) wParam); } - char servicefunction[ 100 ]; - sprintf(servicefunction, "%s/SendNudge", protoName); - - CallService(servicefunction, wParam, lParam); - + CallProtoService(protoName,"/SendNudge",wParam,lParam); return 0; } +void OpenContactList() +{ + HWND hWnd = (HWND) CallService(MS_CLUI_GETHWND,0,0); + ShowWindow(hWnd, SW_RESTORE); + ShowWindow(hWnd, SW_SHOW); +} + int NudgeRecieved(WPARAM wParam,LPARAM lParam) { @@ -217,14 +165,16 @@ int NudgeRecieved(WPARAM wParam,LPARAM lParam) if(GlobalNudge.useByProtocol) { - NudgeElementList *n; - for(n = NudgeList;n != NULL; n = n->next) + for(NudgeElementList *n = NudgeList;n != NULL; n = n->next) { if(!strcmp(protoName,n->item.ProtocolName)) { if(n->item.enabled) { + if(n->item.useIgnoreSettings && CallService(MS_IGNORE_ISIGNORED,wParam,IGNOREEVENT_USERONLINE)) + return 0; + DWORD Status = CallProtoService(protoName,PS_GETSTATUS,0,0); if( ((n->item.statusFlags & NUDGE_ACC_ST0) && (Status<=ID_STATUS_OFFLINE)) || @@ -242,8 +192,12 @@ int NudgeRecieved(WPARAM wParam,LPARAM lParam) { if(n->item.showPopup) Nudge_ShowPopup(n->item, (HANDLE) wParam, n->item.recText); + if(n->item.openContactList) + OpenContactList(); if(n->item.shakeClist) ShakeClist(wParam,lParam); + if(n->item.openMessageWindow) + CallService(MS_MSG_SENDMESSAGET,wParam,0); if(n->item.shakeChat) ShakeChat(wParam,lParam); if(n->item.autoResend) @@ -254,13 +208,12 @@ int NudgeRecieved(WPARAM wParam,LPARAM lParam) } if(diff2 >= GlobalNudge.recvTimeSec) { - if(n->item.showEvent) - Nudge_ShowEvent(n->item, (HANDLE) wParam, nudgeSentTimestamp); if(n->item.showStatus) Nudge_ShowStatus(n->item, (HANDLE) wParam, nudgeSentTimestamp); } } + break; } } } @@ -268,6 +221,8 @@ int NudgeRecieved(WPARAM wParam,LPARAM lParam) { if(DefaultNudge.enabled) { + if(DefaultNudge.useIgnoreSettings && CallService(MS_IGNORE_ISIGNORED,wParam,IGNOREEVENT_USERONLINE)) + return 0; DWORD Status = CallService(MS_CLIST_GETSTATUSMODE,0,0); if( ((DefaultNudge.statusFlags & NUDGE_ACC_ST0) && (Status<=ID_STATUS_OFFLINE)) || ((DefaultNudge.statusFlags & NUDGE_ACC_ST1) && (Status==ID_STATUS_ONLINE)) || @@ -284,8 +239,12 @@ int NudgeRecieved(WPARAM wParam,LPARAM lParam) { if(DefaultNudge.showPopup) Nudge_ShowPopup(DefaultNudge, (HANDLE) wParam, DefaultNudge.recText); + if(DefaultNudge.openContactList) + OpenContactList(); if(DefaultNudge.shakeClist) ShakeClist(wParam,lParam); + if(DefaultNudge.openMessageWindow) + CallService(MS_MSG_SENDMESSAGET,wParam,0); if(DefaultNudge.shakeChat) ShakeChat(wParam,lParam); if(DefaultNudge.autoResend) @@ -296,8 +255,6 @@ int NudgeRecieved(WPARAM wParam,LPARAM lParam) } if(diff2 >= GlobalNudge.recvTimeSec) { - if(DefaultNudge.showEvent) - Nudge_ShowEvent(DefaultNudge, (HANDLE) wParam, nudgeSentTimestamp); if(DefaultNudge.showStatus) Nudge_ShowStatus(DefaultNudge, (HANDLE) wParam, nudgeSentTimestamp); } @@ -314,7 +271,11 @@ extern "C" BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvRese extern "C" __declspec(dllexport) PLUGININFOEX* MirandaPluginInfoEx(DWORD mirandaVersion) { - MirVer = mirandaVersion; + if(mirandaVersiontype == PROTOTYPE_PROTOCOL) - { - sprintf(str,"%s/Nudge",ppProtocolDescriptors[i]->szName); - NudgeEvent = HookEvent(str, NudgeRecieved); - if(NudgeEvent != NULL) - Nudge_AddElement(ppProtocolDescriptors[i]->szName, NudgeEvent); - - NudgeEvent = NULL; - } + Nudge_AddAccount(ppProtocolDescriptors[i]); } } @@ -495,69 +439,19 @@ void LoadIcons(void) { SKINICONDESC sid = {0}; TCHAR szFilename[MAX_PATH]; - char iconName[MAXMODULELABELLENGTH + 10]; - char iconDesc[MAXMODULELABELLENGTH + 10]; GetModuleFileName(hInst,szFilename,MAX_PATH); sid.cbSize = SKINICONDESC_SIZE; - sid.flags = SIDF_PATH_TCHAR; - sid.pszSection = "Nudge"; + sid.flags = SIDF_ALL_TCHAR; + sid.ptszSection = LPGENT("Nudge"); sid.ptszDefaultFile = szFilename; - for(NudgeElementList *n = NudgeList;n != NULL; n = n->next) - { - sprintf(iconName,"Nudge_%s",n->item.ProtocolName); - sid.pszName = iconName; - sprintf(iconDesc,"%s %s",Translate("Nudge for"),n->item.ProtocolName); - sid.pszDescription = iconDesc; - sid.iDefaultIndex = -IDI_NUDGE; - sid.hDefaultIcon = LoadIcon(hInst,MAKEINTRESOURCE(IDI_NUDGE)); - CallService(MS_SKIN2_ADDICON, 0, (LPARAM)&sid); - - n->item.hIcon = (HICON) CallService(MS_SKIN2_GETICON, 0, (LPARAM) iconName); - } - - sprintf(iconName,"Nudge_Default"); - sid.pszName = iconName; - sprintf(iconDesc,Translate("Nudge as Default")); - sid.pszDescription = iconDesc; + sid.pszName = "Nudge_Default"; + sid.ptszDescription = LPGENT("Nudge as Default"); sid.iDefaultIndex = -IDI_NUDGE; sid.hDefaultIcon = LoadIcon(hInst,MAKEINTRESOURCE(IDI_NUDGE)); g_hIcon = (HANDLE)CallService(MS_SKIN2_ADDICON, 0, (LPARAM)&sid); - - DefaultNudge.hIcon = (HICON) CallService(MS_SKIN2_GETICON, 0, (LPARAM) iconName); } - else // Do not forget people not using IcoLib!!!! - { - for(NudgeElementList *n = NudgeList;n != NULL; n = n->next) - { - n->item.hIcon = (HICON)CallProtoService(n->item.ProtocolName, PS_LOADICON, PLI_PROTOCOL|PLIF_SMALL, 0); - if(n->item.hIcon == NULL || (int)n->item.hIcon == CALLSERVICE_NOTFOUND) - n->item.hIcon = (HICON)CallProtoService(n->item.ProtocolName, PS_LOADICON, PLI_PROTOCOL, 0); - if(n->item.hIcon == NULL || (int)n->item.hIcon == CALLSERVICE_NOTFOUND) - n->item.hIcon = LoadIcon(hInst, MAKEINTRESOURCE(IDI_NUDGE)); - } - DefaultNudge.hIcon = LoadIcon(hInst, MAKEINTRESOURCE(IDI_NUDGE)); - } -} - -static int LoadChangedIcons(WPARAM wParam, LPARAM lParam) -{ - //Load icons - if(ServiceExists(MS_SKIN2_ADDICON)) - { - NudgeElementList *n; - char iconName[MAXMODULELABELLENGTH + 10]; - - for(n = NudgeList;n != NULL; n = n->next) - { - sprintf(iconName,"Nudge_%s",n->item.ProtocolName); - n->item.hIcon = (HICON) CallService(MS_SKIN2_GETICON, 0, (LPARAM) iconName); - } - sprintf(iconName,"Nudge_Default"); - DefaultNudge.hIcon = (HICON) CallService(MS_SKIN2_GETICON, 0, (LPARAM) iconName); - } - return 0; } // Nudge support @@ -577,7 +471,7 @@ static int TabsrmmButtonInit(WPARAM wParam, LPARAM lParam) bbd.cbSize = sizeof(BBButton); bbd.pszModuleName = "Nudge"; - bbd.ptszTooltip = LPGENT("Nudge"); + bbd.ptszTooltip = LPGENT("Send Nudge"); bbd.dwDefPos = 300; bbd.bbbFlags = BBBF_ISIMBUTTON|BBBF_ISLSIDEBUTTON|BBBF_CANBEHIDDEN; bbd.hIcon = g_hIcon; @@ -591,13 +485,8 @@ static int TabsrmmButtonInit(WPARAM wParam, LPARAM lParam) void HideNudgeButton(HANDLE hContact) { char str[MAXMODULELABELLENGTH + 12] = {0}; - CONTACTINFO ci = { 0 }; - - ci.cbSize = sizeof(ci); - ci.hContact = hContact; - - CallService(MS_CONTACT_GETCONTACTINFO, 0, (LPARAM) & ci); - mir_snprintf(str,MAXMODULELABELLENGTH + 12,"%s/SendNudge", ci.szProto); + char *szProto = (char*) CallService(MS_PROTO_GETCONTACTBASEPROTO,(WPARAM)hContact,0); + mir_snprintf(str,MAXMODULELABELLENGTH + 12,"%s/SendNudge", szProto); if (!ServiceExists(str)) { @@ -623,11 +512,15 @@ static int ContactWindowOpen(WPARAM wparam,LPARAM lParam) int ModulesLoaded(WPARAM,LPARAM) { +#ifndef WIN64 RegisterToUpdate(); +#endif RegisterToTrigger(); RegisterToDbeditorpp(); LoadProtocols(); LoadIcons(); + LoadPopupClass(); + g_hEventToolbarLoaded = HookEvent(ME_MSG_TOOLBARLOADED, TabsrmmButtonInit); if (g_hEventToolbarLoaded) { @@ -637,19 +530,40 @@ int ModulesLoaded(WPARAM,LPARAM) return 0; } +int AccListChanged(WPARAM wParam,LPARAM lParam) +{ + PROTOACCOUNT *proto = (PROTOACCOUNT*) wParam; + if (proto==NULL) + return 0; + + switch (lParam) + { + case PRAC_ADDED: + Nudge_AddAccount(proto); + break; + } + return 0; +} + HANDLE hShakeClist=NULL,hShakeChat=NULL,hNudgeSend=NULL,hNudgeShowMenu=NULL; extern "C" int __declspec(dllexport) Load(PLUGINLINK *link) { pluginLink = link; - mir_getMMI(&mmi); + if(mir_getMMI(&mmi)) + { + MessageBox(NULL,_T("Cannot retrieve Miranda Memory Manager Interface.\nYou need to update Miranda IM to the latest version."),_T("Nudge Plugin"),MB_OK); + return 1; + } + if(mir_getUTFI(&utfi)) + { + MessageBox(NULL,_T("Cannot retrieve Miranda UTF8 Interface.\nYou need to update Miranda IM to the latest version."),_T("Nudge Plugin"),MB_OK); + return 1; + } mir_getLP(&pluginInfo); - NudgeList = NULL; + g_hEventModulesLoaded = HookEvent(ME_SYSTEM_MODULESLOADED,ModulesLoaded); - if(ServiceExists(MS_SKIN2_ADDICON)) - g_hEventIconsChanged = HookEvent(ME_SKIN2_ICONSCHANGED, LoadChangedIcons); - - InitOptions(); - InitVSApi(); + g_hEventAccountsChanged = HookEvent(ME_PROTO_ACCLISTCHANGED,AccListChanged); + hEventOptionsInitialize = HookEvent(ME_OPT_INITIALISE, NudgeOptInit); //Create function for plugins hShakeClist=CreateServiceFunction(MS_SHAKE_CLIST,ShakeClist); @@ -665,17 +579,15 @@ extern "C" int __declspec(dllexport) Unload(void) if(g_hEventDbWindowEvent) UnhookEvent(g_hEventButtonPressed); if(g_hEventDbWindowEvent) UnhookEvent(g_hEventDbWindowEvent); - if(g_hEventModulesLoaded) UnhookEvent(g_hEventModulesLoaded); - if(g_hEventIconsChanged) UnhookEvent(g_hEventIconsChanged); + UnhookEvent(g_hEventModulesLoaded); + UnhookEvent(g_hEventAccountsChanged); + UnhookEvent(hEventOptionsInitialize); DestroyServiceFunction(hShakeClist); DestroyServiceFunction(hShakeChat); DestroyServiceFunction(hNudgeSend); DestroyServiceFunction(hNudgeShowMenu); - UninitOptions(); - - FreeVSApi(); NudgeElementList* p = NudgeList; while ( p != NULL ) { @@ -717,12 +629,29 @@ LRESULT CALLBACK NudgePopUpProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam) return DefWindowProc(hWnd,msg,wParam,lParam); } +void LoadPopupClass() +{ + if(ServiceExists(MS_POPUP_REGISTERCLASS)) + { + POPUPCLASS ppc = {0}; + ppc.cbSize = sizeof(ppc); + ppc.flags = PCF_TCHAR; + ppc.pszName = "nudge"; + ppc.ptszDescription = LPGENT("Show Nudge"); + ppc.hIcon = (HICON) CallService(MS_SKIN2_GETICONBYHANDLE,0,(LPARAM)g_hIcon); + ppc.colorBack = NULL; + ppc.colorText = NULL; + ppc.iSeconds = 0; + ppc.PluginWindowProc = NudgePopUpProc; + CallService(MS_POPUP_REGISTERCLASS,0,(LPARAM)&ppc); + } +} + int Preview() { + HANDLE hContact = (HANDLE) CallService(MS_DB_CONTACT_FINDFIRST,0,0); if( GlobalNudge.useByProtocol ) { - HANDLE hContact = (HANDLE) CallService(MS_DB_CONTACT_FINDFIRST,0,0); - for(NudgeElementList *n = NudgeList;n != NULL; n = n->next) { if(n->item.enabled) @@ -730,13 +659,14 @@ int Preview() SkinPlaySound( n->item.NudgeSoundname ); if(n->item.showPopup) Nudge_ShowPopup(n->item, hContact, n->item.recText); + if(n->item.openContactList) + OpenContactList(); if(n->item.shakeClist) ShakeClist(0,0); - if(n->item.shakeChat) - { + if(n->item.openMessageWindow) CallService(MS_MSG_SENDMESSAGET,(WPARAM)hContact,NULL); + if(n->item.shakeChat) ShakeChat((WPARAM)hContact,(LPARAM)time(NULL)); - } } } } @@ -744,43 +674,47 @@ int Preview() { if(DefaultNudge.enabled) { - HANDLE hContact = (HANDLE) CallService(MS_DB_CONTACT_FINDFIRST,0,0); - SkinPlaySound( DefaultNudge.NudgeSoundname ); if(DefaultNudge.showPopup) Nudge_ShowPopup(DefaultNudge, hContact, DefaultNudge.recText); + if(DefaultNudge.openContactList) + OpenContactList(); if(DefaultNudge.shakeClist) ShakeClist(0,0); - if(DefaultNudge.shakeChat) - { + if(DefaultNudge.openMessageWindow) CallService(MS_MSG_SENDMESSAGET,(WPARAM)hContact,NULL); + if(DefaultNudge.shakeChat) ShakeChat((WPARAM)hContact,(LPARAM)time(NULL)); - } } } return 0; } -void Nudge_ShowPopup(CNudgeElement n, HANDLE hCont, TCHAR * Message) +void Nudge_ShowPopup(CNudgeElement n, HANDLE hContact, TCHAR * Message) { - HANDLE hContact; - - hContact = Nudge_GethContact(hCont); + hContact = Nudge_GethContact(hContact); TCHAR * lpzContactName = (TCHAR*)CallService(MS_CLIST_GETCONTACTDISPLAYNAME,(WPARAM)hContact,GCDNF_TCHAR); - - if(ServiceExists(MS_POPUP_ADDPOPUPT)) + + if(ServiceExists(MS_POPUP_ADDPOPUPCLASS)) { - POPUPDATAT NudgePopUp; - - if(hContact == NULL) //no contact at all - NudgePopUp.lchContact = (HANDLE) &n; + POPUPDATACLASS NudgePopUp = {0}; + NudgePopUp.cbSize = sizeof(NudgePopUp); + NudgePopUp.hContact = hContact; + NudgePopUp.ptszText = Message; + NudgePopUp.ptszTitle = lpzContactName; + NudgePopUp.pszClassName = "nudge"; + CallService(MS_POPUP_ADDPOPUPCLASS, 0, (LPARAM)&NudgePopUp); + } + else if(ServiceExists(MS_POPUP_ADDPOPUPT)) + { + POPUPDATAT NudgePopUp = {0}; NudgePopUp.lchContact = hContact; - NudgePopUp.lchIcon = n.hIcon; - NudgePopUp.colorBack = ! n.popupWindowColor ? n.popupBackColor : GetSysColor(COLOR_BTNFACE); - NudgePopUp.colorText = ! n.popupWindowColor ? n.popupTextColor : GetSysColor(COLOR_WINDOWTEXT); - NudgePopUp.iSeconds = n.popupTimeSec; - NudgePopUp.PluginWindowProc = (WNDPROC)NudgePopUpProc; + NudgePopUp.lchIcon = (HICON) CallService(MS_SKIN2_GETICON,0,(LPARAM) n.hIcoLibItem ); + NudgePopUp.colorBack = 0; + NudgePopUp.colorText = 0; + NudgePopUp.iSeconds = 0; + NudgePopUp.PluginWindowProc = NudgePopUpProc; NudgePopUp.PluginData = (void *)1; //lstrcpy(NudgePopUp.lpzText, Translate(Message)); @@ -796,220 +730,149 @@ void Nudge_ShowPopup(CNudgeElement n, HANDLE hCont, TCHAR * Message) } } -BOOL CheckMsgWnd(HANDLE hContact) +void Nudge_SentStatus(CNudgeElement n, HANDLE hContact) { - if (ServiceExists(MS_MSG_GETWINDOWDATA)) // use the new Window API - { - MessageWindowData mwd; - MessageWindowInputData mwid; - - mwid.cbSize = sizeof(MessageWindowInputData); - mwid.hContact = Nudge_GethContact(hContact); - mwid.uFlags = MSG_WINDOW_UFLAG_MSG_BOTH; - mwd.cbSize = sizeof(MessageWindowData); - mwd.hContact = Nudge_GethContact(hContact); - if (!CallService(MS_MSG_GETWINDOWDATA, (WPARAM)&mwid, (LPARAM)&mwd) && mwd.hwndWindow) - return TRUE; - } - - return FALSE; -} - -void Nudge_SentEvent(CNudgeElement n, HANDLE hCont) -{ - DBEVENTINFO NudgeEvent = { 0 };; - HANDLE hContact; - HANDLE hMetaContact = NULL; - - hContact = hCont; + DBEVENTINFO NudgeEvent = { 0 }; NudgeEvent.cbSize = sizeof(NudgeEvent); NudgeEvent.szModule = (char*)CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM)hContact, 0); +#ifdef _UNICODE + char *buff = mir_utf8encodeT(n.senText); + NudgeEvent.flags = DBEF_SENT | DBEF_UTF; +#else + char *buff = mir_strdup(n.senText); NudgeEvent.flags = DBEF_SENT; - NudgeEvent.timestamp = ( DWORD )time(NULL); - NudgeEvent.eventType = EVENTTYPE_MESSAGE; - #if defined( _UNICODE ) - char buff[TEXT_LEN]; - WideCharToMultiByte(code_page, 0, n.senText, -1, buff, TEXT_LEN, 0, 0); - buff[TEXT_LEN] = 0; - NudgeEvent.cbBlob = (DWORD)strlen(buff) + 1; - NudgeEvent.pBlob = ( PBYTE ) buff; - #else - NudgeEvent.cbBlob = _tcsclen(n.senText) + 1; - NudgeEvent.pBlob = ( PBYTE ) n.senText; - #endif - - if(ServiceExists(MS_MC_GETMETACONTACT)) //try to retrieve the metacontact if some - hMetaContact = (HANDLE) CallService( MS_MC_GETMETACONTACT, (WPARAM)hContact, 0 ); - - if(hMetaContact != NULL) //metacontact - CallService(MS_DB_EVENT_ADD,(WPARAM)hMetaContact,(LPARAM)&NudgeEvent); - - CallService(MS_DB_EVENT_ADD,(WPARAM)hContact,(LPARAM)&NudgeEvent); -} - -void Nudge_SentStatus(CNudgeElement n, HANDLE hCont) -{ - DBEVENTINFO NudgeEvent = { 0 };; - HANDLE hContact; - HANDLE hMetaContact = NULL; - - hContact = hCont; - - NudgeEvent.cbSize = sizeof(NudgeEvent); - NudgeEvent.szModule = (char*)CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM)hContact, 0); - NudgeEvent.flags = 0; +#endif NudgeEvent.timestamp = ( DWORD )time(NULL); NudgeEvent.eventType = EVENTTYPE_STATUSCHANGE; - #if defined( _UNICODE ) - char buff[TEXT_LEN]; - WideCharToMultiByte(code_page, 0, n.senText, -1, buff, TEXT_LEN, 0, 0); - buff[TEXT_LEN] = 0; - NudgeEvent.cbBlob = (DWORD)strlen(buff) + 1; - NudgeEvent.pBlob = ( PBYTE ) buff; - #else - NudgeEvent.cbBlob = _tcsclen(n.senText) + 1; - NudgeEvent.pBlob = ( PBYTE ) n.senText; - #endif - - if(ServiceExists(MS_MC_GETMETACONTACT)) //try to retrieve the metacontact if some - hMetaContact = (HANDLE) CallService( MS_MC_GETMETACONTACT, (WPARAM)hContact, 0 ); + NudgeEvent.cbBlob = (DWORD)strlen(buff) + 1; + NudgeEvent.pBlob = ( PBYTE ) buff; + + INT_PTR res = CallService( MS_MC_GETMETACONTACT, (WPARAM)hContact, 0 ); //try to retrieve the metacontact if some + if(res != CALLSERVICE_NOTFOUND) + { + HANDLE hMetaContact = (HANDLE) res; + if(hMetaContact != NULL) //metacontact + CallService(MS_DB_EVENT_ADD,(WPARAM)hMetaContact,(LPARAM)&NudgeEvent); + } - if(hMetaContact != NULL) //metacontact - CallService(MS_DB_EVENT_ADD,(WPARAM)hMetaContact,(LPARAM)&NudgeEvent); CallService(MS_DB_EVENT_ADD,(WPARAM)hContact,(LPARAM)&NudgeEvent); } -void Nudge_ShowStatus(CNudgeElement n, HANDLE hCont, DWORD timestamp) +void Nudge_ShowStatus(CNudgeElement n, HANDLE hContact, DWORD timestamp) { - DBEVENTINFO NudgeEvent = { 0 };; - HANDLE hContact; - HANDLE hMetaContact = NULL; - - hContact = hCont; + DBEVENTINFO NudgeEvent = { 0 }; NudgeEvent.cbSize = sizeof(NudgeEvent); NudgeEvent.szModule = (char*)CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM)hContact, 0); +#ifdef _UNICODE + char *buff = mir_utf8encodeT(n.recText); + NudgeEvent.flags = DBEF_UTF; +#else + char *buff = mir_strdup(n.recText); NudgeEvent.flags = 0; +#endif NudgeEvent.timestamp = timestamp; NudgeEvent.eventType = EVENTTYPE_STATUSCHANGE; - #if defined( _UNICODE ) - char buff[TEXT_LEN]; - WideCharToMultiByte(code_page, 0, n.recText, -1, buff, TEXT_LEN, 0, 0); - buff[TEXT_LEN] = 0; - NudgeEvent.cbBlob = (DWORD)strlen(buff) + 1; - NudgeEvent.pBlob = ( PBYTE ) buff; - #else - NudgeEvent.cbBlob = _tcsclen(n.recText) + 1; - NudgeEvent.pBlob = ( PBYTE ) n.recText; - #endif - - if(ServiceExists(MS_MC_GETMETACONTACT)) //try to retrieve the metacontact if some - hMetaContact = (HANDLE) CallService( MS_MC_GETMETACONTACT, (WPARAM)hContact, 0 ); + NudgeEvent.cbBlob = (DWORD)strlen(buff) + 1; + NudgeEvent.pBlob = ( PBYTE ) buff; - if(hMetaContact != NULL) //metacontact + + INT_PTR res = CallService( MS_MC_GETMETACONTACT, (WPARAM)hContact, 0 ); //try to retrieve the metacontact if some + if(res != CALLSERVICE_NOTFOUND) { - CallService(MS_DB_EVENT_ADD,(WPARAM)hMetaContact,(LPARAM)&NudgeEvent); - NudgeEvent.flags = DBEF_READ; + HANDLE hMetaContact = (HANDLE) res; + if(hMetaContact != NULL) //metacontact + { + CallService(MS_DB_EVENT_ADD,(WPARAM)hMetaContact,(LPARAM)&NudgeEvent); + NudgeEvent.flags |= DBEF_READ; + } } CallService(MS_DB_EVENT_ADD,(WPARAM)hContact,(LPARAM)&NudgeEvent); } -void Nudge_ShowEvent(CNudgeElement n, HANDLE hCont, DWORD timestamp) +HANDLE Nudge_GethContact(HANDLE hContact) { - DBEVENTINFO NudgeEvent = { 0 }; - HANDLE hContact; - HANDLE hMetaContact = NULL; - - hContact = hCont; - - NudgeEvent.cbSize = sizeof(NudgeEvent); - NudgeEvent.szModule = (char*)CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM)hContact, 0); - NudgeEvent.flags = CheckMsgWnd(hContact) ? DBEF_READ : 0; - NudgeEvent.timestamp = timestamp; - NudgeEvent.eventType = EVENTTYPE_MESSAGE; - #if defined( _UNICODE ) - char buff[TEXT_LEN]; - WideCharToMultiByte(code_page, 0, n.recText, -1, buff, TEXT_LEN, 0, 0); - buff[TEXT_LEN] = 0; - NudgeEvent.cbBlob = (DWORD)strlen(buff) + 1; - NudgeEvent.pBlob = ( PBYTE ) buff; - #else - NudgeEvent.cbBlob = _tcsclen(n.recText) + 1; - NudgeEvent.pBlob = ( PBYTE ) n.recText; - #endif - - - if(ServiceExists(MS_MC_GETMETACONTACT)) //try to retrieve the metacontact if some - hMetaContact = (HANDLE) CallService( MS_MC_GETMETACONTACT, (WPARAM)hContact, 0 ); - - if(hMetaContact != NULL) //metacontact + INT_PTR res = CallService( MS_MC_GETMETACONTACT, (WPARAM)hContact, 0 ); + if(res!=CALLSERVICE_NOTFOUND) { - CallService(MS_DB_EVENT_ADD,(WPARAM)hMetaContact,(LPARAM)&NudgeEvent); - NudgeEvent.flags = DBEF_READ; + HANDLE hMetaContact = (HANDLE) res; + if(hMetaContact!=NULL) + return hMetaContact; } - CallService(MS_DB_EVENT_ADD,(WPARAM)hContact,(LPARAM)&NudgeEvent); + return hContact; } -int Nudge_AddElement(char *protoName, HANDLE hevent) +void Nudge_AddAccount(PROTOACCOUNT *proto) { - nProtocol ++; - //Add contact menu entry - CLISTMENUITEM mi; - - memset( &mi, 0, sizeof( mi )); - mi.popupPosition = 500085000; - mi.pszContactOwner = protoName; - mi.pszPopupName = protoName; - mi.cbSize = sizeof( mi ); - mi.flags = (CMIF_NOTOFFLINE & CMIF_HIDDEN) | CMIF_TCHAR; - mi.position = -500050004; - mi.hIcon = LoadIcon( hInst, MAKEINTRESOURCE( IDI_NUDGE )); - mi.ptszName = LPGENT( "Send &Nudge" ); - mi.pszService = MS_NUDGE_SEND; - + char str[MAXMODULELABELLENGTH + 10]; + mir_snprintf(str,sizeof(str),"%s/Nudge",proto->szModuleName); + HANDLE hevent = HookEvent(str, NudgeRecieved); + if(hevent == NULL) + return; + nProtocol ++; + //Add a specific sound per protocol - char nudgesoundtemp[ 512 ]; - NudgeElementList *newNudge; + NudgeElementList *newNudge = new NudgeElementList; //newNudge = (NudgeElementList*) malloc(sizeof(NudgeElementList)); - newNudge = new NudgeElementList; - strcpy( nudgesoundtemp, protoName ); - strcat( nudgesoundtemp, ": " ); - strcat( nudgesoundtemp, Translate( "Nudge" )); - strncpy( newNudge->item.NudgeSoundname, nudgesoundtemp, sizeof(newNudge->item.NudgeSoundname) ); + mir_snprintf(newNudge->item.NudgeSoundname,sizeof(newNudge->item.NudgeSoundname),"%s: Nudge",proto->szModuleName); - strcpy( newNudge->item.ProtocolName, protoName ); - - newNudge->item.hContactMenu = (HANDLE) CallService( MS_CLIST_ADDCONTACTMENUITEM, 0, ( LPARAM )&mi ); + strcpy( newNudge->item.ProtocolName, proto->szProtoName ); + _tcscpy(newNudge->item.AccountName, proto->tszAccountName ); newNudge->item.Load(); newNudge->item.hEvent = hevent; - - SkinAddNewSoundEx( newNudge->item.NudgeSoundname, LPGEN("Nudge") , newNudge->item.NudgeSoundname); + + TCHAR soundDesc[MAXMODULELABELLENGTH + 10]; + mir_sntprintf(soundDesc,sizeof(soundDesc),_T("Nudge for %s"),proto->tszAccountName); + SkinAddNewSoundExT( newNudge->item.NudgeSoundname, LPGENT("Nudge") , soundDesc); newNudge->next = NudgeList; NudgeList = newNudge; - - return 0; -} - -HANDLE Nudge_GethContact(HANDLE hCont) -{ - HANDLE hContact; - hContact = hCont; - - if(ServiceExists(MS_MC_GETMETACONTACT)) //try to retrieve the metacontact if some - hContact = (HANDLE) CallService( MS_MC_GETMETACONTACT, (WPARAM)hContact, 0 ); - if(hContact == NULL) //no metacontact - hContact = hCont; + if(ServiceExists(MS_SKIN2_ADDICON)) + { + SKINICONDESC sid = {0}; + TCHAR szFilename[MAX_PATH]; + char iconName[MAXMODULELABELLENGTH + 10]; + TCHAR iconDesc[MAXMODULELABELLENGTH + 10]; + GetModuleFileName(hInst,szFilename,MAX_PATH); + + sid.cbSize = SKINICONDESC_SIZE; + sid.flags = SIDF_ALL_TCHAR; + sid.ptszSection = LPGENT("Nudge"); + sid.ptszDefaultFile = szFilename; + mir_snprintf(iconName,sizeof(iconName),"Nudge_%s",proto->szModuleName); + sid.pszName = iconName; + mir_sntprintf(iconDesc,sizeof(iconDesc),TranslateT("Nudge for %s"),proto->tszAccountName); + sid.ptszDescription = iconDesc; + sid.iDefaultIndex = -IDI_NUDGE; + sid.hDefaultIcon = LoadIcon(hInst,MAKEINTRESOURCE(IDI_NUDGE)); + newNudge->item.hIcoLibItem = (HANDLE) CallService(MS_SKIN2_ADDICON, 0, (LPARAM)&sid); + } - return hContact; + //Add contact menu entry + if(ServiceExists(MS_CLIST_ADDCONTACTMENUITEM)) + { + //Add contact menu entry + CLISTMENUITEM mi = {0}; + mi.cbSize = sizeof(mi); + + mi.popupPosition = 500085000; + mi.pszContactOwner = proto->szModuleName; + mi.pszPopupName = proto->szModuleName; + mi.flags = CMIF_NOTOFFLINE | CMIF_TCHAR | CMIF_ICONFROMICOLIB; + mi.position = -500050004; + mi.icolibItem = newNudge->item.hIcoLibItem; + mi.ptszName = LPGENT( "Send &Nudge" ); + mi.pszService = MS_NUDGE_SEND; + newNudge->item.hContactMenu = (HANDLE) CallService( MS_CLIST_ADDCONTACTMENUITEM, 0, ( LPARAM )&mi ); + } } void AutoResendNudge(void *wParam) diff --git a/Nudge/main.h b/Nudge/main.h index 74cbc9a..556ee00 100644 --- a/Nudge/main.h +++ b/Nudge/main.h @@ -1,60 +1,10 @@ #include "nudge.h" -/* -* -****************************/ -void RegisterToUpdate(void); - -/* -* -****************************/ -void RegisterToTrigger(void); - -/* -* -****************************/ -void LoadProtocols(void); - -/* -* -****************************/ -void LoadIcons(void); - -/* -* -****************************/ -static int LoadChangedIcons(WPARAM, LPARAM); - -/* -* -****************************/ -DWORD WINAPI ShakeClistWindow(LPVOID); - -/* -* -****************************/ -DWORD WINAPI ShakeChatWindow(LPVOID); - -/* -* -****************************/ -int ModulesLoaded(WPARAM,LPARAM); - /* * ****************************/ void Nudge_ShowPopup(CNudgeElement, HANDLE, TCHAR *); -/* -* -****************************/ -void Nudge_ShowEvent(CNudgeElement, HANDLE, DWORD timestamp); - -/* -* -****************************/ -void Nudge_SentEvent(CNudgeElement, HANDLE); - /* * ****************************/ @@ -68,29 +18,14 @@ void Nudge_SentStatus(CNudgeElement, HANDLE); /* * ****************************/ -int Nudge_AddElement(char*, HANDLE); - -/* -* -****************************/ -int FreeVSApi(); - -/* -* -****************************/ -int InitVSApi(); - -/* -* -****************************/ -int TriggerActionRecv( DWORD actionID, REPORTINFO *ri); +void Nudge_AddAccount(PROTOACCOUNT *proto); /* * ****************************/ -int TriggerActionSend( DWORD actionID, REPORTINFO *ri); +void LoadPopupClass(); /* * ****************************/ -void AutoResendNudge(void *wParam) ; \ No newline at end of file +void AutoResendNudge(void *wParam) ; diff --git a/Nudge/nudge.cpp b/Nudge/nudge.cpp index 9455ec6..0d603bb 100644 --- a/Nudge/nudge.cpp +++ b/Nudge/nudge.cpp @@ -43,16 +43,12 @@ int CNudgeElement::ShowContactMenu(bool show) void CNudgeElement::Save(void) { char SectionName[512]; - mir_snprintf(SectionName,512,"%s-popupBackColor", ProtocolName); - DBWriteContactSettingDword(NULL, "Nudge", SectionName, this->popupBackColor); - mir_snprintf(SectionName,512,"%s-popupTextColor", ProtocolName); - DBWriteContactSettingDword(NULL, "Nudge", SectionName, this->popupTextColor); - mir_snprintf(SectionName,512,"%s-popupTimeSec", ProtocolName); - DBWriteContactSettingDword(NULL, "Nudge", SectionName, this->popupTimeSec); - mir_snprintf(SectionName,512,"%s-popupWindowColor", ProtocolName); - DBWriteContactSettingByte(NULL, "Nudge", SectionName, this->popupWindowColor); - mir_snprintf(SectionName,512,"%s-showEvent", ProtocolName); - DBWriteContactSettingByte(NULL, "Nudge", SectionName, this->showEvent); + mir_snprintf(SectionName,512,"%s-openMessageWindow", ProtocolName); + DBWriteContactSettingByte(NULL, "Nudge", SectionName, this->openMessageWindow); + mir_snprintf(SectionName,512,"%s-openContactList", ProtocolName); + DBWriteContactSettingByte(NULL, "Nudge", SectionName, this->openContactList); + mir_snprintf(SectionName,512,"%s-useIgnore", ProtocolName); + DBWriteContactSettingByte(NULL, "Nudge", SectionName, this->useIgnoreSettings); mir_snprintf(SectionName,512,"%s-showStatus", ProtocolName); DBWriteContactSettingByte(NULL, "Nudge", SectionName, this->showStatus); mir_snprintf(SectionName,512,"%s-showPopup", ProtocolName); @@ -68,23 +64,9 @@ void CNudgeElement::Save(void) mir_snprintf(SectionName,512,"%s-statusFlags", ProtocolName); DBWriteContactSettingDword(NULL, "Nudge", SectionName, this->statusFlags); mir_snprintf(SectionName,512,"%s-recText", ProtocolName); - if(DBWriteContactSettingTString(NULL, "Nudge", SectionName, this->recText)) { - #if defined( _UNICODE ) - char buff[TEXT_LEN]; - WideCharToMultiByte(code_page, 0, this->recText, -1, buff, TEXT_LEN, 0, 0); - buff[TEXT_LEN] = 0; - DBWriteContactSettingString(0, "Nudge", SectionName, buff); - #endif - } + DBWriteContactSettingTString(NULL, "Nudge", SectionName, this->recText); mir_snprintf(SectionName,512,"%s-senText", ProtocolName); - if(DBWriteContactSettingTString(NULL, "Nudge", SectionName, this->senText)) { - #if defined( _UNICODE ) - char buff[TEXT_LEN]; - WideCharToMultiByte(code_page, 0, this->senText, -1, buff, TEXT_LEN, 0, 0); - buff[TEXT_LEN] = 0; - DBWriteContactSettingString(0, "Nudge", SectionName, buff); - #endif - } + DBWriteContactSettingTString(NULL, "Nudge", SectionName, this->senText); } @@ -92,16 +74,12 @@ void CNudgeElement::Load(void) { DBVARIANT dbv; char SectionName[512]; - mir_snprintf(SectionName,512,"%s-popupBackColor", ProtocolName); - this->popupBackColor = DBGetContactSettingDword(NULL, "Nudge", SectionName, GetSysColor(COLOR_BTNFACE)); - mir_snprintf(SectionName,512,"%s-popupTextColor", ProtocolName); - this->popupTextColor = DBGetContactSettingDword(NULL, "Nudge", SectionName, GetSysColor(COLOR_WINDOWTEXT)); - mir_snprintf(SectionName,512,"%s-popupTimeSec", ProtocolName); - this->popupTimeSec = DBGetContactSettingDword(NULL, "Nudge", SectionName, 4); - mir_snprintf(SectionName,512,"%s-popupWindowColor", ProtocolName); - this->popupWindowColor = DBGetContactSettingByte(NULL, "Nudge", SectionName, TRUE) != 0; - mir_snprintf(SectionName,512,"%s-showEvent", ProtocolName); - this->showEvent = DBGetContactSettingByte(NULL, "Nudge", SectionName, TRUE) != 0; + mir_snprintf(SectionName,512,"%s-openMessageWindow", ProtocolName); + this->openMessageWindow = DBGetContactSettingByte(NULL, "Nudge", SectionName, TRUE) != 0; + mir_snprintf(SectionName,512,"%s-openContactList", ProtocolName); + this->openContactList = DBGetContactSettingByte(NULL, "Nudge", SectionName, TRUE) != 0; + mir_snprintf(SectionName,512,"%s-useIgnore", ProtocolName); + this->useIgnoreSettings = DBGetContactSettingByte(NULL, "Nudge", SectionName, TRUE) != 0; mir_snprintf(SectionName,512,"%s-showStatus", ProtocolName); this->showStatus = DBGetContactSettingByte(NULL, "Nudge", SectionName, TRUE) != 0; mir_snprintf(SectionName,512,"%s-showPopup", ProtocolName); diff --git a/Nudge/nudge.h b/Nudge/nudge.h index c1e6c70..8a53163 100644 --- a/Nudge/nudge.h +++ b/Nudge/nudge.h @@ -1,10 +1,6 @@ #ifndef NUDGE_H #define NUDGE_H - - -static int code_page = CP_ACP; - // NUDGE account status flags #define NUDGE_ACC_ST0 0x00000001 //Check (countdown) when Offline #define NUDGE_ACC_ST1 0x00000002 //Check (countdown) when Online @@ -38,23 +34,22 @@ class CNudgeElement { public: char ProtocolName[64]; + TCHAR AccountName[128]; char NudgeSoundname[100]; TCHAR recText[TEXT_LEN]; TCHAR senText[TEXT_LEN]; bool showPopup; - bool showEvent; bool showStatus; - bool popupWindowColor; + bool openMessageWindow; + bool openContactList; + bool useIgnoreSettings; bool shakeClist; bool shakeChat; bool enabled; bool autoResend; DWORD statusFlags; - unsigned int popupBackColor; - unsigned int popupTextColor; - int popupTimeSec; int iProtoNumber; - HICON hIcon; + HANDLE hIcoLibItem; HANDLE hEvent; HANDLE hContactMenu; diff --git a/Nudge/nudge_10.vcxproj b/Nudge/nudge_10.vcxproj index 023a48f..55ee46f 100644 --- a/Nudge/nudge_10.vcxproj +++ b/Nudge/nudge_10.vcxproj @@ -156,7 +156,7 @@ Disabled ../../include;../ExternalAPI;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_WINDOWS;_USRDLL;nudge_EXPORTS;%(PreprocessorDefinitions) + WIN64;_DEBUG;_WINDOWS;_USRDLL;nudge_EXPORTS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug @@ -243,7 +243,7 @@ Size false ../../include;../ExternalAPI;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_WINDOWS;_USRDLL;_UNICODE;UNICODE;MICROSOFT_LAYER_FOR_UNICODE=1;%(PreprocessorDefinitions) + WIN64;_DEBUG;_WINDOWS;_USRDLL;_UNICODE;UNICODE;MICROSOFT_LAYER_FOR_UNICODE=1;%(PreprocessorDefinitions) true MultiThreaded true @@ -339,7 +339,7 @@ Size false ../../include;../ExternalAPI;%(AdditionalIncludeDirectories) - _WIN64;_DEBUG;_WINDOWS;_USRDLL;_UNICODE;UNICODE;MICROSOFT_LAYER_FOR_UNICODE=1;%(PreprocessorDefinitions) + WIN64;_DEBUG;_WINDOWS;_USRDLL;_UNICODE;UNICODE;MICROSOFT_LAYER_FOR_UNICODE=1;%(PreprocessorDefinitions) true MultiThreaded true diff --git a/Nudge/options.cpp b/Nudge/options.cpp index 4ffe6f2..1416ba8 100644 --- a/Nudge/options.cpp +++ b/Nudge/options.cpp @@ -1,12 +1,10 @@ #include "headers.h" -#include "uxtheme.h" #include "main.h" #include "shake.h" #include "options.h" CNudgeElement* ActualNudge = NULL; -extern BOOL (WINAPI *MyEnableThemeDialogTexture)(HANDLE, DWORD); int NudgeOptInit(WPARAM wParam,LPARAM lParam) @@ -15,117 +13,22 @@ int NudgeOptInit(WPARAM wParam,LPARAM lParam) odp.cbSize = sizeof(odp); odp.position = -790000000; odp.hInstance = hInst; - odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPTIONS); + odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_NUDGE); odp.ptszTitle = LPGENT("Nudge"); odp.ptszGroup = LPGENT("Events"); + odp.ptszTab = LPGENT("Nudge"); odp.flags = ODPF_BOLDGROUPS|ODPF_TCHAR; // odp.nIDBottomSimpleControl = IDC_STMSNGROUP; - odp.pfnDlgProc = OptionsDlgProc; + odp.pfnDlgProc = DlgProcNudgeOpt; CallService( MS_OPT_ADDPAGE, wParam,( LPARAM )&odp ); - return 0; -} - - -HANDLE hOptionsInit; -void InitOptions() -{ - hOptionsInit = HookEvent(ME_OPT_INITIALISE, NudgeOptInit); -} -void UninitOptions() -{ - UnhookEvent(hOptionsInit); -} - -static INT_PTR CALLBACK OptionsDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) -{ - static int iInit = TRUE; - - switch(msg) - { - case WM_INITDIALOG: - { - TCITEM tci; - RECT rcClient; - GetClientRect(hwnd, &rcClient); - - iInit = TRUE; - tci.mask = TCIF_PARAM|TCIF_TEXT; - tci.lParam = (LPARAM)CreateDialog(hInst,MAKEINTRESOURCE(IDD_OPT_NUDGE), hwnd, DlgProcNudgeOpt); - tci.pszText = TranslateT("Nudge"); - TabCtrl_InsertItem(GetDlgItem(hwnd, IDC_OPTIONSTAB), 0, &tci); - MoveWindow((HWND)tci.lParam,1,28,rcClient.right-3,rcClient.bottom-33,1); - if(MyEnableThemeDialogTexture) - MyEnableThemeDialogTexture((HWND)tci.lParam, ETDT_ENABLETAB); - - tci.lParam = (LPARAM)CreateDialog(hInst,MAKEINTRESOURCE(IDD_OPT_SHAKE),hwnd,DlgProcShakeOpt); - tci.pszText = TranslateT("Window Shaking"); - TabCtrl_InsertItem(GetDlgItem(hwnd, IDC_OPTIONSTAB), 1, &tci); - MoveWindow((HWND)tci.lParam,1,28,rcClient.right-3,rcClient.bottom-33,1); - ShowWindow((HWND)tci.lParam, SW_HIDE); - if(MyEnableThemeDialogTexture) - MyEnableThemeDialogTexture((HWND)tci.lParam, ETDT_ENABLETAB); - iInit = FALSE; - return FALSE; - } - - case PSM_CHANGED: // used so tabs dont have to call SendMessage(GetParent(GetParent(hwnd)), PSM_CHANGED, 0, 0); - if(!iInit) - SendMessage(GetParent(hwnd), PSM_CHANGED, 0, 0); - break; - case WM_NOTIFY: - switch(((LPNMHDR)lParam)->idFrom) { - case 0: - switch (((LPNMHDR)lParam)->code) - { - case PSN_APPLY: - { - TCITEM tci; - int i,count; - tci.mask = TCIF_PARAM; - count = TabCtrl_GetItemCount(GetDlgItem(hwnd,IDC_OPTIONSTAB)); - for (i=0;inext) - { - n->item.Save(); - } - DefaultNudge.Save(); - } - break; - } - break; - case IDC_OPTIONSTAB: - switch (((LPNMHDR)lParam)->code) - { - case TCN_SELCHANGING: - { - TCITEM tci; - tci.mask = TCIF_PARAM; - TabCtrl_GetItem(GetDlgItem(hwnd,IDC_OPTIONSTAB),TabCtrl_GetCurSel(GetDlgItem(hwnd,IDC_OPTIONSTAB)),&tci); - ShowWindow((HWND)tci.lParam,SW_HIDE); - } - break; - case TCN_SELCHANGE: - { - TCITEM tci; - tci.mask = TCIF_PARAM; - TabCtrl_GetItem(GetDlgItem(hwnd,IDC_OPTIONSTAB),TabCtrl_GetCurSel(GetDlgItem(hwnd,IDC_OPTIONSTAB)),&tci); - ShowWindow((HWND)tci.lParam,SW_SHOW); - } - break; - } - break; - - } - break; - } - return FALSE; + odp.position = -790000001; + odp.ptszTab = LPGENT("Window Shaking"); + odp.pfnDlgProc = DlgProcShakeOpt; + odp.flags |= ODPF_EXPERTONLY; + odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_SHAKE); + CallService( MS_OPT_ADDPAGE, wParam,( LPARAM )&odp ); + return 0; } INT_PTR CALLBACK DlgProcShakeOpt(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam) @@ -133,17 +36,17 @@ INT_PTR CALLBACK DlgProcShakeOpt(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam) switch(msg) { case WM_INITDIALOG: - char szBuf[20]; + TCHAR szBuf[20]; TranslateDialogDefault(hwnd); - _snprintf(szBuf, 10, "%d", shake.nMoveClist); - SetWindowTextA(GetDlgItem(hwnd, IDC_LNUMBER_CLIST), szBuf); - _snprintf(szBuf, 10, "%d", shake.nMoveChat); - SetWindowTextA(GetDlgItem(hwnd, IDC_LNUMBER_CHAT), szBuf); + mir_sntprintf(szBuf, 10, _T("%d"), shake.nMoveClist); + SetDlgItemText(hwnd,IDC_LNUMBER_CLIST,szBuf); + mir_sntprintf(szBuf, 10, _T("%d"), shake.nMoveChat); + SetDlgItemText(hwnd,IDC_LNUMBER_CHAT,szBuf); - _snprintf(szBuf, 10, "%d", shake.nScaleClist); - SetWindowTextA(GetDlgItem(hwnd, IDC_LSCALE_CLIST), szBuf); - _snprintf(szBuf, 10, "%d", shake.nScaleChat); - SetWindowTextA(GetDlgItem(hwnd, IDC_LSCALE_CHAT), szBuf); + mir_sntprintf(szBuf, 10, _T("%d"), shake.nScaleClist); + SetDlgItemText(hwnd,IDC_LSCALE_CLIST,szBuf); + mir_sntprintf(szBuf, 10, _T("%d"), shake.nScaleChat); + SetDlgItemText(hwnd,IDC_LSCALE_CHAT,szBuf); SendDlgItemMessage(hwnd, IDC_SNUMBER_CLIST, TBM_SETRANGE, 0, (LPARAM)MAKELONG(1, 60)); SendDlgItemMessage(hwnd, IDC_SNUMBER_CHAT, TBM_SETRANGE, 0, (LPARAM)MAKELONG(1, 60)); @@ -174,17 +77,17 @@ INT_PTR CALLBACK DlgProcShakeOpt(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam) if((HWND)lParam == GetDlgItem(hwnd, IDC_SNUMBER_CLIST) || (HWND)lParam == GetDlgItem(hwnd, IDC_SNUMBER_CHAT) || (HWND)lParam == GetDlgItem(hwnd, IDC_SSCALE_CLIST) || (HWND)lParam == GetDlgItem(hwnd, IDC_SSCALE_CHAT)) { - char szBuf[20]; + TCHAR szBuf[20]; DWORD dwPos = SendMessage((HWND) lParam, TBM_GETPOS, 0, 0); - _snprintf(szBuf, 10, "%d", dwPos); + mir_sntprintf(szBuf, sizeof(szBuf), _T("%d"), dwPos); if ((HWND)lParam == GetDlgItem(hwnd, IDC_SNUMBER_CLIST)) - SetWindowTextA(GetDlgItem(hwnd, IDC_LNUMBER_CLIST), szBuf); + SetDlgItemText(hwnd,IDC_LNUMBER_CLIST,szBuf); if ((HWND)lParam == GetDlgItem(hwnd, IDC_SNUMBER_CHAT)) - SetWindowTextA(GetDlgItem(hwnd, IDC_LNUMBER_CHAT), szBuf); + SetDlgItemText(hwnd,IDC_LNUMBER_CHAT,szBuf); if ((HWND)lParam == GetDlgItem(hwnd, IDC_SSCALE_CLIST)) - SetWindowTextA(GetDlgItem(hwnd, IDC_LSCALE_CLIST), szBuf); + SetDlgItemText(hwnd,IDC_LSCALE_CLIST,szBuf); if ((HWND)lParam == GetDlgItem(hwnd, IDC_SSCALE_CHAT)) - SetWindowTextA(GetDlgItem(hwnd, IDC_LSCALE_CHAT), szBuf); + SetDlgItemText(hwnd,IDC_LSCALE_CHAT,szBuf); SendMessage(GetParent(hwnd), PSM_CHANGED, 0, 0); } break; @@ -200,10 +103,10 @@ INT_PTR CALLBACK DlgProcShakeOpt(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam) { case PSN_APPLY: { - shake.nMoveClist = (int) SendMessage((HWND) GetDlgItem(hwnd, IDC_SNUMBER_CLIST), TBM_GETPOS, 0, 0); - shake.nMoveChat = (int) SendMessage((HWND) GetDlgItem(hwnd, IDC_SNUMBER_CHAT), TBM_GETPOS, 0, 0); - shake.nScaleClist = (int) SendMessage((HWND) GetDlgItem(hwnd, IDC_SSCALE_CLIST), TBM_GETPOS, 0, 0); - shake.nScaleChat = (int) SendMessage((HWND) GetDlgItem(hwnd, IDC_SSCALE_CHAT), TBM_GETPOS, 0, 0); + shake.nMoveClist = (int) SendMessage(GetDlgItem(hwnd, IDC_SNUMBER_CLIST), TBM_GETPOS, 0, 0); + shake.nMoveChat = (int) SendMessage(GetDlgItem(hwnd, IDC_SNUMBER_CHAT), TBM_GETPOS, 0, 0); + shake.nScaleClist = (int) SendMessage(GetDlgItem(hwnd, IDC_SSCALE_CLIST), TBM_GETPOS, 0, 0); + shake.nScaleChat = (int) SendMessage(GetDlgItem(hwnd, IDC_SSCALE_CHAT), TBM_GETPOS, 0, 0); shake.Save(); } } @@ -219,25 +122,19 @@ void CreateImageList(HWND hWnd) // Create and populate image list HIMAGELIST hImList = ImageList_Create(GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), ILC_MASK | ILC_COLOR32, nProtocol, 0); - NudgeElementList *n; - for(n = NudgeList;n != NULL; n = n->next) + for(NudgeElementList *n = NudgeList;n != NULL; n = n->next) { - HICON hIcon = NULL; - hIcon=(HICON)CallProtoService(n->item.ProtocolName, PS_LOADICON,PLI_PROTOCOL | PLIF_SMALL, 0); - if (hIcon == NULL || (int)hIcon == CALLSERVICE_NOTFOUND) + INT_PTR res = CallProtoService(n->item.ProtocolName, PS_LOADICON,PLI_PROTOCOL | PLIF_SMALL | PLIF_ICOLIB, 0); + if(res==CALLSERVICE_NOTFOUND) { - hIcon=(HICON)CallProtoService(n->item.ProtocolName, PS_LOADICON, PLI_PROTOCOL, 0); + res = CallService(MS_SKIN2_GETICONBYHANDLE,0,(LPARAM)n->item.hIcoLibItem); } - - if (hIcon == NULL || (int)hIcon == CALLSERVICE_NOTFOUND) - hIcon = (HICON) LoadImage(hInst, MAKEINTRESOURCE(IDI_NUDGE), IMAGE_ICON, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), 0); + HICON hIcon = (HICON) res; ImageList_AddIcon(hImList, hIcon); - DestroyIcon(hIcon); } //ADD default Icon for nudge - HICON hIcon = NULL; - hIcon = (HICON) LoadImage(hInst, MAKEINTRESOURCE(IDI_NUDGE), IMAGE_ICON, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), 0); + HICON hIcon = (HICON) LoadImage(hInst, MAKEINTRESOURCE(IDI_NUDGE), IMAGE_ICON, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), 0); ImageList_AddIcon(hImList, hIcon); DestroyIcon(hIcon); @@ -259,21 +156,12 @@ void PopulateProtocolList(HWND hWnd) tvi.item.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_STATE | TVIF_SELECTEDIMAGE; tvi.item.stateMask = TVIS_STATEIMAGEMASK; - NudgeElementList *n; int i = 0; if (GlobalNudge.useByProtocol) { - #ifdef _UNICODE - wchar_t buff[256]; - #endif - for(n = NudgeList;n != NULL; n = n->next) + for(NudgeElementList *n = NudgeList;n != NULL; n = n->next) { - #ifdef _UNICODE - MultiByteToWideChar(CP_ACP, 0, n->item.ProtocolName, -1, buff, 256); - tvi.item.pszText = buff; - #else - tvi.item.pszText = n->item.ProtocolName; - #endif + tvi.item.pszText = n->item.AccountName; tvi.item.iImage = i; n->item.iProtoNumber = i; tvi.item.iSelectedImage = i; @@ -299,13 +187,16 @@ void PopulateProtocolList(HWND hWnd) INT_PTR CALLBACK DlgProcNudgeOpt(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam) { + static bool iInitDone = true; switch(msg) { case WM_INITDIALOG: + iInitDone = false; TranslateDialogDefault(hwnd); CreateImageList(hwnd); PopulateProtocolList(hwnd); UpdateControls(hwnd); + iInitDone = true; break; case WM_DESTROY: { @@ -325,55 +216,15 @@ INT_PTR CALLBACK DlgProcNudgeOpt(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam) case IDC_PREVIEW: Preview(); break; - case IDC_POPUPTIME: - SendMessage(GetParent(hwnd),PSM_CHANGED,0,0); - break; - case IDC_POPUPTEXTCOLOR: - case IDC_POPUPBACKCOLOR: - if (ActualNudge)// fix NULL pointer then no nudge support protocols - { - ActualNudge->popupBackColor = SendDlgItemMessage(hwnd,IDC_POPUPBACKCOLOR,CPM_GETCOLOUR,0,0); - ActualNudge->popupTextColor = SendDlgItemMessage(hwnd,IDC_POPUPTEXTCOLOR,CPM_GETCOLOUR,0,0); - } - SendMessage(GetParent(hwnd),PSM_CHANGED,0,0); - break; - case IDC_USEWINCOLORS: - if (ActualNudge)// fix NULL pointer then no nudge support protocols - { - ActualNudge->popupWindowColor = (IsDlgButtonChecked(hwnd,IDC_USEWINCOLORS)==BST_CHECKED); - EnableWindow(GetDlgItem(hwnd,IDC_POPUPBACKCOLOR), ActualNudge->showPopup && ! ActualNudge->popupWindowColor); - EnableWindow(GetDlgItem(hwnd,IDC_POPUPTEXTCOLOR), ActualNudge->showPopup && ! ActualNudge->popupWindowColor); - } - SendMessage(GetParent(hwnd),PSM_CHANGED,0,0); - break; - case IDC_CHECKPOP: - if (ActualNudge)// fix NULL pointer then no nudge support protocols - { - ActualNudge->showPopup = (IsDlgButtonChecked(hwnd,IDC_CHECKPOP)==BST_CHECKED); - EnableWindow(GetDlgItem(hwnd,IDC_USEWINCOLORS),ActualNudge->showPopup); - EnableWindow(GetDlgItem(hwnd,IDC_POPUPBACKCOLOR),ActualNudge->showPopup && ! ActualNudge->popupWindowColor); - EnableWindow(GetDlgItem(hwnd,IDC_POPUPTEXTCOLOR),ActualNudge->showPopup && ! ActualNudge->popupWindowColor); - EnableWindow(GetDlgItem(hwnd,IDC_POPUPTIME),ActualNudge->showPopup); - } - SendMessage(GetParent(hwnd),PSM_CHANGED,0,0); - break; case IDC_USEBYPROTOCOL: GlobalNudge.useByProtocol = (IsDlgButtonChecked(hwnd,IDC_USEBYPROTOCOL)==BST_CHECKED); PopulateProtocolList(hwnd); UpdateControls(hwnd); SendMessage(GetParent(hwnd),PSM_CHANGED,0,0); break; - case IDC_CHECKEVENT: - case IDC_CHECKCLIST: - case IDC_CHECKCHAT: - case IDC_CHECKSTATUS: case IDC_AUTORESEND: if (ActualNudge)// fix NULL pointer then no nudge support protocols { - ActualNudge->shakeClist = (IsDlgButtonChecked(hwnd,IDC_CHECKCLIST)==BST_CHECKED); - ActualNudge->shakeChat = (IsDlgButtonChecked(hwnd,IDC_CHECKCHAT)==BST_CHECKED); - ActualNudge->showEvent = (IsDlgButtonChecked(hwnd,IDC_CHECKEVENT)==BST_CHECKED); - ActualNudge->showStatus = (IsDlgButtonChecked(hwnd,IDC_CHECKSTATUS)==BST_CHECKED); ActualNudge->autoResend = (IsDlgButtonChecked(hwnd,IDC_AUTORESEND)==BST_CHECKED); EnableWindow(GetDlgItem(hwnd,IDC_RESENDDELAY),ActualNudge->autoResend); } @@ -389,11 +240,22 @@ INT_PTR CALLBACK DlgProcNudgeOpt(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam) case IDC_CHECKST7: case IDC_CHECKST8: case IDC_CHECKST9: + case IDC_CHECKPOP: + case IDC_OPENMESSAGE: + case IDC_CHECKCLIST: + case IDC_CHECKCHAT: + case IDC_CHECKSTATUS: + case IDC_IGNORE: + case IDC_OPENCONTACTLIST: + SendMessage(GetParent(hwnd),PSM_CHANGED,0,0); + break; + case IDC_RESENDDELAY: case IDC_SENDTEXT: case IDC_RECVTEXT: case IDC_SENDTIME: case IDC_RECVTIME: - SendMessage(GetParent(hwnd),PSM_CHANGED,0,0); + if(iInitDone && (wNotifyCode == EN_CHANGE)) + SendMessage(GetParent(hwnd),PSM_CHANGED,0,0); break; } break; @@ -417,8 +279,12 @@ INT_PTR CALLBACK DlgProcNudgeOpt(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam) if(GlobalNudge.resendDelaySec < 1 ) GlobalNudge.resendDelaySec = 1; if (ActualNudge)// fix NULL pointer then no nudge support protocols { - ActualNudge->popupTimeSec = GetDlgItemInt(hwnd,IDC_POPUPTIME,&Translated,FALSE); - ActualNudge->popupWindowColor = (IsDlgButtonChecked(hwnd,IDC_USEWINCOLORS)==BST_CHECKED); + ActualNudge->shakeClist = (IsDlgButtonChecked(hwnd,IDC_CHECKCLIST)==BST_CHECKED); + ActualNudge->shakeChat = (IsDlgButtonChecked(hwnd,IDC_CHECKCHAT)==BST_CHECKED); + ActualNudge->openMessageWindow = (IsDlgButtonChecked(hwnd,IDC_OPENMESSAGE)==BST_CHECKED); + ActualNudge->openContactList = (IsDlgButtonChecked(hwnd,IDC_OPENCONTACTLIST)==BST_CHECKED); + ActualNudge->useIgnoreSettings = (IsDlgButtonChecked(hwnd,IDC_IGNORE)==BST_CHECKED); + ActualNudge->showStatus = (IsDlgButtonChecked(hwnd,IDC_CHECKSTATUS)==BST_CHECKED); ActualNudge->showPopup = (IsDlgButtonChecked(hwnd,IDC_CHECKPOP)==BST_CHECKED); ActualNudge->statusFlags = ((IsDlgButtonChecked(hwnd,IDC_CHECKST0)==BST_CHECKED) ? NUDGE_ACC_ST0 : 0) | @@ -455,7 +321,6 @@ INT_PTR CALLBACK DlgProcNudgeOpt(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam) CheckChange(hwnd,ht.hItem);*/ if (TVHT_ONITEMSTATEICON & ht.flags) CheckChange(hwnd,ht.hItem); - SendMessage(GetParent(hwnd),PSM_CHANGED,0,0); } case TVN_KEYDOWN: @@ -463,8 +328,7 @@ INT_PTR CALLBACK DlgProcNudgeOpt(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam) CheckChange(hwnd, TreeView_GetSelection(((LPNMHDR)lParam)->hwndFrom)); break; - case TVN_SELCHANGEDA: - case TVN_SELCHANGEDW: + case TVN_SELCHANGED: { LPNMTREEVIEW pnmtv = (LPNMTREEVIEW) lParam; if (pnmtv->itemNew.state & TVIS_SELECTED) @@ -488,12 +352,11 @@ void CheckChange(HWND hwnd, HTREEITEM hItem) TreeView_SelectItem(hLstView, hItem); int proto = nProtocol; - NudgeElementList *n; if (GlobalNudge.useByProtocol) { proto = GetSelProto(hwnd, hItem); ActualNudge = NULL; - for(n = NudgeList;n != NULL; n = n->next) + for(NudgeElementList *n = NudgeList;n != NULL; n = n->next) { if(n->item.iProtoNumber == proto) ActualNudge = &n->item; @@ -511,12 +374,11 @@ void CheckChange(HWND hwnd, HTREEITEM hItem) void UpdateControls(HWND hwnd) { int proto = nProtocol; - NudgeElementList *n; if (GlobalNudge.useByProtocol) { proto = GetSelProto(hwnd,NULL); ActualNudge = NULL; - for(n = NudgeList;n != NULL; n = n->next) + for(NudgeElementList *n = NudgeList;n != NULL; n = n->next) { if(n->item.iProtoNumber == proto) ActualNudge = &n->item; @@ -529,25 +391,17 @@ void UpdateControls(HWND hwnd) SetDlgItemInt(hwnd, IDC_RECVTIME, GlobalNudge.recvTimeSec,FALSE); SetDlgItemInt(hwnd, IDC_RESENDDELAY, GlobalNudge.resendDelaySec,FALSE); CheckDlgButton(hwnd, IDC_USEBYPROTOCOL, (WPARAM) GlobalNudge.useByProtocol); - SendDlgItemMessage(hwnd, IDC_POPUPBACKCOLOR, CPM_SETDEFAULTCOLOUR, 0, GetSysColor(COLOR_BTNFACE)); - SendDlgItemMessage(hwnd, IDC_POPUPTEXTCOLOR, CPM_SETDEFAULTCOLOUR, 0, GetSysColor(COLOR_WINDOWTEXT)); if (ActualNudge)// fix NULL pointer then no nudge support protocols { CheckDlgButton(hwnd, IDC_CHECKPOP, (WPARAM) ActualNudge->showPopup); - CheckDlgButton(hwnd, IDC_USEWINCOLORS, (WPARAM) ActualNudge->popupWindowColor); CheckDlgButton(hwnd, IDC_CHECKCLIST, (WPARAM) ActualNudge->shakeClist); CheckDlgButton(hwnd, IDC_CHECKCHAT, (WPARAM) ActualNudge->shakeChat); - CheckDlgButton(hwnd, IDC_CHECKEVENT, (WPARAM) ActualNudge->showEvent); CheckDlgButton(hwnd, IDC_CHECKSTATUS, (WPARAM) ActualNudge->showStatus); CheckDlgButton(hwnd, IDC_AUTORESEND, (WPARAM) ActualNudge->autoResend); - SetDlgItemInt(hwnd, IDC_POPUPTIME, ActualNudge->popupTimeSec,FALSE); - SendDlgItemMessage(hwnd, IDC_POPUPBACKCOLOR, CPM_SETCOLOUR,0, ActualNudge->popupBackColor); - SendDlgItemMessage(hwnd, IDC_POPUPTEXTCOLOR, CPM_SETCOLOUR,0, ActualNudge->popupTextColor); - EnableWindow(GetDlgItem(hwnd, IDC_USEWINCOLORS), ActualNudge->showPopup); - EnableWindow(GetDlgItem(hwnd, IDC_POPUPBACKCOLOR), ActualNudge->showPopup && ! ActualNudge->popupWindowColor); - EnableWindow(GetDlgItem(hwnd, IDC_POPUPTEXTCOLOR), ActualNudge->showPopup && ! ActualNudge->popupWindowColor); - EnableWindow(GetDlgItem(hwnd, IDC_POPUPTIME), ActualNudge->showPopup); + CheckDlgButton(hwnd, IDC_OPENMESSAGE, (WPARAM) ActualNudge->openMessageWindow); + CheckDlgButton(hwnd, IDC_OPENCONTACTLIST, (WPARAM) ActualNudge->openContactList); + CheckDlgButton(hwnd, IDC_IGNORE, (WPARAM) ActualNudge->useIgnoreSettings); EnableWindow(GetDlgItem(hwnd,IDC_RESENDDELAY),ActualNudge->autoResend); CheckDlgButton(hwnd,IDC_CHECKST0,ActualNudge->statusFlags & NUDGE_ACC_ST0 ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwnd,IDC_CHECKST1,ActualNudge->statusFlags & NUDGE_ACC_ST1 ? BST_CHECKED : BST_UNCHECKED); @@ -559,8 +413,12 @@ void UpdateControls(HWND hwnd) CheckDlgButton(hwnd,IDC_CHECKST7,ActualNudge->statusFlags & NUDGE_ACC_ST7 ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwnd,IDC_CHECKST8,ActualNudge->statusFlags & NUDGE_ACC_ST8 ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwnd,IDC_CHECKST9,ActualNudge->statusFlags & NUDGE_ACC_ST9 ? BST_CHECKED : BST_UNCHECKED); - SetWindowText(GetDlgItem(hwnd, IDC_SENDTEXT), ActualNudge->senText); - SetWindowText(GetDlgItem(hwnd, IDC_RECVTEXT), ActualNudge->recText); + SetDlgItemText(hwnd,IDC_SENDTEXT,ActualNudge->senText); + SetDlgItemText(hwnd,IDC_RECVTEXT,ActualNudge->recText); + } + else + { + EnableWindow(GetDlgItem(hwnd,IDC_PROTOLIST),FALSE); } } diff --git a/Nudge/options.h b/Nudge/options.h index ae658a1..68f648a 100644 --- a/Nudge/options.h +++ b/Nudge/options.h @@ -1,7 +1,6 @@ extern HINSTANCE hInst; extern NudgeElementList* NudgeList; extern int nProtocol; -extern bool useByProtocol; extern CNudgeElement DefaultNudge; extern CShake shake; extern CNudge GlobalNudge; @@ -10,8 +9,6 @@ static INT_PTR CALLBACK OptionsDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARA static INT_PTR CALLBACK DlgProcNudgeOpt(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam); static INT_PTR CALLBACK DlgProcShakeOpt(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam); -void CreateImageList(HWND hWnd); -void PopulateProtocolList(HWND hWnd); void UpdateControls(HWND hwnd); int GetSelProto(HWND hwnd, HTREEITEM hItem); void CheckChange(HWND hwnd, HTREEITEM hItem); diff --git a/Nudge/resource.h b/Nudge/resource.h index d7691a9..60a5638 100644 --- a/Nudge/resource.h +++ b/Nudge/resource.h @@ -1,5 +1,5 @@ //{{NO_DEPENDENCIES}} -// Microsoft Developer Studio generated include file. +// Microsoft Visual C++ generated include file. // Used by resource.rc // #define IDD_DIALOG1 101 @@ -11,7 +11,6 @@ #define IDI_NUDGE_META 113 #define IDD_SHAKEOPT 126 #define IDD_OPT_NUDGE 126 -#define IDD_OPTIONS 127 #define IDD_OPT_SHAKE 128 #define IDD_OPT_TRIGGER 129 #define IDC_BUTTON1 1000 @@ -34,7 +33,6 @@ #define IDC_SLIDER_CHAT 1010 #define IDC_SNUMBER_CHAT 1010 #define IDC_LABEL_ERRSTATE 1011 -#define IDC_OPTIONSTAB 1011 #define IDC_SSCALE_CLIST 1011 #define IDC_LABEL_TOTALBLOCKS 1012 #define IDC_LNUMBER_CLIST 1012 @@ -75,6 +73,9 @@ #define IDC_TRIGGER_SHAKECHAT 1041 #define IDC_AUTORESEND 1042 #define IDC_RESENDDELAY 1043 +#define IDC_OPENMESSAGE 1044 +#define IDC_OPENCONTACTLIST 1046 +#define IDC_IGNORE 1047 // Next default values for new objects // @@ -82,7 +83,7 @@ #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 114 #define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1041 +#define _APS_NEXT_CONTROL_VALUE 1048 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif diff --git a/Nudge/resource.rc b/Nudge/resource.rc index b100be9..4760a02 100644 --- a/Nudge/resource.rc +++ b/Nudge/resource.rc @@ -1,4 +1,4 @@ -//Microsoft Developer Studio generated resource script. +// Microsoft Visual C++ generated resource script. // #include "resource.h" @@ -13,13 +13,11 @@ #undef APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// -// Bulgarian resources +// Bulgarian (Bulgaria) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_BGR) -#ifdef _WIN32 LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT #pragma code_page(1251) -#endif //_WIN32 #ifdef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// @@ -27,18 +25,18 @@ LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT // TEXTINCLUDE // -1 TEXTINCLUDE MOVEABLE PURE +1 TEXTINCLUDE BEGIN "resource.h\0" END -2 TEXTINCLUDE MOVEABLE PURE +2 TEXTINCLUDE BEGIN "#include ""winres.h""\r\n" "\0" END -3 TEXTINCLUDE MOVEABLE PURE +3 TEXTINCLUDE BEGIN "\r\n" "\0" @@ -46,7 +44,7 @@ END #endif // APSTUDIO_INVOKED -#endif // Bulgarian resources +#endif // Bulgarian (Bulgaria) resources ///////////////////////////////////////////////////////////////////////////// @@ -54,139 +52,89 @@ END // Neutral resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU) -#ifdef _WIN32 LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL #pragma code_page(1252) -#endif //_WIN32 ///////////////////////////////////////////////////////////////////////////// // // Dialog // -IDD_OPT_NUDGE DIALOGEX 0, 0, 313, 240 -STYLE DS_FIXEDSYS | DS_CONTROL | WS_CHILD | WS_VISIBLE +IDD_OPT_NUDGE DIALOGEX 0, 0, 309, 232 +STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD | WS_VISIBLE EXSTYLE WS_EX_CONTROLPARENT -FONT 8, "MS Shell Dlg" +FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN - GROUPBOX "Allow nudges when you're:",IDC_STATIC,8,133,157,63 - CONTROL "Offline",IDC_CHECKST0,"Button",BS_AUTOCHECKBOX | - BS_NOTIFY | WS_TABSTOP,13,143,65,9 - CONTROL "Online",IDC_CHECKST1,"Button",BS_AUTOCHECKBOX | - BS_NOTIFY | WS_TABSTOP,13,153,65,9 - CONTROL "Away",IDC_CHECKST2,"Button",BS_AUTOCHECKBOX | BS_NOTIFY | - WS_TABSTOP,13,163,65,9 - CONTROL "NA",IDC_CHECKST3,"Button",BS_AUTOCHECKBOX | BS_NOTIFY | - WS_TABSTOP,13,173,65,9 - CONTROL "Occupied",IDC_CHECKST4,"Button",BS_AUTOCHECKBOX | - BS_NOTIFY | WS_TABSTOP,13,183,65,9 - CONTROL "DND",IDC_CHECKST5,"Button",BS_AUTOCHECKBOX | BS_NOTIFY | - WS_TABSTOP,85,143,70,9 - CONTROL "Free for chat",IDC_CHECKST6,"Button",BS_AUTOCHECKBOX | - BS_NOTIFY | WS_TABSTOP,85,153,70,9 - CONTROL "Invisible",IDC_CHECKST7,"Button",BS_AUTOCHECKBOX | - BS_NOTIFY | WS_TABSTOP,85,163,70,9 - CONTROL "On the phone",IDC_CHECKST8,"Button",BS_AUTOCHECKBOX | - BS_NOTIFY | WS_TABSTOP,85,173,70,9 - CONTROL "Out to lunch",IDC_CHECKST9,"Button",BS_AUTOCHECKBOX | - BS_NOTIFY | WS_TABSTOP,85,183,70,9 - PUSHBUTTON "Preview",IDC_PREVIEW,265,207,39,12 - GROUPBOX "Popup options",IDC_STATIC,169,133,140,88 - CONTROL "Popup notification",IDC_CHECKPOP,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,174,143,121,9 - EDITTEXT IDC_POPUPTIME,174,163,20,12,ES_AUTOHSCROLL - LTEXT "s",IDC_STATIC,196,165,12,8 - LTEXT "Popup duration",IDC_STATIC,216,165,79,8 - CONTROL "",IDC_POPUPBACKCOLOR,"ColourPicker",WS_TABSTOP,174,177, - 39,12 - LTEXT "Background colour",IDC_STATIC,216,179,80,8, - SS_CENTERIMAGE - CONTROL "",IDC_POPUPTEXTCOLOR,"ColourPicker",WS_TABSTOP,174,192, - 39,12 - LTEXT "Text colour",IDC_STATIC,216,193,80,8,SS_CENTERIMAGE - CONTROL "&Use Windows colours",IDC_USEWINCOLORS,"Button", - BS_AUTOCHECKBOX | BS_NOTIFY | BS_FLAT | WS_TABSTOP,174, - 153,121,9 - CONTROL "",IDC_PROTOLIST,"SysTreeView32",TVS_DISABLEDRAGDROP | - TVS_SHOWSELALWAYS | TVS_CHECKBOXES | WS_BORDER | - WS_TABSTOP,8,12,105,84 - GROUPBOX "Protocol options",IDC_STATIC,4,1,309,224 + GROUPBOX "Protocol options",IDC_STATIC,4,1,303,225 + CONTROL "",IDC_PROTOLIST,"SysTreeView32",TVS_DISABLEDRAGDROP | TVS_SHOWSELALWAYS | TVS_CHECKBOXES | WS_BORDER | WS_HSCROLL | WS_TABSTOP,12,10,94,84 CONTROL "Specify options for each protocol",IDC_USEBYPROTOCOL, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,121,10,162,8 - CONTROL "Enable clist shaking",IDC_CHECKCLIST,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,132,20,147,8 - CONTROL "Enable message window shaking",IDC_CHECKCHAT,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,132,30,147,8 - CONTROL "Treat nudge as a message",IDC_CHECKEVENT,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,132,60,147,8 - EDITTEXT IDC_SENDTEXT,205,70,102,12,ES_AUTOHSCROLL - EDITTEXT IDC_RECVTEXT,205,85,102,12,ES_AUTOHSCROLL - RTEXT "Sending text",IDC_STATIC,131,73,70,8 - RTEXT "Receiving text",IDC_STATIC,131,87,70,8 - RTEXT "Allow sending* one nudge to the same contact every :", - IDC_STATIC,13,106,256,8 - RTEXT "Allow receiving one nudge from the same contact every :", - IDC_STATIC,13,120,257,8 - EDITTEXT IDC_SENDTIME,274,104,17,12,ES_AUTOHSCROLL | ES_READONLY | - WS_DISABLED - EDITTEXT IDC_RECVTIME,274,118,18,12,ES_AUTOHSCROLL + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,112,10,182,9 + CONTROL "Open contact list",IDC_OPENCONTACTLIST,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,128,20,166,9 + CONTROL "Enable contact list shaking",IDC_CHECKCLIST,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,128,30,166,9 + CONTROL "Open message window",IDC_OPENMESSAGE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,128,40,166,9 + CONTROL "Enable message window shaking",IDC_CHECKCHAT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,128,50,166,9 + CONTROL "Show as status change",IDC_CHECKSTATUS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,128,60,166,9 + CONTROL "Auto resend nudge after",IDC_AUTORESEND,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,128,70,139,9 + EDITTEXT IDC_RESENDDELAY,276,69,18,11,ES_AUTOHSCROLL | ES_NUMBER + LTEXT "s",IDC_STATIC,298,71,8,8 + CONTROL "Enable popup notification",IDC_CHECKPOP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,128,80,166,9 + CONTROL "Respect ignore settings (status changes)",IDC_IGNORE, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,128,90,166,10 + LTEXT "Sending text",IDC_STATIC,174,145,120,8 + EDITTEXT IDC_SENDTEXT,174,156,120,12,ES_AUTOHSCROLL + LTEXT "Receiving text",IDC_STATIC,174,172,120,8 + EDITTEXT IDC_RECVTEXT,174,183,120,12,ES_AUTOHSCROLL + GROUPBOX "Privacy",IDC_STATIC,12,97,290,36 + RTEXT "Allow sending* one nudge to the same contact every :",IDC_STATIC,18,106,247,8 + EDITTEXT IDC_SENDTIME,270,104,21,12,ES_AUTOHSCROLL | ES_READONLY | WS_DISABLED LTEXT "s",IDC_STATIC,293,106,8,8 + RTEXT "Allow receiving one nudge from the same contact every :",IDC_STATIC,18,120,246,8 + EDITTEXT IDC_RECVTIME,270,118,22,12,ES_AUTOHSCROLL LTEXT "s",IDC_STATIC,293,120,8,8 - GROUPBOX "Privacy",IDC_STATIC,8,97,301,36 - CONTROL "Show as status change",IDC_CHECKSTATUS,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,132,40,147,8 - CONTROL "Auto resend nudge after",IDC_AUTORESEND,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,132,50,147,8 - EDITTEXT IDC_RESENDDELAY,281,48,18,12,ES_AUTOHSCROLL | ES_NUMBER - LTEXT "s",IDC_STATIC,301,50,8,8 - CTEXT "* Nudge sending delay is hardcoded and cannot be changed.", - IDC_STATIC,15,199,141,22,NOT WS_GROUP -END - -IDD_OPTIONS DIALOGEX 0, 0, 319, 249 -STYLE DS_FIXEDSYS | DS_CENTER | WS_CHILD -EXSTYLE WS_EX_CONTROLPARENT -FONT 8, "MS Shell Dlg", 0, 0, 0x1 -BEGIN - CONTROL "Tab1",IDC_OPTIONSTAB,"SysTabControl32",WS_TABSTOP,0,3, - 319,246 + CTEXT "* Nudge sending delay is hardcoded and cannot be changed.",IDC_STATIC,18,204,138,17,NOT WS_GROUP + PUSHBUTTON "Preview",IDC_PREVIEW,241,206,53,15 + GROUPBOX "Text",IDC_STATIC,168,136,134,68 + GROUPBOX "Allow nudges when you're:",IDC_STATIC,12,136,149,68 + CONTROL "Offline",IDC_CHECKST0,"Button",BS_AUTOCHECKBOX | BS_NOTIFY | WS_TABSTOP,18,147,58,9 + CONTROL "Online",IDC_CHECKST1,"Button",BS_AUTOCHECKBOX | BS_NOTIFY | WS_TABSTOP,18,157,58,9 + CONTROL "Away",IDC_CHECKST2,"Button",BS_AUTOCHECKBOX | BS_NOTIFY | WS_TABSTOP,18,167,58,9 + CONTROL "NA",IDC_CHECKST3,"Button",BS_AUTOCHECKBOX | BS_NOTIFY | WS_TABSTOP,18,177,58,9 + CONTROL "Occupied",IDC_CHECKST4,"Button",BS_AUTOCHECKBOX | BS_NOTIFY | WS_TABSTOP,18,187,58,9 + CONTROL "DND",IDC_CHECKST5,"Button",BS_AUTOCHECKBOX | BS_NOTIFY | WS_TABSTOP,84,147,72,9 + CONTROL "Free for chat",IDC_CHECKST6,"Button",BS_AUTOCHECKBOX | BS_NOTIFY | WS_TABSTOP,84,157,72,9 + CONTROL "Invisible",IDC_CHECKST7,"Button",BS_AUTOCHECKBOX | BS_NOTIFY | WS_TABSTOP,84,167,72,9 + CONTROL "On the phone",IDC_CHECKST8,"Button",BS_AUTOCHECKBOX | BS_NOTIFY | WS_TABSTOP,84,177,72,9 + CONTROL "Out to lunch",IDC_CHECKST9,"Button",BS_AUTOCHECKBOX | BS_NOTIFY | WS_TABSTOP,84,187,72,9 END -IDD_OPT_SHAKE DIALOGEX 0, 0, 300, 240 -STYLE DS_FIXEDSYS | DS_CONTROL | WS_CHILD | WS_VISIBLE +IDD_OPT_SHAKE DIALOGEX 0, 0, 309, 184 +STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD | WS_VISIBLE EXSTYLE WS_EX_CONTROLPARENT FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN - GROUPBOX "Shaking Clist Options",IDC_STATIC,7,10,291,96 - GROUPBOX "Shaking Message Window Options",IDC_STATIC,7,111,291, - 101 - CONTROL "Slider1",IDC_SNUMBER_CLIST,"msctls_trackbar32", - TBS_AUTOTICKS | TBS_BOTH | WS_TABSTOP,81,25,179,21 - RTEXT "Number of moves",IDC_STATIC,13,31,67,9 - RTEXT "Number of moves",IDC_STATIC,13,140,67,9 - CONTROL "Slider1",IDC_SNUMBER_CHAT,"msctls_trackbar32", - TBS_AUTOTICKS | TBS_BOTH | WS_TABSTOP,81,134,179,21 - LTEXT "Static",IDC_LNUMBER_CLIST,260,32,25,8 - LTEXT "Static",IDC_LNUMBER_CHAT,260,141,24,8 - CONTROL "",IDC_SSCALE_CLIST,"msctls_trackbar32",TBS_AUTOTICKS | - TBS_BOTH | WS_TABSTOP,81,47,179,21 - RTEXT "Width of move",IDC_STATIC,13,52,67,9 - LTEXT "Static",IDC_LSCALE_CLIST,260,52,25,8 - CONTROL "",IDC_SSCALE_CHAT,"msctls_trackbar32",TBS_AUTOTICKS | - TBS_BOTH | WS_TABSTOP,81,152,179,21 - RTEXT "Width of move",IDC_STATIC,13,158,67,9 - LTEXT "Static",IDC_LSCALE_CHAT,260,159,25,8 + GROUPBOX "Shaking Clist Options",IDC_STATIC,7,10,296,77 + RTEXT "Number of moves",IDC_STATIC,13,127,70,9 + CONTROL "Slider1",IDC_SNUMBER_CLIST,"msctls_trackbar32",TBS_AUTOTICKS | TBS_BOTH | WS_TABSTOP,90,25,179,21 + RTEXT "Width of move",IDC_STATIC,13,156,70,9 + CONTROL "",IDC_SSCALE_CLIST,"msctls_trackbar32",TBS_AUTOTICKS | TBS_BOTH | WS_TABSTOP,90,57,179,21 + LTEXT "Static",IDC_LSCALE_CLIST,276,65,21,8 + LTEXT "Static",IDC_LNUMBER_CLIST,276,34,21,8 + GROUPBOX "Shaking Message Window Options",IDC_STATIC,7,101,296,75 + RTEXT "Number of moves",IDC_STATIC,13,31,70,9 + CONTROL "Slider1",IDC_SNUMBER_CHAT,"msctls_trackbar32",TBS_AUTOTICKS | TBS_BOTH | WS_TABSTOP,90,117,179,21 + RTEXT "Width of move",IDC_STATIC,13,65,70,9 + CONTROL "",IDC_SSCALE_CHAT,"msctls_trackbar32",TBS_AUTOTICKS | TBS_BOTH | WS_TABSTOP,90,148,179,21 + LTEXT "Static",IDC_LSCALE_CHAT,276,152,21,8 + LTEXT "Static",IDC_LNUMBER_CHAT,276,121,21,8 END IDD_OPT_TRIGGER DIALOGEX 0, 0, 319, 249 -STYLE DS_FIXEDSYS | DS_CENTER | WS_CHILD +STYLE DS_SETFONT | DS_FIXEDSYS | DS_CENTER | WS_CHILD EXSTYLE WS_EX_CONTROLPARENT FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN - CONTROL "Shake the contact list",IDC_TRIGGER_SHAKECLIST,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,13,20,270,10 - CONTROL "Shake the chat window",IDC_TRIGGER_SHAKECHAT,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,13,35,270,10 + CONTROL "Shake the contact list",IDC_TRIGGER_SHAKECLIST,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,20,270,10 + CONTROL "Shake the chat window",IDC_TRIGGER_SHAKECHAT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,35,270,10 END @@ -196,64 +144,49 @@ END // #ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO MOVEABLE PURE +GUIDELINES DESIGNINFO BEGIN IDD_OPT_NUDGE, DIALOG BEGIN LEFTMARGIN, 4 - VERTGUIDE, 8 - VERTGUIDE, 85 - VERTGUIDE, 165 + VERTGUIDE, 12 + VERTGUIDE, 18 + VERTGUIDE, 76 + VERTGUIDE, 84 + VERTGUIDE, 128 + VERTGUIDE, 156 + VERTGUIDE, 161 + VERTGUIDE, 168 VERTGUIDE, 174 + VERTGUIDE, 294 + VERTGUIDE, 302 TOPMARGIN, 1 - BOTTOMMARGIN, 231 + BOTTOMMARGIN, 226 HORZGUIDE, 4 HORZGUIDE, 10 - HORZGUIDE, 189 + HORZGUIDE, 133 + HORZGUIDE, 136 HORZGUIDE, 204 - HORZGUIDE, 225 - END - - IDD_OPTIONS, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 312 - VERTGUIDE, 13 - VERTGUIDE, 85 - VERTGUIDE, 160 - VERTGUIDE, 307 - TOPMARGIN, 4 - BOTTOMMARGIN, 243 - HORZGUIDE, 5 - HORZGUIDE, 20 - HORZGUIDE, 147 - HORZGUIDE, 157 - HORZGUIDE, 173 - HORZGUIDE, 184 - HORZGUIDE, 207 - HORZGUIDE, 217 - HORZGUIDE, 228 - HORZGUIDE, 239 - HORZGUIDE, 243 + HORZGUIDE, 221 END IDD_OPT_SHAKE, DIALOG BEGIN LEFTMARGIN, 7 - RIGHTMARGIN, 293 + RIGHTMARGIN, 303 VERTGUIDE, 13 - VERTGUIDE, 85 - VERTGUIDE, 160 + VERTGUIDE, 83 + VERTGUIDE, 90 + VERTGUIDE, 269 + VERTGUIDE, 276 + VERTGUIDE, 297 + VERTGUIDE, 303 TOPMARGIN, 4 - BOTTOMMARGIN, 216 + BOTTOMMARGIN, 176 HORZGUIDE, 5 HORZGUIDE, 20 HORZGUIDE, 147 - HORZGUIDE, 157 - HORZGUIDE, 169 - HORZGUIDE, 184 - HORZGUIDE, 207 - HORZGUIDE, 217 + HORZGUIDE, 156 END IDD_OPT_TRIGGER, DIALOG @@ -281,20 +214,7 @@ BEGIN END #endif // APSTUDIO_INVOKED -#endif // Neutral resources -///////////////////////////////////////////////////////////////////////////// - -///////////////////////////////////////////////////////////////////////////// -// French (Belgium) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRB) -#ifdef _WIN32 -LANGUAGE LANG_FRENCH, SUBLANG_FRENCH_BELGIAN -#pragma code_page(1252) -#endif //_WIN32 - -#ifndef _MAC ///////////////////////////////////////////////////////////////////////////// // // Version @@ -317,18 +237,15 @@ BEGIN BEGIN BLOCK "000004b0" BEGIN - VALUE "Comments", "Plugin that render nudge events from different protocols\0" - VALUE "CompanyName", "Miranda community\0" - VALUE "FileDescription", "Nudge plugin for Miranda-IM\0" - VALUE "FileVersion", "0, 0, 1, 19\0" - VALUE "InternalName", "Nudge\0" - VALUE "LegalCopyright", "Copyright © 2006\0" - VALUE "LegalTrademarks", "\0" - VALUE "OriginalFilename", "nudge.dll\0" - VALUE "PrivateBuild", "\0" - VALUE "ProductName", "nudge\0" - VALUE "ProductVersion", "0, 0, 1, 19\0" - VALUE "SpecialBuild", "\0" + VALUE "Comments", "Plugin that render nudge events from different protocols" + VALUE "CompanyName", "Miranda community" + VALUE "FileDescription", "Nudge plugin for Miranda-IM" + VALUE "FileVersion", "0, 0, 1, 19" + VALUE "InternalName", "Nudge" + VALUE "LegalCopyright", "Copyright © 2006-2011" + VALUE "OriginalFilename", "nudge.dll" + VALUE "ProductName", "nudge" + VALUE "ProductVersion", "0, 0, 1, 19" END END BLOCK "VarFileInfo" @@ -337,8 +254,6 @@ BEGIN END END -#endif // !_MAC - ///////////////////////////////////////////////////////////////////////////// // @@ -347,13 +262,13 @@ END // Icon with lowest ID value placed first to ensure application icon // remains consistent on all systems. -IDI_NUDGE ICON DISCARDABLE "resources\\Nudge.ico" -IDI_NUGDE_YAHOO ICON DISCARDABLE "resources\\NudgeYahoo.ico" -IDI_NUDGE_IRC ICON DISCARDABLE "resources\\NudgeIRC.ico" -IDI_NUDGE_MSN ICON DISCARDABLE "resources\\NudgeMSN.ico" -IDI_NUDGE_TLEN ICON DISCARDABLE "resources\\NudgeTlen.ico" -IDI_NUDGE_META ICON DISCARDABLE "resources\\NudgeMeta.ico" -#endif // French (Belgium) resources +IDI_NUDGE ICON "resources\\Nudge.ico" +IDI_NUGDE_YAHOO ICON "resources\\NudgeYahoo.ico" +IDI_NUDGE_IRC ICON "resources\\NudgeIRC.ico" +IDI_NUDGE_MSN ICON "resources\\NudgeMSN.ico" +IDI_NUDGE_TLEN ICON "resources\\NudgeTlen.ico" +IDI_NUDGE_META ICON "resources\\NudgeMeta.ico" +#endif // Neutral resources ///////////////////////////////////////////////////////////////////////////// diff --git a/Nudge/shake.cpp b/Nudge/shake.cpp index 16fca0a..16f58d9 100644 --- a/Nudge/shake.cpp +++ b/Nudge/shake.cpp @@ -23,16 +23,14 @@ void CShake::Save(void) DWORD WINAPI ShakeChatWindow(LPVOID Param) { - HWND hWnd; - hWnd = (HWND) Param; + HWND hWnd = (HWND) Param; shake.ShakeChat(hWnd); return 1; } DWORD WINAPI ShakeClistWindow(LPVOID Param) { - HWND hWnd; - hWnd = (HWND) Param; + HWND hWnd = (HWND) Param; shake.ShakeClist(hWnd); return 0; } @@ -40,8 +38,7 @@ DWORD WINAPI ShakeClistWindow(LPVOID Param) INT_PTR ShakeClist( WPARAM wParam, LPARAM lParam ) { DWORD tid; - HWND hWnd; - hWnd = (HWND) CallService( MS_CLUI_GETHWND, 0, 0 ); + HWND hWnd = (HWND) CallService( MS_CLUI_GETHWND, 0, 0 ); CreateThread(NULL,0,ShakeClistWindow,(LPVOID) hWnd,0,&tid); return 0; @@ -52,7 +49,6 @@ INT_PTR ShakeChat( WPARAM wParam, LPARAM lParam ) if(((HANDLE) wParam) == NULL) return -1; DWORD tid; - HWND hWnd; //char srmmName[100]; MessageWindowData mwd; MessageWindowInputData mwid; @@ -70,7 +66,7 @@ INT_PTR ShakeChat( WPARAM wParam, LPARAM lParam ) //CallService(MS_MSG_GETWINDOWCLASS,(WPARAM)srmmName,(LPARAM)100 ); HWND parent; - hWnd = mwd.hwndWindow; + HWND hWnd = mwd.hwndWindow; while((parent = GetParent(hWnd)) != 0) hWnd = parent; // ensure we have the top level window (need parent window for scriver & tabsrmm) CreateThread(NULL,0,ShakeChatWindow,(LPVOID) hWnd,0,&tid); @@ -148,11 +144,10 @@ int CShake::ShakeChat(HWND hWnd) { if(!ShakingChat) { - Shaking = true; - int i; + ShakingChat = true; RECT rect; GetWindowRect(hWnd, &rect); - for(i = 0; i < nMoveChat; i++) + for(int i = 0; i < nMoveChat; i++) { SetWindowPos(hWnd, 0, rect.left - nScaleChat, rect.top, 0, 0, SWP_NOSIZE); Sleep(10); @@ -174,10 +169,9 @@ int CShake::ShakeClist(HWND hWnd) if(!Shaking) { Shaking = true; - int i; RECT rect; GetWindowRect(hWnd, &rect); - for(i = 0; i < nMoveClist; i++) + for(int i = 0; i < nMoveClist; i++) { SetWindowPos(hWnd, 0, rect.left - nScaleClist, rect.top, 0, 0, SWP_NOSIZE); Sleep(10); -- cgit v1.2.3