Beispiel #1
0
/**
 * Displays a popup
 *
 * @param	hContact		- contact to display popup for
 * @param	eventType		- indicates which popup settings to apply
 * @param	DaysToAnniv		- days left until anniversary occures
 * @param	pszDesc			- this is the headline
 * @param	szMsg			- message to display
 *
 * @return	return value of the popup service
 **/
static INT NotifyWithPopup(HANDLE hContact, CEvent::EType eventType, INT DaysToAnniv, LPCTSTR pszDesc, LPCTSTR pszMsg)
{
    if (gRemindOpts.bPopups)
    {
        POPUPDATAT_V2 ppd;

        ZeroMemory(&ppd, sizeof(POPUPDATAT_V2));
        ppd.PluginWindowProc = (WNDPROC)PopupWindowProc;
        ppd.iSeconds = (INT)DB::Setting::GetByte(SET_POPUP_DELAY, 0);

        if (hContact)
        {
            ppd.lchContact = hContact;
            mir_sntprintf(ppd.lptzContactName, SIZEOF(ppd.lptzContactName),
                          _T("%s - %s"), TranslateTS(pszDesc), DB::Contact::DisplayName(hContact));
        }
        else
        {
            mir_tcsncpy(ppd.lptzContactName, TranslateT("Reminder"), SIZEOF(ppd.lptzContactName));
        }
        mir_tcsncpy(ppd.lptzText, pszMsg, MAX_SECONDLINE);

        ppd.lchIcon = GetAnnivIcon(CEvent(eventType, DaysToAnniv));

        switch (eventType)
        {
        case CEvent::BIRTHDAY:
            switch (DB::Setting::GetByte(SET_POPUP_BIRTHDAY_COLORTYPE, POPUP_COLOR_CUSTOM))
            {
            case POPUP_COLOR_WINDOWS:
                ppd.colorBack = GetSysColor(COLOR_BTNFACE);
                ppd.colorText = GetSysColor(COLOR_WINDOWTEXT);
                break;

            case POPUP_COLOR_CUSTOM:
                ppd.colorBack = DB::Setting::GetDWord(SET_POPUP_BIRTHDAY_COLOR_BACK, RGB(192,180,30));
                ppd.colorText = DB::Setting::GetDWord(SET_POPUP_BIRTHDAY_COLOR_TEXT, 0);
                break;
            }
            break;

        case CEvent::ANNIVERSARY:
            switch (DB::Setting::GetByte(SET_POPUP_ANNIVERSARY_COLORTYPE, POPUP_COLOR_CUSTOM))
            {
            case POPUP_COLOR_WINDOWS:
                ppd.colorBack = GetSysColor(COLOR_BTNFACE);
                ppd.colorText = GetSysColor(COLOR_WINDOWTEXT);
                break;

            case POPUP_COLOR_CUSTOM:
                ppd.colorBack = DB::Setting::GetDWord(SET_POPUP_ANNIVERSARY_COLOR_BACK, RGB(90, 190, 130));
                ppd.colorText = DB::Setting::GetDWord(SET_POPUP_ANNIVERSARY_COLOR_TEXT, 0);
                break;
            }
        }
        return PUAddPopUpT(&ppd);
    }
    return 1;
}
Beispiel #2
0
void ShowPopup(const TCHAR* line1, const TCHAR* line2, int timeout, const HANDLE hContact) {
	if(CallService(MS_SYSTEM_TERMINATED, 0, 0)) return;

	if ( !options.bHavePopups) {	
		TCHAR title[256];
		_stprintf(title, _T("%s Message"), _T(MODULENAME));

		if(line1 && line2) {
			TCHAR *message = new TCHAR[_tcslen(line1) + _tcslen(line2) + 3]; // newline and null terminator
			_stprintf(message, _T("%s\r\n%s"), line1, line2);
			MessageBox( NULL, message, title, MB_OK | MB_ICONINFORMATION );
			delete message;
		} else if(line1) {
			MessageBox( NULL, line1, title, MB_OK | MB_ICONINFORMATION );
		} else if(line2) {
			MessageBox( NULL, line2, title, MB_OK | MB_ICONINFORMATION );
		}
		return;
	}

	POPUPDATAT ppd = {0};
	//memset((void *)&ppd, 0, sizeof(POPUPDATAT));

	ppd.lchContact = hContact;
	ppd.lchIcon = NULL;

	if(line1 && line2) {
		_tcsncpy( ppd.lptzContactName, line1, MAX_CONTACTNAME-1 );
		_tcsncpy( ppd.lptzText, line2, MAX_SECONDLINE-1 );
	} else if(line1) {
		if (PUIsSecondLineShown()) _tcsncpy( ppd.lptzText, line1, MAX_SECONDLINE-1 );
		else  _tcsncpy( ppd.lptzContactName, line1, MAX_CONTACTNAME-1 );
	}
	else if(line2) {
		if (PUIsSecondLineShown()) _tcsncpy( ppd.lptzText, line2, MAX_SECONDLINE-1 );
		else  _tcsncpy( ppd.lptzContactName, line2, MAX_CONTACTNAME-1 );
	}

	ppd.iSeconds = timeout;

	ppd.PluginWindowProc = NULL;
	ppd.PluginData = NULL;

	PUAddPopUpT(&ppd);

}
Beispiel #3
0
void ShowPopup(XSTATUSCHANGE *xsc)
{
	DBVARIANT dbv;
	char szSetting[64];

	POPUPDATAT ppd = {0};
	ppd.lchContact = xsc->hContact;

	switch(xsc->type)
	{
		case TYPE_JABBER_MOOD:
		case TYPE_JABBER_ACTIVITY:
		{
			mir_snprintf(szSetting, SIZEOF(szSetting), "%s/%s/%s", xsc->szProto, (xsc->type == TYPE_JABBER_MOOD) ? "mood" : "activity", "icon");
			if (!DBGetContactSettingString(xsc->hContact, "AdvStatus", szSetting, &dbv)) 
			{
				ppd.lchIcon = (HICON)CallService(MS_SKIN2_GETICON, 0, (LPARAM)dbv.pszVal);
				DBFreeVariant(&dbv);
			}
			break;
		}
		case TYPE_ICQ_XSTATUS:
		{
			int statusId = DBGetContactSettingByte(xsc->hContact, xsc->szProto, "XStatusId", 0);
			ppd.lchIcon = (HICON)CallProtoService(xsc->szProto, PS_ICQ_GETCUSTOMSTATUSICON, statusId, LR_SHARED);
		}
	}

	if (ppd.lchIcon == NULL)
		ppd.lchIcon = LoadSkinnedProtoIcon(xsc->szProto, DBGetContactSettingWord(xsc->hContact, xsc->szProto, "Status", ID_STATUS_ONLINE));

	switch (opt.Colors)
	{
		case POPUP_COLOR_OWN:
			ppd.colorBack = DBGetContactSettingDword(0, MODULE, "40081bg", COLOR_BG_AVAILDEFAULT);
			ppd.colorText = DBGetContactSettingDword(0, MODULE, "40081tx", COLOR_TX_DEFAULT);
			break;
		case POPUP_COLOR_WINDOWS:
			ppd.colorBack = GetSysColor(COLOR_BTNFACE);
			ppd.colorText = GetSysColor(COLOR_WINDOWTEXT);
			break;
		case POPUP_COLOR_POPUP:
			ppd.colorBack = ppd.colorText = 0;
			break;
	}


	_tcscpy(ppd.lptzContactName, (TCHAR *)CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)xsc->hContact, GSMDF_TCHAR));
	if (opt.ShowGroup) //add group name to popup title
	{
		if (!DBGetContactSettingTString(xsc->hContact, "CList", "Group", &dbv))
		{
			_tcscat(ppd.lptzContactName, _T(" ("));
			_tcscat(ppd.lptzContactName, dbv.ptszVal);
			_tcscat(ppd.lptzContactName, _T(")"));
			DBFreeVariant(&dbv);
		}
	}

	// cut message if needed
	if (opt.PTruncateMsg && (opt.PMsgLen > 0) && xsc->stzText && (_tcslen(xsc->stzText) > opt.PMsgLen))
	{
		TCHAR buff[MAX_TEXT_LEN + 3];
		_tcsncpy(buff, xsc->stzText, opt.PMsgLen);
		buff[opt.PMsgLen] = 0;
		_tcscat(buff, _T("..."));
		mir_free(xsc->stzText);
		xsc->stzText = mir_tstrdup(buff);
	}

	TCHAR *Template;
	switch (xsc->action)
	{
		case NOTIFY_NEW_XSTATUS:
			Template = templates.PopupNewXstatus; break;
		case NOTIFY_NEW_MESSAGE:
			Template = templates.PopupNewMsg; break;
		case NOTIFY_REMOVE:
			Template = templates.PopupRemove; break;
	}

	TCHAR stzPopupText[2*MAX_TEXT_LEN]; 
	ReplaceVars(xsc, Template, templates.PopupDelimiter, stzPopupText);
	_tcsncpy(ppd.lptzText, stzPopupText, SIZEOF(ppd.lptzText));
	ppd.lptzText[SIZEOF(ppd.lptzText) - 1] = 0;

	ppd.PluginWindowProc = (WNDPROC)PopupDlgProc;
	ppd.iSeconds = opt.PopupTimeout; 
	PUAddPopUpT(&ppd);
}