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; }
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; }
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); }
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); }
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; }