// MsnBasicSearch - search contacts by e-mail void __cdecl CMsnProto::MsnSearchAckThread(void* arg) { const TCHAR* emailT = (TCHAR*)arg; T2Utf email(emailT); if (Lists_IsInList(LIST_FL, email)) { MSN_ShowPopup(emailT, TranslateT("Contact already in your contact list"), MSN_ALLOW_MSGBOX, NULL); ProtoBroadcastAck(NULL, ACKTYPE_SEARCH, ACKRESULT_SUCCESS, arg, 0); mir_free(arg); return; } if (MyOptions.netId == NETID_SKYPE) MSN_SKYABSearch(email, arg); else { unsigned res = MSN_ABContactAdd(email, NULL, NETID_MSN, NULL, 1, true); switch (res) { case 0: case 2: case 3: { PROTOSEARCHRESULT psr = { 0 }; psr.cbSize = sizeof(psr); psr.flags = PSR_TCHAR; psr.id.t = (TCHAR*)emailT; psr.nick.t = (TCHAR*)emailT; psr.email.t = (TCHAR*)emailT; ProtoBroadcastAck(NULL, ACKTYPE_SEARCH, ACKRESULT_DATA, arg, (LPARAM)&psr); ProtoBroadcastAck(NULL, ACKTYPE_SEARCH, ACKRESULT_SUCCESS, arg, 0); } break; case 1: if (strstr(email, "@yahoo.com") == NULL) ProtoBroadcastAck(NULL, ACKTYPE_SEARCH, ACKRESULT_SUCCESS, arg, 0); #ifdef OBSOLETE else { msnSearchId = arg; MSN_FindYahooUser(email); } #endif break; default: ProtoBroadcastAck(NULL, ACKTYPE_SEARCH, ACKRESULT_SUCCESS, arg, 0); break; } } mir_free(arg); }
void __cdecl CMsnProto::MsnSearchAckThread(void* arg) { const TCHAR* emailT = (TCHAR*)arg; char *email = mir_utf8encodeT(emailT); if (Lists_IsInList(LIST_FL, email)) { MSN_ShowPopup(emailT, _T("Contact already in your contact list"), MSN_ALLOW_MSGBOX, NULL); SendBroadcast(NULL, ACKTYPE_SEARCH, ACKRESULT_SUCCESS, arg, 0); mir_free(arg); return; } unsigned res = MSN_ABContactAdd(email, NULL, NETID_MSN, NULL, 1, true); switch(res) { case 0: case 2: case 3: { PROTOSEARCHRESULT isr = {0}; isr.cbSize = sizeof(isr); isr.flags = PSR_TCHAR; isr.id = (TCHAR*)emailT; isr.nick = (TCHAR*)emailT; isr.email = (TCHAR*)emailT; SendBroadcast(NULL, ACKTYPE_SEARCH, ACKRESULT_DATA, arg, (LPARAM)&isr); SendBroadcast(NULL, ACKTYPE_SEARCH, ACKRESULT_SUCCESS, arg, 0); } break; case 1: if (strstr(email, "@yahoo.com") == NULL) SendBroadcast(NULL, ACKTYPE_SEARCH, ACKRESULT_SUCCESS, arg, 0); else { msnSearchId = arg; MSN_FindYahooUser(email); } break; default: SendBroadcast(NULL, ACKTYPE_SEARCH, ACKRESULT_SUCCESS, arg, 0); break; } mir_free(email); mir_free(arg); }
void CMsnProto::MSN_ShowError(const char* msgtext, ...) { TCHAR tBuffer[4096]; va_list tArgs; TCHAR *buf = Langpack_PcharToTchar(msgtext); va_start(tArgs, msgtext); mir_vsntprintf(tBuffer, SIZEOF(tBuffer), buf, tArgs); va_end(tArgs); mir_free(buf); MSN_ShowPopup(m_tszUserName, tBuffer, MSN_ALLOW_MSGBOX | MSN_SHOW_ERROR, NULL); }
void CMsnProto::sttNotificationMessage(char* msgBody, bool isInitial) { TCHAR tBuffer[512]; TCHAR tBuffer2[512]; int UnreadMessages = mUnreadMessages; int UnreadJunkEmails = mUnreadJunkEmails; bool ShowPopup = isInitial; MimeHeaders tFileInfo; tFileInfo.readFromBuffer(msgBody); const char* From = tFileInfo["From"]; const char* Subject = tFileInfo["Subject"]; const char* Fromaddr = tFileInfo["From-Addr"]; const char* MsgDelta = tFileInfo["Message-Delta"]; const char* SrcFolder = tFileInfo["Src-Folder"]; const char* DestFolder = tFileInfo["Dest-Folder"]; const char* InboxUnread = tFileInfo["Inbox-Unread"]; const char* FoldersUnread = tFileInfo["Folders-Unread"]; if (InboxUnread != NULL) mUnreadMessages = atol(InboxUnread); if (FoldersUnread != NULL) mUnreadJunkEmails = atol(FoldersUnread); if (MsgDelta != NULL) { int iDelta = atol(MsgDelta); if (SrcFolder && mir_strcmp(SrcFolder, "ACTIVE") == 0) mUnreadMessages -= iDelta; else if (DestFolder && mir_strcmp(DestFolder, "ACTIVE") == 0) mUnreadMessages += iDelta; if (SrcFolder && mir_strcmp(SrcFolder, "HM_BuLkMail_") == 0) mUnreadJunkEmails -= iDelta; else if (DestFolder && mir_strcmp(DestFolder, "HM_BuLkMail_") == 0) mUnreadJunkEmails += iDelta; if (mUnreadJunkEmails < 0) mUnreadJunkEmails = 0; if (mUnreadMessages < 0) mUnreadMessages = 0; } if (From != NULL && Subject != NULL && Fromaddr != NULL) { if (DestFolder != NULL && SrcFolder == NULL) { mUnreadMessages += mir_strcmp(DestFolder, "ACTIVE") == 0; mUnreadJunkEmails += mir_strcmp(DestFolder, "HM_BuLkMail_") == 0; } wchar_t* mimeFromW = tFileInfo.decode(From); wchar_t* mimeSubjectW = tFileInfo.decode(Subject); mir_sntprintf(tBuffer2, TranslateT("Subject: %s"), mimeSubjectW); TCHAR* msgtxt = _stricmp(From, Fromaddr) ? TranslateT("Hotmail from %s (%S)") : TranslateT("Hotmail from %s"); mir_sntprintf(tBuffer, msgtxt, mimeFromW, Fromaddr); mir_free(mimeFromW); mir_free(mimeSubjectW); ShowPopup = true; } else { const char* MailData = tFileInfo["Mail-Data"]; if (MailData != NULL) processMailData((char*)MailData); mir_sntprintf(tBuffer, m_tszUserName); mir_sntprintf(tBuffer2, TranslateT("Unread mail is available: %d in Inbox and %d in other folders."), mUnreadMessages, mUnreadJunkEmails); } if (UnreadMessages == mUnreadMessages && UnreadJunkEmails == mUnreadJunkEmails && !isInitial) return; ShowPopup &= mUnreadMessages != 0 || (mUnreadJunkEmails != 0 && !getByte("DisableHotmailJunk", 0)); MCONTACT hContact = MSN_HContactFromEmail(MyOptions.szEmail); if (hContact) { pcli->pfnRemoveEvent(hContact, 1); displayEmailCount(hContact); if (ShowPopup && !getByte("DisableHotmailTray", 1)) { char buf[64]; mir_snprintf(buf, "%s%s", m_szModuleName, MS_GOTO_INBOX); CLISTEVENT cle = {}; cle.hContact = hContact; cle.hDbEvent = 1; cle.flags = CLEF_URGENT | CLEF_TCHAR; cle.hIcon = Skin_LoadIcon(SKINICON_OTHER_SENDEMAIL); cle.ptszTooltip = tBuffer2; cle.pszService = buf; pcli->pfnAddEvent(&cle); } } ProtoBroadcastAck(NULL, ACKTYPE_EMAIL, ACKRESULT_STATUS, NULL, 0); // Disable to notify receiving hotmail if (ShowPopup && !getByte("DisableHotmail", 0)) { SkinPlaySound(mailsoundname); const char *msgurl = tFileInfo["Message-URL"]; if (msgurl) { const char *p = strchr(msgurl, '&'); if (p) *(char*)p = 0; p = strstr(msgurl, "getmsg"); if (p) msgurl = p; } else msgurl = "inbox"; char szUrl[256]; mir_snprintf(szUrl, "http://mail.live.com?rru=%s", msgurl); MSN_ShowPopup(tBuffer, tBuffer2, MSN_ALLOW_ENTER | MSN_ALLOW_MSGBOX | MSN_HOTMAIL_POPUP, szUrl); } if (!getByte("RunMailerOnHotmail", 0) || !ShowPopup || isInitial) return; char mailerpath[MAX_PATH]; if (!db_get_static(NULL, m_szModuleName, "MailerPath", mailerpath, sizeof(mailerpath))) { if (mailerpath[0]) { char* tParams = NULL; char* tCmd = mailerpath; if (*tCmd == '\"') { ++tCmd; char* tEndPtr = strchr(tCmd, '\"'); if (tEndPtr != NULL) { *tEndPtr = 0; tParams = tEndPtr + 1; } } if (tParams == NULL) { tParams = strchr(tCmd, ' '); tParams = tParams ? tParams + 1 : strchr(tCmd, '\0'); } while (*tParams == ' ') ++tParams; debugLogA("Running mailer \"%s\" with params \"%s\"", tCmd, tParams); ShellExecuteA(NULL, "open", tCmd, tParams, NULL, TRUE); } } }
void CMsnProto::MSN_ShowPopup(const MCONTACT hContact, const TCHAR* msg, int flags) { const TCHAR* nickname = hContact ? GetContactNameT(hContact) : _T("Me"); MSN_ShowPopup(nickname, msg, flags, NULL, hContact); }