summaryrefslogtreecommitdiff
path: root/plugins/KeyboardNotify/ignore.cpp
diff options
context:
space:
mode:
authorVadim Dashevskiy <watcherhd@gmail.com>2012-07-20 10:43:41 +0000
committerVadim Dashevskiy <watcherhd@gmail.com>2012-07-20 10:43:41 +0000
commit6e7980b0ad162bbb526b3d52acbc1639c2b11760 (patch)
tree3affd52d5c43ac3b06507ff56358635767949004 /plugins/KeyboardNotify/ignore.cpp
parentda9f6e8a856fc87172fb0d5997c607b4a930c102 (diff)
Import, KeyboardNotify: changed folder structure
git-svn-id: http://svn.miranda-ng.org/main/trunk@1071 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'plugins/KeyboardNotify/ignore.cpp')
-rw-r--r--plugins/KeyboardNotify/ignore.cpp389
1 files changed, 0 insertions, 389 deletions
diff --git a/plugins/KeyboardNotify/ignore.cpp b/plugins/KeyboardNotify/ignore.cpp
deleted file mode 100644
index 57fcceb8a6..0000000000
--- a/plugins/KeyboardNotify/ignore.cpp
+++ /dev/null
@@ -1,389 +0,0 @@
-/*
-
-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.
-
-*/
-
-#define WIN32_LEAN_AND_MEAN
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <windows.h>
-#include <commctrl.h>
-#include <commdlg.h>
-#include "ignore.h"
-#include "resource.h"
-#include "constants.h"
-#include <newpluginapi.h>
-#include <m_clc.h>
-#include <m_clist.h>
-#include <m_database.h>
-#include <m_langpack.h>
-#include <m_options.h>
-#include <m_protosvc.h>
-#include <m_protocols.h>
-#include <m_skin.h>
-
-
-#define IGNOREEVENT_MAX 4
-#define IDI_SMALLDOT 211
-#define IDI_FILLEDBLOB 212
-#define IDI_EMPTYBLOB 213
-
-#define SIZEOF(a) (sizeof(a) / sizeof(a[0]))
-
-static const DWORD ignoreIdToPf1[IGNOREEVENT_MAX] = {PF1_IMRECV, PF1_URLRECV, PF1_FILERECV, 0xFFFFFFFF};
-
-extern double dWinVer;
-extern BOOL bWindowsNT;
-
-
-static DWORD GetMask(HANDLE hContact)
-{
- DWORD mask = DBGetContactSettingDword(hContact, KEYBDMODULE, "Mask1", (DWORD)(-1));
- if(mask == (DWORD)(-1)) {
- if(hContact == NULL)
- mask=0;
- else {
- if(DBGetContactSettingByte(hContact, "CList", "Hidden", 0) || DBGetContactSettingByte(hContact, "CList", "NotOnList", 0))
- mask = DBGetContactSettingDword(NULL, KEYBDMODULE, "Mask1", 0);
- else
- mask = DBGetContactSettingDword(NULL, KEYBDMODULE, "Default1", 0);
- }
- }
- return mask;
-}
-
-static void SetListGroupIcons(HWND hwndList, HANDLE hFirstItem, HANDLE hParentItem, int *groupChildCount)
-{
- int typeOfFirst;
- int iconOn[IGNOREEVENT_MAX]={1,1,1,1};
- int childCount[IGNOREEVENT_MAX]={0,0,0,0}, i;
- int iImage;
- HANDLE hItem, hChildItem;
-
- typeOfFirst = SendMessage(hwndList, CLM_GETITEMTYPE, (WPARAM)hFirstItem, 0);
- //check groups
- if(typeOfFirst == CLCIT_GROUP)
- hItem = hFirstItem;
- else
- hItem = (HANDLE)SendMessage(hwndList, CLM_GETNEXTITEM, CLGN_NEXTGROUP, (LPARAM)hFirstItem);
- while(hItem) {
- hChildItem = (HANDLE)SendMessage(hwndList, CLM_GETNEXTITEM, CLGN_CHILD, (LPARAM)hItem);
- if(hChildItem)
- SetListGroupIcons(hwndList, hChildItem, hItem, childCount);
- for(i=0; i < SIZEOF(iconOn); i++)
- if(iconOn[i] && SendMessage(hwndList, CLM_GETEXTRAIMAGE, (WPARAM)hItem, i) == 0)
- iconOn[i] = 0;
- hItem = (HANDLE)SendMessage(hwndList, CLM_GETNEXTITEM, CLGN_NEXTGROUP, (LPARAM)hItem);
- }
- //check contacts
- if(typeOfFirst == CLCIT_CONTACT)
- hItem = hFirstItem;
- else
- hItem = (HANDLE)SendMessage(hwndList, CLM_GETNEXTITEM, CLGN_NEXTCONTACT, (LPARAM)hFirstItem);
- while(hItem) {
- for(i=0; i < SIZEOF(iconOn); i++) {
- iImage = SendMessage(hwndList, CLM_GETEXTRAIMAGE, (WPARAM)hItem, i);
- if(iconOn[i] && iImage == 0)
- iconOn[i] = 0;
- if(iImage != 0xFF)
- childCount[i]++;
- }
- hItem = (HANDLE)SendMessage(hwndList, CLM_GETNEXTITEM, CLGN_NEXTCONTACT, (LPARAM)hItem);
- }
- //set icons
- for(i=0; i < SIZEOF(iconOn); i++) {
- SendMessage(hwndList, CLM_SETEXTRAIMAGE, (WPARAM)hParentItem, MAKELPARAM(i, childCount[i]?(iconOn[i]?i+3:0):0xFF));
- if(groupChildCount)
- groupChildCount[i] += childCount[i];
- }
- SendMessage(hwndList, CLM_SETEXTRAIMAGE, (WPARAM)hParentItem, MAKELPARAM(IGNOREEVENT_MAX, 1));
- SendMessage(hwndList, CLM_SETEXTRAIMAGE, (WPARAM)hParentItem, MAKELPARAM(IGNOREEVENT_MAX+1, 2));
-}
-
-static void SetAllChildIcons(HWND hwndList, HANDLE hFirstItem, int iColumn, int iImage)
-{
- int typeOfFirst, iOldIcon;
- HANDLE hItem, hChildItem;
-
- typeOfFirst = SendMessage(hwndList,CLM_GETITEMTYPE,(WPARAM)hFirstItem, 0);
- //check groups
- if(typeOfFirst == CLCIT_GROUP)
- hItem = hFirstItem;
- else
- hItem = (HANDLE)SendMessage(hwndList, CLM_GETNEXTITEM, CLGN_NEXTGROUP, (LPARAM)hFirstItem);
- while(hItem) {
- hChildItem = (HANDLE)SendMessage(hwndList, CLM_GETNEXTITEM, CLGN_CHILD, (LPARAM)hItem);
- if(hChildItem)
- SetAllChildIcons(hwndList, hChildItem, iColumn, iImage);
- hItem = (HANDLE)SendMessage(hwndList, CLM_GETNEXTITEM, CLGN_NEXTGROUP, (LPARAM)hItem);
- }
- //check contacts
- if(typeOfFirst == CLCIT_CONTACT)
- hItem = hFirstItem;
- else
- hItem = (HANDLE)SendMessage(hwndList, CLM_GETNEXTITEM, CLGN_NEXTCONTACT, (LPARAM)hFirstItem);
- while(hItem) {
- iOldIcon = SendMessage(hwndList, CLM_GETEXTRAIMAGE, (WPARAM)hItem, iColumn);
- if(iOldIcon != 0xFF && iOldIcon != iImage)
- SendMessage(hwndList, CLM_SETEXTRAIMAGE, (WPARAM)hItem, MAKELPARAM(iColumn, iImage));
- hItem = (HANDLE)SendMessage(hwndList, CLM_GETNEXTITEM, CLGN_NEXTCONTACT, (LPARAM)hItem);
- }
-}
-
-static void ResetListOptions(HWND hwndList)
-{
- int i;
-
- SendMessage(hwndList, CLM_SETBKBITMAP, 0, (LPARAM)NULL);
- SendMessage(hwndList, CLM_SETBKCOLOR, GetSysColor(COLOR_WINDOW), 0);
- SendMessage(hwndList, CLM_SETGREYOUTFLAGS, 0, 0);
- SendMessage(hwndList, CLM_SETLEFTMARGIN, 4, 0);
- SendMessage(hwndList, CLM_SETINDENT, 10, 0);
- SendMessage(hwndList, CLM_SETHIDEEMPTYGROUPS, 1, 0);
- for(i=0; i <= FONTID_MAX; i++)
- SendMessage(hwndList, CLM_SETTEXTCOLOR, i, GetSysColor(COLOR_WINDOWTEXT));
-}
-
-static void SetIconsForColumn(HWND hwndList, HANDLE hItem, HANDLE hItemAll, int iColumn, int iImage)
-{
- int itemType;
-
- itemType = SendMessage(hwndList, CLM_GETITEMTYPE, (WPARAM)hItem, 0);
- if(itemType == CLCIT_CONTACT) {
- int oldiImage = SendMessage(hwndList, CLM_GETEXTRAIMAGE, (WPARAM)hItem, iColumn);
- if (oldiImage != 0xFF && oldiImage != iImage)
- SendMessage(hwndList, CLM_SETEXTRAIMAGE, (WPARAM)hItem, MAKELPARAM(iColumn, iImage));
- }
- else if(itemType == CLCIT_INFO) {
- if(hItem == hItemAll)
- SetAllChildIcons(hwndList, hItem, iColumn, iImage);
- else
- SendMessage(hwndList, CLM_SETEXTRAIMAGE, (WPARAM)hItem, MAKELPARAM(iColumn, iImage)); //hItemUnknown
- }
- else if(itemType == CLCIT_GROUP) {
- hItem = (HANDLE)SendMessage(hwndList, CLM_GETNEXTITEM, CLGN_CHILD, (LPARAM)hItem);
- if(hItem)
- SetAllChildIcons(hwndList, hItem, iColumn, iImage);
- }
-}
-
-static void InitialiseItem(HWND hwndList, HANDLE hContact, HANDLE hItem, DWORD protoCaps)
-{
- DWORD mask;
- int i;
-
- mask = GetMask(hContact);
- for(i=0; i < IGNOREEVENT_MAX; i++)
- if(ignoreIdToPf1[i] == 0xFFFFFFFF || protoCaps & ignoreIdToPf1[i])
- SendMessage(hwndList, CLM_SETEXTRAIMAGE, (WPARAM)hItem, MAKELPARAM(i, mask&(1<<i)?i+3:0));
- SendMessage(hwndList, CLM_SETEXTRAIMAGE, (WPARAM)hItem, MAKELPARAM(IGNOREEVENT_MAX, 1));
- SendMessage(hwndList, CLM_SETEXTRAIMAGE, (WPARAM)hItem, MAKELPARAM(IGNOREEVENT_MAX+1, 2));
-}
-
-static void SaveItemMask(HWND hwndList, HANDLE hContact, HANDLE hItem, const char *pszSetting)
-{
- DWORD mask;
- int i, iImage;
-
- for(i=0, mask=0; i < IGNOREEVENT_MAX; i++) {
- iImage = SendMessage(hwndList, CLM_GETEXTRAIMAGE, (WPARAM)hItem, MAKELPARAM(i, 0));
- if(iImage && iImage != 0xFF)
- mask |= 1<<i;
- }
- DBWriteContactSettingDword(hContact, KEYBDMODULE, pszSetting, mask);
-}
-
-static void SetAllContactIcons(HWND hwndList)
-{
- HANDLE hContact,hItem;
- DWORD protoCaps;
- char *szProto;
-
- hContact=(HANDLE)CallService(MS_DB_CONTACT_FINDFIRST, 0, 0);
- do {
- hItem = (HANDLE)SendMessage(hwndList, CLM_FINDCONTACT, (WPARAM)hContact, 0);
- if(hItem && SendMessage(hwndList, CLM_GETEXTRAIMAGE, (WPARAM)hItem, MAKELPARAM(IGNOREEVENT_MAX, 0)) == 0xFF) {
- szProto = (char*)CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM)hContact, 0);
- if(szProto == NULL)
- protoCaps = 0;
- else
- protoCaps = CallProtoService(szProto, PS_GETCAPS,PFLAGNUM_1, 0);
- InitialiseItem(hwndList, hContact, hItem, protoCaps);
- }
- } while(hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM)hContact, 0));
-}
-
-INT_PTR CALLBACK DlgProcIgnoreOptions(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
-{
- static HICON hIcons[IGNOREEVENT_MAX+2];
- static HANDLE hItemAll, hItemUnknown;
-
- switch (msg)
- {
- case WM_INITDIALOG:
- TranslateDialogDefault(hwndDlg);
- { int i;
- HIMAGELIST hIml;
- hIml=ImageList_Create(GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), ((bWindowsNT && dWinVer >= 5.01)?ILC_COLOR32:ILC_COLOR16)|ILC_MASK, 3+IGNOREEVENT_MAX, 3+IGNOREEVENT_MAX);
- ImageList_AddIcon(hIml, LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_SMALLDOT)));
- ImageList_AddIcon(hIml, LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_FILLEDBLOB)));
- ImageList_AddIcon(hIml, LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_EMPTYBLOB)));
- ImageList_AddIcon(hIml, LoadSkinnedIcon(SKINICON_EVENT_MESSAGE));
- ImageList_AddIcon(hIml, LoadSkinnedIcon(SKINICON_EVENT_URL));
- ImageList_AddIcon(hIml, LoadSkinnedIcon(SKINICON_EVENT_FILE));
- ImageList_AddIcon(hIml, LoadSkinnedIcon(SKINICON_OTHER_MIRANDA));
- SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_SETEXTRAIMAGELIST, 0, (LPARAM)hIml);
- for(i=0; i < SIZEOF(hIcons); i++)
- hIcons[i] = ImageList_GetIcon(hIml, 1+i, ILD_NORMAL);
- }
- SendDlgItemMessage(hwndDlg, IDC_ALLICON, STM_SETICON, (WPARAM)hIcons[0], 0);
- SendDlgItemMessage(hwndDlg, IDC_NONEICON, STM_SETICON, (WPARAM)hIcons[1], 0);
- SendDlgItemMessage(hwndDlg, IDC_MSGICON, STM_SETICON, (WPARAM)hIcons[2], 0);
- SendDlgItemMessage(hwndDlg, IDC_URLICON, STM_SETICON, (WPARAM)hIcons[3], 0);
- SendDlgItemMessage(hwndDlg, IDC_FILEICON, STM_SETICON, (WPARAM)hIcons[4], 0);
- SendDlgItemMessage(hwndDlg, IDC_OTHERICON, STM_SETICON, (WPARAM)hIcons[5], 0);
-
- SetWindowLongPtr(GetDlgItem(hwndDlg, IDC_LIST), GWL_STYLE, GetWindowLongPtr(GetDlgItem(hwndDlg, IDC_LIST), GWL_STYLE) &~ (CLS_CHECKBOXES|CLS_GROUPCHECKBOXES));
- SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_AUTOREBUILD, 0, 0);
-
- ResetListOptions(GetDlgItem(hwndDlg, IDC_LIST));
- SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_SETEXTRACOLUMNS, IGNOREEVENT_MAX+2, 0);
-
- { CLCINFOITEM cii = {0};
- cii.cbSize = sizeof(cii);
- cii.flags = CLCIIF_GROUPFONT;
- cii.pszText = TranslateT("** All contacts **");
- hItemAll=(HANDLE)SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_ADDINFOITEM, 0, (LPARAM)&cii);
-
- cii.pszText = TranslateT("** Unknown contacts **");
- hItemUnknown=(HANDLE)SendDlgItemMessage(hwndDlg, IDC_LIST,CLM_ADDINFOITEM, 0, (LPARAM)&cii);
- InitialiseItem(GetDlgItem(hwndDlg, IDC_LIST), NULL, hItemUnknown, 0xFFFFFFFF);
- }
-
- SetAllContactIcons(GetDlgItem(hwndDlg, IDC_LIST));
- SetListGroupIcons(GetDlgItem(hwndDlg, IDC_LIST),(HANDLE)SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_GETNEXTITEM, CLGN_ROOT, 0), hItemAll, NULL);
- return TRUE;
- case WM_SETFOCUS:
- SetFocus(GetDlgItem(hwndDlg, IDC_LIST));
- break;
- case WM_NOTIFY:
- switch(((LPNMHDR)lParam)->idFrom) {
- case IDC_LIST:
- switch (((LPNMHDR)lParam)->code)
- {
- case CLN_NEWCONTACT:
- case CLN_LISTREBUILT:
- SetAllContactIcons(GetDlgItem(hwndDlg, IDC_LIST));
- //fall through
- case CLN_CONTACTMOVED:
- SetListGroupIcons(GetDlgItem(hwndDlg, IDC_LIST), (HANDLE)SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_GETNEXTITEM, CLGN_ROOT, 0), hItemAll, NULL);
- break;
- case CLN_OPTIONSCHANGED:
- ResetListOptions(GetDlgItem(hwndDlg, IDC_LIST));
- break;
- case CLN_CHECKCHANGED:
- SendMessage(GetParent(GetParent(hwndDlg)), PSM_CHANGED, 0, 0);
- break;
- case NM_CLICK:
- { int iImage;
- HANDLE hItem;
- DWORD hitFlags;
- NMCLISTCONTROL *nm = (NMCLISTCONTROL*)lParam;
-
- if(nm->iColumn == -1)
- break;
- hItem = (HANDLE)SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_HITTEST, (WPARAM)&hitFlags, MAKELPARAM(nm->pt.x, nm->pt.y));
- if(hItem == NULL)
- break;
- if (!(hitFlags & CLCHT_ONITEMEXTRA))
- break;
- if(nm->iColumn == IGNOREEVENT_MAX) { //ignore all
- for(iImage=0; iImage < IGNOREEVENT_MAX; iImage++)
- SetIconsForColumn(GetDlgItem(hwndDlg, IDC_LIST), hItem, hItemAll, iImage, iImage+3);
- }
- else if(nm->iColumn == IGNOREEVENT_MAX+1) { //ignore none
- for(iImage=0; iImage < IGNOREEVENT_MAX; iImage++)
- SetIconsForColumn(GetDlgItem(hwndDlg, IDC_LIST), hItem, hItemAll, iImage, 0);
- }
- else {
- iImage = SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_GETEXTRAIMAGE, (WPARAM)hItem, MAKELPARAM(nm->iColumn, 0));
- if(iImage == 0)
- iImage = nm->iColumn + 3;
- else if(iImage != 0xFF)
- iImage = 0;
- SetIconsForColumn(GetDlgItem(hwndDlg, IDC_LIST), hItem, hItemAll, nm->iColumn, iImage);
- }
- SetListGroupIcons(GetDlgItem(hwndDlg, IDC_LIST),(HANDLE)SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_GETNEXTITEM, CLGN_ROOT, 0), hItemAll, NULL);
- SendMessage(GetParent(GetParent(hwndDlg)), PSM_CHANGED, 0, 0);
- break;
- }
- }
- break;
- case 0:
- switch (((LPNMHDR)lParam)->code)
- {
- case PSN_APPLY:
- { HANDLE hContact, hItem;
-
- hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDFIRST, 0, 0);
- do {
- hItem = (HANDLE)SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_FINDCONTACT, (WPARAM)hContact, 0);
- if(hItem)
- SaveItemMask(GetDlgItem(hwndDlg, IDC_LIST), hContact, hItem, "Mask1");
- } while(hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM)hContact, 0));
- SaveItemMask(GetDlgItem(hwndDlg, IDC_LIST), NULL, hItemAll, "Default1");
- SaveItemMask(GetDlgItem(hwndDlg, IDC_LIST), NULL, hItemUnknown, "Mask1");
- return TRUE;
- }
- }
- break;
- }
- break;
- case WM_DESTROY:
- { int i;
- HIMAGELIST hIml;
- for(i=0; i < SIZEOF(hIcons); i++)
- DestroyIcon(hIcons[i]);
- hIml = (HIMAGELIST)SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_GETEXTRAIMAGELIST, 0, 0);
- ImageList_Destroy(hIml);
- break;
- }
- }
- return FALSE;
-}
-
-BOOL IsIgnored(HANDLE hContact, WORD eventType)
-{
- WORD ignoreID = 0;
- DWORD mask = GetMask(hContact);
-
- switch(eventType) {
- case EVENTTYPE_MESSAGE:
- ignoreID = 0;
- break;
- case EVENTTYPE_URL:
- ignoreID = 1;
- break;
- case EVENTTYPE_FILE:
- ignoreID = 2;
- break;
- default:
- ignoreID = 3;
- }
-
- return (mask>>ignoreID)&1;
-}