void UserDetailInfoDialog::_refreshAvatar(IN const std::string& avatarPath) { if (avatarPath.empty()) { return; } UInt32 hashcode = util::hash_BKDR((avatarPath + AVATAR_FORMAT_170X170).c_str()); module::ImImageEntity imageEntity; module::getDatabaseModule()->sqlGetImImageEntityByHashcode(hashcode, imageEntity); CString csLocalPath = module::getMiscModule()->getDownloadDir() + util::stringToCString(imageEntity.filename); if (!imageEntity.filename.empty() && PathFileExists(csLocalPath)) { //本地磁盘存在 if (m_AvatarUI) { m_AvatarUI->SetBkImage(csLocalPath); } } else//不存在则去服务器下载 { std::string path = avatarPath; m_pDownHttpOper = new DownloadAvatarHttpOperation(m_sid, path, FALSE , AVATAR_FORMAT_170X170, BIND_CALLBACK_1(UserDetailInfoDialog::onHttpGetAvatarCallback)); module::getHttpPoolModule()->pushHttpOperation(m_pDownHttpOper); } }
// ----------------------------------------------------------------------------- // private void ReloginManager::doRelogin() { try { if(m_bDoReloginNow) { LOG__(APP,_T("is doing Relogin now...")); return; } //清理掉队列里面 未发送的 消息已读确认 Operation《不处理可能会引发丢消息》 imcore::IMLibCoreClearOperationByName(imcore::OPERATION_NAME_MSG_READ_ACK); LoginParam param; module::TTConfig* pCfg = module::getSysConfigModule()->getSystemConfig(); param.mySelectedStatus = pCfg->myselectStatus; param.csUserName = pCfg->userName; param.password = pCfg->password; param.csUserName.Trim(); LoginOperation* pOperation = new LoginOperation(BIND_CALLBACK_1(ReloginManager::OnOperationCallback), param); imcore::IMLibCoreStartOperation(pOperation); m_bDoReloginNow = TRUE; } catch (...) { module::getTcpClientModule()->shutdown(); startReloginTimer(++m_secondCount); LOG__(ERR, _T("relogin unknown exception")); m_bDoReloginNow = FALSE; } }
void LoginDialog::OnHttpCallbackOperation(std::shared_ptr<void> param) { DoLoginServerParam* pParam = (DoLoginServerParam*)param.get(); if (DOLOGIN_SUCC == pParam->result) { module::TTConfig* pCfg = module::getSysConfigModule()->getSystemConfig(); PTR_VOID(pCfg); LoginParam loginparam; loginparam.csUserName = pCfg->userName; loginparam.password = pCfg->password; loginparam.csUserName.Trim(); LoginOperation* pOperation = new LoginOperation( BIND_CALLBACK_1(LoginDialog::OnOperationCallback), loginparam); imcore::IMLibCoreStartOperation(pOperation); } else { m_ptxtTip->SetText(pParam->resMsg); module::TTConfig* pCfg = module::getSysConfigModule()->getSystemConfig(); LOG__(ERR, _T("get MsgServer config faild,login server addres:%s:%d"), pCfg->loginServIP,pCfg->loginServPort); CString csTxt = util::getMultilingual()->getStringById(_T("STRID_LOGINDIALOG_BTN_LOGIN")); m_pBtnLogin->SetText(csTxt); m_pBtnLogin->SetEnabled(true); } }
void LoginDialog::_DoLogin() { LOG__(APP,_T("User Clicked LoginBtn")); m_ptxtTip->SetText(_T("")); CDuiString userName = m_pedtUserName->GetText(); CDuiString password = m_pedtPassword->GetText(); if (userName.IsEmpty()) { CString csTip = util::getMultilingual()->getStringById(_T("STRID_LOGINDIALOG_USERNAME_EMPTY")); m_ptxtTip->SetText(csTip); return; } if (password.IsEmpty()) { CString csTip = util::getMultilingual()->getStringById(_T("STRID_LOGINDIALOG_PASSWORD_EMPTY")); m_ptxtTip->SetText(csTip); return; } module::TTConfig* pCfg = module::getSysConfigModule()->getSystemConfig(); pCfg->userName = userName; if (m_bPassChanged) { std::string sPass = util::cStringToString(CString(password)); char* pOutData = 0; uint32_t nOutLen = 0; int retCode = EncryptPass(sPass.c_str(), sPass.length(), &pOutData, nOutLen); if (retCode == 0 && nOutLen > 0 && pOutData != 0) { pCfg->password = std::string(pOutData, nOutLen); Free(pOutData); } else { LOG__(ERR, _T("EncryptPass Failed!")); CString csTip = util::getMultilingual()->getStringById(_T("STRID_LOGINDIALOG_LOGIN_ENCRYPT_PASE_FAIL")); m_ptxtTip->SetText(csTip); return; } } pCfg->isRememberPWD = m_pChkRememberPWD->GetCheck(); module::getSysConfigModule()->saveData(); CString csTxt = util::getMultilingual()->getStringById(_T("STRID_LOGINDIALOG_BTN_DOLOGIN")); m_pBtnLogin->SetText(csTxt); m_pBtnLogin->SetEnabled(false); //连接登陆服务器 DoLoginServerParam param; DoLoginServerHttpOperation* pOper = new DoLoginServerHttpOperation( BIND_CALLBACK_1(LoginDialog::OnHttpCallbackOperation), param); module::getHttpPoolModule()->pushHttpOperation(pOper); }
void SessionLayout::_SendSessionMsg(IN MixedMsg mixMsg) { if (mixMsg.IsPureTextMsg()) { MessageEntity msg; std::string msgEncrypt; ENCRYPT_MSG(util::cStringToString(mixMsg.m_strTextData), msgEncrypt); msg.content = msgEncrypt; msg.sessionId = m_sId; msg.talkerSid = module::getSysConfigModule()->userID(); msg.msgRenderType = MESSAGE_RENDERTYPE_TEXT; module::SessionEntity* pSessionInfo = SessionEntityManager::getInstance()->getSessionEntityBySId(m_sId); PTR_VOID(pSessionInfo); msg.msgType = (pSessionInfo->sessionType == module::SESSION_USERTYPE) ? MSG_TYPE_TEXT_P2P : MSG_TYPE_TEXT_GROUP; msg.msgSessionType = pSessionInfo->sessionType; msg.msgTime = module::getSessionModule()->getTime(); SendMsgManage::getInstance()->pushSendingMsg(msg); //更新会话时间 module::SessionEntity* pSessionEntity = SessionEntityManager::getInstance()->getSessionEntityBySId(msg.sessionId); if (pSessionEntity) { pSessionEntity->updatedTime = msg.msgTime; } //主界面 消息内容,时间更新 module::getSessionModule()->asynNotifyObserver(module::KEY_SESSION_TRAY_NEWMSGSEND, msg.sessionId); } else { for (ST_picData& picData : mixMsg.m_picDataVec) { //图片需要上传 SendImgParam param; param.csFilePath = picData.strLocalPicPath; m_pSendImgHttpOper = new SendImgHttpOperation(param , BIND_CALLBACK_1(SessionLayout::OnSendImageCallback)); module::getHttpPoolModule()->pushHttpOperation(m_pSendImgHttpOper, TRUE); } m_SendingMixedMSGList.push_back(mixMsg); } }