From da9f6e8a856fc87172fb0d5997c607b4a930c102 Mon Sep 17 00:00:00 2001 From: Vadim Dashevskiy Date: Fri, 20 Jul 2012 09:19:04 +0000 Subject: IEView, IgnoreState: changed folder structure git-svn-id: http://svn.miranda-ng.org/main/trunk@1070 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/IgnoreState/Version.h | 20 -- plugins/IgnoreState/Version.rc | 44 ---- plugins/IgnoreState/commonheaders.h | 114 -------- .../IgnoreState/docs/ignorestate-translation.txt | 26 ++ plugins/IgnoreState/icons/ignore_full.ico | Bin 318 -> 0 bytes plugins/IgnoreState/icons/ignore_message.ico | Bin 2806 -> 0 bytes plugins/IgnoreState/icons/ignore_partial.ico | Bin 318 -> 0 bytes plugins/IgnoreState/ignore.rc | 140 ---------- plugins/IgnoreState/ignore_10.vcxproj | 25 +- plugins/IgnoreState/ignore_10.vcxproj.filters | 23 +- plugins/IgnoreState/ignorestate-translation.txt | 26 -- plugins/IgnoreState/main.cpp | 288 --------------------- plugins/IgnoreState/options.cpp | 278 -------------------- plugins/IgnoreState/res/Version.rc | 44 ++++ plugins/IgnoreState/res/ignore.rc | 140 ++++++++++ plugins/IgnoreState/res/ignore_full.ico | Bin 0 -> 318 bytes plugins/IgnoreState/res/ignore_message.ico | Bin 0 -> 2806 bytes plugins/IgnoreState/res/ignore_partial.ico | Bin 0 -> 318 bytes plugins/IgnoreState/resource.h | 27 -- plugins/IgnoreState/src/Version.h | 20 ++ plugins/IgnoreState/src/commonheaders.h | 114 ++++++++ plugins/IgnoreState/src/main.cpp | 288 +++++++++++++++++++++ plugins/IgnoreState/src/options.cpp | 278 ++++++++++++++++++++ plugins/IgnoreState/src/resource.h | 27 ++ 24 files changed, 955 insertions(+), 967 deletions(-) delete mode 100644 plugins/IgnoreState/Version.h delete mode 100644 plugins/IgnoreState/Version.rc delete mode 100644 plugins/IgnoreState/commonheaders.h create mode 100644 plugins/IgnoreState/docs/ignorestate-translation.txt delete mode 100644 plugins/IgnoreState/icons/ignore_full.ico delete mode 100644 plugins/IgnoreState/icons/ignore_message.ico delete mode 100644 plugins/IgnoreState/icons/ignore_partial.ico delete mode 100644 plugins/IgnoreState/ignore.rc delete mode 100644 plugins/IgnoreState/ignorestate-translation.txt delete mode 100644 plugins/IgnoreState/main.cpp delete mode 100644 plugins/IgnoreState/options.cpp create mode 100644 plugins/IgnoreState/res/Version.rc create mode 100644 plugins/IgnoreState/res/ignore.rc create mode 100644 plugins/IgnoreState/res/ignore_full.ico create mode 100644 plugins/IgnoreState/res/ignore_message.ico create mode 100644 plugins/IgnoreState/res/ignore_partial.ico delete mode 100644 plugins/IgnoreState/resource.h create mode 100644 plugins/IgnoreState/src/Version.h create mode 100644 plugins/IgnoreState/src/commonheaders.h create mode 100644 plugins/IgnoreState/src/main.cpp create mode 100644 plugins/IgnoreState/src/options.cpp create mode 100644 plugins/IgnoreState/src/resource.h (limited to 'plugins/IgnoreState') diff --git a/plugins/IgnoreState/Version.h b/plugins/IgnoreState/Version.h deleted file mode 100644 index bdef9574cd..0000000000 --- a/plugins/IgnoreState/Version.h +++ /dev/null @@ -1,20 +0,0 @@ -#define __MAJOR_VERSION 0 -#define __MINOR_VERSION 0 -#define __RELEASE_NUM 3 -#define __BUILD_NUM 0 - -#define __FILEVERSION_STRING __MAJOR_VERSION,__MINOR_VERSION,__RELEASE_NUM,__BUILD_NUM -#define __FILEVERSION_DOTS __MAJOR_VERSION.__MINOR_VERSION.__RELEASE_NUM.__BUILD_NUM - -#define __STRINGIFY_IMPL(x) #x -#define __STRINGIFY(x) __STRINGIFY_IMPL(x) -#define __VERSION_STRING __STRINGIFY(__FILEVERSION_DOTS) - -#define __PLUGIN_NAME "IgnoreState" -#define __INTERNAL_NAME "IgnoreState" -#define __FILENAME "IgnoreState.dll" -#define __DESCRIPTION "Show ignore state of contact in contacts list." -#define __AUTHOR "Kildor" -#define __AUTHOREMAIL "kostia@ngs.ru" -#define __AUTHORWEB "http://kildor.miranda.im/" -#define __COPYRIGHT "© 2009-2010 Kostia Romanov" diff --git a/plugins/IgnoreState/Version.rc b/plugins/IgnoreState/Version.rc deleted file mode 100644 index 41dadb0dd1..0000000000 --- a/plugins/IgnoreState/Version.rc +++ /dev/null @@ -1,44 +0,0 @@ -// 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 "version.h" - -#ifdef _WIN32 -LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL -#endif //_WIN32 - -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 "FileVersion", __FILEVERSION_DOTS - VALUE "InternalName", __PLUGIN_NAME - VALUE "LegalCopyright", __COPYRIGHT - VALUE "OriginalFilename", __FILENAME - VALUE "ProductName", __PLUGIN_NAME - VALUE "ProductVersion", __FILEVERSION_DOTS - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x0, 1200 - END -END diff --git a/plugins/IgnoreState/commonheaders.h b/plugins/IgnoreState/commonheaders.h deleted file mode 100644 index e21e302b69..0000000000 --- a/plugins/IgnoreState/commonheaders.h +++ /dev/null @@ -1,114 +0,0 @@ -/* - IgnoreState plugin for Miranda-IM (www.miranda-im.org) - (c) 2010 by Kildor - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -*/ - -#ifndef COMMHEADERS_H -#define COMMHEADERS_H - -#define MIRANDA_VER 0x0A00 -//#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers - -#define _CRT_SECURE_NO_WARNINGS -#define _WIN32_WINNT 0x0501 - -#ifndef _WIN32_IE -#define _WIN32_IE 0x0501 -#endif - - -//needed by m_utils.h -#include - -// needed by m_icolib.h > r9256 -#include - - -//Miranda API headers -#include -#include -#include -#include -#include -#include -//#include -#include -#include -#include -#include -#include -#include -#include -#include "resource.h" -#include "Version.h" - -//external SDK headers -#include -#include - -static const int DefaultSlot = EXTRA_ICON_PROTO; -#define MODULENAME "IgnoreState" - -/* 3f6acec5-df0e-4d33-a272-e3630addb6c8 */ -#define MIID_IGNORESRATE {0x3f6acec5, 0xdf0e, 0x4d33, {0xa2, 0x72, 0xe3, 0x63, 0x0a, 0xdd, 0xb6, 0xc8}} - -static struct -{ - TCHAR* szDescr; - char* szName; - int defIconID; - HANDLE hIconLibItem; -} iconList[] = -{ - { LPGENT( "Full Ignore" ), "ignore_full", IDI_IFULL }, - { LPGENT( "Partial Ignore" ), "ignore_part", IDI_IPART }, - { LPGENT( "Message Ignore" ), "ignore_mess", IDI_IMESS }, -}; - -typedef struct { - TCHAR* name; - int type; - int icon; - bool filtered; -} IGNOREITEMS; - -static IGNOREITEMS ii[] = { - { LPGENT("All"), IGNOREEVENT_ALL, SKINICON_OTHER_FILLEDBLOB }, - { LPGENT("Messages"), IGNOREEVENT_MESSAGE, SKINICON_EVENT_MESSAGE }, - { LPGENT("URL"), IGNOREEVENT_URL, SKINICON_EVENT_URL }, - { LPGENT("Files"), IGNOREEVENT_FILE, SKINICON_EVENT_FILE }, - { LPGENT("User Online"), IGNOREEVENT_USERONLINE, SKINICON_OTHER_USERONLINE }, - { LPGENT("Authorization"), IGNOREEVENT_AUTHORIZATION, SKINICON_OTHER_MIRANDA }, - { LPGENT("You Were Added"), IGNOREEVENT_YOUWEREADDED, SKINICON_OTHER_ADDCONTACT }, - { LPGENT("Typing Notify"), IGNOREEVENT_TYPINGNOTIFY, SKINICON_OTHER_TYPING } -}; - -static int isExtraiconsUsed = 0; -static byte bUseMirandaSettings; - -extern HINSTANCE g_hInst; -extern int onExtraImageApplying(WPARAM wParam, LPARAM lParam); -extern int onExtraImageListRebuild(WPARAM wParam, LPARAM lParam); -extern int onOptInitialise(WPARAM wParam, LPARAM lParam); -extern BOOL checkState(int type); -extern VOID fill_filter(); -extern HANDLE hExtraIcon; -extern IconExtraColumn g_IECAuth, g_IECGrant, g_IECAuthGrant, g_IECClear; -extern INT clistIcon; - -#endif //COMMHEADERS_H diff --git a/plugins/IgnoreState/docs/ignorestate-translation.txt b/plugins/IgnoreState/docs/ignorestate-translation.txt new file mode 100644 index 0000000000..7ef4094bcf --- /dev/null +++ b/plugins/IgnoreState/docs/ignorestate-translation.txt @@ -0,0 +1,26 @@ +; Common strings that belong to many files +;[Warning: classic contact list plugin doesn`t have ability to use extraicons] + +; ../../plugins/IgnoreState/commonheaders.h +;[All] +;[Authorization] +;[Files] +;[Full Ignore] +;[Message Ignore] +;[Messages] +;[Partial Ignore] +;[Typing Notify] +;[URL] +;[User Online] +;[You Were Added] + +; ../../plugins/IgnoreState/ignore.rc +;[Filtered events:] +;[Plugin settings] +;[Use] +;[Use Miranda ignore settings for All Contacts] +;[slot to draw the icon] + +; ../../plugins/IgnoreState/options.cpp +;[Contact List] +;[Extraicons plugin is used, use Contact list > Extraicons for customize.] diff --git a/plugins/IgnoreState/icons/ignore_full.ico b/plugins/IgnoreState/icons/ignore_full.ico deleted file mode 100644 index 52ebdde428..0000000000 Binary files a/plugins/IgnoreState/icons/ignore_full.ico and /dev/null differ diff --git a/plugins/IgnoreState/icons/ignore_message.ico b/plugins/IgnoreState/icons/ignore_message.ico deleted file mode 100644 index 3476ef41e9..0000000000 Binary files a/plugins/IgnoreState/icons/ignore_message.ico and /dev/null differ diff --git a/plugins/IgnoreState/icons/ignore_partial.ico b/plugins/IgnoreState/icons/ignore_partial.ico deleted file mode 100644 index 59677eec84..0000000000 Binary files a/plugins/IgnoreState/icons/ignore_partial.ico and /dev/null differ diff --git a/plugins/IgnoreState/ignore.rc b/plugins/IgnoreState/ignore.rc deleted file mode 100644 index 1e1ac77e05..0000000000 --- a/plugins/IgnoreState/ignore.rc +++ /dev/null @@ -1,140 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "afxres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Russian resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS) -#ifdef _WIN32 -LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT -#pragma code_page(1251) -#endif //_WIN32 - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -IDI_IFULL ICON "icons\\ignore_full.ico" -IDI_IPART ICON "icons\\ignore_partial.ico" -IDI_IMESS ICON "icons\\ignore_message.ico" -#endif // Russian resources -///////////////////////////////////////////////////////////////////////////// - - -///////////////////////////////////////////////////////////////////////////// -// English (U.S.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""afxres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_RATE_OPT DIALOGEX 0, 0, 314, 240 -STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD -FONT 8, "MS Shell Dlg", 0, 0, 0x0 -BEGIN - COMBOBOX IDC_ADVICON,84,33,102,81,CBS_DROPDOWNLIST | WS_VSCROLL | - WS_TABSTOP,WS_EX_CLIENTEDGE - GROUPBOX "Plugin settings",IDC_STATIC,17,17,278,207 - RTEXT "Use",IDC_STATIC,28,33,49,8 - LTEXT "slot to draw the icon",IDC_STATIC,192,33,92,8 - LTEXT "Warning: classic contact list plugin doesn`t have ability to use extraicons", - IDC_NOTICE,54,51,230,20,NOT WS_VISIBLE - LTEXT "Filtered events:",IDC_STATIC,54,70,113,10 - CONTROL "",IDC_FILTER,"SysTreeView32",TVS_DISABLEDRAGDROP | - TVS_NOTOOLTIPS | TVS_CHECKBOXES | WS_BORDER | WS_TABSTOP, - 84,85,102,90 - CONTROL "Use Miranda ignore settings for All Contacts", - IDC_IGNORE_IGNOREALL,"Button",BS_AUTOCHECKBOX | BS_TOP | - BS_MULTILINE | WS_TABSTOP,84,182,200,25 -END - - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO -BEGIN - IDD_RATE_OPT, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 307 - VERTGUIDE, 17 - VERTGUIDE, 54 - VERTGUIDE, 84 - VERTGUIDE, 186 - VERTGUIDE, 192 - VERTGUIDE, 284 - VERTGUIDE, 295 - TOPMARGIN, 7 - BOTTOMMARGIN, 233 - HORZGUIDE, 17 - HORZGUIDE, 33 - HORZGUIDE, 70 - HORZGUIDE, 224 - END -END -#endif // APSTUDIO_INVOKED - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/plugins/IgnoreState/ignore_10.vcxproj b/plugins/IgnoreState/ignore_10.vcxproj index 53f4546172..c322ccf13d 100644 --- a/plugins/IgnoreState/ignore_10.vcxproj +++ b/plugins/IgnoreState/ignore_10.vcxproj @@ -73,7 +73,7 @@ Disabled ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_WINDOWS;_USRDLL;AUTHSTATE_EXPORTS;%(PreprocessorDefinitions) + WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) MultiThreadedDebugDLL Level3 EditAndContinue @@ -98,7 +98,7 @@ Disabled ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - WIN64;_DEBUG;_WINDOWS;_USRDLL;AUTHSTATE_EXPORTS;%(PreprocessorDefinitions) + WIN64;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) MultiThreadedDebugDLL Level3 Use @@ -124,7 +124,7 @@ OnlyExplicitInline Size ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_WINDOWS;_USRDLL;AUTHSTATE_EXPORTS;%(PreprocessorDefinitions) + WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) Level3 Use Commonheaders.h @@ -151,7 +151,7 @@ OnlyExplicitInline Size ..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories) - WIN64;NDEBUG;_WINDOWS;_USRDLL;AUTHSTATE_EXPORTS;%(PreprocessorDefinitions) + WIN64;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) Level3 Use Commonheaders.h @@ -173,24 +173,21 @@ - + Create - + - - - + + + - - + + - - - diff --git a/plugins/IgnoreState/ignore_10.vcxproj.filters b/plugins/IgnoreState/ignore_10.vcxproj.filters index afeeae6572..03b607d0ac 100644 --- a/plugins/IgnoreState/ignore_10.vcxproj.filters +++ b/plugins/IgnoreState/ignore_10.vcxproj.filters @@ -18,42 +18,33 @@ - + Source Files - + Source Files - + Header Files - + Header Files - + Header Files - + Resource Files - + Resource Files - - Resource Files - - - Resource Files - - - Resource Files - Docs diff --git a/plugins/IgnoreState/ignorestate-translation.txt b/plugins/IgnoreState/ignorestate-translation.txt deleted file mode 100644 index 7ef4094bcf..0000000000 --- a/plugins/IgnoreState/ignorestate-translation.txt +++ /dev/null @@ -1,26 +0,0 @@ -; Common strings that belong to many files -;[Warning: classic contact list plugin doesn`t have ability to use extraicons] - -; ../../plugins/IgnoreState/commonheaders.h -;[All] -;[Authorization] -;[Files] -;[Full Ignore] -;[Message Ignore] -;[Messages] -;[Partial Ignore] -;[Typing Notify] -;[URL] -;[User Online] -;[You Were Added] - -; ../../plugins/IgnoreState/ignore.rc -;[Filtered events:] -;[Plugin settings] -;[Use] -;[Use Miranda ignore settings for All Contacts] -;[slot to draw the icon] - -; ../../plugins/IgnoreState/options.cpp -;[Contact List] -;[Extraicons plugin is used, use Contact list > Extraicons for customize.] diff --git a/plugins/IgnoreState/main.cpp b/plugins/IgnoreState/main.cpp deleted file mode 100644 index c68e6f6d2d..0000000000 --- a/plugins/IgnoreState/main.cpp +++ /dev/null @@ -1,288 +0,0 @@ -/* - IgnoreState plugin for Miranda-IM (www.miranda-im.org) - (c) 2010 by Kildor - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -*/ - -#include "commonheaders.h" - -HINSTANCE g_hInst; - -HANDLE hHookModulesLoaded = NULL, hSystemOKToExit = NULL, hOptInitialise = NULL, hIcoLibIconsChanged = NULL; -HANDLE hHookExtraIconsRebuild = NULL, hHookExtraIconsApply = NULL, hContactSettingChanged = NULL; -HANDLE hPrebuildContactMenu = NULL; -HANDLE hExtraIcon = NULL; -int hLangpack; - -INT currentFilter = 0; -//static int bUseMirandaSettings = 0; - -IconExtraColumn g_IECIgnoreFull = {0}; -IconExtraColumn g_IECIgnorePart = {0}; -IconExtraColumn g_IECIgnoreMess = {0}; -IconExtraColumn g_IECClear = {0}; - - - - -INT clistIcon = 0; //Icon slot to use -//DWORD dMask = IGNOREEVENT_USERONLINE; // by default hide online notification - -//DWORD dIgnore = 0x0; - -PLUGININFOEX pluginInfo={ - sizeof(PLUGININFOEX), - __PLUGIN_NAME, - PLUGIN_MAKE_VERSION(__MAJOR_VERSION, __MINOR_VERSION, __RELEASE_NUM, __BUILD_NUM), - __DESCRIPTION, - __AUTHOR, - __AUTHOREMAIL, - __COPYRIGHT, - __AUTHORWEB, - UNICODE_AWARE, - {0xa6872bcd, 0xf2a1, 0x41b8, {0xb2, 0xf1, 0xdd, 0x7c, 0xec, 0x05, 0x57, 0x34}} - // a6872bcd-f2a1-41b8-b2f1-dd7cec055734 -}; - -extern "C" BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved) -{ - g_hInst = hinstDLL; - return TRUE; -} - -// плагининфо -extern "C" __declspec(dllexport) PLUGININFOEX* MirandaPluginInfoEx(DWORD mirandaVersion) -{ - return &pluginInfo; -} - -extern "C" __declspec(dllexport) const MUUID MirandaInterfaces[] = {MIID_IGNORESRATE, MIID_LAST}; - -int onSystemOKToExit(WPARAM wParam,LPARAM lParam) -{ - UnhookEvent(hHookModulesLoaded); - UnhookEvent(hHookExtraIconsRebuild); - UnhookEvent(hHookExtraIconsApply); - UnhookEvent(hOptInitialise); - UnhookEvent(hSystemOKToExit); - if (hIcoLibIconsChanged) UnhookEvent(hIcoLibIconsChanged); - if (hContactSettingChanged) - UnhookEvent(hContactSettingChanged); - - return 0; -} - - -inline BOOL checkState(int type) -{ - return ((currentFilter>>(type-1))&1); -} - - -INT_PTR isIgnored(HANDLE hContact, int type) -{ - int i = 0, all = 0, filtered = 0; - - if (type == IGNOREEVENT_ALL) - { - int cii = SIZEOF(ii); - for (i = 1; i < cii; i++) - { - if (isIgnored(hContact, ii[i].type)) - { -// checkState(ii[i].type) ? filtered++ : all++; - ii[i].filtered ? filtered++ : all++; - } - } - return (all+filtered == cii-1) ? 1 : (all > 0 ? -1 : 0) ; - } - else - return CallService(MS_IGNORE_ISIGNORED, (WPARAM)hContact, (LPARAM)type); -} - -int onExtraImageApplying(WPARAM wParam, LPARAM lParam) -{ - HANDLE hContact = (HANDLE)wParam; - int ignore = isIgnored(hContact, IGNOREEVENT_ALL); - if (hExtraIcon != NULL) - { - if (ignore == 1) - { - ExtraIcon_SetIcon(hExtraIcon, hContact, "ignore_full"); - } - else if (ignore == 0) - { - ExtraIcon_SetIcon(hExtraIcon, hContact, ""); - } - else if (isIgnored((HANDLE)wParam, IGNOREEVENT_MESSAGE)) - { - ExtraIcon_SetIcon(hExtraIcon, hContact, "ignore_mess"); - } - else - { - ExtraIcon_SetIcon(hExtraIcon, hContact, "ignore_part"); - } - } - else - { - if (ignore == 1) - { - CallService(MS_CLIST_EXTRA_SET_ICON, (WPARAM) wParam, (LPARAM) &g_IECIgnoreFull); - } - else if (ignore == 0) - { - CallService(MS_CLIST_EXTRA_SET_ICON, (WPARAM) wParam, (LPARAM) &g_IECClear); - } - else if (isIgnored((HANDLE)wParam, IGNOREEVENT_MESSAGE)) - { - CallService(MS_CLIST_EXTRA_SET_ICON, (WPARAM) wParam, (LPARAM) &g_IECIgnoreMess); - } - else - { - CallService(MS_CLIST_EXTRA_SET_ICON, (WPARAM) wParam, (LPARAM) &g_IECIgnorePart); - } - } - return 0; -} - - -int onExtraImageListRebuild(WPARAM wParam, LPARAM lParam) -{ - g_IECIgnoreMess.cbSize = sizeof(IconExtraColumn); - g_IECIgnoreMess.ColumnType = clistIcon; - g_IECIgnorePart.cbSize = sizeof(IconExtraColumn); - g_IECIgnorePart.ColumnType = clistIcon; - g_IECIgnoreFull.cbSize = sizeof(IconExtraColumn); - g_IECIgnoreFull.ColumnType = clistIcon; - - if (ServiceExists(MS_CLIST_EXTRA_ADD_ICON)) - { - g_IECIgnoreMess.hImage = (HANDLE)CallService(MS_CLIST_EXTRA_ADD_ICON, (WPARAM)(HICON) CallService(MS_SKIN2_GETICON, 0, (LPARAM)"ignore_mess"), (LPARAM)0); - g_IECIgnorePart.hImage = (HANDLE)CallService(MS_CLIST_EXTRA_ADD_ICON, (WPARAM)(HICON) CallService(MS_SKIN2_GETICON, 0, (LPARAM)"ignore_part"), (LPARAM)0); - g_IECIgnoreFull.hImage = (HANDLE)CallService(MS_CLIST_EXTRA_ADD_ICON, (WPARAM)(HICON) CallService(MS_SKIN2_GETICON, 0, (LPARAM)"ignore_full"), (LPARAM)0); - } - return 0; -} - -static VOID init_icolib (void) -{ - SKINICONDESC sid = {0}; - ZeroMemory(&sid, sizeof(sid)); - TCHAR tszFile[MAX_PATH]; - sid.cbSize = sizeof(sid); - sid.flags = SIDF_ALL_TCHAR; - int i = 0; - - sid.ptszSection = _T(MODULENAME); - GetModuleFileName(g_hInst, tszFile, MAX_PATH); - sid.ptszDefaultFile = tszFile; - - for ( i = 0; i < SIZEOF(iconList); i++ ) { - sid.pszName = iconList[i].szName; - sid.ptszDescription = iconList[i].szDescr; - sid.iDefaultIndex = -iconList[i].defIconID; - iconList[i].hIconLibItem = Skin_AddIcon(&sid); - } -} - -VOID fill_filter(void) -{ - bUseMirandaSettings = DBGetContactSettingByte(NULL, MODULENAME, "UseMirandaSettings", 0); - - currentFilter = bUseMirandaSettings ? DBGetContactSettingDword(NULL, "Ignore", "Default1", 0) : DBGetContactSettingDword(NULL, MODULENAME, "Filter", 0x8); - - int i = 0, cii = SIZEOF(ii); - - for (; i< cii; i++) - { - if (checkState((ii[i].type))) - ii[i].filtered = true; - else - ii[i].filtered = false; - } -} - -int onModulesLoaded(WPARAM wParam,LPARAM lParam) -{ - hOptInitialise = HookEvent(ME_OPT_INITIALISE, onOptInitialise); - - //IcoLib support - init_icolib(); - fill_filter(); - - hExtraIcon = ExtraIcon_Register("ignore", "IgnoreState", "ignore_full"); - - if (hExtraIcon != NULL) - { - // Set initial value for all contacts - HANDLE hContact = (HANDLE) CallService(MS_DB_CONTACT_FINDFIRST, 0, 0); - while (hContact != NULL) - { - onExtraImageApplying((WPARAM)hContact, NULL); - hContact = (HANDLE) CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM) hContact, 0); - } - } - else - { - hIcoLibIconsChanged = HookEvent(ME_SKIN2_ICONSCHANGED, onExtraImageListRebuild); - hHookExtraIconsRebuild = HookEvent(ME_CLIST_EXTRA_LIST_REBUILD, onExtraImageListRebuild); - hHookExtraIconsApply = HookEvent(ME_CLIST_EXTRA_IMAGE_APPLY, onExtraImageApplying); - onExtraImageListRebuild(0,0); - } - - return 0; -} - - -int onContactSettingChanged(WPARAM wParam,LPARAM lParam) -{ - DBCONTACTWRITESETTING *cws=(DBCONTACTWRITESETTING*)lParam; - if (!lstrcmpA(cws->szModule,"Ignore") & !lstrcmpA(cws->szSetting,"Mask1")) { - onExtraImageApplying(wParam, lParam); - } - if ((HANDLE)wParam ==0) - if (!lstrcmpA(cws->szModule,MODULENAME) & !lstrcmpA(cws->szSetting,"Filter") || - bUseMirandaSettings && (!lstrcmpA(cws->szModule,"Ignore") & !lstrcmpA(cws->szSetting,"Default1")) - ) { - fill_filter(); - } - - return 0; -} - -extern "C" int __declspec(dllexport) Load(void) -{ - - mir_getLP(&pluginInfo); - - hHookModulesLoaded = HookEvent(ME_SYSTEM_MODULESLOADED, onModulesLoaded); - hSystemOKToExit = HookEvent(ME_SYSTEM_OKTOEXIT,onSystemOKToExit); - hContactSettingChanged = HookEvent(ME_DB_CONTACT_SETTINGCHANGED, onContactSettingChanged); - - clistIcon = DBGetContactSettingByte(NULL, MODULENAME, "AdvancedIcon", DefaultSlot); - - g_IECClear.cbSize = sizeof(IconExtraColumn); - g_IECClear.ColumnType = clistIcon; - g_IECClear.hImage = (HANDLE) -1; - - return 0; -} - -extern "C" int __declspec(dllexport) Unload(void) -{ - return 0; -} diff --git a/plugins/IgnoreState/options.cpp b/plugins/IgnoreState/options.cpp deleted file mode 100644 index eda6b6ffea..0000000000 --- a/plugins/IgnoreState/options.cpp +++ /dev/null @@ -1,278 +0,0 @@ -/* - IgnoreState plugin for Miranda-IM (www.miranda-im.org) - (c) 2010 by Kildor - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -*/ - -#include "commonheaders.h" - -//extern byte bUseAuthIcon, bUseGrantIcon, bContactMenuItem, bIconsForRecentContacts; - -//#define EXTRA_ICON_RES0 0 // only used by nicer -//#define EXTRA_ICON_EMAIL 1 -//#define EXTRA_ICON_WEB 2 -//#define EXTRA_ICON_SMS 3 -//#define EXTRA_ICON_ADV1 4 -//#define EXTRA_ICON_ADV2 5 -//#define EXTRA_ICON_ADV3 6 -//#define EXTRA_ICON_CLIENT 7 -//#define EXTRA_ICON_ADV4 8 -//#define EXTRA_ICON_RES1 9 // only used by nicer -//#define EXTRA_ICON_PROTO 9 // used by mwclist and modern -//#define EXTRA_ICON_RES2 10 // only used by nicer -//#define EXTRA_ICON_VISMODE 10 // only used by modern - -#define MS_SKINENG_DRAWICONEXFIX "SkinEngine/DrawIconEx_Fix" - -enum { - clist_none, - clist_modern, - clist_nicer -}; - -TCHAR* szAdvancedIconsModern[] = { - _T("E-mail"), - _T("Web page"), - _T("Phone/SMS"), - _T("Advanced #1"), - _T("Advanced #2"), - _T("Advanced #3"), - _T("Client"), - _T("Advanced #4"), - _T("Protocol"), - _T("Visibility/Chat activity") -}; -//const int cAdvancedIconsModern = sizeof(szAdvancedIconsModern) / sizeof(szAdvancedIconsModern[0]); - -TCHAR* szAdvancedIconsNicer[] = { - _T("Reserved"), - _T("E-mail"), - _T("Homepage"), - _T("Telephone"), - _T("Advanced #1"), - _T("Advanced #2"), - _T("Client"), - _T("Advanced #3"), - _T("Advanced #4"), - _T("Reserved #1"), - _T("Reserved #2") - }; -//const int cAdvancedIconsNicer = sizeof(szAdvancedIconsNicer) / sizeof(szAdvancedIconsNicer[0]); - -INT_PTR CALLBACK DlgProcOptions(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) -{ - HIMAGELIST himlButtonIcons=NULL; - INT bInitializing = 0; - INT usedClist = clist_none; - INT cAdvancedIcons; - isExtraiconsUsed = ServiceExists(MS_EXTRAICON_REGISTER); -// const char **szAdvancedIcons; - HWND hTree=GetDlgItem(hwndDlg,IDC_FILTER); - - switch (msg) - { - case WM_INITDIALOG: - { - TranslateDialogDefault(hwndDlg); - bInitializing = 1; - fill_filter(); - if (ServiceExists(MS_CLIST_EXTRA_ADD_ICON)) - { - if (hExtraIcon == NULL) - { - if (ServiceExists(MS_SKINENG_DRAWICONEXFIX)) - { // modern? - cAdvancedIcons = SIZEOF(szAdvancedIconsModern); - usedClist = clist_modern; - } - else - { - if (ServiceExists("CLN/About")) - { - usedClist = clist_nicer; - cAdvancedIcons = SIZEOF(szAdvancedIconsNicer); - } - else - { - usedClist = clist_modern; - cAdvancedIcons = SIZEOF(szAdvancedIconsModern) - 1; // mw doesn`t have last modern extraicon - } - } - } - else - { - SendDlgItemMessage(hwndDlg,IDC_NOTICE, WM_SETTEXT,0,(LPARAM)TranslateT("Extraicons plugin is used, use Contact list > Extraicons for customize.")); - ShowWindow(GetDlgItem(hwndDlg, IDC_NOTICE), SW_SHOW); - EnableWindow(GetDlgItem(hwndDlg, IDC_ADVICON), 0); - } - } - else - { - cAdvancedIcons = 0; -// SendDlgItemMessage(hwndDlg,IDC_USED_CLIST, WM_SETTEXT,0,(LPARAM)_T("Your clist: classic")); - SendDlgItemMessage(hwndDlg,IDC_NOTICE, WM_SETTEXT,0,(LPARAM)TranslateT("Warning: classic contact list plugin doesn`t have ability to use extraicons")); - ShowWindow(GetDlgItem(hwndDlg, IDC_NOTICE), SW_SHOW); - EnableWindow(GetDlgItem(hwndDlg, IDC_ADVICON), 0); - } - if (usedClist != clist_none) { - for (int i = 0; i < cAdvancedIcons; i++) - { - SendMessage(GetDlgItem(hwndDlg, IDC_ADVICON), CB_ADDSTRING, 0, (LPARAM) TranslateTS( usedClist==clist_modern ? szAdvancedIconsModern[i] : szAdvancedIconsNicer[i])); - } - - if (usedClist == clist_modern ) - SendMessage(GetDlgItem(hwndDlg, IDC_ADVICON), CB_SETCURSEL, clistIcon-1, 0); - else - SendMessage(GetDlgItem(hwndDlg, IDC_ADVICON), CB_SETCURSEL, clistIcon, 0); - } - - SetWindowLongPtr(hTree,GWL_STYLE,GetWindowLongPtr(hTree,GWL_STYLE)|TVS_NOHSCROLL); - { - himlButtonIcons=ImageList_Create(GetSystemMetrics(SM_CXSMICON),GetSystemMetrics(SM_CYSMICON),ILC_COLOR32|ILC_MASK,2,2); - TreeView_SetImageList(hTree,himlButtonIcons,TVSIL_NORMAL); - } - TreeView_DeleteAllItems(hTree); - - int i; - int cii = SIZEOF(ii); - for (i=2; iidFrom) - { - case 0: - { - switch (((LPNMHDR)lParam)->code) - { - case PSN_APPLY: - { - if (usedClist==clist_none && hExtraIcon == NULL ) - return TRUE; -/////////// - DWORD flags=0; - TVITEM tvi; - tvi.mask=TVIF_HANDLE|TBIF_LPARAM; - HWND hTree=GetDlgItem(hwndDlg,IDC_FILTER); - tvi.hItem=TreeView_GetRoot(hTree); //check ignore all - while(tvi.hItem) - { - TreeView_GetItem(hTree,&tvi); - if(TreeView_GetCheckState(hTree,tvi.hItem)) flags|=1<<(tvi.lParam-1); - tvi.hItem=TreeView_GetNextSibling(hTree,tvi.hItem); - } - DBWriteContactSettingDword(NULL, MODULENAME, "Filter", flags); - - bUseMirandaSettings = IsDlgButtonChecked(hwndDlg,IDC_IGNORE_IGNOREALL) ? 1 : 0; - DBWriteContactSettingByte(NULL, MODULENAME, "UseMirandaSettings", bUseMirandaSettings); - - fill_filter(); -////////// - if (hExtraIcon == NULL) - { - clistIcon = SendMessage(GetDlgItem(hwndDlg, IDC_ADVICON), CB_GETCURSEL, 0, 0); - if (usedClist == clist_modern ) - clistIcon++; - - //Store options values to DB - DBWriteContactSettingByte(NULL, MODULENAME, "AdvancedIcon", clistIcon); - - HANDLE hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDFIRST, 0, 0); - while (hContact) - { - CallService(MS_CLIST_EXTRA_SET_ICON, (WPARAM)hContact, (LPARAM)&g_IECClear); - hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM)hContact, 0); - } - g_IECClear.ColumnType = clistIcon; - if (hExtraIcon == NULL) - onExtraImageListRebuild(0,0); - hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDFIRST, 0, 0); - while (hContact) - { - onExtraImageApplying((WPARAM)hContact,0); - hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM)hContact, 0); - } - } - } - } - } - case IDC_FILTER: - if (((LPNMHDR)lParam)->code == NM_CLICK) - { - SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - } - } - } - case WM_DESTROY: - break; - } - return FALSE; -} - -int onOptInitialise(WPARAM wParam, LPARAM lParam) -{ - OPTIONSDIALOGPAGE odp = { 0 }; - odp.cbSize = sizeof(odp); - odp.hInstance = g_hInst; - odp.flags = ODPF_BOLDGROUPS; - odp.pszGroup = LPGEN("Contact List"); - odp.pszTemplate = MAKEINTRESOURCEA(IDD_RATE_OPT); - odp.pszTitle = MODULENAME; - odp.pfnDlgProc = DlgProcOptions; - Options_AddPage(wParam, &odp); - - return 0; -} diff --git a/plugins/IgnoreState/res/Version.rc b/plugins/IgnoreState/res/Version.rc new file mode 100644 index 0000000000..770f6ff8f2 --- /dev/null +++ b/plugins/IgnoreState/res/Version.rc @@ -0,0 +1,44 @@ +// 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" + +#ifdef _WIN32 +LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL +#endif //_WIN32 + +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 "FileVersion", __FILEVERSION_DOTS + VALUE "InternalName", __PLUGIN_NAME + VALUE "LegalCopyright", __COPYRIGHT + VALUE "OriginalFilename", __FILENAME + VALUE "ProductName", __PLUGIN_NAME + VALUE "ProductVersion", __FILEVERSION_DOTS + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0, 1200 + END +END diff --git a/plugins/IgnoreState/res/ignore.rc b/plugins/IgnoreState/res/ignore.rc new file mode 100644 index 0000000000..9ee105b653 --- /dev/null +++ b/plugins/IgnoreState/res/ignore.rc @@ -0,0 +1,140 @@ +// 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 + +///////////////////////////////////////////////////////////////////////////// +// Russian resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS) +#ifdef _WIN32 +LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT +#pragma code_page(1251) +#endif //_WIN32 + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_IFULL ICON "ignore_full.ico" +IDI_IPART ICON "ignore_partial.ico" +IDI_IMESS ICON "ignore_message.ico" +#endif // Russian resources +///////////////////////////////////////////////////////////////////////////// + + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +#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 + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_RATE_OPT DIALOGEX 0, 0, 314, 240 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD +FONT 8, "MS Shell Dlg", 0, 0, 0x0 +BEGIN + COMBOBOX IDC_ADVICON,84,33,102,81,CBS_DROPDOWNLIST | WS_VSCROLL | + WS_TABSTOP,WS_EX_CLIENTEDGE + GROUPBOX "Plugin settings",IDC_STATIC,17,17,278,207 + RTEXT "Use",IDC_STATIC,28,33,49,8 + LTEXT "slot to draw the icon",IDC_STATIC,192,33,92,8 + LTEXT "Warning: classic contact list plugin doesn`t have ability to use extraicons", + IDC_NOTICE,54,51,230,20,NOT WS_VISIBLE + LTEXT "Filtered events:",IDC_STATIC,54,70,113,10 + CONTROL "",IDC_FILTER,"SysTreeView32",TVS_DISABLEDRAGDROP | + TVS_NOTOOLTIPS | TVS_CHECKBOXES | WS_BORDER | WS_TABSTOP, + 84,85,102,90 + CONTROL "Use Miranda ignore settings for All Contacts", + IDC_IGNORE_IGNOREALL,"Button",BS_AUTOCHECKBOX | BS_TOP | + BS_MULTILINE | WS_TABSTOP,84,182,200,25 +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO +BEGIN + IDD_RATE_OPT, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 307 + VERTGUIDE, 17 + VERTGUIDE, 54 + VERTGUIDE, 84 + VERTGUIDE, 186 + VERTGUIDE, 192 + VERTGUIDE, 284 + VERTGUIDE, 295 + TOPMARGIN, 7 + BOTTOMMARGIN, 233 + HORZGUIDE, 17 + HORZGUIDE, 33 + HORZGUIDE, 70 + HORZGUIDE, 224 + END +END +#endif // APSTUDIO_INVOKED + +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/plugins/IgnoreState/res/ignore_full.ico b/plugins/IgnoreState/res/ignore_full.ico new file mode 100644 index 0000000000..52ebdde428 Binary files /dev/null and b/plugins/IgnoreState/res/ignore_full.ico differ diff --git a/plugins/IgnoreState/res/ignore_message.ico b/plugins/IgnoreState/res/ignore_message.ico new file mode 100644 index 0000000000..3476ef41e9 Binary files /dev/null and b/plugins/IgnoreState/res/ignore_message.ico differ diff --git a/plugins/IgnoreState/res/ignore_partial.ico b/plugins/IgnoreState/res/ignore_partial.ico new file mode 100644 index 0000000000..59677eec84 Binary files /dev/null and b/plugins/IgnoreState/res/ignore_partial.ico differ diff --git a/plugins/IgnoreState/resource.h b/plugins/IgnoreState/resource.h deleted file mode 100644 index 810522778e..0000000000 --- a/plugins/IgnoreState/resource.h +++ /dev/null @@ -1,27 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by ignore.rc -// -#define IDD_RATE_OPT 9 -#define IDI_IFULL 101 -#define IDI_IPART 102 -#define IDI_IMESS 103 -#define IDC_ADVICON 1001 -#define IDC_NOTMODERN_WARNING 1010 -#define IDC_NOTICE 1010 -#define IDC_USED_CLIST 1011 -#define IDC_FILTER 1012 -#define IDC_TREE1 1016 -#define IDC_CHECK1 1019 -#define IDC_IGNORE_IGNOREALL 1019 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 104 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1020 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/plugins/IgnoreState/src/Version.h b/plugins/IgnoreState/src/Version.h new file mode 100644 index 0000000000..bdef9574cd --- /dev/null +++ b/plugins/IgnoreState/src/Version.h @@ -0,0 +1,20 @@ +#define __MAJOR_VERSION 0 +#define __MINOR_VERSION 0 +#define __RELEASE_NUM 3 +#define __BUILD_NUM 0 + +#define __FILEVERSION_STRING __MAJOR_VERSION,__MINOR_VERSION,__RELEASE_NUM,__BUILD_NUM +#define __FILEVERSION_DOTS __MAJOR_VERSION.__MINOR_VERSION.__RELEASE_NUM.__BUILD_NUM + +#define __STRINGIFY_IMPL(x) #x +#define __STRINGIFY(x) __STRINGIFY_IMPL(x) +#define __VERSION_STRING __STRINGIFY(__FILEVERSION_DOTS) + +#define __PLUGIN_NAME "IgnoreState" +#define __INTERNAL_NAME "IgnoreState" +#define __FILENAME "IgnoreState.dll" +#define __DESCRIPTION "Show ignore state of contact in contacts list." +#define __AUTHOR "Kildor" +#define __AUTHOREMAIL "kostia@ngs.ru" +#define __AUTHORWEB "http://kildor.miranda.im/" +#define __COPYRIGHT "© 2009-2010 Kostia Romanov" diff --git a/plugins/IgnoreState/src/commonheaders.h b/plugins/IgnoreState/src/commonheaders.h new file mode 100644 index 0000000000..e21e302b69 --- /dev/null +++ b/plugins/IgnoreState/src/commonheaders.h @@ -0,0 +1,114 @@ +/* + IgnoreState plugin for Miranda-IM (www.miranda-im.org) + (c) 2010 by Kildor + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +*/ + +#ifndef COMMHEADERS_H +#define COMMHEADERS_H + +#define MIRANDA_VER 0x0A00 +//#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers + +#define _CRT_SECURE_NO_WARNINGS +#define _WIN32_WINNT 0x0501 + +#ifndef _WIN32_IE +#define _WIN32_IE 0x0501 +#endif + + +//needed by m_utils.h +#include + +// needed by m_icolib.h > r9256 +#include + + +//Miranda API headers +#include +#include +#include +#include +#include +#include +//#include +#include +#include +#include +#include +#include +#include +#include +#include "resource.h" +#include "Version.h" + +//external SDK headers +#include +#include + +static const int DefaultSlot = EXTRA_ICON_PROTO; +#define MODULENAME "IgnoreState" + +/* 3f6acec5-df0e-4d33-a272-e3630addb6c8 */ +#define MIID_IGNORESRATE {0x3f6acec5, 0xdf0e, 0x4d33, {0xa2, 0x72, 0xe3, 0x63, 0x0a, 0xdd, 0xb6, 0xc8}} + +static struct +{ + TCHAR* szDescr; + char* szName; + int defIconID; + HANDLE hIconLibItem; +} iconList[] = +{ + { LPGENT( "Full Ignore" ), "ignore_full", IDI_IFULL }, + { LPGENT( "Partial Ignore" ), "ignore_part", IDI_IPART }, + { LPGENT( "Message Ignore" ), "ignore_mess", IDI_IMESS }, +}; + +typedef struct { + TCHAR* name; + int type; + int icon; + bool filtered; +} IGNOREITEMS; + +static IGNOREITEMS ii[] = { + { LPGENT("All"), IGNOREEVENT_ALL, SKINICON_OTHER_FILLEDBLOB }, + { LPGENT("Messages"), IGNOREEVENT_MESSAGE, SKINICON_EVENT_MESSAGE }, + { LPGENT("URL"), IGNOREEVENT_URL, SKINICON_EVENT_URL }, + { LPGENT("Files"), IGNOREEVENT_FILE, SKINICON_EVENT_FILE }, + { LPGENT("User Online"), IGNOREEVENT_USERONLINE, SKINICON_OTHER_USERONLINE }, + { LPGENT("Authorization"), IGNOREEVENT_AUTHORIZATION, SKINICON_OTHER_MIRANDA }, + { LPGENT("You Were Added"), IGNOREEVENT_YOUWEREADDED, SKINICON_OTHER_ADDCONTACT }, + { LPGENT("Typing Notify"), IGNOREEVENT_TYPINGNOTIFY, SKINICON_OTHER_TYPING } +}; + +static int isExtraiconsUsed = 0; +static byte bUseMirandaSettings; + +extern HINSTANCE g_hInst; +extern int onExtraImageApplying(WPARAM wParam, LPARAM lParam); +extern int onExtraImageListRebuild(WPARAM wParam, LPARAM lParam); +extern int onOptInitialise(WPARAM wParam, LPARAM lParam); +extern BOOL checkState(int type); +extern VOID fill_filter(); +extern HANDLE hExtraIcon; +extern IconExtraColumn g_IECAuth, g_IECGrant, g_IECAuthGrant, g_IECClear; +extern INT clistIcon; + +#endif //COMMHEADERS_H diff --git a/plugins/IgnoreState/src/main.cpp b/plugins/IgnoreState/src/main.cpp new file mode 100644 index 0000000000..c68e6f6d2d --- /dev/null +++ b/plugins/IgnoreState/src/main.cpp @@ -0,0 +1,288 @@ +/* + IgnoreState plugin for Miranda-IM (www.miranda-im.org) + (c) 2010 by Kildor + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +*/ + +#include "commonheaders.h" + +HINSTANCE g_hInst; + +HANDLE hHookModulesLoaded = NULL, hSystemOKToExit = NULL, hOptInitialise = NULL, hIcoLibIconsChanged = NULL; +HANDLE hHookExtraIconsRebuild = NULL, hHookExtraIconsApply = NULL, hContactSettingChanged = NULL; +HANDLE hPrebuildContactMenu = NULL; +HANDLE hExtraIcon = NULL; +int hLangpack; + +INT currentFilter = 0; +//static int bUseMirandaSettings = 0; + +IconExtraColumn g_IECIgnoreFull = {0}; +IconExtraColumn g_IECIgnorePart = {0}; +IconExtraColumn g_IECIgnoreMess = {0}; +IconExtraColumn g_IECClear = {0}; + + + + +INT clistIcon = 0; //Icon slot to use +//DWORD dMask = IGNOREEVENT_USERONLINE; // by default hide online notification + +//DWORD dIgnore = 0x0; + +PLUGININFOEX pluginInfo={ + sizeof(PLUGININFOEX), + __PLUGIN_NAME, + PLUGIN_MAKE_VERSION(__MAJOR_VERSION, __MINOR_VERSION, __RELEASE_NUM, __BUILD_NUM), + __DESCRIPTION, + __AUTHOR, + __AUTHOREMAIL, + __COPYRIGHT, + __AUTHORWEB, + UNICODE_AWARE, + {0xa6872bcd, 0xf2a1, 0x41b8, {0xb2, 0xf1, 0xdd, 0x7c, 0xec, 0x05, 0x57, 0x34}} + // a6872bcd-f2a1-41b8-b2f1-dd7cec055734 +}; + +extern "C" BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved) +{ + g_hInst = hinstDLL; + return TRUE; +} + +// плагининфо +extern "C" __declspec(dllexport) PLUGININFOEX* MirandaPluginInfoEx(DWORD mirandaVersion) +{ + return &pluginInfo; +} + +extern "C" __declspec(dllexport) const MUUID MirandaInterfaces[] = {MIID_IGNORESRATE, MIID_LAST}; + +int onSystemOKToExit(WPARAM wParam,LPARAM lParam) +{ + UnhookEvent(hHookModulesLoaded); + UnhookEvent(hHookExtraIconsRebuild); + UnhookEvent(hHookExtraIconsApply); + UnhookEvent(hOptInitialise); + UnhookEvent(hSystemOKToExit); + if (hIcoLibIconsChanged) UnhookEvent(hIcoLibIconsChanged); + if (hContactSettingChanged) + UnhookEvent(hContactSettingChanged); + + return 0; +} + + +inline BOOL checkState(int type) +{ + return ((currentFilter>>(type-1))&1); +} + + +INT_PTR isIgnored(HANDLE hContact, int type) +{ + int i = 0, all = 0, filtered = 0; + + if (type == IGNOREEVENT_ALL) + { + int cii = SIZEOF(ii); + for (i = 1; i < cii; i++) + { + if (isIgnored(hContact, ii[i].type)) + { +// checkState(ii[i].type) ? filtered++ : all++; + ii[i].filtered ? filtered++ : all++; + } + } + return (all+filtered == cii-1) ? 1 : (all > 0 ? -1 : 0) ; + } + else + return CallService(MS_IGNORE_ISIGNORED, (WPARAM)hContact, (LPARAM)type); +} + +int onExtraImageApplying(WPARAM wParam, LPARAM lParam) +{ + HANDLE hContact = (HANDLE)wParam; + int ignore = isIgnored(hContact, IGNOREEVENT_ALL); + if (hExtraIcon != NULL) + { + if (ignore == 1) + { + ExtraIcon_SetIcon(hExtraIcon, hContact, "ignore_full"); + } + else if (ignore == 0) + { + ExtraIcon_SetIcon(hExtraIcon, hContact, ""); + } + else if (isIgnored((HANDLE)wParam, IGNOREEVENT_MESSAGE)) + { + ExtraIcon_SetIcon(hExtraIcon, hContact, "ignore_mess"); + } + else + { + ExtraIcon_SetIcon(hExtraIcon, hContact, "ignore_part"); + } + } + else + { + if (ignore == 1) + { + CallService(MS_CLIST_EXTRA_SET_ICON, (WPARAM) wParam, (LPARAM) &g_IECIgnoreFull); + } + else if (ignore == 0) + { + CallService(MS_CLIST_EXTRA_SET_ICON, (WPARAM) wParam, (LPARAM) &g_IECClear); + } + else if (isIgnored((HANDLE)wParam, IGNOREEVENT_MESSAGE)) + { + CallService(MS_CLIST_EXTRA_SET_ICON, (WPARAM) wParam, (LPARAM) &g_IECIgnoreMess); + } + else + { + CallService(MS_CLIST_EXTRA_SET_ICON, (WPARAM) wParam, (LPARAM) &g_IECIgnorePart); + } + } + return 0; +} + + +int onExtraImageListRebuild(WPARAM wParam, LPARAM lParam) +{ + g_IECIgnoreMess.cbSize = sizeof(IconExtraColumn); + g_IECIgnoreMess.ColumnType = clistIcon; + g_IECIgnorePart.cbSize = sizeof(IconExtraColumn); + g_IECIgnorePart.ColumnType = clistIcon; + g_IECIgnoreFull.cbSize = sizeof(IconExtraColumn); + g_IECIgnoreFull.ColumnType = clistIcon; + + if (ServiceExists(MS_CLIST_EXTRA_ADD_ICON)) + { + g_IECIgnoreMess.hImage = (HANDLE)CallService(MS_CLIST_EXTRA_ADD_ICON, (WPARAM)(HICON) CallService(MS_SKIN2_GETICON, 0, (LPARAM)"ignore_mess"), (LPARAM)0); + g_IECIgnorePart.hImage = (HANDLE)CallService(MS_CLIST_EXTRA_ADD_ICON, (WPARAM)(HICON) CallService(MS_SKIN2_GETICON, 0, (LPARAM)"ignore_part"), (LPARAM)0); + g_IECIgnoreFull.hImage = (HANDLE)CallService(MS_CLIST_EXTRA_ADD_ICON, (WPARAM)(HICON) CallService(MS_SKIN2_GETICON, 0, (LPARAM)"ignore_full"), (LPARAM)0); + } + return 0; +} + +static VOID init_icolib (void) +{ + SKINICONDESC sid = {0}; + ZeroMemory(&sid, sizeof(sid)); + TCHAR tszFile[MAX_PATH]; + sid.cbSize = sizeof(sid); + sid.flags = SIDF_ALL_TCHAR; + int i = 0; + + sid.ptszSection = _T(MODULENAME); + GetModuleFileName(g_hInst, tszFile, MAX_PATH); + sid.ptszDefaultFile = tszFile; + + for ( i = 0; i < SIZEOF(iconList); i++ ) { + sid.pszName = iconList[i].szName; + sid.ptszDescription = iconList[i].szDescr; + sid.iDefaultIndex = -iconList[i].defIconID; + iconList[i].hIconLibItem = Skin_AddIcon(&sid); + } +} + +VOID fill_filter(void) +{ + bUseMirandaSettings = DBGetContactSettingByte(NULL, MODULENAME, "UseMirandaSettings", 0); + + currentFilter = bUseMirandaSettings ? DBGetContactSettingDword(NULL, "Ignore", "Default1", 0) : DBGetContactSettingDword(NULL, MODULENAME, "Filter", 0x8); + + int i = 0, cii = SIZEOF(ii); + + for (; i< cii; i++) + { + if (checkState((ii[i].type))) + ii[i].filtered = true; + else + ii[i].filtered = false; + } +} + +int onModulesLoaded(WPARAM wParam,LPARAM lParam) +{ + hOptInitialise = HookEvent(ME_OPT_INITIALISE, onOptInitialise); + + //IcoLib support + init_icolib(); + fill_filter(); + + hExtraIcon = ExtraIcon_Register("ignore", "IgnoreState", "ignore_full"); + + if (hExtraIcon != NULL) + { + // Set initial value for all contacts + HANDLE hContact = (HANDLE) CallService(MS_DB_CONTACT_FINDFIRST, 0, 0); + while (hContact != NULL) + { + onExtraImageApplying((WPARAM)hContact, NULL); + hContact = (HANDLE) CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM) hContact, 0); + } + } + else + { + hIcoLibIconsChanged = HookEvent(ME_SKIN2_ICONSCHANGED, onExtraImageListRebuild); + hHookExtraIconsRebuild = HookEvent(ME_CLIST_EXTRA_LIST_REBUILD, onExtraImageListRebuild); + hHookExtraIconsApply = HookEvent(ME_CLIST_EXTRA_IMAGE_APPLY, onExtraImageApplying); + onExtraImageListRebuild(0,0); + } + + return 0; +} + + +int onContactSettingChanged(WPARAM wParam,LPARAM lParam) +{ + DBCONTACTWRITESETTING *cws=(DBCONTACTWRITESETTING*)lParam; + if (!lstrcmpA(cws->szModule,"Ignore") & !lstrcmpA(cws->szSetting,"Mask1")) { + onExtraImageApplying(wParam, lParam); + } + if ((HANDLE)wParam ==0) + if (!lstrcmpA(cws->szModule,MODULENAME) & !lstrcmpA(cws->szSetting,"Filter") || + bUseMirandaSettings && (!lstrcmpA(cws->szModule,"Ignore") & !lstrcmpA(cws->szSetting,"Default1")) + ) { + fill_filter(); + } + + return 0; +} + +extern "C" int __declspec(dllexport) Load(void) +{ + + mir_getLP(&pluginInfo); + + hHookModulesLoaded = HookEvent(ME_SYSTEM_MODULESLOADED, onModulesLoaded); + hSystemOKToExit = HookEvent(ME_SYSTEM_OKTOEXIT,onSystemOKToExit); + hContactSettingChanged = HookEvent(ME_DB_CONTACT_SETTINGCHANGED, onContactSettingChanged); + + clistIcon = DBGetContactSettingByte(NULL, MODULENAME, "AdvancedIcon", DefaultSlot); + + g_IECClear.cbSize = sizeof(IconExtraColumn); + g_IECClear.ColumnType = clistIcon; + g_IECClear.hImage = (HANDLE) -1; + + return 0; +} + +extern "C" int __declspec(dllexport) Unload(void) +{ + return 0; +} diff --git a/plugins/IgnoreState/src/options.cpp b/plugins/IgnoreState/src/options.cpp new file mode 100644 index 0000000000..eda6b6ffea --- /dev/null +++ b/plugins/IgnoreState/src/options.cpp @@ -0,0 +1,278 @@ +/* + IgnoreState plugin for Miranda-IM (www.miranda-im.org) + (c) 2010 by Kildor + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +*/ + +#include "commonheaders.h" + +//extern byte bUseAuthIcon, bUseGrantIcon, bContactMenuItem, bIconsForRecentContacts; + +//#define EXTRA_ICON_RES0 0 // only used by nicer +//#define EXTRA_ICON_EMAIL 1 +//#define EXTRA_ICON_WEB 2 +//#define EXTRA_ICON_SMS 3 +//#define EXTRA_ICON_ADV1 4 +//#define EXTRA_ICON_ADV2 5 +//#define EXTRA_ICON_ADV3 6 +//#define EXTRA_ICON_CLIENT 7 +//#define EXTRA_ICON_ADV4 8 +//#define EXTRA_ICON_RES1 9 // only used by nicer +//#define EXTRA_ICON_PROTO 9 // used by mwclist and modern +//#define EXTRA_ICON_RES2 10 // only used by nicer +//#define EXTRA_ICON_VISMODE 10 // only used by modern + +#define MS_SKINENG_DRAWICONEXFIX "SkinEngine/DrawIconEx_Fix" + +enum { + clist_none, + clist_modern, + clist_nicer +}; + +TCHAR* szAdvancedIconsModern[] = { + _T("E-mail"), + _T("Web page"), + _T("Phone/SMS"), + _T("Advanced #1"), + _T("Advanced #2"), + _T("Advanced #3"), + _T("Client"), + _T("Advanced #4"), + _T("Protocol"), + _T("Visibility/Chat activity") +}; +//const int cAdvancedIconsModern = sizeof(szAdvancedIconsModern) / sizeof(szAdvancedIconsModern[0]); + +TCHAR* szAdvancedIconsNicer[] = { + _T("Reserved"), + _T("E-mail"), + _T("Homepage"), + _T("Telephone"), + _T("Advanced #1"), + _T("Advanced #2"), + _T("Client"), + _T("Advanced #3"), + _T("Advanced #4"), + _T("Reserved #1"), + _T("Reserved #2") + }; +//const int cAdvancedIconsNicer = sizeof(szAdvancedIconsNicer) / sizeof(szAdvancedIconsNicer[0]); + +INT_PTR CALLBACK DlgProcOptions(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) +{ + HIMAGELIST himlButtonIcons=NULL; + INT bInitializing = 0; + INT usedClist = clist_none; + INT cAdvancedIcons; + isExtraiconsUsed = ServiceExists(MS_EXTRAICON_REGISTER); +// const char **szAdvancedIcons; + HWND hTree=GetDlgItem(hwndDlg,IDC_FILTER); + + switch (msg) + { + case WM_INITDIALOG: + { + TranslateDialogDefault(hwndDlg); + bInitializing = 1; + fill_filter(); + if (ServiceExists(MS_CLIST_EXTRA_ADD_ICON)) + { + if (hExtraIcon == NULL) + { + if (ServiceExists(MS_SKINENG_DRAWICONEXFIX)) + { // modern? + cAdvancedIcons = SIZEOF(szAdvancedIconsModern); + usedClist = clist_modern; + } + else + { + if (ServiceExists("CLN/About")) + { + usedClist = clist_nicer; + cAdvancedIcons = SIZEOF(szAdvancedIconsNicer); + } + else + { + usedClist = clist_modern; + cAdvancedIcons = SIZEOF(szAdvancedIconsModern) - 1; // mw doesn`t have last modern extraicon + } + } + } + else + { + SendDlgItemMessage(hwndDlg,IDC_NOTICE, WM_SETTEXT,0,(LPARAM)TranslateT("Extraicons plugin is used, use Contact list > Extraicons for customize.")); + ShowWindow(GetDlgItem(hwndDlg, IDC_NOTICE), SW_SHOW); + EnableWindow(GetDlgItem(hwndDlg, IDC_ADVICON), 0); + } + } + else + { + cAdvancedIcons = 0; +// SendDlgItemMessage(hwndDlg,IDC_USED_CLIST, WM_SETTEXT,0,(LPARAM)_T("Your clist: classic")); + SendDlgItemMessage(hwndDlg,IDC_NOTICE, WM_SETTEXT,0,(LPARAM)TranslateT("Warning: classic contact list plugin doesn`t have ability to use extraicons")); + ShowWindow(GetDlgItem(hwndDlg, IDC_NOTICE), SW_SHOW); + EnableWindow(GetDlgItem(hwndDlg, IDC_ADVICON), 0); + } + if (usedClist != clist_none) { + for (int i = 0; i < cAdvancedIcons; i++) + { + SendMessage(GetDlgItem(hwndDlg, IDC_ADVICON), CB_ADDSTRING, 0, (LPARAM) TranslateTS( usedClist==clist_modern ? szAdvancedIconsModern[i] : szAdvancedIconsNicer[i])); + } + + if (usedClist == clist_modern ) + SendMessage(GetDlgItem(hwndDlg, IDC_ADVICON), CB_SETCURSEL, clistIcon-1, 0); + else + SendMessage(GetDlgItem(hwndDlg, IDC_ADVICON), CB_SETCURSEL, clistIcon, 0); + } + + SetWindowLongPtr(hTree,GWL_STYLE,GetWindowLongPtr(hTree,GWL_STYLE)|TVS_NOHSCROLL); + { + himlButtonIcons=ImageList_Create(GetSystemMetrics(SM_CXSMICON),GetSystemMetrics(SM_CYSMICON),ILC_COLOR32|ILC_MASK,2,2); + TreeView_SetImageList(hTree,himlButtonIcons,TVSIL_NORMAL); + } + TreeView_DeleteAllItems(hTree); + + int i; + int cii = SIZEOF(ii); + for (i=2; iidFrom) + { + case 0: + { + switch (((LPNMHDR)lParam)->code) + { + case PSN_APPLY: + { + if (usedClist==clist_none && hExtraIcon == NULL ) + return TRUE; +/////////// + DWORD flags=0; + TVITEM tvi; + tvi.mask=TVIF_HANDLE|TBIF_LPARAM; + HWND hTree=GetDlgItem(hwndDlg,IDC_FILTER); + tvi.hItem=TreeView_GetRoot(hTree); //check ignore all + while(tvi.hItem) + { + TreeView_GetItem(hTree,&tvi); + if(TreeView_GetCheckState(hTree,tvi.hItem)) flags|=1<<(tvi.lParam-1); + tvi.hItem=TreeView_GetNextSibling(hTree,tvi.hItem); + } + DBWriteContactSettingDword(NULL, MODULENAME, "Filter", flags); + + bUseMirandaSettings = IsDlgButtonChecked(hwndDlg,IDC_IGNORE_IGNOREALL) ? 1 : 0; + DBWriteContactSettingByte(NULL, MODULENAME, "UseMirandaSettings", bUseMirandaSettings); + + fill_filter(); +////////// + if (hExtraIcon == NULL) + { + clistIcon = SendMessage(GetDlgItem(hwndDlg, IDC_ADVICON), CB_GETCURSEL, 0, 0); + if (usedClist == clist_modern ) + clistIcon++; + + //Store options values to DB + DBWriteContactSettingByte(NULL, MODULENAME, "AdvancedIcon", clistIcon); + + HANDLE hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDFIRST, 0, 0); + while (hContact) + { + CallService(MS_CLIST_EXTRA_SET_ICON, (WPARAM)hContact, (LPARAM)&g_IECClear); + hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM)hContact, 0); + } + g_IECClear.ColumnType = clistIcon; + if (hExtraIcon == NULL) + onExtraImageListRebuild(0,0); + hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDFIRST, 0, 0); + while (hContact) + { + onExtraImageApplying((WPARAM)hContact,0); + hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM)hContact, 0); + } + } + } + } + } + case IDC_FILTER: + if (((LPNMHDR)lParam)->code == NM_CLICK) + { + SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + } + } + } + case WM_DESTROY: + break; + } + return FALSE; +} + +int onOptInitialise(WPARAM wParam, LPARAM lParam) +{ + OPTIONSDIALOGPAGE odp = { 0 }; + odp.cbSize = sizeof(odp); + odp.hInstance = g_hInst; + odp.flags = ODPF_BOLDGROUPS; + odp.pszGroup = LPGEN("Contact List"); + odp.pszTemplate = MAKEINTRESOURCEA(IDD_RATE_OPT); + odp.pszTitle = MODULENAME; + odp.pfnDlgProc = DlgProcOptions; + Options_AddPage(wParam, &odp); + + return 0; +} diff --git a/plugins/IgnoreState/src/resource.h b/plugins/IgnoreState/src/resource.h new file mode 100644 index 0000000000..810522778e --- /dev/null +++ b/plugins/IgnoreState/src/resource.h @@ -0,0 +1,27 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by ignore.rc +// +#define IDD_RATE_OPT 9 +#define IDI_IFULL 101 +#define IDI_IPART 102 +#define IDI_IMESS 103 +#define IDC_ADVICON 1001 +#define IDC_NOTMODERN_WARNING 1010 +#define IDC_NOTICE 1010 +#define IDC_USED_CLIST 1011 +#define IDC_FILTER 1012 +#define IDC_TREE1 1016 +#define IDC_CHECK1 1019 +#define IDC_IGNORE_IGNOREALL 1019 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 104 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1020 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif -- cgit v1.2.3