diff options
author | Gluzskiy Alexandr <sss123next@list.ru> | 2010-04-05 19:30:17 +0300 |
---|---|---|
committer | Gluzskiy Alexandr <sss123next@list.ru> | 2010-04-05 19:30:17 +0300 |
commit | d7730685516d6ed6fc278a6ea74f7a5cf12e0042 (patch) | |
tree | 41a381fbe4051ed4b9041f5596913b6c174cf9be /popup.c | |
parent | 7fd9fe181150f166a098eaf4e006f878c28cb770 (diff) |
dos2unixspamfilter
Diffstat (limited to 'popup.c')
-rw-r--r-- | popup.c | 568 |
1 files changed, 284 insertions, 284 deletions
@@ -1,285 +1,285 @@ -/*
-
-"Spam Filter"-Plugin for Miranda IM
-
-Copyright 2003-2006 Heiko Herkenrath
-
-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 ("SpamFilter-License.txt"); if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-
-// -- Includes
-#include "common.h"
-
-// -----------------------------------------
-
-
-// -- Popup Menu Item --
-
-static int InternalServicePopupMenuItemCommand(WPARAM wParam, LPARAM lParam)
-{
- BOOL bPopupState = !DBGetContactSettingByte(NULL, DB_MODULE_NAME, DB_SETTING_POPUP, DEFAULT_SETTING_POPUP);
-
- DBWriteContactSettingByte(NULL, DB_MODULE_NAME, DB_SETTING_POPUP, (BYTE)bPopupState);
- SetPopupMenuItem(bPopupState, FALSE);
-
- return 0;
-}
-
-void SetPopupMenuItem(BOOL bPopupsActivated, BOOL bGrayItem)
-{
- static HANDLE hPopupMenuItem = NULL;
-
- CLISTMENUITEM cmi;
-
- ZeroMemory(&cmi, sizeof(cmi));
- cmi.cbSize = sizeof(cmi);
-
- if (bPopupsActivated)
- {
- cmi.pszName = Translate("Disable &spam popups");
- // Getting icons out of from popup.dll (Plus/Non-Plus) (so they are always up-to-date)
- cmi.hIcon = SkinGetIcon("popup_enabled", 0, FALSE);
- if (!cmi.hIcon)
- cmi.hIcon = GetModuleHandle(_T("popup")) ? (HICON)LoadImage(GetModuleHandleA("popup"), MAKEINTRESOURCE(118), IMAGE_ICON, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), LR_SHARED) : NULL;
-
- } else {
- cmi.pszName = Translate("Enable &spam popups");
- // Getting icons out of from popup.dll (Plus/Non-Plus) (so they are always up-to-date)
- cmi.hIcon = SkinGetIcon("popup_disabled", 0, FALSE);
- if (!cmi.hIcon)
- cmi.hIcon = GetModuleHandle(_T("popup")) ? (HICON)LoadImage(GetModuleHandleA("popup"), MAKEINTRESOURCE(120), IMAGE_ICON, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), LR_SHARED) : NULL;
- }
-
- if (hPopupMenuItem)
- {
- cmi.flags = CMIM_NAME|CMIM_ICON|CMIM_FLAGS;
-
- if (bGrayItem)
- cmi.flags |= CMIF_GRAYED;
-
- CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hPopupMenuItem, (LPARAM)&cmi);
-
- } else {
-
- // Item can't be grayed out the first time
- //cmi.flags = bGrayItem ? CMIF_GRAYED : 0;
-
- cmi.pszPopupName = Translate("PopUps");
- cmi.pszService = "SpamFilter/PopupMenuItemCommand";
-
- CreateServiceFunction(cmi.pszService, InternalServicePopupMenuItemCommand);
- hPopupMenuItem = (HANDLE)CallService(MS_CLIST_ADDMAINMENUITEM, (WPARAM)0, (LPARAM)&cmi);
-
- // Call twice to initilialize the grayed out setting
- if (bGrayItem)
- SetPopupMenuItem(bPopupsActivated, bGrayItem);
- }
-}
-
-
-
-// -- Spam Popup --
-BOOL ShowSpamPopup(const char* pszMsgTypeSection, const char* pszMsgTypeName, const WCHAR* pszCustomUserName, HANDLE hContact, DWORD dwFilterType)
-{
- BOOL bReturn = FALSE;
- int iMsgType;
-
- // Support for Popup / PopupPlus
- #if defined(UNICODE)
- if (ServiceExists(MS_POPUP_ADDPOPUPW))
- {
- POPUPDATAW ppd;
- HICON hIconBuf;
- WCHAR* pszText;
-
- switch (dwFilterType)
- {
- case SFT_DISLIKEDMESSAGES_FILTER:
- pszText = TranslateW("Disliked Message Alert!");
- break;
- case SFT_ADVERTISMENT_FILTER:
- pszText = TranslateW("Advertisment Alert!");
- break;
- case SFT_ROBOT_FILTER:
- pszText = TranslateW("Robot Alert!");
- break;
- default:
- pszText = NULL;
- }
-
- ZeroMemory(&ppd, sizeof(ppd));
- ppd.lchContact = hContact;
- ppd.colorText = SkinGetColor(DB_COLOR_POPUPTEXT_SETTING, Translate("Popup Text"), Translate("Spam Filter"), RGB(255,255,255), FALSE);
- ppd.colorBack = SkinGetColor(DB_COLOR_POPUPBACKGROUND_SETTING, Translate("Popup Background"), Translate("Spam Filter"), RGB(0,0,0), FALSE);
- if (pszText) mir_sntprintf(ppd.lpwzText, ARRAYSIZE(ppd.lpwzText), _T("%s"), pszText);
- if (pszCustomUserName) mir_sntprintf(ppd.lpwzContactName, ARRAYSIZE(ppd.lpwzContactName), _T("%s"), pszCustomUserName);
-
- // Determine main icon
- EnterCriticalSection(&csMsgTypes); // thread safety
- iMsgType = GetMsgTypeID(pszMsgTypeSection, pszMsgTypeName);
-
- if ((iMsgType >= 0) && ((int)pamtdMsgTypes[iMsgType].hIcon < 0))
- hIconBuf = LoadSkinnedIcon((-1)*(int)pamtdMsgTypes[iMsgType].hIcon); // skinned icon
- else if ((iMsgType >= 0) && pamtdMsgTypes[iMsgType].hIcon)
- hIconBuf = pamtdMsgTypes[iMsgType].hIcon;
- else
- hIconBuf = (HICON)LoadImage(hInstance, MAKEINTRESOURCE(IDI_DEFAULT), IMAGE_ICON, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), LR_SHARED);
-
- LeaveCriticalSection(&csMsgTypes); // thread safety
-
- // Overlay small spam icon
- if (hIconBuf)
- ppd.lchIcon = OverlayIcon(hIconBuf, SkinGetIcon(DB_ICON_SPAMLAYER_SETTING, IDI_SPAM_LAYER, FALSE), GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON));
-
- // I don't know if popup module author made it thread safe...
- if (CallServiceSync(MS_POPUP_ADDPOPUPW, (WPARAM)&ppd, 0) > 0)
- bReturn = TRUE;
-
- if (ppd.lchIcon) DestroyIcon(ppd.lchIcon);
- }
- #else
- if (ServiceExists(MS_POPUP_ADDPOPUPEX))
- {
- POPUPDATAEX ppd;
- HICON hIconBuf;
- char* pszText;
-
- switch (dwFilterType)
- {
- case SFT_DISLIKEDMESSAGES_FILTER:
- pszText = Translate("Disliked Message Alert!");
- break;
- case SFT_ADVERTISMENT_FILTER:
- pszText = Translate("Advertisment Alert!");
- break;
- case SFT_ROBOT_FILTER:
- pszText = Translate("Robot Alert!");
- break;
- default:
- pszText = NULL;
- }
-
- ZeroMemory(&ppd, sizeof(ppd));
- ppd.lchContact = hContact;
- ppd.colorText = SkinGetColor(DB_COLOR_POPUPTEXT_SETTING, Translate("Popup Text"), Translate("Spam Filter"), RGB(255,255,255), FALSE);
- ppd.colorBack = SkinGetColor(DB_COLOR_POPUPBACKGROUND_SETTING, Translate("Popup Background"), Translate("Spam Filter"), RGB(0,0,0), FALSE);
- if (pszText)
- mir_snprintf(ppd.lpzText, ARRAYSIZE(ppd.lpzText), "%s", pszText);
- if (pszCustomUserName)
- mir_snprintf(ppd.lpzContactName, ARRAYSIZE(ppd.lpzContactName), "%s", pszCustomUserName);
-
- // Determine main icon
- EnterCriticalSection(&csMsgTypes); // thread safety
- iMsgType = GetMsgTypeID(pszMsgTypeSection, pszMsgTypeName);
-
- if ((iMsgType >= 0) && ((int)pamtdMsgTypes[iMsgType].hIcon < 0))
- hIconBuf = LoadSkinnedIcon((-1)*(int)pamtdMsgTypes[iMsgType].hIcon); // skinned icon
- else if ((iMsgType >= 0) && pamtdMsgTypes[iMsgType].hIcon)
- hIconBuf = pamtdMsgTypes[iMsgType].hIcon;
- else
- hIconBuf = (HICON)LoadImage(hInstance, MAKEINTRESOURCE(IDI_DEFAULT), IMAGE_ICON, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), LR_SHARED);
-
- LeaveCriticalSection(&csMsgTypes); // thread safety
-
- // Overlay small spam icon
- if (hIconBuf)
- ppd.lchIcon = OverlayIcon(hIconBuf, SkinGetIcon(DB_ICON_SPAMLAYER_SETTING, IDI_SPAM_LAYER, FALSE), GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON));
-
- // Support for Popup Plus
- if (ServiceExists(MS_POPUP_ADDCLASS))
- {
- ppd.skinBack = ppd.colorBack;
- ppd.colorBack = POPUP_USE_SKINNED_BG;
- ppd.lpzClass = (LPCTSTR)POPUP_CLASS_SPAM; // type "LPCTSTR" of lpzClass is wrong (or: POPUP_CLASS_DEFAULT)
- }
-
- // I don't know if popup module author made it thread safe...
- if (CallServiceSync(MS_POPUP_ADDPOPUPEX, (WPARAM)&ppd, 0) > 0)
- bReturn = TRUE;
-
- if (ppd.lchIcon) DestroyIcon(ppd.lchIcon);
- }
- #endif
-
- // Support for OSD / WanneBeOSD
- if (ServiceExists("OSD/Announce")) // no m_osd.h file yet available.. .don't like it :-/
- {
- WCHAR* pszText;
-
- switch (dwFilterType)
- {
- case SFT_DISLIKEDMESSAGES_FILTER:
- pszText = TranslateT("Disliked Message Alert!");
- break;
-
- case SFT_ADVERTISMENT_FILTER:
- pszText = TranslateT("Advertisment Alert!");
- break;
-
- case SFT_ROBOT_FILTER:
- pszText = TranslateT("Robot Alert!");
- break;
-
- default:
- pszText = NULL;
- }
-
- if (pszText)
- {
- // I don't know if OSD module author made it thread safe...
- // quite bad: return value of OSDAnnounce does not indicate anything (SendMessage result)
- // bad unicode implementation (simply expects unicode text when wbosdW.dll is used)
- // -> might cuase crashes (buffer overruns) when SF-Unicode is run with OSD-Ansi
- if (CallService("OSD/Announce", (WPARAM)pszText, (LPARAM)0) == 0);
- bReturn = TRUE;
- }
- }
-
- return bReturn;
-}
-
-
-// -- Popup Available --
-
-BOOL IsPopupAvailable(BOOL bAlsoOSD)
-{
- #if defined(UNICODE)
- return (ServiceExists(MS_POPUP_ADDPOPUPW) || (bAlsoOSD ? ServiceExists("OSD/Announce") : FALSE));
- #else
- return (ServiceExists(MS_POPUP_ADDPOPUPEX) || (bAlsoOSD ? ServiceExists("OSD/Announce") : FALSE));
- #endif
-}
-
-
-// ------------------------------------
-
-
-void InitPopup(void)
-{
- // Add class (Support for PopupPlus)
- #if !defined(UNICODE)
- if (ServiceExists(MS_POPUP_ADDCLASS))
- CallService(MS_POPUP_ADDCLASS, 0, (LPARAM)POPUP_CLASS_SPAM);
- #endif
-
- if (IsPopupAvailable(FALSE))
- SkinAddNewIcon(DB_ICON_SPAMLAYER_SETTING, TranslateT("Spam Filter"), TranslateT("Spam Message Overlay"), IDI_SPAM_LAYER, FALSE);
-}
-
-
-void UninitPopup(void)
-{
+/* + +"Spam Filter"-Plugin for Miranda IM + +Copyright 2003-2006 Heiko Herkenrath + +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 ("SpamFilter-License.txt"); if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + + +// -- Includes +#include "common.h" + +// ----------------------------------------- + + +// -- Popup Menu Item -- + +static int InternalServicePopupMenuItemCommand(WPARAM wParam, LPARAM lParam) +{ + BOOL bPopupState = !DBGetContactSettingByte(NULL, DB_MODULE_NAME, DB_SETTING_POPUP, DEFAULT_SETTING_POPUP); + + DBWriteContactSettingByte(NULL, DB_MODULE_NAME, DB_SETTING_POPUP, (BYTE)bPopupState); + SetPopupMenuItem(bPopupState, FALSE); + + return 0; +} + +void SetPopupMenuItem(BOOL bPopupsActivated, BOOL bGrayItem) +{ + static HANDLE hPopupMenuItem = NULL; + + CLISTMENUITEM cmi; + + ZeroMemory(&cmi, sizeof(cmi)); + cmi.cbSize = sizeof(cmi); + + if (bPopupsActivated) + { + cmi.pszName = Translate("Disable &spam popups"); + // Getting icons out of from popup.dll (Plus/Non-Plus) (so they are always up-to-date) + cmi.hIcon = SkinGetIcon("popup_enabled", 0, FALSE); + if (!cmi.hIcon) + cmi.hIcon = GetModuleHandle(_T("popup")) ? (HICON)LoadImage(GetModuleHandleA("popup"), MAKEINTRESOURCE(118), IMAGE_ICON, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), LR_SHARED) : NULL; + + } else { + cmi.pszName = Translate("Enable &spam popups"); + // Getting icons out of from popup.dll (Plus/Non-Plus) (so they are always up-to-date) + cmi.hIcon = SkinGetIcon("popup_disabled", 0, FALSE); + if (!cmi.hIcon) + cmi.hIcon = GetModuleHandle(_T("popup")) ? (HICON)LoadImage(GetModuleHandleA("popup"), MAKEINTRESOURCE(120), IMAGE_ICON, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), LR_SHARED) : NULL; + } + + if (hPopupMenuItem) + { + cmi.flags = CMIM_NAME|CMIM_ICON|CMIM_FLAGS; + + if (bGrayItem) + cmi.flags |= CMIF_GRAYED; + + CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hPopupMenuItem, (LPARAM)&cmi); + + } else { + + // Item can't be grayed out the first time + //cmi.flags = bGrayItem ? CMIF_GRAYED : 0; + + cmi.pszPopupName = Translate("PopUps"); + cmi.pszService = "SpamFilter/PopupMenuItemCommand"; + + CreateServiceFunction(cmi.pszService, InternalServicePopupMenuItemCommand); + hPopupMenuItem = (HANDLE)CallService(MS_CLIST_ADDMAINMENUITEM, (WPARAM)0, (LPARAM)&cmi); + + // Call twice to initilialize the grayed out setting + if (bGrayItem) + SetPopupMenuItem(bPopupsActivated, bGrayItem); + } +} + + + +// -- Spam Popup -- +BOOL ShowSpamPopup(const char* pszMsgTypeSection, const char* pszMsgTypeName, const WCHAR* pszCustomUserName, HANDLE hContact, DWORD dwFilterType) +{ + BOOL bReturn = FALSE; + int iMsgType; + + // Support for Popup / PopupPlus + #if defined(UNICODE) + if (ServiceExists(MS_POPUP_ADDPOPUPW)) + { + POPUPDATAW ppd; + HICON hIconBuf; + WCHAR* pszText; + + switch (dwFilterType) + { + case SFT_DISLIKEDMESSAGES_FILTER: + pszText = TranslateW("Disliked Message Alert!"); + break; + case SFT_ADVERTISMENT_FILTER: + pszText = TranslateW("Advertisment Alert!"); + break; + case SFT_ROBOT_FILTER: + pszText = TranslateW("Robot Alert!"); + break; + default: + pszText = NULL; + } + + ZeroMemory(&ppd, sizeof(ppd)); + ppd.lchContact = hContact; + ppd.colorText = SkinGetColor(DB_COLOR_POPUPTEXT_SETTING, Translate("Popup Text"), Translate("Spam Filter"), RGB(255,255,255), FALSE); + ppd.colorBack = SkinGetColor(DB_COLOR_POPUPBACKGROUND_SETTING, Translate("Popup Background"), Translate("Spam Filter"), RGB(0,0,0), FALSE); + if (pszText) mir_sntprintf(ppd.lpwzText, ARRAYSIZE(ppd.lpwzText), _T("%s"), pszText); + if (pszCustomUserName) mir_sntprintf(ppd.lpwzContactName, ARRAYSIZE(ppd.lpwzContactName), _T("%s"), pszCustomUserName); + + // Determine main icon + EnterCriticalSection(&csMsgTypes); // thread safety + iMsgType = GetMsgTypeID(pszMsgTypeSection, pszMsgTypeName); + + if ((iMsgType >= 0) && ((int)pamtdMsgTypes[iMsgType].hIcon < 0)) + hIconBuf = LoadSkinnedIcon((-1)*(int)pamtdMsgTypes[iMsgType].hIcon); // skinned icon + else if ((iMsgType >= 0) && pamtdMsgTypes[iMsgType].hIcon) + hIconBuf = pamtdMsgTypes[iMsgType].hIcon; + else + hIconBuf = (HICON)LoadImage(hInstance, MAKEINTRESOURCE(IDI_DEFAULT), IMAGE_ICON, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), LR_SHARED); + + LeaveCriticalSection(&csMsgTypes); // thread safety + + // Overlay small spam icon + if (hIconBuf) + ppd.lchIcon = OverlayIcon(hIconBuf, SkinGetIcon(DB_ICON_SPAMLAYER_SETTING, IDI_SPAM_LAYER, FALSE), GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON)); + + // I don't know if popup module author made it thread safe... + if (CallServiceSync(MS_POPUP_ADDPOPUPW, (WPARAM)&ppd, 0) > 0) + bReturn = TRUE; + + if (ppd.lchIcon) DestroyIcon(ppd.lchIcon); + } + #else + if (ServiceExists(MS_POPUP_ADDPOPUPEX)) + { + POPUPDATAEX ppd; + HICON hIconBuf; + char* pszText; + + switch (dwFilterType) + { + case SFT_DISLIKEDMESSAGES_FILTER: + pszText = Translate("Disliked Message Alert!"); + break; + case SFT_ADVERTISMENT_FILTER: + pszText = Translate("Advertisment Alert!"); + break; + case SFT_ROBOT_FILTER: + pszText = Translate("Robot Alert!"); + break; + default: + pszText = NULL; + } + + ZeroMemory(&ppd, sizeof(ppd)); + ppd.lchContact = hContact; + ppd.colorText = SkinGetColor(DB_COLOR_POPUPTEXT_SETTING, Translate("Popup Text"), Translate("Spam Filter"), RGB(255,255,255), FALSE); + ppd.colorBack = SkinGetColor(DB_COLOR_POPUPBACKGROUND_SETTING, Translate("Popup Background"), Translate("Spam Filter"), RGB(0,0,0), FALSE); + if (pszText) + mir_snprintf(ppd.lpzText, ARRAYSIZE(ppd.lpzText), "%s", pszText); + if (pszCustomUserName) + mir_snprintf(ppd.lpzContactName, ARRAYSIZE(ppd.lpzContactName), "%s", pszCustomUserName); + + // Determine main icon + EnterCriticalSection(&csMsgTypes); // thread safety + iMsgType = GetMsgTypeID(pszMsgTypeSection, pszMsgTypeName); + + if ((iMsgType >= 0) && ((int)pamtdMsgTypes[iMsgType].hIcon < 0)) + hIconBuf = LoadSkinnedIcon((-1)*(int)pamtdMsgTypes[iMsgType].hIcon); // skinned icon + else if ((iMsgType >= 0) && pamtdMsgTypes[iMsgType].hIcon) + hIconBuf = pamtdMsgTypes[iMsgType].hIcon; + else + hIconBuf = (HICON)LoadImage(hInstance, MAKEINTRESOURCE(IDI_DEFAULT), IMAGE_ICON, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), LR_SHARED); + + LeaveCriticalSection(&csMsgTypes); // thread safety + + // Overlay small spam icon + if (hIconBuf) + ppd.lchIcon = OverlayIcon(hIconBuf, SkinGetIcon(DB_ICON_SPAMLAYER_SETTING, IDI_SPAM_LAYER, FALSE), GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON)); + + // Support for Popup Plus + if (ServiceExists(MS_POPUP_ADDCLASS)) + { + ppd.skinBack = ppd.colorBack; + ppd.colorBack = POPUP_USE_SKINNED_BG; + ppd.lpzClass = (LPCTSTR)POPUP_CLASS_SPAM; // type "LPCTSTR" of lpzClass is wrong (or: POPUP_CLASS_DEFAULT) + } + + // I don't know if popup module author made it thread safe... + if (CallServiceSync(MS_POPUP_ADDPOPUPEX, (WPARAM)&ppd, 0) > 0) + bReturn = TRUE; + + if (ppd.lchIcon) DestroyIcon(ppd.lchIcon); + } + #endif + + // Support for OSD / WanneBeOSD + if (ServiceExists("OSD/Announce")) // no m_osd.h file yet available.. .don't like it :-/ + { + WCHAR* pszText; + + switch (dwFilterType) + { + case SFT_DISLIKEDMESSAGES_FILTER: + pszText = TranslateT("Disliked Message Alert!"); + break; + + case SFT_ADVERTISMENT_FILTER: + pszText = TranslateT("Advertisment Alert!"); + break; + + case SFT_ROBOT_FILTER: + pszText = TranslateT("Robot Alert!"); + break; + + default: + pszText = NULL; + } + + if (pszText) + { + // I don't know if OSD module author made it thread safe... + // quite bad: return value of OSDAnnounce does not indicate anything (SendMessage result) + // bad unicode implementation (simply expects unicode text when wbosdW.dll is used) + // -> might cuase crashes (buffer overruns) when SF-Unicode is run with OSD-Ansi + if (CallService("OSD/Announce", (WPARAM)pszText, (LPARAM)0) == 0); + bReturn = TRUE; + } + } + + return bReturn; +} + + +// -- Popup Available -- + +BOOL IsPopupAvailable(BOOL bAlsoOSD) +{ + #if defined(UNICODE) + return (ServiceExists(MS_POPUP_ADDPOPUPW) || (bAlsoOSD ? ServiceExists("OSD/Announce") : FALSE)); + #else + return (ServiceExists(MS_POPUP_ADDPOPUPEX) || (bAlsoOSD ? ServiceExists("OSD/Announce") : FALSE)); + #endif +} + + +// ------------------------------------ + + +void InitPopup(void) +{ + // Add class (Support for PopupPlus) + #if !defined(UNICODE) + if (ServiceExists(MS_POPUP_ADDCLASS)) + CallService(MS_POPUP_ADDCLASS, 0, (LPARAM)POPUP_CLASS_SPAM); + #endif + + if (IsPopupAvailable(FALSE)) + SkinAddNewIcon(DB_ICON_SPAMLAYER_SETTING, TranslateT("Spam Filter"), TranslateT("Spam Message Overlay"), IDI_SPAM_LAYER, FALSE); +} + + +void UninitPopup(void) +{ }
\ No newline at end of file |