Esempio n. 1
0
int	OnEventFilterAdd(WPARAM hContact, LPARAM lParam)
{
	DBEVENTINFO *dbei = (DBEVENTINFO *)lParam;
	if (FLAG_CONTAINS(dbei->flags, DBEF_SENT) && CheckProtoSupport(dbei->szModule) && db_get_b(hContact, "Tab_SRMsg", "no_ack", 0))
		SetSRMMIcon(hContact, ICON_NOSENT);
	ExtraIconsApply(hContact, 0);
	return 0;
}
Esempio n. 2
0
LONGLONG GetLastSentMessageTime(MCONTACT hContact)
{
	for (MEVENT hDbEvent = db_event_last(hContact); hDbEvent; hDbEvent = db_event_prev(hContact, hDbEvent))
	{
		DBEVENTINFO dbei = { sizeof(dbei) };
		db_event_get(hDbEvent, &dbei);
		if (FLAG_CONTAINS(dbei.flags, DBEF_SENT))
			return dbei.timestamp;
	}
	return -1;
}
Esempio n. 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);
}
Esempio n. 4
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);
}
Esempio n. 5
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;
}