int CIcqProto::ShowPopupMsg(HANDLE hContact, const char *szTitle, const char *szMsg, BYTE bType) { if (bPopupService && getByte("PopupsEnabled", DEFAULT_POPUPS_ENABLED)) { POPUPDATAT ppd = { 0 }; LPCTSTR rsIcon; char szPrefix[32], szSetting[32]; strcpy(szPrefix, "Popups"); switch(bType) { case LOG_NOTE: rsIcon = MAKEINTRESOURCE(IDI_INFORMATION); ppd.colorBack = DEFAULT_LOG0_BACK_COLORS; ppd.colorText = DEFAULT_LOG0_TEXT_COLORS; strcat(szPrefix, "0"); break; case LOG_WARNING: rsIcon = MAKEINTRESOURCE(IDI_WARNING); ppd.colorBack = DEFAULT_LOG1_BACK_COLORS; ppd.colorText = DEFAULT_LOG1_TEXT_COLORS; strcat(szPrefix, "1"); break; case LOG_ERROR: rsIcon = MAKEINTRESOURCE(IDI_ERROR); ppd.colorBack = DEFAULT_LOG2_BACK_COLORS; ppd.colorText = DEFAULT_LOG2_TEXT_COLORS; strcat(szPrefix, "2"); break; case LOG_FATAL: rsIcon = MAKEINTRESOURCE(IDI_ERROR); ppd.colorBack = DEFAULT_LOG3_BACK_COLORS; ppd.colorText = DEFAULT_LOG3_TEXT_COLORS; strcat(szPrefix, "3"); break; case POPTYPE_SPAM: rsIcon = MAKEINTRESOURCE(IDI_WARNING); ppd.colorBack = DEFAULT_SPAM_BACK_COLORS; ppd.colorText = DEFAULT_SPAM_TEXT_COLORS; strcat(szPrefix, "Spam"); break; default: return -1; } if (!getByte("PopupsSysIcons", DEFAULT_POPUPS_SYS_ICONS)) ppd.lchIcon = Skin_GetIconByHandle(m_hProtoIcon); else ppd.lchIcon = (HICON)LoadImage( NULL, rsIcon, IMAGE_ICON, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), LR_SHARED); if (getByte("PopupsWinColors", DEFAULT_POPUPS_WIN_COLORS)) { ppd.colorText = GetSysColor(COLOR_WINDOWTEXT); ppd.colorBack = GetSysColor(COLOR_WINDOW); } else { if (getByte("PopupsDefColors", DEFAULT_POPUPS_DEF_COLORS)) { ppd.colorText = NULL; ppd.colorBack = NULL; } else { strcpy(szSetting, szPrefix); strcat(szSetting, "TextColor"); ppd.colorText = getDword(szSetting, ppd.colorText); strcpy(szSetting, szPrefix); strcat(szSetting, "BackColor"); ppd.colorBack = getDword(szSetting, ppd.colorBack); } } strcpy(szSetting, szPrefix); strcat(szSetting, "Timeout"); ppd.iSeconds = getDword(szSetting, ppd.iSeconds); char str[4096]; make_unicode_string_static( ICQTranslateUtfStatic(szTitle, str, sizeof(str)), ppd.lpwzContactName, MAX_CONTACTNAME); make_unicode_string_static( ICQTranslateUtfStatic(szMsg, str, sizeof(str)), ppd.lpwzText, MAX_SECONDLINE); ppd.lchContact = hContact; ppd.lchIcon = ppd.lchIcon; ppd.colorBack = ppd.colorBack; ppd.colorText = ppd.colorText; ppd.PluginWindowProc = NULL; ppd.PluginData = NULL; ppd.iSeconds = ppd.iSeconds; return PUAddPopupT(&ppd); } return -1; // Failure }
int CIcqProto::ShowPopUpMsg(HANDLE hContact, const char *szTitle, const char *szMsg, BYTE bType) { if (bPopUpService && getSettingByte(NULL, "PopupsEnabled", DEFAULT_POPUPS_ENABLED)) { POPUPDATAEX ppd = {0}; POPUPDATAW ppdw = {0}; LPCTSTR rsIcon; char szPrefix[32], szSetting[32]; strcpy(szPrefix, "Popups"); ppd.iSeconds = 0; switch(bType) { case LOG_NOTE: rsIcon = MAKEINTRESOURCE(IDI_INFORMATION); ppd.colorBack = DEFAULT_LOG0_BACK_COLORS; ppd.colorText = DEFAULT_LOG0_TEXT_COLORS; strcat(szPrefix, "0"); break; case LOG_WARNING: rsIcon = MAKEINTRESOURCE(IDI_WARNING); ppd.colorBack = DEFAULT_LOG1_BACK_COLORS; ppd.colorText = DEFAULT_LOG1_TEXT_COLORS; strcat(szPrefix, "1"); break; case LOG_ERROR: rsIcon = MAKEINTRESOURCE(IDI_ERROR); ppd.colorBack = DEFAULT_LOG2_BACK_COLORS; ppd.colorText = DEFAULT_LOG2_TEXT_COLORS; strcat(szPrefix, "2"); break; case LOG_FATAL: rsIcon = MAKEINTRESOURCE(IDI_ERROR); ppd.colorBack = DEFAULT_LOG3_BACK_COLORS; ppd.colorText = DEFAULT_LOG3_TEXT_COLORS; strcat(szPrefix, "3"); break; case POPTYPE_SPAM: rsIcon = MAKEINTRESOURCE(IDI_WARNING); ppd.colorBack = DEFAULT_SPAM_BACK_COLORS; ppd.colorText = DEFAULT_SPAM_TEXT_COLORS; strcat(szPrefix, "Spam"); break; default: return -1; } if (!getSettingByte(NULL, "PopupsSysIcons", DEFAULT_POPUPS_SYS_ICONS)) ppd.lchIcon = m_hIconProtocol->GetIcon(); else ppd.lchIcon = (HICON)LoadImage( NULL, rsIcon, IMAGE_ICON, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), LR_SHARED); if (getSettingByte(NULL, "PopupsWinColors", DEFAULT_POPUPS_WIN_COLORS)) { ppd.colorText = GetSysColor(COLOR_WINDOWTEXT); ppd.colorBack = GetSysColor(COLOR_WINDOW); } else { strcpy(szSetting, szPrefix); strcat(szSetting, "TextColor"); ppd.colorText = getSettingDword(NULL, szSetting, ppd.colorText); strcpy(szSetting, szPrefix); strcat(szSetting, "BackColor"); ppd.colorBack = getSettingDword(NULL, szSetting, ppd.colorBack); } strcpy(szSetting, szPrefix); strcat(szSetting, "Timeout"); ppd.iSeconds = getSettingDword(NULL, szSetting, ppd.iSeconds); #if defined( _UNICODE ) // call unicode popup module - only on unicode OS otherwise it will not work properly :( // due to Popup Plug bug in ADDPOPUPW implementation if ( ServiceExists( MS_POPUP_ADDPOPUPW )) { char str[4096]; make_unicode_string_static(ICQTranslateUtfStatic(szTitle, str, sizeof(str)), ppdw.lpwzContactName, MAX_CONTACTNAME); make_unicode_string_static(ICQTranslateUtfStatic(szMsg, str, sizeof(str)), ppdw.lpwzText, MAX_SECONDLINE); ppdw.lchContact = hContact; ppdw.lchIcon = ppd.lchIcon; ppdw.colorBack = ppd.colorBack; ppdw.colorText = ppd.colorText; ppdw.PluginWindowProc = NULL; ppdw.PluginData = NULL; ppdw.iSeconds = ppd.iSeconds; return CallService(MS_POPUP_ADDPOPUPW, (WPARAM)&ppdw, 0); } else #endif { char str[MAX_PATH]; utf8_decode_static(ICQTranslateUtfStatic(szTitle, str, MAX_PATH), ppd.lpzContactName, MAX_CONTACTNAME); utf8_decode_static(ICQTranslateUtfStatic(szMsg, str, MAX_PATH), ppd.lpzText, MAX_SECONDLINE); ppd.lchContact = hContact; ppd.PluginWindowProc = NULL; ppd.PluginData = NULL; return CallService(MS_POPUP_ADDPOPUPEX, (WPARAM)&ppd, 0); } } return -1; // Failure }