コード例 #1
0
ファイル: notifications.cpp プロジェクト: Seldom/miranda-ng
void FillNotificationData(POPUPDATA2 *ppd, DWORD *disableWhen)
{
	if (!IsValidNotification(ppd->lchNotification)) {
		*disableWhen = 0;
		return;
	}

	POPUPTREEDATA *ptd = (POPUPTREEDATA *)ppd->lchNotification;

	ppd->iSeconds = ptd->timeoutValue;
	*disableWhen = ptd->enabled ? ptd->disableWhen : 0xFFFFFFFF;

	LOGFONTA lf; // dummy to make FS happy (use LOGFONTA coz we use MS_FONT_GET)
	FontID fontid = { 0 }; // use ansi version of fontID coz POPUPNOTIFICATION use char
	fontid.cbSize = sizeof(fontid);
	mir_snprintf(fontid.group, PU_FNT_AND_COLOR"/%s", ptd->notification.lpzGroup);
	mir_snprintf(fontid.name, "%s (colors only)", ptd->notification.lpzName);
	ppd->colorText = (COLORREF)CallService(MS_FONT_GET, (WPARAM)&fontid, (LPARAM)&lf);

	ColourID colourid = { 0 }; // use ansi version of ColourID coz POPUPNOTIFICATION use char
	colourid.cbSize = sizeof(colourid);
	mir_snprintf(colourid.group, PU_FNT_AND_COLOR"/%s", ptd->notification.lpzGroup);
	mir_snprintf(colourid.name, "%s (colors only)", ptd->notification.lpzName);
	ppd->colorBack = (COLORREF)CallService(MS_COLOUR_GET, (WPARAM)&colourid, 0);

	ppd->lchIcon = IcoLib_GetIconByHandle(ptd->hIcoLib);
}
コード例 #2
0
ファイル: notifications.cpp プロジェクト: 0xmono/miranda-ng
bool PerformAction(HANDLE hNotification, HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam)
{
	if (!IsValidNotification(hNotification))
		return false;

	POPUPTREEDATA *ptd = (POPUPTREEDATA *)hNotification;
	char *lpzAction = NULL;
	switch (message)
	{
		case WM_LBUTTONUP:
		case WM_COMMAND:
			lpzAction = ptd->leftAction;
			break;

		case WM_RBUTTONUP:
		case WM_CONTEXTMENU:
			lpzAction = ptd->rightAction;
			break;

		default:
			return false;
	}

	if (!lstrcmpA(lpzAction, POPUP_ACTION_NOTHING))
		return true;

	if (!lstrcmpA(lpzAction, POPUP_ACTION_DISMISS))
	{
		PUDeletePopup(hwnd);
		return true;
	}

	for (int i=0; i < ptd->notification.actionCount; ++i)
	{
		if (!(ptd->notification.lpActions[i].dwFlags&PNAF_CALLBACK))
			continue;
		if (lstrcmpA(ptd->notification.lpActions[i].lpzTitle, lpzAction))
			continue;

		ptd->notification.lpActions[i].pfnCallback(hwnd, message, wparam, lparam,
			ptd->notification.lpActions[i].dwCookie);
		return true;
	}

	return false;
}