From 4f768c2c74564c76410c704a7cd63cf6c5ecda9a Mon Sep 17 00:00:00 2001 From: Kirill Volinsky Date: Wed, 13 Mar 2013 11:06:51 +0000 Subject: StatusChange plugin adopted git-svn-id: http://svn.miranda-ng.org/main/trunk@3997 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/StatusChange/StatusChange_10.vcxproj | 203 ++++++++++++ .../StatusChange/StatusChange_10.vcxproj.filters | 44 +++ plugins/StatusChange/StatusChange_11.vcxproj | 207 ++++++++++++ .../StatusChange/StatusChange_11.vcxproj.filters | 44 +++ plugins/StatusChange/res/Version.rc | 38 +++ plugins/StatusChange/res/resource.rc | 138 ++++++++ plugins/StatusChange/src/Common.h | 41 +++ plugins/StatusChange/src/Version.h | 14 + plugins/StatusChange/src/main.cpp | 356 +++++++++++++++++++++ plugins/StatusChange/src/resource.h | 34 ++ plugins/StatusChange/src/stdafx.cpp | 18 ++ 11 files changed, 1137 insertions(+) create mode 100644 plugins/StatusChange/StatusChange_10.vcxproj create mode 100644 plugins/StatusChange/StatusChange_10.vcxproj.filters create mode 100644 plugins/StatusChange/StatusChange_11.vcxproj create mode 100644 plugins/StatusChange/StatusChange_11.vcxproj.filters create mode 100644 plugins/StatusChange/res/Version.rc create mode 100644 plugins/StatusChange/res/resource.rc create mode 100644 plugins/StatusChange/src/Common.h create mode 100644 plugins/StatusChange/src/Version.h create mode 100644 plugins/StatusChange/src/main.cpp create mode 100644 plugins/StatusChange/src/resource.h create mode 100644 plugins/StatusChange/src/stdafx.cpp (limited to 'plugins/StatusChange') diff --git a/plugins/StatusChange/StatusChange_10.vcxproj b/plugins/StatusChange/StatusChange_10.vcxproj new file mode 100644 index 0000000000..bd2d8f9558 --- /dev/null +++ b/plugins/StatusChange/StatusChange_10.vcxproj @@ -0,0 +1,203 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {D09881C7-E189-49AD-919E-F64355F8EFD0} + StatusChange + + + + DynamicLibrary + Unicode + + + DynamicLibrary + Unicode + + + DynamicLibrary + Unicode + true + + + DynamicLibrary + Unicode + true + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(SolutionDir)$(Configuration)\Plugins\ + $(SolutionDir)$(Configuration)64\Plugins\ + $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ + $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ + $(SolutionDir)$(Configuration)\Plugins\ + $(SolutionDir)$(Configuration)64\Plugins\ + $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ + $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ + true + + + + true + true + Full + Level3 + WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + ..\..\include;%(AdditionalIncludeDirectories) + Common.h + Use + Size + + + NDEBUG;%(PreprocessorDefinitions) + ..\..\..\include\msapi + + + true + Windows + $(IntDir)$(TargetName).lib + 0x11050000 + $(ProfileDir)..\..\bin10\lib + false + true + true + true + /PDBALTPATH:%_PDB% %(AdditionalOptions) + + + + + true + true + Full + Level3 + WIN64;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + ..\..\include;%(AdditionalIncludeDirectories) + Common.h + Use + Size + + + NDEBUG;%(PreprocessorDefinitions) + ..\..\..\include\msapi + + + true + Windows + $(IntDir)$(TargetName).lib + 0x11050000 + $(ProfileDir)..\..\bin10\lib + false + true + true + true + /PDBALTPATH:%_PDB% %(AdditionalOptions) + + + + + MultiThreadedDebugDLL + false + Disabled + Level3 + true + EditAndContinue + WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + EnableFastChecks + ..\..\include;%(AdditionalIncludeDirectories) + Common.h + Use + + + _DEBUG;%(PreprocessorDefinitions) + ..\..\..\include\msapi + + + true + true + Windows + $(IntDir)$(TargetName).lib + $(ProfileDir)..\..\bin10\lib + false + 0x11050000 + + + + + MultiThreadedDebugDLL + false + Disabled + Level3 + ProgramDatabase + WIN64;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + EnableFastChecks + ..\..\include;%(AdditionalIncludeDirectories) + Common.h + Use + + + _DEBUG;%(PreprocessorDefinitions) + ..\..\..\include\msapi + + + true + true + Windows + $(IntDir)$(TargetName).lib + $(ProfileDir)..\..\bin10\lib + false + 0x11050000 + + + + + + + + + + + + + + + Create + + + + + + \ No newline at end of file diff --git a/plugins/StatusChange/StatusChange_10.vcxproj.filters b/plugins/StatusChange/StatusChange_10.vcxproj.filters new file mode 100644 index 0000000000..f1d452f3a0 --- /dev/null +++ b/plugins/StatusChange/StatusChange_10.vcxproj.filters @@ -0,0 +1,44 @@ + + + + + {90e2ea3a-595b-4258-98c7-358c428811c4} + cpp;c;cxx;rc;def;r;odl;idl;hpj;bat + + + {4ccce8b6-d915-4c31-8631-5296cb3aa897} + h;hpp;hxx;hm;inl + + + {41a4e105-989e-4c8c-99e7-78b30bd0277f} + ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe + + + + + Header Files + + + Header Files + + + Header Files + + + + + Resource Files + + + Resource Files + + + + + Source Files + + + Source Files + + + \ No newline at end of file diff --git a/plugins/StatusChange/StatusChange_11.vcxproj b/plugins/StatusChange/StatusChange_11.vcxproj new file mode 100644 index 0000000000..0d7206430d --- /dev/null +++ b/plugins/StatusChange/StatusChange_11.vcxproj @@ -0,0 +1,207 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {D09881C7-E189-49AD-919E-F64355F8EFD0} + StatusChange + + + + DynamicLibrary + v110_xp + Unicode + + + DynamicLibrary + v110_xp + Unicode + + + DynamicLibrary + v110_xp + Unicode + true + + + DynamicLibrary + v110_xp + Unicode + true + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(SolutionDir)$(Configuration)\Plugins\ + $(SolutionDir)$(Configuration)64\Plugins\ + $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ + $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ + $(SolutionDir)$(Configuration)\Plugins\ + $(SolutionDir)$(Configuration)64\Plugins\ + $(SolutionDir)$(Configuration)\Obj\$(ProjectName)\ + $(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\ + true + + + + true + true + Full + Level3 + WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + ..\..\include;%(AdditionalIncludeDirectories) + Common.h + Use + Size + + + NDEBUG;%(PreprocessorDefinitions) + ..\..\..\include\msapi + + + true + Windows + $(IntDir)$(TargetName).lib + 0x11050000 + $(ProfileDir)..\..\bin11\lib + false + true + true + true + /PDBALTPATH:%_PDB% %(AdditionalOptions) + + + + + true + true + Full + Level3 + WIN64;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + ..\..\include;%(AdditionalIncludeDirectories) + Common.h + Use + Size + + + NDEBUG;%(PreprocessorDefinitions) + ..\..\..\include\msapi + + + true + Windows + $(IntDir)$(TargetName).lib + 0x11050000 + $(ProfileDir)..\..\bin11\lib + false + true + true + true + /PDBALTPATH:%_PDB% %(AdditionalOptions) + + + + + MultiThreadedDebugDLL + false + Disabled + Level3 + true + EditAndContinue + WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + EnableFastChecks + ..\..\include;%(AdditionalIncludeDirectories) + Common.h + Use + + + _DEBUG;%(PreprocessorDefinitions) + ..\..\..\include\msapi + + + true + true + Windows + $(IntDir)$(TargetName).lib + $(ProfileDir)..\..\bin11\lib + false + 0x11050000 + + + + + MultiThreadedDebugDLL + false + Disabled + Level3 + ProgramDatabase + WIN64;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + EnableFastChecks + ..\..\include;%(AdditionalIncludeDirectories) + Common.h + Use + + + _DEBUG;%(PreprocessorDefinitions) + ..\..\..\include\msapi + + + true + true + Windows + $(IntDir)$(TargetName).lib + $(ProfileDir)..\..\bin11\lib + false + 0x11050000 + + + + + + + + + + + + + + + Create + + + + + + \ No newline at end of file diff --git a/plugins/StatusChange/StatusChange_11.vcxproj.filters b/plugins/StatusChange/StatusChange_11.vcxproj.filters new file mode 100644 index 0000000000..f1d452f3a0 --- /dev/null +++ b/plugins/StatusChange/StatusChange_11.vcxproj.filters @@ -0,0 +1,44 @@ + + + + + {90e2ea3a-595b-4258-98c7-358c428811c4} + cpp;c;cxx;rc;def;r;odl;idl;hpj;bat + + + {4ccce8b6-d915-4c31-8631-5296cb3aa897} + h;hpp;hxx;hm;inl + + + {41a4e105-989e-4c8c-99e7-78b30bd0277f} + ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe + + + + + Header Files + + + Header Files + + + Header Files + + + + + Resource Files + + + Resource Files + + + + + Source Files + + + Source Files + + + \ No newline at end of file diff --git a/plugins/StatusChange/res/Version.rc b/plugins/StatusChange/res/Version.rc new file mode 100644 index 0000000000..5bfbab4754 --- /dev/null +++ b/plugins/StatusChange/res/Version.rc @@ -0,0 +1,38 @@ +// Microsoft Visual C++ generated resource script. +// +#ifdef APSTUDIO_INVOKED +#error this file is not editable by Microsoft Visual C++ +#endif //APSTUDIO_INVOKED + +#include "afxres.h" +#include "..\src\version.h" + +VS_VERSION_INFO VERSIONINFO + FILEVERSION __FILEVERSION_STRING + PRODUCTVERSION __FILEVERSION_STRING + FILEFLAGSMASK 0x17L +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x0L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "000004b0" + BEGIN + VALUE "FileDescription", __DESCRIPTION + VALUE "InternalName", __PLUGIN_NAME + VALUE "LegalCopyright", __COPYRIGHT + VALUE "OriginalFilename", __FILENAME + VALUE "ProductName", __PLUGIN_NAME + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0, 1200 + END +END diff --git a/plugins/StatusChange/res/resource.rc b/plugins/StatusChange/res/resource.rc new file mode 100644 index 0000000000..64dcfa21c3 --- /dev/null +++ b/plugins/StatusChange/res/resource.rc @@ -0,0 +1,138 @@ +// Microsoft Visual C++ generated resource script. +// +#include "..\src\resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// Portuguese (Brazil) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_PTB) +#ifdef _WIN32 +LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN +#pragma code_page(1252) +#endif //_WIN32 + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_OPTIONS DIALOGEX 0, 0, 316, 234 +STYLE DS_MODALFRAME | DS_FIXEDSYS | WS_CHILD | WS_VISIBLE +EXSTYLE WS_EX_CONTROLPARENT +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "",IDC_CHK_MESSAGESEND,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,165,27,10,8 + CONTROL "",IDC_CHK_MESSAGEREAD,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,200,27,10,8 + CONTROL "",IDC_CHK_URLSEND,"Button",BS_AUTOCHECKBOX | WS_TABSTOP, + 165,38,10,8 + CONTROL "",IDC_CHK_URLREAD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP, + 200,38,10,8 + CONTROL "",IDC_CHK_FILESEND,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,165,49,10,8 + CONTROL "",IDC_CHK_FILEREAD,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,200,49,10,8 + CONTROL "Offline",IDC_RAD_OFFLINE,"Button",BS_AUTORADIOBUTTON | + WS_GROUP | WS_TABSTOP,60,88,95,10 + CONTROL "Online",IDC_RAD_ONLINE,"Button",BS_AUTORADIOBUTTON | + WS_TABSTOP,60,98,95,10 + CONTROL "Away",IDC_RAD_AWAY,"Button",BS_AUTORADIOBUTTON | + WS_TABSTOP,60,108,95,10 + CONTROL "NA",IDC_RAD_NA,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP, + 60,118,95,10 + CONTROL "Occupied",IDC_RAD_OCCUPIED,"Button",BS_AUTORADIOBUTTON | + WS_TABSTOP,60,128,95,10 + CONTROL "DND",IDC_RAD_DND,"Button",BS_AUTORADIOBUTTON | + WS_TABSTOP,165,88,95,10 + CONTROL "Free for chat",IDC_RAD_FREECHAT,"Button", + BS_AUTORADIOBUTTON | WS_TABSTOP,165,98,95,10 + CONTROL "Invisible",IDC_RAD_INVISIBLE,"Button", + BS_AUTORADIOBUTTON | WS_TABSTOP,165,108,95,10 + CONTROL "On the phone",IDC_RAD_ONTHEPHONE,"Button", + BS_AUTORADIOBUTTON | WS_TABSTOP,165,118,95,10 + CONTROL "Out to lunch",IDC_RAD_OUTTOLUNCH,"Button", + BS_AUTORADIOBUTTON | WS_TABSTOP,165,128,95,10 + CONTROL "Offline",IDC_CHK_OFFLINE,"Button",BS_AUTOCHECKBOX | + WS_DISABLED | WS_TABSTOP,60,165,95,10 + CONTROL "Online",IDC_CHK_ONLINE,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,60,175,95,10 + CONTROL "Away",IDC_CHK_AWAY,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,60,185,95,10 + CONTROL "NA",IDC_CHK_NA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,60, + 195,95,10 + CONTROL "Occupied",IDC_CHK_OCCUPIED,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,60,204,95,10 + CONTROL "DND",IDC_CHK_DND,"Button",BS_AUTOCHECKBOX | WS_TABSTOP, + 165,165,95,10 + CONTROL "Free for chat",IDC_CHK_FREECHAT,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,165,175,95,10 + CONTROL "Invisible",IDC_CHK_INVISIBLE,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,165,185,95,10 + CONTROL "On the phone",IDC_CHK_ONTHEPHONE,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,165,195,95,10 + CONTROL "Out to lunch",IDC_CHK_OUTTOLUNCH,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,165,205,95,10 + GROUPBOX "On events...",-1,45,10,220,55,WS_GROUP + LTEXT "Send",-1,160,17,27,9,NOT WS_GROUP + LTEXT "Receive",-1,190,17,42,9,NOT WS_GROUP + LTEXT "Message",-1,73,27,85,8,NOT WS_GROUP + LTEXT "URL",-1,73,38,85,8,NOT WS_GROUP + LTEXT "File transfer",-1,73,49,85,8,NOT WS_GROUP + GROUPBOX "...change status to...",-1,45,73,220,68,WS_GROUP + GROUPBOX "... if status is...",-1,45,150,220,68,WS_GROUP + ICON "",IDC_MSGICON,51,20,20,20,SS_CENTERIMAGE + ICON "",IDC_URLICON,51,32,20,20,SS_CENTERIMAGE + ICON "",IDC_FILEICON,51,44,20,20,SS_CENTERIMAGE +END + + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "..\\src\\resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\0" +END + +#endif // APSTUDIO_INVOKED + +#endif // Portuguese (Brazil) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/plugins/StatusChange/src/Common.h b/plugins/StatusChange/src/Common.h new file mode 100644 index 0000000000..f7568d19c1 --- /dev/null +++ b/plugins/StatusChange/src/Common.h @@ -0,0 +1,41 @@ +#define _CRT_SECURE_NO_WARNINGS +#define WIN32_LEAN_AND_MEAN + +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include "resource.h" +#include "version.h" + +#define PLUGINNAME "StatusChange" + +typedef struct +{ + BOOL MessageRead; + BOOL MessageSend; + BOOL UrlRead; + BOOL UrlSend; + BOOL FileRead; + BOOL FileSend; + + int ChangeTo; // ID_STATUS_XXX + + BOOL IfOffline; + BOOL IfOnline; + BOOL IfAway; + BOOL IfNA; + BOOL IfOccupied; + BOOL IfDND; + BOOL IfFreeforchat; + BOOL IfInvisible; + BOOL IfOnthephone; + BOOL IfOuttolunch; +} TOPTIONS; diff --git a/plugins/StatusChange/src/Version.h b/plugins/StatusChange/src/Version.h new file mode 100644 index 0000000000..798276bcd4 --- /dev/null +++ b/plugins/StatusChange/src/Version.h @@ -0,0 +1,14 @@ +#define __MAJOR_VERSION 1 +#define __MINOR_VERSION 3 +#define __RELEASE_NUM 0 +#define __BUILD_NUM 0 + +#define __FILEVERSION_STRING __MAJOR_VERSION,__MINOR_VERSION,__RELEASE_NUM,__BUILD_NUM + +#define __PLUGIN_NAME "Status change" +#define __FILENAME "StatusChange.dll" +#define __DESCRIPTION "Change status when you send/receive and event." +#define __AUTHOR "Angelo Luiz Tartari" +#define __AUTHOREMAIL "corsario-br@users.sourceforge.net" +#define __AUTHORWEB "http://miranda-ng.org/" +#define __COPYRIGHT "© 2002 Angelo Luiz Tartari" diff --git a/plugins/StatusChange/src/main.cpp b/plugins/StatusChange/src/main.cpp new file mode 100644 index 0000000000..18e7802951 --- /dev/null +++ b/plugins/StatusChange/src/main.cpp @@ -0,0 +1,356 @@ +#include "Common.h" + +HINSTANCE hInst; +TOPTIONS Options; +HICON hIconMsg; +HICON hIconUrl; +HICON hIconFile; +int hLangpack; + +PLUGININFOEX pluginInfo={ + sizeof(PLUGININFOEX), + __PLUGIN_NAME, + PLUGIN_MAKE_VERSION(__MAJOR_VERSION, __MINOR_VERSION, __RELEASE_NUM, __BUILD_NUM), + __DESCRIPTION, + __AUTHOR, + __AUTHOREMAIL, + __COPYRIGHT, + __AUTHORWEB, + UNICODE_AWARE, + // {1ACB2ED1-C1ED-43EE-89BD-086686F6EBB5} + {0x1acb2ed1, 0xc1ed, 0x43ee, {0x89, 0xbd, 0x8, 0x66, 0x86, 0xf6, 0xeb, 0xb5}} +}; + +void LoadOptions() +{ + ZeroMemory(&Options, sizeof(Options)); + Options.MessageRead = (BOOL)db_get_b(NULL, PLUGINNAME, "MessageRead", FALSE); + Options.MessageSend = (BOOL)db_get_b(NULL, PLUGINNAME, "MessageSend", TRUE); + Options.UrlRead = (BOOL)db_get_b(NULL, PLUGINNAME, "UrlRead", FALSE); + Options.UrlSend = (BOOL)db_get_b(NULL, PLUGINNAME, "UrlSend", TRUE); + Options.FileRead = (BOOL)db_get_b(NULL, PLUGINNAME, "FileRead", FALSE); + Options.FileSend = (BOOL)db_get_b(NULL, PLUGINNAME, "FileSend", TRUE); + Options.ChangeTo = (INT)db_get_dw(NULL, PLUGINNAME, "ChangeTo", ID_STATUS_ONLINE); + Options.IfOffline = (BOOL)db_get_b(NULL, PLUGINNAME, "IfOffline", FALSE); + Options.IfOnline = (BOOL)db_get_b(NULL, PLUGINNAME, "IfOnline", FALSE); + Options.IfAway = (BOOL)db_get_b(NULL, PLUGINNAME, "IfAway", TRUE); + Options.IfNA = (BOOL)db_get_b(NULL, PLUGINNAME, "IfNA", TRUE); + Options.IfOccupied = (BOOL)db_get_b(NULL, PLUGINNAME, "IfOccupied", FALSE); + Options.IfDND = (BOOL)db_get_b(NULL, PLUGINNAME, "IfDND", FALSE); + Options.IfFreeforchat = (BOOL)db_get_b(NULL, PLUGINNAME, "IfFreeforchat", FALSE); + Options.IfInvisible = (BOOL)db_get_b(NULL, PLUGINNAME, "IfInvisible", FALSE); + Options.IfOnthephone = (BOOL)db_get_b(NULL, PLUGINNAME, "IfOnthephone", FALSE); + Options.IfOuttolunch = (BOOL)db_get_b(NULL, PLUGINNAME, "IfOuttolunch", FALSE); +} + +static int StatusChangeGetMessage(WPARAM wParam, LPARAM lParam) +{ + HANDLE hDbEvent = (HANDLE)lParam; + DBEVENTINFO dbe; + int status; + BOOL read, send, change_status; + + dbe.cbSize = sizeof(dbe); + dbe.cbBlob = 0; + CallService(MS_DB_EVENT_GET, (WPARAM)hDbEvent, (LPARAM)&dbe); + + status = (int)CallProtoService(dbe.szModule, PS_GETSTATUS, 0, 0); + if(!status) + status = CallService(MS_CLIST_GETSTATUSMODE, 0, 0); + + if(status == Options.ChangeTo) + return 0; + + switch (status) { + case ID_STATUS_OFFLINE : change_status = Options.IfOffline; break; + case ID_STATUS_ONLINE : change_status = Options.IfOnline; break; + case ID_STATUS_AWAY : change_status = Options.IfAway; break; + case ID_STATUS_NA : change_status = Options.IfNA; break; + case ID_STATUS_OCCUPIED : change_status = Options.IfOccupied; break; + case ID_STATUS_DND : change_status = Options.IfDND; break; + case ID_STATUS_FREECHAT : change_status = Options.IfFreeforchat; break; + case ID_STATUS_INVISIBLE : change_status = Options.IfInvisible; break; + case ID_STATUS_ONTHEPHONE : change_status = Options.IfOnthephone; break; + case ID_STATUS_OUTTOLUNCH : change_status = Options.IfOuttolunch; break; + default : change_status = FALSE; break; + } + + if (!change_status) + return 0; + + switch (dbe.eventType) { + case EVENTTYPE_MESSAGE : + read = Options.MessageRead; + send = Options.MessageSend; + break; + case EVENTTYPE_URL : + read = Options.UrlRead; + send = Options.UrlSend; + break; + case EVENTTYPE_FILE : + read = Options.FileRead; + send = Options.FileSend; + break; + break; + } + + // If is a message sent... + if (((DWORD)(dbe.flags & ((DWORD)DBEF_SENT))) == ((DWORD)(DBEF_SENT))) { + if (send) { + // change status + CallProtoService(dbe.szModule, PS_SETSTATUS, (LPARAM)(Options.ChangeTo), 0); + } + } + + // If is a message received... + else { + if (read) { + // change status + CallProtoService(dbe.szModule, PS_SETSTATUS, (LPARAM)(Options.ChangeTo), 0); + } + } + + return 0; +} + +static BOOL CALLBACK DlgProcStatusChangeOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) +{ + switch (msg) { + case WM_INITDIALOG: + TranslateDialogDefault(hwndDlg); + + hIconMsg = (HICON)CopyImage(LoadSkinnedIcon(SKINICON_EVENT_MESSAGE), IMAGE_ICON, 16, 16, LR_COPYFROMRESOURCE); + SendDlgItemMessage(hwndDlg, IDC_MSGICON, STM_SETICON, (WPARAM)hIconMsg, 0); + hIconUrl = (HICON)CopyImage(LoadSkinnedIcon(SKINICON_EVENT_URL), IMAGE_ICON, 16, 16, LR_COPYFROMRESOURCE); + SendDlgItemMessage(hwndDlg, IDC_URLICON, STM_SETICON, (WPARAM)hIconUrl, 0); + hIconFile = (HICON)CopyImage(LoadSkinnedIcon(SKINICON_EVENT_FILE), IMAGE_ICON, 16, 16, LR_COPYFROMRESOURCE); + SendDlgItemMessage(hwndDlg, IDC_FILEICON, STM_SETICON, (WPARAM)hIconFile, 0); + + CheckDlgButton(hwndDlg, IDC_CHK_MESSAGEREAD, Options.MessageRead?BST_CHECKED:BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_CHK_MESSAGESEND, Options.MessageSend?BST_CHECKED:BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_CHK_URLREAD, Options.UrlRead?BST_CHECKED:BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_CHK_URLSEND, Options.UrlSend?BST_CHECKED:BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_CHK_FILEREAD, Options.FileRead?BST_CHECKED:BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_CHK_FILESEND, Options.FileSend?BST_CHECKED:BST_UNCHECKED); + + switch(Options.ChangeTo) { + case ID_STATUS_OFFLINE : CheckDlgButton(hwndDlg, IDC_RAD_OFFLINE, BST_CHECKED); break; + case ID_STATUS_ONLINE : CheckDlgButton(hwndDlg, IDC_RAD_ONLINE, BST_CHECKED); break; + case ID_STATUS_AWAY : CheckDlgButton(hwndDlg, IDC_RAD_AWAY, BST_CHECKED); break; + case ID_STATUS_DND : CheckDlgButton(hwndDlg, IDC_RAD_DND, BST_CHECKED); break; + case ID_STATUS_NA : CheckDlgButton(hwndDlg, IDC_RAD_NA, BST_CHECKED); break; + case ID_STATUS_OCCUPIED : CheckDlgButton(hwndDlg, IDC_RAD_OCCUPIED, BST_CHECKED); break; + case ID_STATUS_FREECHAT : CheckDlgButton(hwndDlg, IDC_RAD_FREECHAT, BST_CHECKED); break; + case ID_STATUS_INVISIBLE : CheckDlgButton(hwndDlg, IDC_RAD_INVISIBLE, BST_CHECKED); break; + case ID_STATUS_ONTHEPHONE : CheckDlgButton(hwndDlg, IDC_RAD_ONTHEPHONE, BST_CHECKED); break; + case ID_STATUS_OUTTOLUNCH : CheckDlgButton(hwndDlg, IDC_RAD_OUTTOLUNCH, BST_CHECKED); break; + break; + } + + CheckDlgButton(hwndDlg, IDC_CHK_OFFLINE, Options.IfOffline?BST_CHECKED:BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_CHK_ONLINE, Options.IfOnline?BST_CHECKED:BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_CHK_AWAY, Options.IfAway?BST_CHECKED:BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_CHK_DND, Options.IfDND?BST_CHECKED:BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_CHK_NA, Options.IfNA?BST_CHECKED:BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_CHK_OCCUPIED, Options.IfOccupied?BST_CHECKED:BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_CHK_FREECHAT, Options.IfFreeforchat?BST_CHECKED:BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_CHK_INVISIBLE, Options.IfInvisible?BST_CHECKED:BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_CHK_ONTHEPHONE, Options.IfOnthephone?BST_CHECKED:BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_CHK_OUTTOLUNCH, Options.IfOuttolunch?BST_CHECKED:BST_UNCHECKED); + return TRUE; + + case WM_COMMAND: + switch(LOWORD(wParam)) { + case IDC_CHK_MESSAGEREAD: + Options.MessageRead = !Options.MessageRead; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_CHK_MESSAGESEND: + Options.MessageSend = !Options.MessageSend; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_CHK_URLREAD: + Options.UrlRead = !Options.UrlRead; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_CHK_URLSEND: + Options.UrlSend = !Options.UrlSend; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_CHK_FILEREAD: + Options.FileRead = !Options.FileRead; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_CHK_FILESEND: + Options.FileSend = !Options.FileSend; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + + case IDC_RAD_OFFLINE: + Options.ChangeTo = ID_STATUS_OFFLINE; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_RAD_ONLINE: + Options.ChangeTo = ID_STATUS_ONLINE; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_RAD_AWAY: + Options.ChangeTo = ID_STATUS_AWAY; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_RAD_DND: + Options.ChangeTo = ID_STATUS_DND; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_RAD_NA: + Options.ChangeTo = ID_STATUS_NA; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_RAD_OCCUPIED: + Options.ChangeTo = ID_STATUS_OCCUPIED; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_RAD_FREECHAT: + Options.ChangeTo = ID_STATUS_FREECHAT; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_RAD_INVISIBLE: + Options.ChangeTo = ID_STATUS_INVISIBLE; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_RAD_ONTHEPHONE: + Options.ChangeTo = ID_STATUS_ONTHEPHONE; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_RAD_OUTTOLUNCH: + Options.ChangeTo = ID_STATUS_OUTTOLUNCH; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + + case IDC_CHK_OFFLINE: + Options.IfOffline = !Options.IfOffline; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_CHK_ONLINE: + Options.IfOnline = !Options.IfOnline; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_CHK_AWAY: + Options.IfAway = !Options.IfAway; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_CHK_DND: + Options.IfDND = !Options.IfDND; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_CHK_NA: + Options.IfNA = !Options.IfNA; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_CHK_OCCUPIED: + Options.IfOccupied = !Options.IfOccupied; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_CHK_FREECHAT: + Options.IfFreeforchat = !Options.IfFreeforchat; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_CHK_INVISIBLE: + Options.IfInvisible = !Options.IfInvisible; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_CHK_ONTHEPHONE: + Options.IfOnthephone = !Options.IfOnthephone; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_CHK_OUTTOLUNCH: + Options.IfOuttolunch = !Options.IfOuttolunch; + PostMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + } + break; + + case WM_NOTIFY: + switch(((LPNMHDR)lParam)->idFrom) { + case 0: + switch (((LPNMHDR)lParam)->code) { + case PSN_RESET: + LoadOptions(); + return TRUE; + case PSN_APPLY: + db_set_b(NULL, PLUGINNAME, "MessageRead", (BYTE)Options.MessageRead); + db_set_b(NULL, PLUGINNAME, "MessageSend", (BYTE)Options.MessageSend); + db_set_b(NULL, PLUGINNAME, "UrlRead", (BYTE)Options.UrlRead); + db_set_b(NULL, PLUGINNAME, "UrlSend", (BYTE)Options.UrlSend); + db_set_b(NULL, PLUGINNAME, "FileRead", (BYTE)Options.FileRead); + db_set_b(NULL, PLUGINNAME, "FileSend", (BYTE)Options.FileSend); + db_set_dw(NULL, PLUGINNAME, "ChangeTo", (DWORD)Options.ChangeTo); + db_set_b(NULL, PLUGINNAME, "IfOffline", (BYTE)Options.IfOffline); + db_set_b(NULL, PLUGINNAME, "IfOnline", (BYTE)Options.IfOnline); + db_set_b(NULL, PLUGINNAME, "IfAway", (BYTE)Options.IfAway); + db_set_b(NULL, PLUGINNAME, "IfNA", (BYTE)Options.IfNA); + db_set_b(NULL, PLUGINNAME, "IfDND", (BYTE)Options.IfDND); + db_set_b(NULL, PLUGINNAME, "IfOccupied", (BYTE)Options.IfOccupied); + db_set_b(NULL, PLUGINNAME, "IfFreeforchat", (BYTE)Options.IfFreeforchat); + db_set_b(NULL, PLUGINNAME, "IfInvisible", (BYTE)Options.IfInvisible); + db_set_b(NULL, PLUGINNAME, "IfOnthephone", (BYTE)Options.IfOnthephone); + db_set_b(NULL, PLUGINNAME, "IfOuttolunch", (BYTE)Options.IfOuttolunch); + return TRUE; + break; + } + break; + break; + } + break; + + case WM_DESTROY: + DestroyIcon(hIconMsg); + DestroyIcon(hIconUrl); + DestroyIcon(hIconFile); + break; + } + + return FALSE; +} + +int StatusChangeOptInit(WPARAM wParam, LPARAM lParam) +{ + OPTIONSDIALOGPAGE odp = {0}; + odp.cbSize = sizeof(odp); + odp.hInstance = hInst; + odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPTIONS); + odp.ptszTitle = LPGENT("Status Change"); + odp.ptszGroup = LPGENT("Status"); + odp.flags = ODPF_BOLDGROUPS | ODPF_TCHAR; + odp.pfnDlgProc = DlgProcStatusChangeOpts; + Options_AddPage(wParam, &odp); + return 0; +} + +BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) +{ + hInst = hinstDLL; + return TRUE; +} + +extern "C" __declspec(dllexport) PLUGININFOEX* MirandaPluginInfoEx(DWORD mirandaVersion) +{ + return &pluginInfo; +} + +extern "C" __declspec(dllexport) int Load(void) +{ + mir_getLP(&pluginInfo); + + HookEvent(ME_OPT_INITIALISE, StatusChangeOptInit); + HookEvent(ME_DB_EVENT_ADDED, StatusChangeGetMessage); + + LoadOptions(); + + return 0; +} + +extern "C" __declspec(dllexport) int Unload(void) +{ + return 0; +} diff --git a/plugins/StatusChange/src/resource.h b/plugins/StatusChange/src/resource.h new file mode 100644 index 0000000000..6d5cd3b318 --- /dev/null +++ b/plugins/StatusChange/src/resource.h @@ -0,0 +1,34 @@ +#define IDD_OPTIONS 10 + +#define IDC_CHK_OFFLINE 1001 +#define IDC_CHK_ONLINE 1002 +#define IDC_CHK_AWAY 1003 +#define IDC_CHK_DND 1004 +#define IDC_CHK_NA 1005 +#define IDC_CHK_OCCUPIED 1006 +#define IDC_CHK_FREECHAT 1007 +#define IDC_CHK_INVISIBLE 1008 +#define IDC_CHK_ONTHEPHONE 1009 +#define IDC_CHK_OUTTOLUNCH 1010 + +#define IDC_RAD_OFFLINE 2001 +#define IDC_RAD_ONLINE 2002 +#define IDC_RAD_AWAY 2003 +#define IDC_RAD_DND 2004 +#define IDC_RAD_NA 2005 +#define IDC_RAD_OCCUPIED 2006 +#define IDC_RAD_FREECHAT 2007 +#define IDC_RAD_INVISIBLE 2008 +#define IDC_RAD_ONTHEPHONE 2009 +#define IDC_RAD_OUTTOLUNCH 2010 + +#define IDC_CHK_MESSAGEREAD 3001 +#define IDC_CHK_MESSAGESEND 3002 +#define IDC_CHK_URLREAD 3003 +#define IDC_CHK_URLSEND 3004 +#define IDC_CHK_FILEREAD 3005 +#define IDC_CHK_FILESEND 3006 + +#define IDC_MSGICON 4001 +#define IDC_URLICON 4002 +#define IDC_FILEICON 4003 diff --git a/plugins/StatusChange/src/stdafx.cpp b/plugins/StatusChange/src/stdafx.cpp new file mode 100644 index 0000000000..1976d867da --- /dev/null +++ b/plugins/StatusChange/src/stdafx.cpp @@ -0,0 +1,18 @@ +/* +Copyright (C) 2012-13 Miranda NG Project (http://miranda-ng.org) + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation version 2 +of the License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "common.h" \ No newline at end of file -- cgit v1.2.3