From 08d82c6a8b0e597430aae75033fac58388139535 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Sun, 7 Oct 2012 11:47:00 +0000 Subject: new event filters, beginning git-svn-id: http://svn.miranda-ng.org/main/trunk@1797 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- src/modules/ignore/ignore.cpp | 452 +++++++++++++++++++++--------------------- 1 file changed, 224 insertions(+), 228 deletions(-) (limited to 'src/modules/ignore/ignore.cpp') diff --git a/src/modules/ignore/ignore.cpp b/src/modules/ignore/ignore.cpp index 5cb9f64651..2b5176394d 100644 --- a/src/modules/ignore/ignore.cpp +++ b/src/modules/ignore/ignore.cpp @@ -29,14 +29,14 @@ static const DWORD ignoreIdToPf4[IGNOREEVENT_MAX] = {0xFFFFFFFF, 0xFFFFFFFF, 0xF static DWORD GetMask(HANDLE hContact) { - DWORD mask = DBGetContactSettingDword(hContact, "Ignore", "Mask1", (DWORD)(-1)); + DWORD mask = db_get_dw(hContact, "Ignore", "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, "Ignore", "Mask1", 0); + if (db_get_b(hContact, "CList", "Hidden", 0) || db_get_b(hContact, "CList", "NotOnList", 0)) + mask = db_get_dw(NULL, "Ignore", "Mask1", 0); else - mask = DBGetContactSettingDword(NULL, "Ignore", "Default1", 0); + mask = db_get_dw(NULL, "Ignore", "Default1", 0); } } return mask; @@ -44,13 +44,12 @@ static DWORD GetMask(HANDLE hContact) static void SetListGroupIcons(HWND hwndList, HANDLE hFirstItem, HANDLE hParentItem, int *groupChildCount) { - int typeOfFirst; int iconOn[IGNOREEVENT_MAX] = {1, 1, 1, 1, 1, 1, 1}; int childCount[IGNOREEVENT_MAX] = {0, 0, 0, 0, 0, 0, 0}, i; int iImage; HANDLE hItem, hChildItem; - typeOfFirst = SendMessage(hwndList, CLM_GETITEMTYPE, (WPARAM)hFirstItem, 0); + int 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); @@ -83,109 +82,107 @@ static void SetListGroupIcons(HWND hwndList, HANDLE hFirstItem, HANDLE hParentIt static void SetAllChildIcons(HWND hwndList, HANDLE hFirstItem, int iColumn, int iImage) { - int typeOfFirst, iOldIcon; - HANDLE hItem, hChildItem; + HANDLE hItem; - typeOfFirst = SendMessage(hwndList, CLM_GETITEMTYPE, (WPARAM)hFirstItem, 0); + int 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); + HANDLE 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)); + int 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)(HBITMAP)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++) + + for (int 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) { + switch ( SendMessage(hwndList, CLM_GETITEMTYPE, (WPARAM)hItem, 0)) { + case 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)); + } + break; + case CLCIT_INFO: + if (hItem == hItemAll) + SetAllChildIcons(hwndList, hItem, iColumn, iImage); + else + SendMessage(hwndList, CLM_SETEXTRAIMAGE, (WPARAM)hItem, MAKELPARAM(iColumn, iImage)); //hItemUnknown + break; + + case CLCIT_GROUP: hItem = (HANDLE)SendMessage(hwndList, CLM_GETNEXTITEM, CLGN_CHILD, (LPARAM)hItem); - if (hItem) SetAllChildIcons(hwndList, hItem, iColumn, iImage); + if (hItem) + SetAllChildIcons(hwndList, hItem, iColumn, iImage); } } static void InitialiseItem(HWND hwndList, HANDLE hContact, HANDLE hItem, DWORD proto1Caps, DWORD proto4Caps) { - DWORD mask; - int i; - - mask = GetMask(hContact); - for (i=0;iidFrom) { + 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(hwndDlg), PSM_CHANGED, 0, 0); + break; + case NM_CLICK: + { + NMCLISTCONTROL *nm = (NMCLISTCONTROL*)lParam; + if (nm->iColumn == -1) + break; + + DWORD hitFlags; + HANDLE hItem = (HANDLE)SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_HITTEST, (WPARAM)&hitFlags, MAKELPARAM(nm->pt.x, nm->pt.y)); + if (hItem == NULL || !(hitFlags & CLCHT_ONITEMEXTRA)) + break; + + if (nm->iColumn == IGNOREEVENT_MAX) { // ignore all + for (int iImage = 0;iImageiColumn == IGNOREEVENT_MAX+1) { // ignore none + for (int iImage = 0;iImageiColumn, 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(hwndDlg), PSM_CHANGED, 0, 0); + } + break; } - - 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(hwndDlg), PSM_CHANGED, 0, 0); - break; - case NM_CLICK: - { HANDLE hItem; - NMCLISTCONTROL *nm = (NMCLISTCONTROL*)lParam; - DWORD hitFlags; - int iImage; - - 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;iImageiColumn == IGNOREEVENT_MAX+1) { //ignore none - for (iImage = 0;iImageiColumn, 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(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"); - if (SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_GETCHECKMARK, (WPARAM)hItem, 0)) - DBDeleteContactSetting(hContact, "CList", "Hidden"); - else - DBWriteContactSettingByte(hContact, "CList", "Hidden", 1); - } 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; - } - case PSN_EXPERTCHANGED: - SetWindowLongPtr( GetDlgItem(hwndDlg, IDC_LIST), GWL_STYLE, ((PSHNOTIFY*)lParam)->lParam?GetWindowLongPtr( GetDlgItem(hwndDlg, IDC_LIST), GWL_STYLE)|CLS_CHECKBOXES|CLS_GROUPCHECKBOXES|CLS_SHOWHIDDEN:GetWindowLongPtr( GetDlgItem(hwndDlg, IDC_LIST), GWL_STYLE)&~(CLS_CHECKBOXES|CLS_GROUPCHECKBOXES|CLS_SHOWHIDDEN)); - SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_AUTOREBUILD, 0, 0); - break; + + case 0: + switch (((LPNMHDR)lParam)->code) { + case PSN_APPLY: + { + HANDLE hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDFIRST, 0, 0); + do { + HANDLE hItem = (HANDLE)SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_FINDCONTACT, (WPARAM)hContact, 0); + if (hItem) SaveItemMask( GetDlgItem(hwndDlg, IDC_LIST), hContact, hItem, "Mask1"); + if (SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_GETCHECKMARK, (WPARAM)hItem, 0)) + DBDeleteContactSetting(hContact, "CList", "Hidden"); + else + DBWriteContactSettingByte(hContact, "CList", "Hidden", 1); } - break; + 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; + + case PSN_EXPERTCHANGED: + { + INT_PTR dwStyle = GetWindowLongPtr( GetDlgItem(hwndDlg, IDC_LIST), GWL_STYLE); + if (((PSHNOTIFY*)lParam)->lParam) + dwStyle |= CLS_CHECKBOXES | CLS_GROUPCHECKBOXES | CLS_SHOWHIDDEN; + else + dwStyle &= ~(CLS_CHECKBOXES|CLS_GROUPCHECKBOXES|CLS_SHOWHIDDEN); + SetWindowLongPtr( GetDlgItem(hwndDlg, IDC_LIST), GWL_STYLE, dwStyle); + SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_AUTOREBUILD, 0, 0); + } + break; } break; - case WM_DESTROY: - { int i; - HIMAGELIST hIml; - for (i=0; i < SIZEOF(hIcons); i++) + } + break; + + case WM_DESTROY: + { + for (int i=0; i < SIZEOF(hIcons); i++) DestroyIcon(hIcons[i]); - hIml = (HIMAGELIST)SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_GETEXTRAIMAGELIST, 0, 0); + HIMAGELIST hIml = (HIMAGELIST)SendDlgItemMessage(hwndDlg, IDC_LIST, CLM_GETEXTRAIMAGELIST, 0, 0); ImageList_Destroy(hIml); - break; } + break; } return FALSE; } @@ -360,57 +366,63 @@ static int IgnoreOptInitialise(WPARAM wParam, LPARAM) static INT_PTR IsIgnored(WPARAM wParam, LPARAM lParam) { DWORD mask = GetMask((HANDLE)wParam); - if (lParam<1 || lParam>IGNOREEVENT_MAX) return 1; - return (mask>>(lParam-1))&1; + if (lParam < 1 || lParam > IGNOREEVENT_MAX) + return 1; + return (mask >> (lParam-1))&1; } static INT_PTR Ignore(WPARAM wParam, LPARAM lParam) { DWORD mask = GetMask((HANDLE)wParam); - if ((lParam<1 || lParam>IGNOREEVENT_MAX) && lParam != IGNOREEVENT_ALL) return 1; - if (lParam == IGNOREEVENT_ALL) mask = (1< IGNOREEVENT_MAX) && lParam != IGNOREEVENT_ALL) + return 1; + if (lParam == IGNOREEVENT_ALL) + mask = (1 << IGNOREEVENT_MAX)-1; + else + mask |= 1 << (lParam-1); + db_set_dw((HANDLE)wParam, "Ignore", "Mask1", mask); return 0; } static INT_PTR Unignore(WPARAM wParam, LPARAM lParam) { DWORD mask = GetMask((HANDLE)wParam); - if ((lParam<1 || lParam>IGNOREEVENT_MAX) && lParam != IGNOREEVENT_ALL) return 1; - if (lParam == IGNOREEVENT_ALL) mask = 0; - else mask&=~(1<<(lParam-1)); - DBWriteContactSettingDword((HANDLE)wParam, "Ignore", "Mask1", mask); - return 0; -} - -static int IgnoreContactAdded(WPARAM wParam, LPARAM) -{ - CallService(MS_PROTO_ADDTOCONTACT, wParam, (LPARAM)"Ignore"); + if ((lParam < 1 || lParam > IGNOREEVENT_MAX) && lParam != IGNOREEVENT_ALL) + return 1; + + if (lParam == IGNOREEVENT_ALL) + mask = 0; + else + mask &= ~(1 << (lParam-1)); + db_set_dw((HANDLE)wParam, "Ignore", "Mask1", mask); return 0; } static INT_PTR IgnoreRecvMessage(WPARAM wParam, LPARAM lParam) { - if (IsIgnored((WPARAM)((CCSDATA*)lParam)->hContact, IGNOREEVENT_MESSAGE)) return 1; + if (IsIgnored((WPARAM)((CCSDATA*)lParam)->hContact, IGNOREEVENT_MESSAGE)) + return 1; return CallService(MS_PROTO_CHAINRECV, wParam, lParam); } static INT_PTR IgnoreRecvUrl(WPARAM wParam, LPARAM lParam) { - if (IsIgnored((WPARAM)((CCSDATA*)lParam)->hContact, IGNOREEVENT_URL)) return 1; + if ( IsIgnored((WPARAM)((CCSDATA*)lParam)->hContact, IGNOREEVENT_URL)) + return 1; return CallService(MS_PROTO_CHAINRECV, wParam, lParam); } static INT_PTR IgnoreRecvFile(WPARAM wParam, LPARAM lParam) { - if (IsIgnored((WPARAM)((CCSDATA*)lParam)->hContact, IGNOREEVENT_FILE)) return 1; + if ( IsIgnored((WPARAM)((CCSDATA*)lParam)->hContact, IGNOREEVENT_FILE)) + return 1; return CallService(MS_PROTO_CHAINRECV, wParam, lParam); } static INT_PTR IgnoreRecvAuth(WPARAM wParam, LPARAM lParam) { - if (IsIgnored((WPARAM)((CCSDATA*)lParam)->hContact, IGNOREEVENT_AUTHORIZATION)) return 1; + if ( IsIgnored((WPARAM)((CCSDATA*)lParam)->hContact, IGNOREEVENT_AUTHORIZATION)) + return 1; return CallService(MS_PROTO_CHAINRECV, wParam, lParam); } @@ -425,16 +437,11 @@ static int IgnoreAddedNotify(WPARAM, LPARAM lParam) return 0; } +static int iBoldControls[] = { IDC_TXT_TITLE1, IDC_TXT_TITLE2, IDC_TXT_TITLE3, MODERNOPT_CTRL_LAST }; + static int IgnoreModernOptInit(WPARAM wParam, LPARAM) { - static int iBoldControls[] = - { - IDC_TXT_TITLE1, IDC_TXT_TITLE2, IDC_TXT_TITLE3, - MODERNOPT_CTRL_LAST - }; - - MODERNOPTOBJECT obj = {0}; - obj.cbSize = sizeof(obj); + MODERNOPTOBJECT obj = { sizeof(obj) }; obj.hInstance = hInst; obj.dwFlags = MODEROPT_FLG_TCHAR; obj.iSection = MODERNOPT_PAGE_IGNORE; @@ -442,27 +449,17 @@ static int IgnoreModernOptInit(WPARAM wParam, LPARAM) obj.iBoldControls = iBoldControls; obj.lpzTemplate = MAKEINTRESOURCEA(IDD_MODERNOPT_IGNORE); obj.pfnDlgProc = DlgProcIgnoreOpts; -// obj.lpzClassicGroup = "Events"; -// obj.lpzClassicPage = "Ignore"; CallService(MS_MODERNOPT_ADDOBJECT, wParam, (LPARAM)&obj); return 0; } int LoadIgnoreModule(void) { - PROTOCOLDESCRIPTOR pd = { 0 }; - pd.cbSize = sizeof(pd); + PROTOCOLDESCRIPTOR pd = { sizeof(pd) }; pd.szName = "Ignore"; pd.type = PROTOTYPE_IGNORE; CallService(MS_PROTO_REGISTERMODULE, 0, (LPARAM)&pd); - HANDLE hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDFIRST, 0, 0); - while (hContact != NULL) { - if ( !CallService(MS_PROTO_ISPROTOONCONTACT, (WPARAM)hContact, (LPARAM)"Ignore")) - CallService(MS_PROTO_ADDTOCONTACT, (WPARAM)hContact, (LPARAM)"Ignore"); - hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM)hContact, 0); - } - CreateServiceFunction("Ignore"PSR_MESSAGE, IgnoreRecvMessage); CreateServiceFunction("Ignore"PSR_URL, IgnoreRecvUrl); CreateServiceFunction("Ignore"PSR_FILE, IgnoreRecvFile); @@ -471,7 +468,6 @@ int LoadIgnoreModule(void) CreateServiceFunction(MS_IGNORE_IGNORE, Ignore); CreateServiceFunction(MS_IGNORE_UNIGNORE, Unignore); - HookEvent(ME_DB_CONTACT_ADDED, IgnoreContactAdded); HookEvent(ME_DB_EVENT_FILTER_ADD, IgnoreAddedNotify); HookEvent(ME_MODERNOPT_INITIALIZE, IgnoreModernOptInit); HookEvent(ME_OPT_INITIALISE, IgnoreOptInitialise); -- cgit v1.2.3