summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormataes2007 <mataes2007@e753b5eb-9565-29b2-b5c5-2cc6f99dfbcb>2011-12-24 20:50:18 +0000
committermataes2007 <mataes2007@e753b5eb-9565-29b2-b5c5-2cc6f99dfbcb>2011-12-24 20:50:18 +0000
commit85863331bd2920991e8e7093a472e60d749b4a7a (patch)
tree09e055b2e4a11299993dcc620e6618ae30ffd573
parentd185b144ca91d835fbf442d1198bddf4c70f8db7 (diff)
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
-rw-r--r--Nudge/ChangeLog.txt7
-rw-r--r--Nudge/headers.h13
-rw-r--r--Nudge/main.cpp617
-rw-r--r--Nudge/main.h71
-rw-r--r--Nudge/nudge.cpp50
-rw-r--r--Nudge/nudge.h15
-rw-r--r--Nudge/nudge_10.vcxproj6
-rw-r--r--Nudge/options.cpp282
-rw-r--r--Nudge/options.h3
-rw-r--r--Nudge/resource.h9
-rw-r--r--Nudge/resource.rc295
-rw-r--r--Nudge/shake.cpp20
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 <windows.h>
#include <commctrl.h>
-#include <stdlib.h>
-#include <stdio.h>
#include <time.h>
-#include <stddef.h>
-#include <process.h>
-#define MIRANDA_VER 0x1000
+#define MIRANDA_VER 0x0A00
#include <newpluginapi.h> //CallService,UnHookEvent
-#include <m_utils.h> //window broadcasting
#include <m_clist.h>
#include <m_langpack.h>
#include <m_system.h>
#include <m_popup.h>
#include <m_clui.h>
#include <m_message.h>
-#include <m_contacts.h>
#include <m_protocols.h>
-#include <m_protomod.h>
+#include <m_ignore.h>
#include <m_options.h>
#include <m_skin.h>
#include <m_database.h>
@@ -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(mirandaVersion<PLUGIN_MAKE_VERSION(0,8,0,0))
+ {
+ MessageBox(NULL,_T("Nudge Plugin needs at least Miranda IM 0.8 to work correctly."),_T("Nudge Plugin"),MB_OK);
+ return NULL;
+ }
return &pluginInfo;
}
@@ -324,20 +285,14 @@ extern "C" __declspec(dllexport) const MUUID * MirandaPluginInterfaces(void)
return interfaces;
}
-int MainInit(WPARAM wParam,LPARAM lParam)
-{
- return 0;
-}
-
static INT_PTR CALLBACK DlgProcOptsTrigger(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {
switch (msg) {
case WM_INITDIALOG: {
// lParam = (LPARAM)(DWORD)actionID or 0 if this is a new trigger entry
- DWORD actionID;
BOOL bshakeClist,bshakeChat;
- actionID = (DWORD)lParam;
+ DWORD actionID = (DWORD)lParam;
TranslateDialogDefault(hwnd);
// Initialize the dialog according to the action ID
bshakeClist = DBGetActionSettingByte(actionID, NULL, "Nudge", "ShakeClist",FALSE);
@@ -350,10 +305,9 @@ static INT_PTR CALLBACK DlgProcOptsTrigger(HWND hwnd, UINT msg, WPARAM wParam, L
case TM_ADDACTION: {
// save your settings
// wParam = (WPARAM)(DWORD)actionID
- DWORD actionID;
bool bshakeClist,bshakeChat;
- actionID = (DWORD)wParam;
+ DWORD actionID = (DWORD)wParam;
bshakeClist = (IsDlgButtonChecked(hwnd,IDC_TRIGGER_SHAKECLIST)==BST_CHECKED);
bshakeChat = (IsDlgButtonChecked(hwnd,IDC_TRIGGER_SHAKECHAT)==BST_CHECKED);
DBWriteActionSettingByte(actionID, NULL, "Nudge", "ShakeClist",bshakeClist);
@@ -416,31 +370,21 @@ int TriggerActionSend( DWORD actionID, REPORTINFO *ri)
void LoadProtocols(void)
{
//Load the default nudge
- sprintf(DefaultNudge.ProtocolName,"Default");
- sprintf(DefaultNudge.NudgeSoundname,"Nudge : Default");
- SkinAddNewSoundEx( DefaultNudge.NudgeSoundname, LPGEN("Nudge"),DefaultNudge.NudgeSoundname);
+ mir_snprintf(DefaultNudge.ProtocolName,sizeof(DefaultNudge.ProtocolName),"Default");
+ mir_snprintf(DefaultNudge.NudgeSoundname,sizeof(DefaultNudge.NudgeSoundname),"Nudge : Default");
+ SkinAddNewSoundExT( DefaultNudge.NudgeSoundname, LPGENT("Nudge"),LPGENT("Default Nudge"));
DefaultNudge.Load();
GlobalNudge.Load();
- int numberOfProtocols,ret;
- char str[MAXMODULELABELLENGTH + 10];
- HANDLE NudgeEvent = NULL;
- PROTOCOLDESCRIPTOR ** ppProtocolDescriptors;
- ret = CallService(MS_PROTO_ENUMPROTOCOLS,(WPARAM) &numberOfProtocols,(LPARAM)&ppProtocolDescriptors);
+ int numberOfProtocols = 0;
+ PROTOACCOUNT **ppProtocolDescriptors;
+ INT_PTR ret = ProtoEnumAccounts(&numberOfProtocols,&ppProtocolDescriptors);
if(ret == 0)
{
for(int i = 0; i < numberOfProtocols ; i++)
{
- if(ppProtocolDescriptors[i]->type == 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
@@ -3,61 +3,11 @@
/*
*
****************************/
-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);
-
-/*
-*
-****************************/
void Nudge_ShowStatus(CNudgeElement, HANDLE, DWORD timestamp);
/*
@@ -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 @@
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>../../include;../ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;nudge_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>WIN64;_DEBUG;_WINDOWS;_USRDLL;nudge_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PrecompiledHeader>
@@ -243,7 +243,7 @@
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
<OmitFramePointers>false</OmitFramePointers>
<AdditionalIncludeDirectories>../../include;../ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;_UNICODE;UNICODE;MICROSOFT_LAYER_FOR_UNICODE=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>WIN64;_DEBUG;_WINDOWS;_USRDLL;_UNICODE;UNICODE;MICROSOFT_LAYER_FOR_UNICODE=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
@@ -339,7 +339,7 @@
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
<OmitFramePointers>false</OmitFramePointers>
<AdditionalIncludeDirectories>../../include;../ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_WIN64;_DEBUG;_WINDOWS;_USRDLL;_UNICODE;UNICODE;MICROSOFT_LAYER_FOR_UNICODE=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>WIN64;_DEBUG;_WINDOWS;_USRDLL;_UNICODE;UNICODE;MICROSOFT_LAYER_FOR_UNICODE=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
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;i<count;i++)
- {
- TabCtrl_GetItem(GetDlgItem(hwnd,IDC_OPTIONSTAB),i,&tci);
- SendMessage((HWND)tci.lParam,WM_NOTIFY,0,lParam);
- }
-
- NudgeElementList *n;
- for(n = NudgeList;n != NULL; n = n->next)
- {
- 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,21 +214,8 @@ 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);