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
}
Beispiel #2
0
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
}