void ReadPrivkeyFiles() { DEBUGOUT_T("READ privkey"); lib_cs_lock(); otrl_privkey_read(otr_user_state, _T2A(g_private_key_filename)); otrl_privkey_read_fingerprints(otr_user_state, _T2A(g_fingerprint_store_filename), set_context_contact, 0); otrl_instag_read(otr_user_state, _T2A(g_instag_filename)); }
int WhatsAppProto::onGroupChatEvent(WPARAM wParam, LPARAM lParam) { GCHOOK *gch = (GCHOOK*)lParam; if (mir_strcmp(gch->pDest->pszModule, m_szModuleName)) return 0; std::string chat_id(T2Utf(gch->pDest->ptszID)); WAChatInfo *pInfo = SafeGetChat(chat_id); if (pInfo == NULL) return 0; switch (gch->pDest->iType) { case GC_USER_LOGMENU: ChatLogMenuHook(pInfo, gch); break; case GC_USER_NICKLISTMENU: NickListMenuHook(pInfo, gch); break; case GC_USER_MESSAGE: if (isOnline()) { std::string msg(T2Utf(gch->ptszText)); try { int msgId = GetSerial(); time_t now = time(NULL); std::string id = Utilities::intToStr(now) + "-" + Utilities::intToStr(msgId); FMessage fmsg(chat_id, true, id); fmsg.timestamp = now; fmsg.data = msg; m_pConnection->sendMessage(&fmsg); pInfo->m_unsentMsgs[id] = gch->ptszText; } CODE_BLOCK_CATCH_ALL } break; case GC_USER_PRIVMESS: string jid = string(_T2A(gch->ptszUID)) + "@s.whatsapp.net"; MCONTACT hContact = ContactIDToHContact(jid); if (hContact == 0) { hContact = AddToContactList(jid, (char*)_T2A(gch->ptszUID)); setWord(hContact, "Status", ID_STATUS_ONLINE); db_set_b(hContact, "CList", "Hidden", 1); setTString(hContact, "Nick", gch->ptszUID); db_set_dw(hContact, "Ignore", "Mask1", 0); } CallService(MS_MSG_SENDMESSAGE, hContact, 0); break; } return 0; }
void WhatsAppProto::KickChatUser(WAChatInfo *pInfo, const TCHAR *ptszJid) { if (!isOnline()) return; std::string gjid((char*)_T2A(pInfo->tszJid)); std::vector<std::string> jids(1); jids[0] = (char*)_T2A(ptszJid); m_pConnection->sendRemoveParticipants(gjid, jids); }
void ChangeProtoMessages(char* szProto, int iMode, TCString &Msg) { TCString CurMsg(Msg); if (szProto) { if (Msg == NULL) CurMsg = GetDynamicStatMsg(INVALID_CONTACT_ID, szProto); CallAllowedPS_SETAWAYMSG(szProto, iMode, (char*)_T2A(CurMsg)); g_ProtoStates[szProto].CurStatusMsg = CurMsg; } else { // change message of all protocols int numAccs; PROTOACCOUNT **accs; ProtoEnumAccounts(&numAccs, &accs); for (int i = 0; i < numAccs; i++) { PROTOACCOUNT *p = accs[i]; if (!db_get_b(NULL, p->szModuleName, "LockMainStatus", 0)) { if (Msg == NULL) CurMsg = GetDynamicStatMsg(INVALID_CONTACT_ID, p->szModuleName); CallAllowedPS_SETAWAYMSG(p->szModuleName, iMode, (char*)_T2A(CurMsg)); g_ProtoStates[p->szModuleName].CurStatusMsg = CurMsg; } } } static struct { int Status; char *Setting; } StatusSettings[] = { ID_STATUS_OFFLINE, "Off", ID_STATUS_ONLINE, "On", ID_STATUS_AWAY, "Away", ID_STATUS_NA, "Na", ID_STATUS_DND, "Dnd", ID_STATUS_OCCUPIED, "Occupied", ID_STATUS_FREECHAT, "FreeChat", ID_STATUS_INVISIBLE, "Inv", ID_STATUS_ONTHEPHONE, "Otp", ID_STATUS_OUTTOLUNCH, "Otl", ID_STATUS_IDLE, "Idl" }; for (int i = 0; i < SIZEOF(StatusSettings); i++) { if (iMode == StatusSettings[i].Status) { db_set_ts(NULL, "SRAway", CString(StatusSettings[i].Setting) + "Msg", CurMsg); db_set_ts(NULL, "SRAway", CString(StatusSettings[i].Setting) + "Default", CurMsg); // TODO: make it more accurate, and change not only here, but when changing status messages through UpdateMsgsTimerFunc too; and when changing messages through AutoAway() ? break; } } // InitUpdateMsgs(); }
void CLuaOptions::OnApply() { int count = m_scripts.GetItemCount(); for (int iItem = 0; iItem < count; iItem++) { TCHAR fileName[MAX_PATH]; m_scripts.GetItemText(iItem, 0, fileName, _countof(fileName)); if (!m_scripts.GetCheckState(iItem)) db_set_b(NULL, MODULE, _T2A(fileName), 0); else db_unset(NULL, MODULE, _T2A(fileName)); } }
void CSkypeProto::AddMessageToChat(const TCHAR *chat_id, const TCHAR *from, const char *content, bool isAction, int emoteOffset, time_t timestamp, bool isLoading) { GCDEST gcd = { m_szModuleName, chat_id, isAction ? GC_EVENT_ACTION : GC_EVENT_MESSAGE }; GCEVENT gce = { sizeof(GCEVENT), &gcd }; gce.bIsMe = IsMe(_T2A(from)); gce.ptszNick = from; gce.time = timestamp; gce.ptszUID = from; ptrA szHtml(RemoveHtml(content)); ptrT tszHtml(mir_utf8decodeT(szHtml)); if (!isAction) { gce.ptszText = tszHtml; gce.dwFlags = GCEF_ADDTOLOG; } else { gce.ptszText = &tszHtml[emoteOffset]; } if (isLoading) gce.dwFlags = GCEF_NOTNOTIFY; CallServiceSync(MS_GC_EVENT, 0, (LPARAM)&gce); }
void SmileyType::CallSmileyService(MCONTACT hContact) { _TPattern *srvsplit = _TPattern::compile(_T("(.*)\\|(.*)\\|(.*)")); _TMatcher *m0 = srvsplit->createTMatcher(GetTriggerText()); m0->findFirstMatch(); CMString name = m0->getGroup(1); CMString par1 = m0->getGroup(2); CMString par2 = m0->getGroup(3); delete m0; delete srvsplit; char str[MAXMODULELABELLENGTH]; const char *proto = ""; if (name[0] == '/') { proto = (const char*)GetContactProto(hContact); if (proto == NULL) return; } mir_snprintf(str, "%s%s", proto, _T2A(name.c_str())); CallService(str, ConvertServiceParam(hContact, par1.c_str()), ConvertServiceParam(hContact, par2.c_str())); }
int __cdecl AuthDeny(MEVENT hDbEvent, const TCHAR *szReason) { if (m_iVersion > 1) return (int)ProtoCallService(m_szModuleName, PS_AUTHDENY, hDbEvent, (LPARAM)szReason); return (int)ProtoCallService(m_szModuleName, PS_AUTHDENY, hDbEvent, _T2A(szReason)); }
HANDLE __cdecl SearchBasic(const TCHAR* id) { if (m_iVersion > 1) return (HANDLE)ProtoCallService(m_szModuleName, PS_BASICSEARCH, 0, (LPARAM)id); return (HANDLE)ProtoCallService(m_szModuleName, PS_BASICSEARCH, 0, _T2A(id)); }
void* AddTempGroup(HWND hwnd, ClcData *dat, const TCHAR *szName, DWORD flags, int groupId, int calcTotalMembers) { int i = 0; int f = 0; DWORD groupFlags; if (wildcmp(_T2A(szName), "-@-HIDDEN-GROUP-@-")) return NULL; for (i = 1;; i++) { TCHAR *szGroupName = pcli->pfnGetGroupName(i, &groupFlags); if (szGroupName == NULL) break; if (!mir_tstrcmpi(szGroupName, szName)) f = 1; } if (!f) { char buf[20]; TCHAR b2[255]; void * res = NULL; mir_snprintf(buf, SIZEOF(buf), "%d", (i - 1)); mir_sntprintf(b2, SIZEOF(b2), _T("#%s"), szName); b2[0] = 1 | GROUPF_EXPANDED; db_set_ws(NULL, "CListGroups", buf, b2); pcli->pfnGetGroupName(i, &groupFlags); res = cli_AddGroup(hwnd, dat, szName, groupFlags, i, 0); return res; } return NULL; }
void __cdecl UpdateMsgsThreadProc(void *) { int numAccs; PROTOACCOUNT **accs; ProtoEnumAccounts(&numAccs, &accs); while (WaitForSingleObject(g_hTerminateUpdateMsgsThread, 0) == WAIT_TIMEOUT && !Miranda_Terminated()) { DWORD MinUpdateTimeDifference = g_MoreOptPage.GetDBValueCopy(IDC_MOREOPTDLG_UPDATEMSGSPERIOD) * 1000; // in milliseconds for (int i = 0; i < numAccs; i++) { PROTOACCOUNT *p = accs[i]; if (CallProtoService(p->szModuleName, PS_GETCAPS, PFLAGNUM_1, 0) & PF1_MODEMSGSEND && !IsAnICQProto(p->szModuleName)) { int Status = CallProtoService(p->szModuleName, PS_GETSTATUS, 0, 0); if (Status < ID_STATUS_OFFLINE || Status > ID_STATUS_OUTTOLUNCH) { Status = g_ProtoStates[p->szModuleName].Status; } if (CallProtoService(p->szModuleName, PS_GETCAPS, PFLAGNUM_3, 0) & Proto_Status2Flag(Status) && g_ProtoStates[p->szModuleName].CurStatusMsg.GetUpdateTimeDifference() >= MinUpdateTimeDifference) { TCString CurMsg(GetDynamicStatMsg(INVALID_CONTACT_ID, p->szModuleName)); if ((TCString)g_ProtoStates[p->szModuleName].CurStatusMsg != (const TCHAR*)CurMsg) { // if the message has changed g_ProtoStates[p->szModuleName].CurStatusMsg = CurMsg; CallAllowedPS_SETAWAYMSG(p->szModuleName, Status, (char*)_T2A(CurMsg)); } } } } SleepEx(PARSE_INTERVAL, true); } }
static void CALLBACK TrayToolTipTimerProc(HWND hwnd, UINT, UINT_PTR id, DWORD) { if (!g_trayTooltipActive && !cli.bTrayMenuOnScreen) { POINT pt; GetCursorPos(&pt); if (abs(pt.x - tray_hover_pos.x) <= TOOLTIP_TOLERANCE && abs(pt.y - tray_hover_pos.y) <= TOOLTIP_TOLERANCE) { TCHAR* szTipCur = cli.szTip; { int n = s_LastHoverIconID - 100; if (n >= 0 && n < cli.trayIconCount) szTipCur = cli.trayIcon[n].ptszToolTip; } CLCINFOTIP ti = { sizeof(ti) }; ti.rcItem.left = pt.x - 10; ti.rcItem.right = pt.x + 10; ti.rcItem.top = pt.y - 10; ti.rcItem.bottom = pt.y + 10; ti.isTreeFocused = GetFocus() == cli.hwndContactList ? 1 : 0; if (CallService("mToolTip/ShowTipW", (WPARAM)szTipCur, (LPARAM)&ti) == CALLSERVICE_NOTFOUND) CallService("mToolTip/ShowTip", (WPARAM)(char*)_T2A(szTipCur), (LPARAM)&ti); GetCursorPos(&tray_hover_pos); SetTimer(cli.hwndContactList, TIMERID_TRAYHOVER_2, 600, TrayHideToolTipTimerProc); g_trayTooltipActive = TRUE; } } KillTimer(hwnd, id); }
SmileyLookup::SmileyLookup(const CMString& str, const bool regexs, const int ind, const CMString& smpt) { TCHAR msgtxt[1024]; m_ind = ind; if (regexs) { static const CMString testString(_T("Test String")); m_pattern = _TPattern::compile(str); m_valid = m_pattern != NULL; if (m_valid) { _TMatcher* matcher = m_pattern->createTMatcher(testString); m_valid &= (!matcher->findFirstMatch() || matcher->getStartingIndex() != matcher->getEndingIndex()); if (!m_valid) { static const TCHAR errmsg[] = LPGENT("Regular expression \"%s\" in smiley pack \"%s\" could produce \"empty matches\"."); mir_sntprintf(msgtxt, TranslateTS(errmsg), str.c_str(), smpt.c_str()); } delete matcher; } else { static const TCHAR errmsg[] = LPGENT("Regular expression \"%s\" in smiley pack \"%s\" malformed."); mir_sntprintf(msgtxt, TranslateTS(errmsg), str.c_str(), smpt.c_str()); } if (!m_valid) CallService(MS_NETLIB_LOG, (WPARAM)hNetlibUser, _T2A(msgtxt)); } else { m_text = str; m_pattern = NULL; m_valid = !str.IsEmpty(); } }
void WhatsAppProto::ChatLogMenuHook(WAChatInfo *pInfo, struct GCHOOK *gch) { switch (gch->dwData) { case IDM_INVITE: InviteChatUser(pInfo); break; case IDM_TOPIC: EditChatSubject(pInfo); break; case IDM_CPY_RJID: utils::copyText(pcli->hwndContactList, pInfo->tszJid); break; case IDM_CPY_TOPIC: utils::copyText(pcli->hwndContactList, pInfo->tszNick); break; case IDM_LEAVE: if (isOnline()) m_pConnection->sendJoinLeaveGroup(_T2A(pInfo->tszJid), false); break; case IDM_AVATAR: SetChatAvatar(pInfo); break; } }
void GetSelectedContacts(FacebookProto *proto, MCONTACT hItem, HWND hwndList, std::vector<facebook_user*> *contacts) { if (hItem == NULL) hItem = (MCONTACT)::SendMessage(hwndList, CLM_GETNEXTITEM, CLGN_ROOT, 0); while (hItem) { if (IsHContactGroup(hItem)) { MCONTACT hItemT = (MCONTACT)SendMessage(hwndList, CLM_GETNEXTITEM, CLGN_CHILD, (LPARAM)hItem); if (hItemT) GetSelectedContacts(proto, hItemT, hwndList, contacts); } else { if (SendMessage(hwndList, CLM_GETCHECKMARK, (WPARAM)hItem, 0)) { facebook_user *fu = new facebook_user(); ptrA userId(proto->getStringA(hItem, FACEBOOK_KEY_ID)); if (userId) fu->user_id = userId; ptrT realName(proto->getTStringA(hItem, FACEBOOK_KEY_NICK)); if (realName) fu->real_name = _T2A(realName); contacts->push_back(fu); } } hItem = (MCONTACT)SendMessage(hwndList, CLM_GETNEXTITEM, CLGN_NEXT, (LPARAM)hItem); } }
void* AddTempGroup(HWND hwnd, ClcData *dat, const TCHAR *szName) { int i = 0; int f = 0; DWORD groupFlags; if (wildcmp(_T2A(szName), "-@-HIDDEN-GROUP-@-")) return NULL; for (i = 1;; i++) { TCHAR *szGroupName = pcli->pfnGetGroupName(i, &groupFlags); if (szGroupName == NULL) break; if (!mir_tstrcmpi(szGroupName, szName)) f = 1; } if (f) return NULL; char buf[20]; _itoa_s(i - 1, buf, 10); TCHAR b2[255]; mir_sntprintf(b2, _T("#%s"), szName); b2[0] = 1 | GROUPF_EXPANDED; db_set_ws(NULL, "CListGroups", buf, b2); pcli->pfnGetGroupName(i, &groupFlags); return cli_AddGroup(hwnd, dat, szName, groupFlags, i, 0); }
int CSkypeProto::RecvContacts(MCONTACT hContact, PROTORECVEVENT* pre) { PROTOSEARCHRESULT **isrList = (PROTOSEARCHRESULT**)pre->szMessage; DWORD cbBlob = 0; BYTE *pBlob; BYTE *pCurBlob; int i; int nCount = *((LPARAM*)pre->lParam); char* szMessageId = ((char*)pre->lParam + sizeof(LPARAM)); //if (GetMessageFromDb(hContact, szMessageId, pre->timestamp)) return 0; for (i = 0; i < nCount; i++) cbBlob += int(/*mir_tstrlen(isrList[i]->nick.t)*/0 + 2 + mir_tstrlen(isrList[i]->id.t) + mir_strlen(szMessageId)); pBlob = (PBYTE)mir_calloc(cbBlob); for (i = 0, pCurBlob = pBlob; i < nCount; i++) { //mir_strcpy((char*)pCurBlob, _T2A(isrList[i]->nick.t)); pCurBlob += mir_strlen((PCHAR)pCurBlob) + 1; mir_strcpy((char*)pCurBlob, _T2A(isrList[i]->id.t)); pCurBlob += mir_strlen((char*)pCurBlob) + 1; } //memcpy(pCurBlob + 1, szMessageId, mir_strlen(szMessageId)); AddEventToDb(hContact, EVENTTYPE_CONTACTS, pre->timestamp, (pre->flags & PREF_CREATEREAD) ? DBEF_READ : 0, cbBlob, pBlob); mir_free(pBlob); return 0; }
void CMsnProto::MSN_Kickuser(GCHOOK *gch) { GCThreadData *thread = MSN_GetThreadByChatId(gch->pDest->ptszID); msnNsThread->sendPacketPayload("DEL", "MSGR\\THREAD", "<thread><id>%d:%s</id><members><member><mri>%s</mri></member></members></thread>", thread->netId, thread->szEmail, _T2A(gch->ptszUID)); }
void CMsnProto::MSN_Promoteuser(GCHOOK *gch, const char *pszRole) { GCThreadData *thread = MSN_GetThreadByChatId(gch->pDest->ptszID); msnNsThread->sendPacketPayload("PUT", "MSGR\\THREAD", "<thread><id>%d:%s</id><members><member><mri>%s</mri><role>%s</role></member></members></thread>", thread->netId, thread->szEmail, _T2A(gch->ptszUID), pszRole); }
void CLuaScriptLoader::LoadScripts(const TCHAR *scriptDir, int iGroup) { TCHAR buf[4096]; mir_sntprintf(buf, _T("Loading scripts from %s"), scriptDir); CallService(MS_NETLIB_LOGW, (WPARAM)hNetlib, (LPARAM)buf); RegisterScriptsFolder(ptrA(mir_utf8encodeT(scriptDir))); TCHAR searchMask[MAX_PATH]; mir_sntprintf(searchMask, _T("%s\\%s"), scriptDir, _T("*.lua")); TCHAR fullPath[MAX_PATH], path[MAX_PATH]; WIN32_FIND_DATA fd; HANDLE hFind = FindFirstFile(searchMask, &fd); if (hFind != INVALID_HANDLE_VALUE) { do { if (!(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) { mir_sntprintf(fullPath, _T("%s\\%s"), scriptDir, fd.cFileName); PathToRelativeT(fullPath, path); if (db_get_b(NULL, MODULE, _T2A(fd.cFileName), 1)) LoadScript(fullPath, iGroup); } } while (FindNextFile(hFind, &fd)); FindClose(hFind); } }
//--------------------------------------------------------------------------- int CSendHTTPServer::Send() { if (!m_hContact) return 1; if (CallService(MS_HTTP_ACCEPT_CONNECTIONS, TRUE, 0) != 0) { Error(LPGENT("Could not start the HTTP Server plugin.")); Exit(ACKRESULT_FAILED); return !m_bAsync; } if (!m_pszFileName) { m_pszFileName = GetFileNameA(m_pszFile); } mir_freeAndNil(m_fsi_pszSrvPath); mir_stradd(m_fsi_pszSrvPath, "/"); mir_stradd(m_fsi_pszSrvPath, m_pszFileName); replaceStr(m_fsi_pszRealPath, _T2A(m_pszFile)); memset(&m_fsi, 0, sizeof(m_fsi)); m_fsi.lStructSize = sizeof(STFileShareInfo); m_fsi.pszSrvPath = m_fsi_pszSrvPath; m_fsi.nMaxDownloads = -1; // -1 = infinite m_fsi.pszRealPath = m_fsi_pszRealPath; //start Send thread mir_forkthread(&CSendHTTPServer::SendThreadWrapper, this); return 0; }
MCONTACT TwitterProto::AddToList(int, PROTOSEARCHRESULT *psr) { if (m_iStatus != ID_STATUS_ONLINE) return 0; ForkThread(&TwitterProto::AddToListWorker, mir_utf8encodeT(psr->nick.t)); return AddToClientList(_T2A(psr->nick.t), ""); }
int SaveAvatar(const char *protocol, const wchar_t *tszFileName) { INT_PTR result = CallProtoService(protocol, PS_SETMYAVATAR, 0, (LPARAM)tszFileName); if (result == CALLSERVICE_NOTFOUND) result = CallProtoService(protocol, PS_SETMYAVATAR, 0, _T2A(tszFileName)); return result; }
bool parse_clientlogin_response(NETLIBHTTPREQUEST *nlhr, NETLIBHTTPHEADER *my_headers, CMStringA &token, CMStringA &secret, time_t &hosttime) { //TODO: validate response //TODO: return false on errors //TODO: extract token, secret, hosttime from response int datalen = 0; for (int i = 0; i < nlhr->headersCount; i++) { if (!mir_strcmp(nlhr->headers[i].szName, "Set-Cookie")) { my_headers[0].szName = "Cookie"; my_headers[0].szValue = mir_strdup(nlhr->headers[i].szValue); } } ptrW buf_w(mir_utf8decodeW(nlhr->pData)); HXML root = xmlParseString(buf_w, &datalen, _T("")); if (!root) return false; HXML status = xmlGetChildByPath(root, _T("response/statusCode"), 0); if (!status) return false; LPCTSTR status_text = xmlGetText(status); // TODO: check other than 200 codes and print some debug info on errors if (wcscmp(status_text, L"200")) return false; HXML secret_node = xmlGetChildByPath(root, _T("response/data/sessionSecret"), 0); HXML hosttime_node = xmlGetChildByPath(root, _T("response/data/hostTime"), 0); if (!secret_node || !hosttime_node) return false; HXML token_node = xmlGetChildByPath(root, _T("response/data/token/a"), 0); if (!token_node) return false; LPCTSTR secret_w = xmlGetText(secret_node), token_w = xmlGetText(token_node), hosttime_w = xmlGetText(hosttime_node); if (!secret_w || !token_w || !hosttime_w) return false; secret = _T2A(secret_w); token = _T2A(token_w); hosttime = strtol(_T2A(hosttime_w), NULL, 10); return true; }
void GetMenuItemName(TMO_IntMenuItem *pMenuItem, char* pszDest, size_t cbDestSize) { if (pMenuItem->UniqName) mir_snprintf(pszDest, cbDestSize, "{%s}", pMenuItem->UniqName); else if (pMenuItem->mi.flags & CMIF_UNICODE) mir_snprintf(pszDest, cbDestSize, "{%s}", (char*)_T2A(pMenuItem->mi.name.t)); else mir_snprintf(pszDest, cbDestSize, "{%s}", pMenuItem->mi.name.t); }
bool parse_start_socar_session_response(const char *response, CMStringA &bos_host, unsigned short &bos_port, CMStringA &cookie, CMStringA &tls_cert_name, bool encryption = true) { //TODO: extract bos_host, bos_port, cookie, tls_cert_name int datalen = 0; ptrW buf_w(mir_utf8decodeW(response)); HXML root = xmlParseString(buf_w, &datalen, _T("")); if (!root) return false; HXML status = xmlGetChildByPath(root, _T("response/statusCode"), 0); if (!status) return false; LPCTSTR status_text = xmlGetText(status); //TODO: check other than 200 codes and print some debug info on errors if (wcscmp(status_text, L"200")) return false; HXML host_node = xmlGetChildByPath(root, _T("response/data/host"), 0); HXML port_node = xmlGetChildByPath(root, _T("response/data/port"), 0); HXML cookie_node = xmlGetChildByPath(root, _T("response/data/cookie"), 0); if (!host_node || !port_node || !cookie_node) return false; LPCTSTR host_w = xmlGetText(host_node), port_w = xmlGetText(port_node), cookie_w = xmlGetText(cookie_node); if (!host_w || !port_w || !cookie_w) return false; bos_host = _T2A(host_w); bos_port = atoi(_T2A(port_w)); cookie = _T2A(cookie_w); if (encryption) { HXML tls_node = xmlGetChildByPath(root, _T("response/data/tlsCertName"), 0); //tls is optional, so this is not fatal error if (tls_node) { LPCTSTR certname_w = xmlGetText(tls_node); if (certname_w) tls_cert_name = _T2A(certname_w); } } return true; }
static void SelectAll(HWND hDlg, bool bEnable) { OBJLIST<FILEINFO> &todo = *(OBJLIST<FILEINFO> *)GetWindowLongPtr(hDlg, GWLP_USERDATA); HWND hwndList = GetDlgItem(hDlg, IDC_LIST_UPDATES); for (int i=0; i < todo.getCount(); i++) { ListView_SetCheckState(hwndList, i, bEnable); db_set_b(NULL, DB_MODULE_FILES, StrToLower(_T2A(todo[i].tszOldName)), todo[i].bEnabled = bEnable); } }
static INT_PTR GetProfilePath(WPARAM wParam, LPARAM lParam) { if (!wParam || !lParam) return 1; char *dst = (char*)lParam; strncpy(dst, _T2A(g_profileDir), wParam); dst[wParam-1] = 0; return 0; }
int WhatsAppProto::OnDeleteChat(WPARAM hContact, LPARAM lParam) { if (isChatRoom(hContact) && isOnline()) { ptrT tszID(getTStringA(hContact, WHATSAPP_KEY_ID)); if (tszID) m_pConnection->sendJoinLeaveGroup(_T2A(tszID), false); } return 0; }
static TCHAR *parseMirSrvExists(ARGUMENTSINFO *ai) { if (ai->argc != 2) return NULL; if (!ServiceExists(_T2A(ai->targv[1]))) ai->flags |= AIF_FALSE; return mir_tstrdup(_T("")); }