示例#1
0
void FacebookProto::NotifyEvent(TCHAR* title, TCHAR* info, HANDLE contact, DWORD flags, std::string *url, std::string *notification_id)
{
    char name[256];

    switch (flags)
    {
    case FACEBOOK_EVENT_CLIENT:
        if (!getByte(FACEBOOK_KEY_EVENT_CLIENT_ENABLE, DEFAULT_EVENT_CLIENT_ENABLE))
            return;
        mir_snprintf(name, SIZEOF(name), "%s_%s", m_szModuleName, "Client");
        flags |= NIIF_WARNING;
        break;

    case FACEBOOK_EVENT_NEWSFEED:
        if (!getByte(FACEBOOK_KEY_EVENT_FEEDS_ENABLE, DEFAULT_EVENT_FEEDS_ENABLE))
            return;
        mir_snprintf(name, SIZEOF(name), "%s_%s", m_szModuleName, "Newsfeed");
        SkinPlaySound("NewsFeed");
        flags |= NIIF_INFO;
        break;

    case FACEBOOK_EVENT_NOTIFICATION:
        if (!getByte(FACEBOOK_KEY_EVENT_NOTIFICATIONS_ENABLE, DEFAULT_EVENT_NOTIFICATIONS_ENABLE))
            return;
        mir_snprintf(name, SIZEOF(name), "%s_%s", m_szModuleName, "Notification");
        SkinPlaySound("Notification");
        flags |= NIIF_INFO;
        break;

    case FACEBOOK_EVENT_OTHER:
        if (!getByte(FACEBOOK_KEY_EVENT_OTHER_ENABLE, DEFAULT_EVENT_OTHER_ENABLE))
            return;
        mir_snprintf(name, SIZEOF(name), "%s_%s", m_szModuleName, "Other");
        SkinPlaySound("OtherEvent");
        flags |= NIIF_INFO;
        break;
    }

    if (!getByte(FACEBOOK_KEY_SYSTRAY_NOTIFY,DEFAULT_SYSTRAY_NOTIFY))
    {
        if (ServiceExists(MS_POPUP_ADDPOPUPCLASS)) {

            // TODO: if popup with particular ID is already showed, just update his content
            // ... but f***ed up Popup Classes won't allow it now - they need to return hPopupWindow somehow
            /* if (popup exists) {
            	if (PUChangeTextT(hWndPopup, info) > 0) // success
            		return;
            }*/

            POPUPDATACLASS pd = { sizeof(pd) };
            pd.ptszTitle = title;
            pd.ptszText = info;
            pd.pszClassName = name;
            pd.hContact = contact;

            if (url != NULL || notification_id != NULL) {
                popup_data *data = new popup_data(this);
                if (url != NULL)
                    data->url = *url;
                if (notification_id != NULL)
                    data->notification_id = *notification_id;
                pd.PluginData = data;
            }

            if (CallService(MS_POPUP_ADDPOPUPCLASS, 0, (LPARAM)&pd) == 0)
                return;
        }
    } else {
        if (ServiceExists(MS_CLIST_SYSTRAY_NOTIFY))
        {
            MIRANDASYSTRAYNOTIFY err;
            int niif_flags = flags;
            REMOVE_FLAG(niif_flags, FACEBOOK_EVENT_CLIENT |
                        FACEBOOK_EVENT_NEWSFEED |
                        FACEBOOK_EVENT_NOTIFICATION |
                        FACEBOOK_EVENT_OTHER);
            err.szProto = m_szModuleName;
            err.cbSize = sizeof(err);
            err.dwInfoFlags = NIIF_INTERN_TCHAR | niif_flags;
            err.tszInfoTitle = title;
            err.tszInfo = info;
            err.uTimeout = 10000;
            if (CallService(MS_CLIST_SYSTRAY_NOTIFY, 0, (LPARAM) & err) == 0)
                return;
        }
    }

    if (FLAG_CONTAINS(flags, FACEBOOK_EVENT_CLIENT))
        MessageBox(NULL, info, title, MB_OK | MB_ICONINFORMATION);
}
示例#2
0
HWND FacebookProto::NotifyEvent(TCHAR* title, TCHAR* info, MCONTACT contact, DWORD flags, std::string *url, std::string *notification_id, const char *icon)
{
	if (title == NULL || info == NULL)
		return NULL;

	char name[256];

	switch (flags)
	{
	case FACEBOOK_EVENT_CLIENT:
		mir_snprintf(name, "%s_%s", m_szModuleName, "Client");
		flags |= NIIF_WARNING;
		break;

	case FACEBOOK_EVENT_NEWSFEED:
		mir_snprintf(name, "%s_%s", m_szModuleName, "Newsfeed");
		flags |= NIIF_INFO;
		break;

	case FACEBOOK_EVENT_NOTIFICATION:
		mir_snprintf(name, "%s_%s", m_szModuleName, "Notification");
		SkinPlaySound("Notification");
		flags |= NIIF_INFO;
		break;

	case FACEBOOK_EVENT_OTHER:
		mir_snprintf(name, "%s_%s", m_szModuleName, "Other");
		SkinPlaySound("OtherEvent");
		flags |= NIIF_INFO;
		break;

	case FACEBOOK_EVENT_FRIENDSHIP:
		mir_snprintf(name, "%s_%s", m_szModuleName, "Friendship");
		SkinPlaySound("Friendship");
		flags |= NIIF_INFO;
		break;

	case FACEBOOK_EVENT_TICKER:
		mir_snprintf(name, "%s_%s", m_szModuleName, "Ticker");
		SkinPlaySound("Ticker");
		flags |= NIIF_INFO;
		break;

	case FACEBOOK_EVENT_ON_THIS_DAY:
		mir_snprintf(name, "%s_%s", m_szModuleName, "OnThisDay");		
		flags |= NIIF_INFO;
		break;
	}

	if (!getByte(FACEBOOK_KEY_SYSTRAY_NOTIFY, DEFAULT_SYSTRAY_NOTIFY))
	{
		if (ServiceExists(MS_POPUP_ADDPOPUPCLASS)) {

			// TODO: if popup with particular ID is already showed, just update his content
			// ... but f***ed up Popup Classes won't allow it now - they need to return hPopupWindow somehow
			/* if (popup exists) {
				if (PUChangeTextT(hWndPopup, info) > 0) // success
				return;
				}*/

			POPUPDATACLASS pd = { sizeof(pd) };
			pd.ptszTitle = title;
			pd.ptszText = info;
			pd.pszClassName = name;
			pd.hContact = contact;
			if (icon != NULL) {
				// pd.hIcon = IcoLib_GetIconByHandle(GetIconHandle(icon)); // FIXME: Uncomment when implemented in Popup+ and YAPP correctly
			}

			if (url != NULL || notification_id != NULL) {
				popup_data *data = new popup_data(this);
				if (url != NULL)
					data->url = *url;
				if (notification_id != NULL)
					data->notification_id = *notification_id;
				pd.PluginData = data;
			}

			return (HWND)CallService(MS_POPUP_ADDPOPUPCLASS, 0, (LPARAM)&pd);
		}
	}
	else {
		if (ServiceExists(MS_CLIST_SYSTRAY_NOTIFY))
		{
			MIRANDASYSTRAYNOTIFY err;
			int niif_flags = flags;
			REMOVE_FLAG(niif_flags, FACEBOOK_EVENT_CLIENT |
				FACEBOOK_EVENT_NEWSFEED |
				FACEBOOK_EVENT_NOTIFICATION |
				FACEBOOK_EVENT_OTHER |
				FACEBOOK_EVENT_FRIENDSHIP);
			err.szProto = m_szModuleName;
			err.cbSize = sizeof(err);
			err.dwInfoFlags = NIIF_INTERN_TCHAR | niif_flags;
			err.tszInfoTitle = title;
			err.tszInfo = info;
			err.uTimeout = 10000;
			if (CallService(MS_CLIST_SYSTRAY_NOTIFY, 0, (LPARAM)& err) == 0)
				return NULL;
		}
	}

	if (FLAG_CONTAINS(flags, FACEBOOK_EVENT_CLIENT))
		MessageBox(NULL, info, title, MB_OK | MB_ICONERROR);

	return NULL;
}
示例#3
0
void WhatsAppProto::NotifyEvent(const TCHAR *title, const TCHAR *info, MCONTACT contact, DWORD flags, TCHAR* szUrl)
{
	int ret; int timeout; COLORREF colorBack = 0; COLORREF colorText = 0;

	switch (flags) {
	case WHATSAPP_EVENT_CLIENT:
		if (!getByte(WHATSAPP_KEY_EVENT_CLIENT_ENABLE, DEFAULT_EVENT_CLIENT_ENABLE))
			goto exit;
		if (!getByte(WHATSAPP_KEY_EVENT_CLIENT_DEFAULT, 0)) {
			colorBack = getDword(WHATSAPP_KEY_EVENT_CLIENT_COLBACK, DEFAULT_EVENT_COLBACK);
			colorText = getDword(WHATSAPP_KEY_EVENT_CLIENT_COLTEXT, DEFAULT_EVENT_COLTEXT);
		}
		timeout = getDword(WHATSAPP_KEY_EVENT_CLIENT_TIMEOUT, 0);
		flags |= NIIF_WARNING;
		break;

	case WHATSAPP_EVENT_OTHER:
		if (!getByte(WHATSAPP_KEY_EVENT_OTHER_ENABLE, DEFAULT_EVENT_OTHER_ENABLE))
			goto exit;
		if (!getByte(WHATSAPP_KEY_EVENT_OTHER_DEFAULT, 0)) {
			colorBack = getDword(WHATSAPP_KEY_EVENT_OTHER_COLBACK, DEFAULT_EVENT_COLBACK);
			colorText = getDword(WHATSAPP_KEY_EVENT_OTHER_COLTEXT, DEFAULT_EVENT_COLTEXT);
		}
		timeout = getDword(WHATSAPP_KEY_EVENT_OTHER_TIMEOUT, -1);
		SkinPlaySound("OtherEvent");
		flags |= NIIF_INFO;
		break;
	}

	if (!getByte(WHATSAPP_KEY_SYSTRAY_NOTIFY, DEFAULT_SYSTRAY_NOTIFY)) {
		if (ServiceExists(MS_POPUP_ADDPOPUP)) {
			POPUPDATAT pd;
			pd.colorBack = colorBack;
			pd.colorText = colorText;
			pd.iSeconds = timeout;
			pd.lchContact = contact;
			pd.lchIcon = IcoLib_GetIconByHandle(m_hProtoIcon); // TODO: Icon test
			pd.PluginData = szUrl;
			pd.PluginWindowProc = PopupDlgProc;
			mir_tstrcpy(pd.lptzContactName, title);
			mir_tstrcpy(pd.lptzText, info);
			ret = PUAddPopupT(&pd);

			if (ret == 0)
				return;
		}
	}
	else {
		if (ServiceExists(MS_CLIST_SYSTRAY_NOTIFY)) {
			MIRANDASYSTRAYNOTIFY err;
			int niif_flags = flags;
			REMOVE_FLAG(niif_flags, WHATSAPP_EVENT_CLIENT | WHATSAPP_EVENT_NOTIFICATION | WHATSAPP_EVENT_OTHER);
			err.szProto = m_szModuleName;
			err.cbSize = sizeof(err);
			err.dwInfoFlags = NIIF_INTERN_TCHAR | niif_flags;
			err.tszInfoTitle = (TCHAR*)title;
			err.tszInfo = (TCHAR*)info;
			err.uTimeout = 1000 * timeout;
			ret = CallService(MS_CLIST_SYSTRAY_NOTIFY, 0, (LPARAM)& err);

			if (ret == 0)
				goto exit;
		}
	}

	if (FLAG_CONTAINS(flags, WHATSAPP_EVENT_CLIENT))
		MessageBox(NULL, info, title, MB_OK | MB_ICONINFORMATION);

exit:
	if (szUrl != NULL)
		mir_free(szUrl);
}
示例#4
0
文件: var.cpp 项目: Grainspring/xoc
CHAR * VAR::dump(CHAR * buf)
{
	CHAR * tb = buf;
	CHAR * name = SYM_name(VAR_name(this));
	CHAR tt[43];
	if (xstrlen(name) > 43) {
		memcpy(tt, name, 43);
		tt[39] = '.';
		tt[40] = '.';
		tt[41] = '.';
		tt[42] = 0;
		name = tt;
	}
	buf += sprintf(buf, "VAR%d(%s):", VAR_id(this), name);
	if (HAVE_FLAG(VAR_flag(this), VAR_GLOBAL)) {
		strcat(buf, "global");
	} else if (HAVE_FLAG(VAR_flag(this), VAR_LOCAL)) {
		strcat(buf, "local");
	} else {
		IS_TRUE0(0);
	}

	if (HAVE_FLAG(VAR_flag(this), VAR_STATIC)) {
		strcat(buf, ",static");
	}
	if (HAVE_FLAG(VAR_flag(this), VAR_READONLY)) {
		strcat(buf, ",const");
	}
	if (HAVE_FLAG(VAR_flag(this), VAR_VOLATILE)) {
		strcat(buf, ",volatile");
	}
	if (HAVE_FLAG(VAR_flag(this), VAR_IS_RESTRICT)) {
		strcat(buf, ",restrict");
	}
	if (HAVE_FLAG(VAR_flag(this), VAR_HAS_INIT_VAL)) {
		strcat(buf, ",has_init_val");
	}
	if (HAVE_FLAG(VAR_flag(this), VAR_FUNC_UNIT)) {
		strcat(buf, ",func_unit");
	}
	if (HAVE_FLAG(VAR_flag(this), VAR_FUNC_DECL)) {
		strcat(buf, ",func_decl");
	}
	if (HAVE_FLAG(VAR_flag(this), VAR_FAKE)) {
		strcat(buf, ",fake");
	}
	if (HAVE_FLAG(VAR_flag(this), VAR_IS_FORMAL_PARAM)) {
		strcat(buf, ",formal_param");
	}
	if (HAVE_FLAG(VAR_flag(this), VAR_IS_SPILL)) {
		strcat(buf, ",spill_loc");
	}
	if (HAVE_FLAG(VAR_flag(this), VAR_ADDR_TAKEN)) {
		strcat(buf, ",addr_taken");
	}
	if (VAR_is_str(this)) {
		strcat(buf, ",str");
	}
	if (HAVE_FLAG(VAR_flag(this), VAR_IS_ARRAY)) {
		strcat(buf, ",array");
	}
	if (HAVE_FLAG(VAR_flag(this), VAR_IS_ALLOCABLE)) {
		strcat(buf, ",allocable");
	}
	if (VAR_is_pointer(this)) {
		buf += strlen(buf);
		sprintf(buf, ",pointer,pt_base_sz:%d", VAR_pointer_base_size(this));
	}
	buf += strlen(buf);

	sprintf(buf, ",%s", DTDES_name(&g_dtype_desc[VAR_data_type(this)]));
	if (VAR_data_type(this) > D_F128) {
		buf += strlen(buf);
		sprintf(buf, ",mem_size:%d", VAR_data_size(this));
	}

	if (VAR_align(this) != 0) {
		buf += strlen(buf);
		sprintf(buf, ",align:%d", VAR_align(this));
	}

	strcat(buf, ",decl:'");
	buf += strlen(buf);
	dump_var_decl(buf, 40);
	strcat(buf, "'");

	#ifdef _DEBUG_
	UINT tmpf = VAR_flag(this);
	REMOVE_FLAG(tmpf, VAR_GLOBAL);
	REMOVE_FLAG(tmpf, VAR_LOCAL);
	REMOVE_FLAG(tmpf, VAR_STATIC);
	REMOVE_FLAG(tmpf, VAR_READONLY);
	REMOVE_FLAG(tmpf, VAR_VOLATILE);
	REMOVE_FLAG(tmpf, VAR_HAS_INIT_VAL);
	REMOVE_FLAG(tmpf, VAR_FUNC_UNIT);
	REMOVE_FLAG(tmpf, VAR_FUNC_DECL);
	REMOVE_FLAG(tmpf, VAR_FAKE);
	REMOVE_FLAG(tmpf, VAR_IS_ARRAY);
	REMOVE_FLAG(tmpf, VAR_IS_FORMAL_PARAM);
	REMOVE_FLAG(tmpf, VAR_IS_SPILL);
	REMOVE_FLAG(tmpf, VAR_ADDR_TAKEN);
	REMOVE_FLAG(tmpf, VAR_IS_PR);
	REMOVE_FLAG(tmpf, VAR_IS_RESTRICT);
	REMOVE_FLAG(tmpf, VAR_IS_ALLOCABLE);
	IS_TRUE0(tmpf == 0);
	#endif
	return tb;
}