BOOL CMMyInfo::UpheadPhoto(const char* filename) { if(!m_pSession) m_pSession = new CMSession(this); if(m_pSession->IsRunning()) return FALSE; CMList<FormData> list; FormData data; if(filename && strlen(filename) > 0) { data.key = CMString("pic"); data.value = CMString(filename); data.dataType = 2; list.push_back(data); } else { return FALSE; } m_pSession->CommandPost(SERVICE_UPHEADPHTHO, "", list, SEQUENCE_NORMAL); return TRUE; }
static void DecodeHTML(CMString& str) { if (str.Find('&') != -1) { str = _TPattern::replace(CMString(_T("<")), str, CMString(_T("<"))); str = _TPattern::replace(CMString(_T(">")), str, CMString(_T(">"))); } }
BOOL CMQuestionUpload::AnswerQuestion(const char* sQuestionID, int nAnonymous, const char* sAnswer,const char* filename) { if(!m_pSession) m_pSession = new CMSession(this); if(m_pSession->IsRunning()) return FALSE; char param[640]; snprintf(param,sizeof(param),"&questionid=%s&anonymous=%d", sQuestionID, nAnonymous); //构造form数据 CMList<FormData>* list= new CMList<FormData>; //加入文本内容 FormData data; if(filename!=NULL&&strlen(filename)!=0) { data.key=CMString("pic"); data.value=CMString(filename); data.dataType=2; list->push_back(data); } data.key=CMString("content"); data.value=CMString(sAnswer); data.dataType=1; list->push_back(data); m_pSession->CommandPost(SERVICE_ANSWERQUESTION, param,*list); SAFEDELETE(list); return TRUE; }
CMString __stdcall GetWord(const TCHAR* text, int index) { if ( text && *text ) { TCHAR* p1 = (TCHAR*)text; TCHAR* p2 = NULL; while (*p1 == ' ') p1++; if (*p1 != '\0') { for (int i =0; i < index; i++) { p2 = _tcschr( p1, ' ' ); if ( !p2 ) p2 = _tcschr( p1, '\0' ); else while ( *p2 == ' ' ) p2++; p1 = p2; } p2 = _tcschr(p1, ' '); if( !p2 ) p2 = _tcschr(p1, '\0'); if (p1 != p2) return CMString( p1, p2-p1 ); } } return CMString(); }
BOOL CMQuestionUpload::AskQuestion(const char* sCategoryID, int nAnonymous, int nValue, const char* sQuestion,const char* filename) { if(!m_pSession) m_pSession = new CMSession(this); if(m_pSession->IsRunning()) return FALSE; char param[640]; //构造url snprintf(param,sizeof(param),"&categoryid=%s&anonymous=%d&value=%d", sCategoryID, nAnonymous, nValue); //构造form数据 CMList<FormData>* list= new CMList<FormData>; //加入文件 FormData data; if(filename!=NULL&&strlen(filename)!=0) { data.key=CMString("pic"); data.value=CMString(filename); data.dataType=2; list->push_back(data); } //加入文本内容 data.key=CMString("content"); data.value=sQuestion; data.dataType=1; list->push_back(data); m_pSession->CommandPost(SERVICE_NEWQUESTION, param,*list); SAFEDELETE(list); return TRUE; }
void CMSession::CommandPost(UINT32 nCmdID, const CHAR* sParams, const CHAR* pData, INT32 nLen) { if (CMGlobal::TheOne().IsOffline()) { if(m_pNotify) m_pNotify->OnSessionCmd(nCmdID, MERN_OFFLINE, NULL); return; } m_bRun = TRUE; if (m_nCurCmd != 0) { m_bRun = FALSE; if(m_pNotify) m_pNotify->OnSessionCmd(nCmdID, MERE_NOT_ENOUGH_RESOURCE, NULL); return; } m_nCurCmd = nCmdID; m_sParams = sParams; m_bPost = TRUE; m_req.Clean(); m_req.SetType(CMHTTPReqHeader::POST); m_req.CreateDefault(); m_req.AddValue(HH_ATYPE, CMString(L"text/html,application/xml")); m_req.AddValue(HH_CTYPE,CMString(L"multipart/form-data")); m_req.AddValue(HH_ACHARSET, CMString(L"utf-8")); m_req.SetPostData(pData, nLen); Command(); }
void CVkProto::RetrieveUsersInfo(bool flag) { debugLogA("CVkProto::RetrieveUsersInfo"); if (!IsOnline()) return; CMString userIDs, code; for (MCONTACT hContact = db_find_first(m_szModuleName); hContact; hContact = db_find_next(hContact, m_szModuleName)) { LONG userID = getDword(hContact, "ID", -1); if (userID == -1 || userID == VK_FEED_USER) continue; if (!userIDs.IsEmpty()) userIDs.AppendChar(','); userIDs.AppendFormat(_T("%i"), userID); } CMString codeformat("var userIDs=\"%s\";"); if (m_bNeedSendOnline) codeformat += _T("API.account.setOnline();"); if (flag) codeformat += CMString("var US=API.users.get({\"user_ids\":userIDs,\"fields\":\"%s\",\"name_case\":\"nom\"});" "var res=[];var index=US.length;while(index >0){index=index-1;if(US[index].online==1){res.unshift(US[index]);};};" "return{\"freeoffline\":1,\"users\":res,\"requests\":API.friends.getRequests({\"extended\":0,\"need_mutual\":0,\"out\":0})};"); else codeformat += CMString("var res=API.users.get({\"user_ids\":userIDs,\"fields\":\"%s\",\"name_case\":\"nom\"});" "return{\"freeoffline\":0,\"users\":res};"); code.AppendFormat(codeformat, userIDs, CMString(flag ? "online,status" : fieldsName)); Push(new AsyncHttpRequest(this, REQUEST_POST, "/method/execute.json", true, &CVkProto::OnReceiveUserInfo) << TCHAR_PARAM("code", code) << VER_API); }
void CMPlayerUtility::OpenUrl(CMString sUrl, const UINT32 nMode/* = EMode_3mv*/, const char* coursewareID ) { string path = CMCourseDownload::GetInstance()->GetLocalFilePath(coursewareID); //先检查本地文件在不在 if(path.size() !=0 && CMFile::FileExist(CMString(path.c_str()))) { OpenFile(CMString(path.c_str()), nMode); return; } CMPath tmpPath(CMPath::DOWNLOAD_PATH); CMString sOrgUrl; INT32 pos = sUrl.ReverseFind(L"?sid="); if(pos < 0) pos = sUrl.ReverseFind(L"&sid="); if(pos > 0) sOrgUrl = sUrl.Left(pos); else sOrgUrl = sUrl; CMString filename = tmpPath.String()+CMFile::GetTempFileName(sOrgUrl, ""); if(CMFile::FileExist(filename)) { OpenFile(filename, nMode); return; } //本地无此文件,去数据库读取 if(m_nState == EReady) { m_bDataCompleted = FALSE; SAFEDELETE(m_pMediaData); m_bOnlyAudio = nMode != EMode_3mv; if(nMode == EMode_3mv || nMode == EMode_3ma) m_pMediaData = new CMNetDataSource; else if(nMode == EMode_aac) m_pMediaData = new CMAACDataSource; else return; BOOL ret = FALSE; // sUrl = CMString("http://42.96.138.63/Upload/Files/root/CourseWareFile/201401/201401101233202695248e5b93f75f4685af/201401161429192546803cd48b08aa3daf7f_(960x640).3mv"); printf("surl:%s \n",(const CHAR*)sUrl); if(m_pMediaData && m_pMediaData->Init(this, m_pStreamBuffer)) ret = m_pMediaData->Open(sUrl, NET_VOD); if(ret) { m_pMediaData->Start(); m_PlayerObserver.StateChange(m_UserData, EOpening, m_nState); m_nState = EOpening; } else SAFEDELETE(m_pMediaData); } }
CMString CSkypeProto::ChangeTopicForm() { CMString caption(FORMAT, _T("[%s] %s"), _A2T(m_szModuleName), TranslateT("Enter new chatroom topic")); ENTER_STRING pForm = { sizeof(pForm) }; pForm.type = ESF_MULTILINE; pForm.caption = caption; pForm.ptszInitVal = NULL; pForm.szModuleName = m_szModuleName; return (!EnterString(&pForm)) ? CMString() : CMString(ptrT(pForm.ptszResult)); }
void CMVArray::read_body(wistream& s) { CMString str,token,token2; int nr=0,nc=0; token=GetAssociation(L"rows"); nr = _wtoi(token.c_str()); token=GetAssociation(L"columns"); nc = _wtoi(token.c_str()); SetSize(nr,nc); nr=0; while(!s.eof()) { str.read_line(s); str=stripends(str); if (str.is_null() || str[0] == L'*') continue; if (str(0,wcslen(vardef_end)) == vardef_end) break; wchar_t* ptr = (wchar_t*)str.c_str(); nc = 0; while (1) { while (*ptr <= L' ' && *ptr != 0) ptr++; if (*ptr == 0) break; int j=0; wchar_t* ptr2 = ptr; if (*ptr == L'{') { int bracketindex = 1; ptr++; ptr2++; for (;*ptr2!=0 && bracketindex;j++,ptr2++) { if (*ptr2==L'{') bracketindex++; else if (*ptr2==L'}') bracketindex--; } token = (CMString((const wchar_t*)ptr))(0, j - 1); } else { while (*ptr2 > L' ') { ptr2++; j++; } token = (CMString((const wchar_t*)ptr))(0, j); } ptr += j; Set(nr,nc++,token); } nr++; } if (nc != _ncols) ReportError(XIncorrectNumColumns); if (nr != _nrows) ReportError(XIncorrectNumRows); }
void CIrcProto::AddToJTemp(TCHAR op, CMString& sCommand) { CMString res; int pos = 0; for ( ;; ) { CMString tmp = sCommand.Tokenize( _T(","), pos ); if ( pos == -1 ) break; tmp = op + tmp; if ( res.IsEmpty() ) res = tmp; else res += _T(" ") + tmp; } DBVARIANT dbv; if ( !getTString( "JTemp", &dbv )) { res = CMString(dbv.ptszVal) + _T(" ") + res; DBFreeVariant( &dbv ); } setTString("JTemp", res.c_str()); }
static void sttPreviewSkin(MODERNOPTOBJECT *obj, TCHAR *fn, LPDRAWITEMSTRUCT lps) { if (!fn) return; if (ProtoServiceExists(obj->lpzThemeModuleName, TS_SKIN_PREVIEW)) { CallProtoService(obj->lpzThemeModuleName, TS_SKIN_PREVIEW, (WPARAM)lps, (LPARAM)fn); return; } HBITMAP hbmPreview = Bitmap_Load(CMString(fn) + _T(".png")); if (!hbmPreview) return; BITMAP bmp; GetObject(hbmPreview, sizeof(bmp), &bmp); SIZE szDst = { abs(bmp.bmWidth), abs(bmp.bmHeight) }; if ((szDst.cx > lps->rcItem.right - lps->rcItem.left) || (szDst.cy > lps->rcItem.bottom - lps->rcItem.top)) { float q = min( float(lps->rcItem.right - lps->rcItem.left) / szDst.cx, float(lps->rcItem.bottom - lps->rcItem.top) / szDst.cy); szDst.cx *= q; szDst.cy *= q; } POINT ptDst = { (lps->rcItem.left + lps->rcItem.right - szDst.cx) / 2, (lps->rcItem.top + lps->rcItem.bottom - szDst.cy) / 2 }; HDC hdc = CreateCompatibleDC(lps->hDC); SelectObject(hdc, hbmPreview); SetStretchBltMode(hdc, HALFTONE); StretchBlt(lps->hDC, ptDst.x, ptDst.y, szDst.cx, szDst.cy, hdc, 0, 0, abs(bmp.bmWidth), abs(bmp.bmHeight), SRCCOPY); DeleteDC(hdc); DeleteObject(hbmPreview); }
void CMNode::set_association(CMVariableOrConstant& vc, const wchar_t* varstr) { if (vmain && varstr) vc.Set(vmain->GetAssociation(CMString(varstr))); else vc.Set(0); }
CMString CIrcProto::PeekAtReasons( int type ) { switch ( type ) { case 1: if (!vUserhostReasons.getCount()) return CMString(); return vUserhostReasons[0]; case 2: if (!vWhoInProgress.getCount()) return CMString(); return vWhoInProgress[0]; } return CMString(); }
void CVkProto::AppendChatMessage(int id, JSONNODE *pMsg, bool bIsHistory) { CVkChatInfo *cc = AppendChat(id, NULL); if (cc == NULL) return; int mid = json_as_int(json_get(pMsg, "mid")); int isOut = json_as_int(json_get(pMsg, "out")); int uid = json_as_int(json_get(pMsg, "uid")); int msgTime = json_as_int(json_get(pMsg, "date")); time_t now = time(NULL); if (!msgTime || msgTime > now) msgTime = now; ptrT tszBody(json_as_string(json_get(pMsg, "body"))); JSONNODE *pAttachments = json_get(pMsg, "attachments"); if (pAttachments != NULL) tszBody = mir_tstrdup(CMString(tszBody) + GetAttachmentDescr(pAttachments)); if (cc->m_bHistoryRead) AppendChatMessage(cc, mid, uid, msgTime, tszBody, bIsHistory); else { CVkChatMessage *cm = cc->m_msgs.find((CVkChatMessage *)&mid); if (cm == NULL) cc->m_msgs.insert(cm = new CVkChatMessage(mid)); cm->m_uid = uid; cm->m_date = msgTime; cm->m_tszBody = tszBody.detouch(); cm->m_bHistory = bIsHistory; } }
CMString WCPattern::classCreateRange(wchar_t low, wchar_t hi) const { wchar_t out[300]; int ind = 0; while (low != hi) out[ind++] = low++; out[ind++] = low; return CMString(out, ind); }
void CMSession::LogIn(int nLoginType) { const CHAR* pEid = CMGlobal::TheOne().Encode(sCustomer); const CHAR* pName = CMGlobal::TheOne().Encode(sUsername); const CHAR* pPass = NULL; // sPassword[99]='\0'; // memset(sPassword, 0, 100); //当美信跳转 =2 pwd无需加密 if(nLoginType == 1) { char* buf = DesEncrypt::doEncrypt(sPassword, kDesSecret); strcpy(sPassword, buf); SAFEDELETE(buf); } pPass = CMGlobal::TheOne().Encode(sPassword); const CHAR* pUid = CMGlobal::TheOne().Encode(sUserid); CMSystemInfo& sysinfo = CMGlobal::TheOne().SystemInfo(); char sUrl[1024] = {0}; snprintf(sUrl,sizeof(sUrl),"%s?no=%d&os=%d&ver=%d&wh=%dX%d&eid=%s&logintype=%d&loginname=%s&pwd=%s&userid=%s&lang=%s&accept=%s",(const char*)SETTING.GetCenterServerUrl() , SERVICE_LOGIN, CMVersion::SystemVersion().Platform, MLPAYER_VER, sysinfo.ScreenWidth, sysinfo.ScreenHeight, pEid, nLoginType, pName, pPass,pUid,sysinfo.CurrLang, sysinfo.AcceptType); SAFEDELETE(pEid); SAFEDELETE(pName); SAFEDELETE(pPass); SAFEDELETE(pUid); m_req.Clean(); m_req.SetType(CMHTTPReqHeader::GET); m_req.CreateDefault(); m_req.AddValue(HH_ATYPE, CMString(L"text/html,application/xml")); m_req.AddValue(HH_ACHARSET, CMString(L"utf-8")); m_req.SetUrl(sUrl); m_pHttp->Request(m_req); }
void CVkProto::RetrieveUserInfo(LONG userID) { debugLogA("CVkProto::RetrieveUserInfo (%d)", userID); if (userID == VK_FEED_USER || !IsOnline()) return; CMString code(FORMAT, _T("var userIDs=\"%i\";var res=API.users.get({\"user_ids\":userIDs,\"fields\":\"%s\",\"name_case\":\"nom\"});return{\"freeoffline\":0,\"norepeat\":1,\"usercount\":res.length,\"users\":res};"), userID, CMString(fieldsName)); Push(new AsyncHttpRequest(this, REQUEST_POST, "/method/execute.json", true, &CVkProto::OnReceiveUserInfo) << TCHAR_PARAM("code", code) << VER_API); }
//Post form数据的命令 void CMSession::CommandPost(UINT32 nCmdID,const CHAR* sParams, CMList<FormData> lstForm, const CHAR* sSequence) { if (CMGlobal::TheOne().IsOffline()) { if(m_pNotify) m_pNotify->OnSessionCmd(nCmdID, MERN_OFFLINE, NULL); return; } m_bRun = TRUE; if (m_nCurCmd != 0) { m_bRun = FALSE; if(m_pNotify) m_pNotify->OnSessionCmd(nCmdID, MERE_NOT_ENOUGH_RESOURCE, NULL); return; } m_nCurCmd = nCmdID; m_sParams = sParams; m_bPost = TRUE; m_req.Clean(); m_req.SetType(CMHTTPReqHeader::POST); m_req.CreateDefault(); m_req.AddValue(HH_ATYPE, CMString(L"text/html,application/xml")); m_req.AddValue(HH_ACHARSET, CMString(L"utf-8")); m_req.SetFormPostData(lstForm); if (strlen(sSequence) > 0) { m_sSequence = sSequence; CMSessionSequence::GetInstance()->Append(this); } else Command(); }
BOOL CMQuestionUpload::UpheadPhtho(const char* filename) { if(!m_pSession) m_pSession = new CMSession(this); if(m_pSession->IsRunning()) return FALSE; //构造form数据 CMList<FormData>* list= new CMList<FormData>; //加入filename FormData data; if(filename!=NULL&&strlen(filename)!=0) { data.key=CMString("pic"); data.value=CMString(filename); data.dataType=2; list->push_back(data); } m_pSession->CommandPost(SERVICE_UPHEADPHTHO,"",*list); SAFEDELETE(list); return TRUE; }
CMString CIrcProto::GetNextUserhostReason(int type) { CMString reason = _T(""); switch( type ) { case 1: if ( !vUserhostReasons.getCount()) return CMString(); // Get reason reason = vUserhostReasons[0]; vUserhostReasons.remove( 0 ); break; case 2: if ( !vWhoInProgress.getCount()) return CMString(); // Get reason reason = vWhoInProgress[0]; vWhoInProgress.remove( 0 ); break; } return reason; }
CMString CMSaveSimulationAscii::get_aggregation_string() { wchar_t buffer[128]; wchar_t tmbuffer[32]; int oldformat = CMTime::SetOutputFormat(simincunits); outbeg.GetString(tmbuffer, 32); if (state & rCalendarAggregation) swprintf_s(buffer, 128, L"%s beginning %s",CMTime::TimeUnitToString(outincunits).c_str(),tmbuffer); else if (outincsteps > 1) swprintf_s(buffer, 128, L"%d %ss beginning %s",outincsteps,CMTime::TimeUnitToString(simincunits).c_str(),tmbuffer); else swprintf_s(buffer, 128, L"T = %s",tmbuffer); CMTime::SetOutputFormat(oldformat); return CMString(buffer); }
virtual void OnInitDialog() { int numSlots = GetNumberOfSlots(); if (numSlots < (int)registeredExtraIcons.getCount()) { HWND label = GetDlgItem(m_hwnd, IDC_MAX_ICONS_L); SetWindowText(label, CMString(FORMAT, TranslateT("*only the first %d icons will be shown"), numSlots)); ShowWindow(label, SW_SHOW); } int cx = g_iIconSX; HIMAGELIST hImageList = ImageList_Create(cx, cx, ILC_COLOR32 | ILC_MASK, 2, 2); HICON hBlankIcon = (HICON)LoadImage(g_hInst, MAKEINTRESOURCE(IDI_BLANK), IMAGE_ICON, cx, cx, 0); ImageList_AddIcon(hImageList, hBlankIcon); for (int i = 0; i < registeredExtraIcons.getCount(); i++) { ExtraIcon *extra = registeredExtraIcons[i]; HICON hIcon = IcoLib_GetIcon(extra->getDescIcon()); if (hIcon == NULL) ImageList_AddIcon(hImageList, hBlankIcon); else { ImageList_AddIcon(hImageList, hIcon); IcoLib_ReleaseIcon(hIcon); } } m_tree.SetImageList(hImageList, TVSIL_NORMAL); DestroyIcon(hBlankIcon); for (int k = 0; k < extraIconsBySlot.getCount(); k++) { ExtraIcon *extra = extraIconsBySlot[k]; if (extra->getType() == EXTRAICON_TYPE_GROUP) { ExtraIconGroup *group = (ExtraIconGroup *)extra; intlist ids; for (int j = 0; j < group->m_items.getCount(); j++) ids.add(group->m_items[j]->getID()); Tree_AddExtraIconGroup(ids, extra->isEnabled()); } else Tree_AddExtraIcon((BaseExtraIcon *)extra, extra->isEnabled()); } TVSORTCB sort = { 0 }; sort.hParent = NULL; sort.lParam = 0; sort.lpfnCompare = CompareFunc; m_tree.SortChildrenCB(&sort, 0); }
void CMNode::ResetAggregateVariables(bool bCreateNew) { aggregates.Reset(1); if (!bCreateNew) return; naggregates = CMVariableTypes::AggNamesCount(); nregions = CMRegions::RegionCount(); const wchar_t* name; for (unsigned short i=0;(name=CMVariableTypes::AggStringFromInt(i))!=0;i++) { aggregates.AddAt(i,CMVariable::Find(name)); for (unsigned short j=0;j<nregions;j++) aggregates.AddAt((j+1)*naggregates+i,CMVariable::Find(CMString(name) + L"." + CMRegions::GetRegionName(j))); } }
static TCHAR *parseGetParent(ARGUMENTSINFO *ai) { if (ai->argc != 2) return NULL; MCONTACT hContact = NULL; CONTACTSINFO ci = { sizeof(ci) }; ci.tszContact = ai->targv[1]; ci.flags = 0xFFFFFFFF ^ (CI_TCHAR == 0 ? CI_UNICODE : 0); int count = getContactFromString(&ci); if (count == 1 && ci.hContacts != NULL) { hContact = ci.hContacts[0]; mir_free(ci.hContacts); } else { mir_free(ci.hContacts); return NULL; } hContact = db_mc_getMeta(hContact); if (hContact == NULL) return NULL; ptrT szUniqueID; char* szProto = GetContactProto(hContact); if (szProto != NULL) szUniqueID = getContactInfoT(CNF_UNIQUEID, hContact); if (szUniqueID == NULL) { szProto = PROTOID_HANDLE; TCHAR tszID[40]; mir_sntprintf(tszID, SIZEOF(tszID), _T("%p"), hContact); szUniqueID = mir_tstrdup(tszID); } if (szUniqueID == NULL) return NULL; return mir_tstrdup(CMString(FORMAT, _T("<%S:%s>"), szProto, szUniqueID)); }
static TCHAR* parseSpecialContact(ARGUMENTSINFO *ai) { if (ai->argc != 1 || ai->fi->hContact == NULL) return NULL; ai->flags |= AIF_DONTPARSE; ptrT szUniqueID; char *szProto = GetContactProto(ai->fi->hContact); if (szProto != NULL) szUniqueID = getContactInfoT(CNF_UNIQUEID, ai->fi->hContact); if (szUniqueID == NULL) { szProto = PROTOID_HANDLE; szUniqueID = (TCHAR*)mir_alloc(40); if (szUniqueID == NULL) return NULL; mir_sntprintf(szUniqueID, 20, _T("%p"), ai->fi->hContact); } if (szUniqueID == NULL) return NULL; return CMString(FORMAT, _T("<%S:%s>"), szProto, szUniqueID).Detach(); }
int CMPolynomial::translate_next_token(wchar_t*& ptr, int& tok, CMString& str, int& n, CMVSmallArray<CMString>& args) { int i; int err=-1; str.resize(0); args.Reset(0); if (!skipwhite(ptr)) { tok = NoToken; return -1; } if (isnumber(*ptr)) { while (isnumber(*ptr)) str.append(*ptr++); tok = Constant; return -1; } // check to see if item is #IF if (!_wcsnicmp(ptr,L"@IF",3)) { n=1; args.AddAt(0,CMString()); tok = If; ptr += 3; skipwhite(ptr); int symb = *ptr++; if (!(symb==L'(' || symb==L'{')) return XMissingLPar; if (get_to_stop_symbol(L")}",ptr,args[0])>=0) return XIllegalCondition; skipwhite(ptr); if (!_wcsnicmp(ptr, L"@THEN", 5)) { ptr+=5; skipwhite(ptr); } symb = *ptr++; args.AddAt(1,CMString()); n=2; if (!(symb==L'(' || symb==L'{')) return XIllegalCondition; if (get_to_stop_symbol(L"})",ptr,args[1])>=0) return XIllegalCondition; skipwhite(ptr); if (!_wcsnicmp(ptr, L"@ELSE", 5)) { n=3; args.AddAt(2,CMString()); ptr+=5; skipwhite(ptr); symb = *ptr++; if (!(symb==L'(' || symb==L'{')) return XIllegalCondition; if (get_to_stop_symbol(L"})",ptr,args[2])>=0) return XIllegalCondition; } return -1; } // check to see if item is a bad operation for (i = 0; badops[i] != NULL; i++) { if (!wcsncmp(ptr, badops[i], wcslen(badops[i]))) return XUnrecognizedOperator; } // check to see if item is an operation for (i=0;ops[i]!=NULL;i++) { if (!wcsncmp(ptr, ops[i], wcslen(ops[i]))) { tok = FirstOp+i; if ((tok==LPar) || (tok==LBracket)) index++; else if ((tok==RPar) || (tok==RBracket)) index--; ptr += wcslen(ops[i]); return -1; } } // not a number or operation, so must be a special function,function or variable // first check to see if first symbol is allowed if (!(iswalpha(*ptr) || *ptr == L'_')) return XUndefinedSymbol; // check to see if this is a definition /* Definitions are now incorporated into variables const wchar_t* defname; sdebug << ptr << ENDL; for (i=0;(defname=CMDefinitions::GetDefinitionName(i))!=0;i++) { len = wcslen(defname); sdebug << L" " << defname << L" " << len << ENDL; if (_wcsnicmp(defname, ptr, len)==0) { sdebug << L"FOUND " << defname << ENDL; // if it is in the list of definitions and the next symbol is not // a letter or '_' (implying a variable name that happens to begin // with the same letters as a special symbol), then add the 'special' // token to the CMString. if (!(iswalnum(*(ptr+len))) && *(ptr+len) != L'_') { tok = Definition; n = i; ptr += len; return -1; } break; } } */ // check to see if item is a special function for (i=0;special_funcs[i]!=NULL;i++) { if (!wcsncmp(ptr, special_funcs[i], wcslen(special_funcs[i]))) { tok = FirstSpecialFunc+i; ptr += wcslen(special_funcs[i]); skipwhite(ptr); if (*ptr++ != L'(') return XMissingArgument; CMString arglist; if (get_to_stop_symbol(L")",ptr,arglist)>=0) return XBadArgumentList; arglist += L','; wchar_t* argptr = (wchar_t*)arglist.c_str(); for (n=0;*argptr && err<0;n++) { args.AddAt(n,CMString()); if (get_to_stop_symbol(L",:",argptr,args[n])>=0) err = XBadArgumentList; } return err; } } // check to see if it is a function const wchar_t* func; if ((func=CMFunction::FindFunction(ptr))!=0) { tok = Function; str = func; ptr += wcslen(func); skipwhite(ptr); if (*ptr++ != L'(') return XMissingArgument; CMString arglist; if (get_to_stop_symbol(L")",ptr,arglist)>=0) return XBadArgumentList; arglist += L','; wchar_t* argptr = (wchar_t*)arglist.c_str(); for (n=0;*argptr && err<0;n++) { args.AddAt(n,CMString()); if (get_to_stop_symbol(L",:",argptr,args[n])>=0) err = XBadArgumentList; } return err; } // Not a number, operation, or pre-defined function // so must be a variable while (iswalnum(*ptr) || (*ptr == L'_') || (*ptr == L'@') || (*ptr == L'.') ) str.append(*ptr++); CMString indexstr; n = 0; tok = Variable; while (skipwhite(ptr) && err<0) { if (*ptr == L'~') { tok = VariableOrig; ptr++; } if (*ptr == L'[') { args.AddAt(n,CMString()); if (n < 4) err = get_to_stop_symbol(L"]",++ptr,args[n++]); else err = XTooManyIndexes; } else break; } return err; }
CMString CIrcProto::MakeWndID(const TCHAR* sWindow) { TCHAR buf[200]; mir_sntprintf( buf, SIZEOF(buf), _T("%s - %s"), sWindow, (IsConnected()) ? m_info.sNetwork.c_str() : TranslateT("Offline")); return CMString(buf); }
void CVkProto::OnReceiveChatInfo(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pReq) { debugLogA("CVkProto::OnReceiveChatInfo %d", reply->resultCode); if (reply->resultCode != 200) return; JSONROOT pRoot; JSONNODE *pResponse = CheckJsonResponse(pReq, reply, pRoot); if (pResponse == NULL) return; CVkChatInfo *cc = (CVkChatInfo*)pReq->pUserInfo; if (m_chats.indexOf(cc) == -1) return; JSONNODE *info = json_get(pResponse, "info"); if (info != NULL) { ptrT tszTitle(json_as_string(json_get(info, "title"))); if (lstrcmp(tszTitle, cc->m_tszTopic)) { cc->m_tszTopic = mir_tstrdup(tszTitle); setTString(cc->m_hContact, "Nick", tszTitle); GCDEST gcd = { m_szModuleName, cc->m_tszId, GC_EVENT_CHANGESESSIONAME }; GCEVENT gce = { sizeof(GCEVENT), &gcd }; gce.ptszText = tszTitle; CallServiceSync(MS_GC_EVENT, 0, (LPARAM)&gce); } cc->m_admin_id = json_as_int(json_get(info, "admin_id")); } JSONNODE *users = json_as_array(json_get(pResponse, "users")); if (users != NULL) { for (int i = 0; i < cc->m_users.getCount(); i++) cc->m_users[i].m_bDel = true; for (int i = 0;; i++) { JSONNODE *pUser = json_at(users, i); if (pUser == NULL) break; int uid = json_as_int(json_get(pUser, "uid")); TCHAR tszId[20]; _itot(uid, tszId, 10); bool bNew; CVkChatUser *cu = cc->m_users.find((CVkChatUser*)&uid); if (cu == NULL) { cc->m_users.insert(cu = new CVkChatUser(uid)); bNew = true; } else bNew = cu->m_bUnknown; cu->m_bDel = false; ptrT fName(json_as_string(json_get(pUser, "first_name"))); ptrT lName(json_as_string(json_get(pUser, "last_name"))); CMString tszNick = CMString(fName).Trim() + _T(" ") + CMString(lName).Trim(); cu->m_tszNick = mir_tstrdup(tszNick); cu->m_bUnknown = false; if (bNew) { GCDEST gcd = { m_szModuleName, cc->m_tszId, GC_EVENT_JOIN }; GCEVENT gce = { sizeof(GCEVENT), &gcd }; gce.bIsMe = uid == m_myUserId; gce.ptszUID = tszId; gce.ptszNick = tszNick; gce.ptszStatus = TranslateTS(sttStatuses[uid == cc->m_admin_id]); gce.dwItemData = (INT_PTR)cu; CallServiceSync(MS_GC_EVENT, 0, (LPARAM)&gce); } } for (int i = cc->m_users.getCount() - 1; i >= 0; i--) { CVkChatUser &cu = cc->m_users[i]; if (!cu.m_bDel) continue; TCHAR tszId[20]; _itot(cu.m_uid, tszId, 10); GCDEST gcd = { m_szModuleName, cc->m_tszId, GC_EVENT_PART }; GCEVENT gce = { sizeof(GCEVENT), &gcd }; gce.ptszUID = tszId; CallServiceSync(MS_GC_EVENT, 0, (LPARAM)&gce); cc->m_users.remove(i); } } JSONNODE *msgs = json_as_array(json_get(pResponse, "msgs")); if (msgs != NULL) { for (int i = 1;; i++) { JSONNODE *pMsg = json_at(msgs, i); if (pMsg == NULL) break; AppendChatMessage(cc->m_chatid, pMsg, true); } cc->m_bHistoryRead = true; } for (int j = 0; j < cc->m_msgs.getCount(); j++) { CVkChatMessage &p = cc->m_msgs[j]; AppendChatMessage(cc, p.m_mid, p.m_uid, p.m_date, p.m_tszBody, p.m_bHistory); } cc->m_msgs.destroy(); }
void OnInitDialog() { char szUin[10]; Window_SetSkinIcon_IcoLib(m_hwnd, SKINICON_OTHER_ADDCONTACT); if (m_acs.handleType == HANDLE_EVENT) { DWORD dwUin; DBEVENTINFO dbei = { sizeof(dbei) }; dbei.cbBlob = sizeof(DWORD); dbei.pBlob = (PBYTE)&dwUin; db_event_get(m_acs.hDbEvent, &dbei); _ltoa(dwUin, szUin, 10); m_acs.szProto = dbei.szModule; } MCONTACT hContact; TCHAR *szName = NULL, *tmpStr = NULL; if (m_acs.handleType == HANDLE_CONTACT) szName = cli.pfnGetContactDisplayName(hContact = m_acs.hContact, 0); else { int isSet = 0; hContact = 0; if (m_acs.handleType == HANDLE_EVENT) { DBEVENTINFO dbei = { sizeof(dbei) }; dbei.cbBlob = db_event_getBlobSize(m_acs.hDbEvent); dbei.pBlob = (PBYTE)mir_alloc(dbei.cbBlob); db_event_get(m_acs.hDbEvent, &dbei); hContact = *(MCONTACT*)(dbei.pBlob + sizeof(DWORD)); mir_free(dbei.pBlob); if (hContact != INVALID_CONTACT_ID) { szName = cli.pfnGetContactDisplayName(hContact, 0); isSet = 1; } } if (!isSet) { if (m_acs.handleType == HANDLE_EVENT) szName = mir_a2t(szUin); else { szName = sttDecodeString(m_acs.psr->flags, m_acs.psr->id); if (!szName) szName = sttDecodeString(m_acs.psr->flags, m_acs.psr->nick); } } } if (szName && szName[0]) SetCaption(CMString(FORMAT, TranslateT("Add %s"), szName)); else SetCaption(TranslateT("Add contact")); mir_free(tmpStr); if (m_acs.handleType == HANDLE_CONTACT && m_acs.hContact) if (m_acs.szProto == NULL || (m_acs.szProto != NULL && *m_acs.szProto == 0)) m_acs.szProto = GetContactProto(m_acs.hContact); int groupSel = 0; ptrT tszGroup(db_get_tsa(hContact, "CList", "Group")); TCHAR *grpName; for (int groupId = 1; (grpName = Clist_GroupGetName(groupId, NULL)) != NULL; groupId++) { int id = m_group.AddString(grpName, groupId); if (!mir_tstrcmpi(tszGroup, grpName)) groupSel = id; } m_group.InsertString(TranslateT("None"), 0); m_group.SetCurSel(groupSel); // By default check both checkboxes m_chkAdded.SetState(true); m_chkAuth.SetState(true); // Set last choice if (db_get_b(NULL, "Miranda", "AuthOpenWindow", 1)) m_chkOpen.SetState(true); DWORD flags = (m_acs.szProto) ? CallProtoServiceInt(NULL, m_acs.szProto, PS_GETCAPS, PFLAGNUM_4, 0) : 0; if (flags & PF4_FORCEADDED) // force you were added requests for this protocol m_chkAdded.Enable(false); if (flags & PF4_FORCEAUTH) // force auth requests for this protocol m_chkAuth.Enable(false); if (flags & PF4_NOCUSTOMAUTH) m_authReq.Enable(false); else { m_authReq.Enable(m_chkAuth.Enabled()); m_authReq.SetText(TranslateT("Please authorize my request and add me to your contact list.")); } }