// MBAMWnd.cpp : implementation file // #include "stdafx.h" #include "mbamui.h" #include "MBAMWnd.h" #include "MBAMUIBaseFun.h" #include "SChatEditLog.h" #include "MBCreateCrowdWnd.h" #include "extend.ctrls/imre/ImgProvider.h" #include "MBGungHoMsgWnd.h" #include "MBNewGroupWnd.h" #include "MBInputWnd.h" #include "MBMeetNoticeMsgWnd.h" #include "MBRemindMsgWnd.h" #define TIME_LOGINSTATUS ( 20 * 1000) // 20 s #define TIME_LOGINED_INITDATA ( 20) // 0.2 s #define TIME_SAVEMAGOPENDATE ( 10 * 1000) #define TIME_AMRECONNECT 5 * 1000 #define TIME_AMRECONNECT2 2 * 1000 #define TIME_AMGETUNREADMSG 30 * 60 * 1000 #define TIME_AMFAILEDGETUNREADMSG 8 * 60 * 1000 #define TIME_FIRSTGETUNREADMSGSEC 30* 1000 #define TIME_AMCHECKREADMSG 30* 1000 #define TIME_AMLOADUNREADMSG 5* 1000 #define TIME_DEAL_ADDINMSG 12 * 1000 // CMBAMWnd unsigned int __stdcall ThreadFunctionUpdateUserInfo(void *pV) { int nRetValue = 0; CMBAMWnd *pItem = NULL; pItem = (CMBAMWnd *)pV; if ( pItem ) { try { while(1) { if ( !pItem->UpdateUserItems()) { break; } else Sleep(10 * 1000); } } catch(...) { } } _endthreadex( 0 ); return nRetValue; } CMBAMWnd::CMBAMWnd():m_hWnd(NULL) { m_pPageRoot = NULL; m_pHostWnd = NULL; m_pServerMgr = NULL; m_pThreadDownloadDB = NULL; m_pTransSvrMgr = NULL; m_pTransMgr = NULL; m_bLayoutInited = false; m_bCanUserPic = TRUE; m_mapUpdateUserItem.RemoveAll(); m_hUpdateUserThread = INVALID_HANDLE_VALUE; m_nUpdateUserThreadID = 0; m_strQuerySessionID = _T(""); m_nTabSel = 0; m_pMsgAdminWnd = NULL; m_pUserSetWnd = NULL; m_pAMSettingWnd = NULL; m_pAddToFirendWnd = NULL; m_hDownloadFileThread = INVALID_HANDLE_VALUE; m_mapDwonloadFolderZip.RemoveAll(); m_mapChatWnd.RemoveAll(); m_mapGroupChatWnd.RemoveAll(); m_mapChatLogWnd.RemoveAll(); m_mapGroupChatLogWnd.RemoveAll(); m_mapUserInfoWnd.RemoveAll(); m_mapGroupInfoWnd.RemoveAll(); m_mapUserMsgRight.RemoveAll(); m_mapCrowdMsgRight.RemoveAll(); } CMBAMWnd::~CMBAMWnd() { m_mapUpdateUserItem.RemoveAll(); } // CMBAMWnd member functions void CMBAMWnd::OnInit(SWindow *pRoot) { m_pHostWnd = (SHostWnd*)pRoot; if( NULL == m_pHostWnd ) return ; if(m_bLayoutInited) { return ; } m_pPageRoot = pRoot->FindChildByName(_T("page_worspace")); if( !m_pPageRoot) { return ; } RegisterNotifyCenter(); // Ïò֪ͨÖÐÐÄ×¢²áʼþ CString strExtrenEmotionFolder; strExtrenEmotionFolder.Format(_T("%s\\emotions") , CBaseCommFun::GetModulePath() ); SChatEditLog::LoadEmotions(NULL,strExtrenEmotionFolder); m_hWnd = m_pHostWnd->m_hWnd; m_bLayoutInited = true; LoadFileIcoInImageProvider(); STabCtrl *pTab = m_pPageRoot->FindChildByName2(L"tab_amlogin_panel"); if(pTab) pTab->SetCurSel(0); m_pPageRoot->FindChildByName(L"btn_amlogin")->SetVisible(false); m_AddInPro.SetAMWndPtr( this ); m_MessengerPro.SetOwner( (void*)this ); m_MessengerPro.InitData( ); m_MessengerPro.CreateCallBack( (void*)this ); m_AMFriendWnd.SetMessengerProPtr( &m_MessengerPro); m_AMOrgWnd.SetMessengerProPtr( &m_MessengerPro); m_AMUserWnd.SetMessengerProPtr( &m_MessengerPro); m_AMGroupWnd.SetMessengerProPtr( &m_MessengerPro); m_AMChatFrame.SetAMWndPtr( this ); m_AmUserInfoFrame.SetAMWndPtr( this ); m_AMOrgWnd.SetAMWndPtr( this ); m_AMFriendWnd.SetAMWndPtr( this ); m_AMUserWnd.SetAMWndPtr( this ); m_AMRecentContactWnd.SetAMWndPtr( this ); m_AMGroupWnd.SetAMWndPtr( this ); m_AMGroupChatFrame.SetAMWndPtr( this ); m_AmGroupInfoFrame.SetAMWndPtr( this ); m_AmGroupInfoFrame.SetCrowdDataMgr(&m_MessengerPro.m_CrowdDataMgr); BOOL bIsHideLogin = false; long nFlag = LOGINFLAG_OPENDB; bIsHideLogin = m_pServerMgr->GetUserLogin()->GetUserPro()->m_bHideLogin; if ( bIsHideLogin ) nFlag |= LOGINFLAG_HIDELOGIN; m_MessengerPro.m_dLoginFlag = nFlag; Logining(); m_AMFriendWnd.SetFriendView(); m_AMChatFrame.OnInit( m_pHostWnd ); m_AmUserInfoFrame.OnInit( m_pHostWnd ); m_AMGroupChatFrame.OnInit( m_pHostWnd ); m_AmGroupInfoFrame.OnInit( m_pHostWnd ); m_AmAddinFrame.OnInit( m_pHostWnd ); //m_AMRecentContactWnd.SetAMChatFrame( &m_AMChatFrame, &m_AMGroupChatFrame); //m_AMOrgWnd.SetAMChatFrame( &m_AMChatFrame ); //m_AMOrgWnd.SetAMUserInfoFrame( &m_AmUserInfoFrame ); //m_AMFriendWnd.SetAMChatFrame( &m_AMChatFrame ); //m_AMFriendWnd.SetAMUserInfoFrame( &m_AmUserInfoFrame ); //m_AMUserWnd.SetAMChatFrame( &m_AMChatFrame ); //m_AMUserWnd.SetAMUserInfoFrame( &m_AmUserInfoFrame ); m_AMGroupWnd.SetAMChatFrame( &m_AMGroupChatFrame ); m_AMGroupWnd.SetAMGroupInfoFrame( &m_AmGroupInfoFrame ); SEdit *pEdit = m_pPageRoot->FindChildByName2("edit_search"); if(pEdit) { pEdit->GetEventSet()->subscribeEvent(EVT_KEYDOWN, Subscriber(&CMBAMWnd::OnEditSearchUserKeyDown,this)); } pTab = m_pPageRoot->FindChildByName2(L"tab_sharework_panel"); if(pTab) pTab->SetCurSel(4); m_TipMgr.SetAMWndPtr(this); m_TipMgr.SetMessengerProPtr(&m_MessengerPro); m_NetLinkChecker.SetData(m_hWnd); if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode == 1) { SWindow *pWnd = m_pPageRoot->FindChildByName2(L"wnd_amcontactbg"); if(pWnd) pWnd->SetAttribute(_T("pos"),_T("[0,0,-1,-1")); SWindow *pWnd2 = m_pPageRoot->FindChildByName2(L"wnd_amworkbg"); if(pWnd2) pWnd2->SetVisible(false); } } void CMBAMWnd::OnClose() { m_AMChatFrame.OnClose(); m_AMRecentContactWnd.OnClose(); m_AMFriendWnd.OnClose(); m_AMOrgWnd.OnClose(); m_AMUserWnd.OnClose(); m_AMGroupWnd.OnClose(); m_AMGroupChatFrame.OnClose(); m_AMAddinMgrWnd.OnClose(); m_AmAddinFrame.OnClose(); LogOut(); // ·´×¢²áʼþ { CSingleLock lock( &m_csUpdateUserInfo, true ); m_mapUpdateUserItem.RemoveAll(); } if(m_hUpdateUserThread != INVALID_HANDLE_VALUE) { WaitForSingleObject( m_hUpdateUserThread, 2 *1000 ); CloseHandle( m_hUpdateUserThread ); m_hUpdateUserThread = INVALID_HANDLE_VALUE; } m_MessengerPro.Close(); UnRegisterNotifyCenter(); } bool CMBAMWnd::RegisterNotifyCenter() { SNotifyCenter::getSingleton().addEvent(EVENTID(EventNetLinkCheckerConnected)); SNotifyCenter::getSingleton().addEvent(EVENTID(EventAMDownloadFileClick)); SNotifyCenter::getSingleton().addEvent(EVENTID(EventAMDownloadFile)); SNotifyCenter::getSingleton().addEvent(EVENTID(EventAMDecompressFolderZipFinish)); SNotifyCenter::getSingleton().addEvent(EVENTID(EventBatchAddLastContacts)); SNotifyCenter::getSingleton().addEvent(EVENTID(EventBatchSaveSyncMsgToDB)); SNotifyCenter::getSingleton().addEvent(EVENTID(EventChangeUserStatus)); return true; } bool CMBAMWnd::UnRegisterNotifyCenter() { SNotifyCenter::getSingleton().removeEvent(EventNetLinkCheckerConnected::EventID); SNotifyCenter::getSingleton().removeEvent(EventAMDownloadFileClick::EventID); SNotifyCenter::getSingleton().removeEvent(EventAMDownloadFile::EventID); SNotifyCenter::getSingleton().removeEvent(EventAMDecompressFolderZipFinish::EventID); SNotifyCenter::getSingleton().removeEvent(EventBatchAddLastContacts::EventID); SNotifyCenter::getSingleton().removeEvent(EventBatchSaveSyncMsgToDB::EventID); SNotifyCenter::getSingleton().removeEvent(EventChangeUserStatus::EventID); return true; } void CMBAMWnd::DoMessageLoop() { MSG msg; while ( ::PeekMessage( &msg, m_hWnd, 0, 0, PM_REMOVE ) ) { ::TranslateMessage( &msg ); ::DispatchMessage( &msg ); } } void CMBAMWnd::SetServerMgrPtr( CMBServerMgr *pMBServerMgr ) { m_pServerMgr = pMBServerMgr; m_AMFriendWnd.SetServerMgrPtr( m_pServerMgr ); m_AMOrgWnd.SetServerMgrPtr( m_pServerMgr ); m_AMChatFrame.SetServerMgrPtr( m_pServerMgr ); m_AmUserInfoFrame.SetServerMgrPtr( m_pServerMgr ); m_AMUserWnd.SetServerMgrPtr( m_pServerMgr ); m_AMGroupWnd.SetServerMgrPtr( m_pServerMgr ); m_AMGroupChatFrame.SetServerMgrPtr( m_pServerMgr ); m_AmGroupInfoFrame.SetServerMgrPtr( m_pServerMgr ); m_MessengerPro.SetServerMgrPtr(m_pServerMgr); m_TipMgr.SetServerMgrPtr(m_pServerMgr); m_AMAddinMgrWnd.SetServerMgrPtr( m_pServerMgr ); m_AmAddinFrame.SetServerMgrPtr( m_pServerMgr ); } void CMBAMWnd::SetTransSvrMgr( CMBTransSvrMgr *pTransSvrMgr) { m_pTransSvrMgr = pTransSvrMgr; m_pTransMgr = pTransSvrMgr->GetTransMgr(); m_pThreadDownloadDB = pTransSvrMgr->GetThreadDownloadDB(); } // ¶¨Ê±Æ÷ void CMBAMWnd::OnTimer(UINT_PTR nIDEvent) { if(!m_bLayoutInited) return; m_AMRecentContactWnd.OnTimer(nIDEvent); m_AMFriendWnd.OnTimer(nIDEvent); m_AMOrgWnd.OnTimer(nIDEvent); m_AMChatFrame.OnTimer(nIDEvent); m_AmUserInfoFrame.OnTimer(nIDEvent); m_AMUserWnd.OnTimer(nIDEvent); m_AMGroupWnd.OnTimer(nIDEvent); m_AMGroupChatFrame.OnTimer(nIDEvent); m_AMAddinMgrWnd.OnTimer(nIDEvent); switch(nIDEvent) { case TIMER_AMLOGINSTATUS: { // ¼ì²âµÇ¼µÄ״̬£¬µÇ¼µÄʱºò SignIn ÉúЧ µÇ¼ʧ°ÜºÍµÇ¼³É¹¦ºó ʧЧ short nLoginStatus = m_MessengerPro.GetLoginStatus( ); CString strInfo; // ÈôÒѾ­µÇ¼µÄ if ( nLoginStatus == LOGINSTATUS_LOGINED ) { m_pHostWnd->KillTimer( TIMER_AMLOGINSTATUS ); break; } else if ( nLoginStatus == LOGINSTATUS_LOGINING ) { CHighTime tmCur = CHighTime::GetPresentTime( true ); CHighTime tmLogin; CHighTimeSpan tmSpan; m_MessengerPro.GetLoginTime( tmLogin ); tmSpan = tmCur - tmLogin; if ( tmSpan.GetTotalSeconds( ) > m_MessengerPro.GetLoginOutTime( ) ) { // ÕýÔڵǼµÄ¹ý³Ì£¬²¢ÇÒʱ¼äÒѾ­³¬³öµÄÇé¿ö£¬²¢ÖÃ״̬ΪµÇ¼ʧ°Ü if ( m_MessengerPro.GetEmptyLogin( ) ) { // Èç¹ûÊǵÚÒ»´ÎµÇ¼ // ÏÔʾµÇ¼³ö´íÌáʾ CString strTooltip; strTooltip.Format(_T("%s,%s"),IDS_LOGIN_CONNECTERR,ERR_TIMEOUT_TRAN); SetLoginInfo( strTooltip ); SetLoginRes( false ); m_MessengerPro.SetLoginStatus( LOGINSTATUS_FAILED ); m_pHostWnd->KillTimer( TIMER_AMLOGINSTATUS ); SetSelfUserStatus(AM_USERSTATUS_FLN); break; } else { // ͼ±ê±ä»Ò CString strTooltip; SetSelfUserStatus(AM_USERSTATUS_FLN); bool bInstantRelogin = false; { CSingleLock lock( &m_csInstantRelogin, true ); bInstantRelogin = m_MessengerPro.m_bInstantRelogin; } if( bInstantRelogin) { { CSingleLock lock( &m_csInstantRelogin, true ); m_MessengerPro.m_bInstantRelogin = false; } InstantOffLine( ); } else m_MessengerPro.CloseSession( ); #ifdef _DEBUG OnTimer( TIMER_AMAUTOLOGIN ); #endif m_MessengerPro.SetLoginStatus( LOGINSTATUS_FAILED ); m_pHostWnd->KillTimer( TIMER_AMLOGINSTATUS ); int nRandomTime = m_MessengerPro.GetRandomTime( ); m_pHostWnd->SetTimer( TIMER_AMAUTOLOGIN, nRandomTime * 1000 ); ShowOfflineTip(_T("¿ÉÄÜÍøÂçÔ­ÒòÓë·þÎñÆ÷Á¬½ÓÖжϣ¬AMÔÚ%02d:%02dºóÖØÐ³¢ÊÔ½¨Á¢Á¬½Ó"),nRandomTime); } } } else { if ( m_MessengerPro.GetEmptyLogin( ) ) { // Èç¹ûÊǵÚÒ»´ÎµÇ¼ m_MessengerPro.SetLoginStatus( LOGINSTATUS_FAILED ); m_pHostWnd->KillTimer( TIMER_AMLOGINSTATUS ); } else { m_MessengerPro.SetContinueReLogin( m_MessengerPro.GetContinueReLogin() + 1 ); if ( m_MessengerPro.GetContinueReLogin( ) <= CONTINUE_RELOGIN_MAXCOUNT ) { m_MessengerPro.m_nAutoLoginTime = m_MessengerPro.GetRandomTime( ); } else { m_MessengerPro.SetContinueReLogin( 0 ); m_MessengerPro.m_nAutoLoginTime = TIME_SECOND; // ÈôÖØÐµÇ¼³¬´Îºó£¬¾Í²ÉÓÃÿ 240 ÃëÖØÐµÇ¼һ´Î } bool bInstantRelogin = false; { CSingleLock lock( &m_csInstantRelogin, true ); bInstantRelogin = m_MessengerPro.m_bInstantRelogin; } if( bInstantRelogin) { { CSingleLock lock( &m_csInstantRelogin, true ); m_MessengerPro.m_bInstantRelogin = false; } InstantOffLine( ); } m_MessengerPro.SetLoginStatus( LOGINSTATUS_FAILED ); m_pHostWnd->KillTimer( TIMER_AMLOGINSTATUS ); m_pHostWnd->SetTimer( TIMER_AMAUTOLOGIN, m_MessengerPro.m_nAutoLoginTime * 1000 ); ShowOfflineTip(_T("¿ÉÄÜÍøÂçÔ­ÒòÓë·þÎñÆ÷Á¬½ÓÖжϣ¬AMÔÚ%02d:%02dºóÖØÐ³¢ÊÔ½¨Á¢Á¬½Ó"),m_MessengerPro.m_nAutoLoginTime); } } } break; case TIMER_AMAUTOLOGIN: { m_pHostWnd->KillTimer( TIMER_AMAUTOLOGIN ); short nLoginStatus = m_MessengerPro.GetLoginStatus( ); // ÈôÒѾ­µÇ¼µÄ if ( nLoginStatus == LOGINSTATUS_LOGINED ) return; else if ( nLoginStatus == LOGINSTATUS_LOGINING ) { CHighTime tmCur = CHighTime::GetPresentTime( true ); CHighTime tmLogin; CHighTimeSpan tmSpan; m_MessengerPro.GetLoginTime( tmLogin ); tmSpan = tmCur - tmLogin; if ( tmSpan.GetTotalSeconds( ) > m_MessengerPro.GetLoginOutTime( ) ) { // ÕýÔڵǼµÄ¹ý³Ì£¬²¢ÇÒʱ¼äÒѾ­³¬³öµÄÇé¿ö // Í˳öÕýÔڵǼµÄ£¬²¢ÇÒÔٵǼ m_MessengerPro.CloseSession( ); } else break; } //Logining(); //×Ô¶¯¼ì²âÍøÂç if( m_NetLinkChecker.ExistConnected()) { //CSTKCommFun::WriteLog(_T("CMBAMWnd::TIMER_AUTOLOGIN£¬ÅжÏÍøÂç×´¿ö£»ÍøÂ糩ͨµÄ ¿ªÊ¼µÇ½")); Logining(); } else { //CSTKCommFun::WriteLog(_T("CMBAMWnd::TIMER_AUTOLOGIN£¬ÅжÏÍøÂç×´¿ö£¬ÍøÂ粻ͨ,¿ªÊ¼¼ì²âÍøÂ磡")); m_NetLinkChecker.StartCheck(m_hWnd); } break; } case TIMER_AMLOGINED_INITDATA: { m_pHostWnd->KillTimer(TIMER_AMLOGINED_INITDATA); if ( OpenDB()) { SetLoginRes( true ); Logined( ); } else { SetLoginInfo(_T("´ò¿ª±¾µØÊý¾Ý¿âʧ°Ü")); SetLoginRes( false ); } break; } case TIMER_AMINSTANTOFFINE_NOTIFY: { CString strInfo; strInfo.Format(_T("CMBAMWnd::TIMER_INSTANTOFFINE_NOTIFY")); //CSTKCommFun::WriteLog(strInfo); m_pHostWnd->KillTimer(TIMER_AMINSTANTOFFINE_NOTIFY); /*m_MessengerPro.CloseSession(); { CSingleLock lock( &m_csInstantRelogin, true ); m_MessengerPro.m_bInstantRelogin = true; } m_pHostWnd->KillTimer(TIMER_AMRECONNECT); m_pHostWnd->SetTimer(TIMER_AMRECONNECT,TIME_AMRECONNECT2);*/ //×Ô¶¯¼ì²âÍøÂç try { if( m_NetLinkChecker.ExistConnected()) { strInfo.Format(_T("CMBAMWnd::˲¼äÀëÏߺóÅжÏÍøÂç×´¿ö£¬ÍøÂ糩ͨµÄ")); //CSTKCommFun::WriteLog(strInfo); m_MessengerPro.CloseSession(); { CSingleLock lock( &m_csInstantRelogin, true ); m_MessengerPro.m_bInstantRelogin = true; } strInfo.Format(_T("CMBAMWnd::˲¼äÀëÏßÖØÐµÇ½")); //CSTKCommFun::WriteLog(strInfo); m_pHostWnd->KillTimer(TIMER_AMRECONNECT); m_pHostWnd->SetTimer(TIMER_AMRECONNECT,TIME_AMRECONNECT2); } else { strInfo.Format(_T("CMBAMWnd::˲¼äÀëÏߺóÅжÏÍøÂç×´¿ö£¬ÍøÂ粻ͨ")); //CSTKCommFun::WriteLog(strInfo); InstantOffLine( ); strInfo.Format(_T("CMBAMWnd::¿ªÊ¼¼ì²âÍøÂ磡")); //CSTKCommFun::WriteLog(strInfo); m_NetLinkChecker.StartCheck(m_hWnd); } } catch (...) { { CSingleLock lock( &m_csInstantRelogin, true ); m_MessengerPro.m_bInstantRelogin = false; } m_pHostWnd->KillTimer(TIMER_AMRECONNECT); InstantOffLine( ); strInfo.Format(_T("CMBAMWnd::˲¼äÀëÏߺóÅжÏÍøÂç×´¿öÒì³£ ÖØÐ¿ªÊ¼¼ì²âÍøÂ磡")); //CSTKCommFun::WriteLog(strInfo); m_NetLinkChecker.StartCheck(m_hWnd); } } break; case TIMER_AMRECONNECT: { m_pHostWnd->KillTimer(TIMER_AMRECONNECT); Logining(); } break; case TIMER_AMSAVEMAGOPENDATE: { m_pHostWnd->KillTimer(TIMER_AMSAVEMAGOPENDATE); m_MessengerPro.m_AMDBMgr.SaveAMMsgsOpenDate(); break; } case TIMER_PROSENDMSG: { m_MessengerPro.m_StkSendMsgPro.CheckData( ); break; } case TIMER_AMCROWDAUTOLOGIN: { m_pHostWnd->KillTimer( TIMER_AMCROWDAUTOLOGIN ); if(m_MessengerPro.IsLogined()) { /*if( !m_MessengerPro.m_CrowdDataMgr.CheckCorwdServerLogined()) { if(m_pStaticCrowdLinkHint) { m_pStaticCrowdLinkHint->SetText(_T("ÕýÔÚÁ¬½Ó·þÎñ,ÇëÉÔºó...")); m_pStaticCrowdLinkHint->SetToolTipText(_T("ÕýÔÚÁ¬½Ó·þÎñ,ÇëÉÔºó...")); } if(m_pPanelCrowdLinkState) m_pPanelCrowdLinkState->Show(); }*/ m_MessengerPro.m_CrowdDataMgr.ReLoginedCorwdServer(); } break; } case TIMER_AMGETUNREADMSG: { m_pHostWnd->KillTimer(TIMER_AMGETUNREADMSG); m_pServerMgr->GetExtWebCMgr()->GetUnreadMsgList(m_MessengerPro.m_strGetUnreadMsgTime,m_hWnd); m_pHostWnd->SetTimer(TIMER_AMGETUNREADMSG,TIME_AMGETUNREADMSG); break; } case TIMER_AMCHECKREADMSG: { if ( m_MessengerPro.IsLogined( ) ) m_MessengerPro.m_StkReadMsgPro.OnTimerReadMsg( ); break; } case TIMER_AMLOADUNREADMSG: { m_pHostWnd->KillTimer(TIMER_AMLOADUNREADMSG); LoadUnreadMsg( ); break; } case TIMER_DEAL_ADDINMSG: { m_pHostWnd->KillTimer(TIMER_DEAL_ADDINMSG); OnAddInLoginedRun( ); m_AddInPro.DealLoginAddinMsg(); break; } } } void CMBAMWnd::OnSize(UINT nType, SOUI::CSize size) { if(!m_bLayoutInited) { return; } m_AMChatFrame.OnSize(nType, size); } void CMBAMWnd::OnMove( SOUI::CPoint pt) { if(!m_bLayoutInited) { return; } m_AMChatFrame.OnMove(pt); } //========================================================= // ˲¼äÀëÏß //========================================================= void CMBAMWnd::InstantOffLine( ) { //×Ô¶¯¼ì²âÍøÂç m_NetLinkChecker.StopCheck(); m_pHostWnd->KillTimer(TIMER_AMRECONNECT); SetSelfUserStatus(AM_USERSTATUS_FLN); m_MessengerPro.OffLine( ); m_AddInPro.OffLine(); SetLoginRes(false); SetLoginInfo(_T("AM˲¼äÀëÏß")); m_MessengerPro.m_bInstantRelogin = true; m_pHostWnd->KillTimer(TIMER_AMGETUNREADMSG); m_pHostWnd->KillTimer(TIMER_AMCHECKREADMSG); //Logining(); } void CMBAMWnd::ShowOfflineTip(CString strTip,int nLoginTime) { } void CMBAMWnd::OnTabPageRadioSwitch(int nID) { if(m_bLayoutInited) { EventCloseGungHoDetailWnd *pTmpEvt = new EventCloseGungHoDetailWnd(NULL); SNotifyCenter::getSingleton().FireEventAsync(pTmpEvt); pTmpEvt->Release(); STabCtrl *pTab = m_pPageRoot->FindChildByName2(L"tab_share_panel"); if(pTab) { switch (nID){ case 30000: { STabCtrl *pTab2 = m_pPageRoot->FindChildByName2(L"tab_sharework_panel"); if(pTab2) pTab2->SetCurSel(4); pTab->SetCurSel(0); m_nTabSel = 0; m_AMRecentContactWnd.ShowWnd(); break; } case 30001: { STabCtrl *pTab2 = m_pPageRoot->FindChildByName2(L"tab_sharework_panel"); if(pTab2) pTab2->SetCurSel(4); pTab->SetCurSel(1); m_nTabSel = 1; m_AMFriendWnd.OnInit(m_pHostWnd); break; } case 30002: { STabCtrl *pTab2 = m_pPageRoot->FindChildByName2(L"tab_sharework_panel"); if(pTab2) pTab2->SetCurSel(4); m_AMOrgWnd.OnInit(m_pHostWnd); pTab->SetCurSel(2); m_nTabSel = 1; break; } case 30003: { STabCtrl *pTab2 = m_pPageRoot->FindChildByName2(L"tab_sharework_panel"); if(pTab2) pTab2->SetCurSel(4);; pTab->SetCurSel(3); m_nTabSel = 3; m_AMGroupWnd.ShowWnd(); break; } case 30004: { STabCtrl *pTab2 = m_pPageRoot->FindChildByName2(L"tab_sharework_panel"); if(pTab2) pTab2->SetCurSel(4); pTab->SetCurSel(5); m_nTabSel = 5; m_AMAddinMgrWnd.ShowWnd(); break; } } } } } CMessengerPro* CMBAMWnd::GetMessengerPro( ) { return &m_MessengerPro; } CMBAMTipMgr* CMBAMWnd::GetAMTipMgr( ) { return &m_TipMgr; } void CMBAMWnd::AMSigninNotify( AMSIGNINSTATE nState,LONG nErrCode) { CString strTooltip; CString strToolInfo; switch (nState) { case AM_SEARCHING_SERVER: { TRACE("AM_SEARCHING_SERVER\n\t"); strTooltip.Format(_T("%s"),IDS_LOGIN_SEARCHSERVER); } break; case AM_FOUND_SERVER: { TRACE("AM_FOUND_SERVER\n\t"); strTooltip.Format(_T("%s"),IDS_LOGIN_FINDEDSERVER); } break; case AM_SEARCH_SERVER_ERR: { // ²éÕÒ·þÎñÆ÷ʧ°Ü TRACE("AM_SEARCH_SERVER_ERR\n\t"); strTooltip.Format(_T("%s"),IDS_LOGIN_FINDERROR); // ´¦Àí³ö´íµÄÇé¿ö strToolInfo.Format(_T("µÇ¼Ö÷·þÎñʧ°Ü£¬´íÎóÐÅÏ¢£º%s"), strTooltip); bool bInstantRelogin = false; { CSingleLock lock( &m_csInstantRelogin, true ); bInstantRelogin = m_MessengerPro.m_bInstantRelogin; } if( bInstantRelogin) { { CSingleLock lock( &m_csInstantRelogin, true ); m_MessengerPro.m_bInstantRelogin = false; } InstantOffLine( ); } m_MessengerPro.SetLoginStatus( LOGINSTATUS_FAILED ); SetLoginInfo(strToolInfo); SetLoginRes(false); SetSelfUserStatus(AM_USERSTATUS_FLN); } break; case AM_CONNECTING: { TRACE("AM_CONNECTING\n\t"); strTooltip.Format(_T("%s"),IDS_LOGIN_CONNECTING); } break; case AM_CONNECTED: { TRACE("AM_CONNECTED\n\t"); strTooltip.Format(_T("%s"),IDS_LOGIN_CONNECTED); } break; case AM_CONNECT_CLOSED: { // Á¬½Ó¹Ø±Õ TRACE("AM_CONNECT_CLOSED\n\t"); strTooltip.Format(_T("%s"),IDS_LOGIN_CONNECTCLOSE); strToolInfo.Format(_T("Ö÷·þÎñÁ¬½Óʧ°Ü£¬´íÎóÐÅÏ¢£º%s"), strTooltip); bool bInstantRelogin = false; { CSingleLock lock( &m_csInstantRelogin, true ); bInstantRelogin = m_MessengerPro.m_bInstantRelogin; } if( bInstantRelogin) { { CSingleLock lock( &m_csInstantRelogin, true ); m_MessengerPro.m_bInstantRelogin = false; } InstantOffLine( ); } // ´¦Àí³ö´íµÄÇé¿ö m_MessengerPro.SetLoginStatus( LOGINSTATUS_FAILED ); SetLoginInfo(strTooltip); SetLoginRes( false ); SetSelfUserStatus(AM_USERSTATUS_FLN); } break; case AM_CONNECT_ERR: { TRACE("AM_CONNECT_ERR\n\t"); strTooltip.Format(_T("%s"),IDS_LOGIN_CONNECTERR); strTooltip = strTooltip + _T("-") + CMBAMUIBaseFun::GetErrorInfo( nErrCode ); strToolInfo.Format(_T("Ö÷·þÎñÁ¬½Óʧ°Ü£¬´íÎóÐÅÏ¢£º%s£¬´íÎóÂ룺%d"), strTooltip,nErrCode); // ´¦Àí³ö´íµÄÇé¿ö bool bInstantRelogin = false; { CSingleLock lock( &m_csInstantRelogin, true ); bInstantRelogin = m_MessengerPro.m_bInstantRelogin; } if( bInstantRelogin) { { CSingleLock lock( &m_csInstantRelogin, true ); m_MessengerPro.m_bInstantRelogin = false; } InstantOffLine( ); } m_MessengerPro.SetLoginStatus( LOGINSTATUS_FAILED ); SetLoginInfo(strTooltip); SetLoginRes( false ); SetSelfUserStatus(AM_USERSTATUS_FLN); } break; case AM_PROXY_CONNECTING: { TRACE("AM_PROXY_CONNECTING\n\t"); strTooltip.Format(_T("%s"),IDS_LOGIN_CONNECTPROXY); } break; case AM_SIGN_IN: { TRACE("AM_SIGN_IN\n\t"); strTooltip.Format(_T("%s"),IDS_LOGIN_LOGINSERVER); } break; case AM_SIGN_IN_OK: { TRACE("AM_SIGN_IN_OK\n\t"); m_pHostWnd->KillTimer( TIMER_AMLOGINSTATUS ); //strTooltip.LoadString( IDS_LOGIN_SUCCESS ); strTooltip = _T("µÇ¼³É¹¦,³õʼ»¯Êý¾Ý£¡"); m_MessengerPro.SetLoginStatus( LOGINSTATUS_LOGINED ); SetLoginInfo(strTooltip); m_pHostWnd->KillTimer( TIMER_AMLOGINED_INITDATA ); m_pHostWnd->SetTimer( TIMER_AMLOGINED_INITDATA, TIME_LOGINED_INITDATA ); return; } break; case AM_SIGN_IN_ERR: { TRACE("AM_SIGN_IN_ERR\n\t"); CString strErrInfo = CMBAMUIBaseFun::GetErrorInfo( nErrCode ); strTooltip.Format(_T("%s"),IDS_LOGIN_FAILE); strTooltip += (_T( " -- " ) + strErrInfo); strErrInfo.Format(_T("%s(%u)"),strTooltip, nErrCode); strTooltip = strErrInfo ; // ´¦Àí³ö´íµÄÇé¿ö strToolInfo.Format(_T("Ö÷·þÎñÁ¬½Óʧ°Ü£¬´íÎóÐÅÏ¢£º%s"), strTooltip); m_MessengerPro.CloseSession( ); bool bInstantRelogin = false; { CSingleLock lock( &m_csInstantRelogin, true ); bInstantRelogin = m_MessengerPro.m_bInstantRelogin; } if( bInstantRelogin) { { CSingleLock lock( &m_csInstantRelogin, true ); m_MessengerPro.m_bInstantRelogin = false; } InstantOffLine( ); } SetLoginInfo(strTooltip); m_MessengerPro.SetLoginStatus( LOGINSTATUS_FAILED ); SetLoginRes( false ); SetSelfUserStatus(AM_USERSTATUS_FLN); } break; case AM_VER_UPDATE: // °æ±¾¸üР{ TRACE("AM_VER_UPDATE\n\t"); } break; default: return; break; } if( !strTooltip.IsEmpty() ) { SetLoginInfo(strTooltip); } } BOOL CMBAMWnd::SignIn( CMessengerPro *pMessengerPro ) { // µÇ¼ÉèÖà HRESULT hr; ISTKConsolePtr ptrIConsolePtr; ISTKLoginInfoPtr ptrIAMLoginInfo; long nReturn; CString strName = _T(""); CString strValue = _T(""); BSTR bszName; BSTR bszValue; CMBOrgWebCMgr *pMBOrgWebCMgr; if ( !pMessengerPro || !m_pServerMgr) return false; DWORD dLoginFlag =pMessengerPro->m_dLoginFlag; pMBOrgWebCMgr = m_pServerMgr->GetOrgWebCMgr(); try { if (!ptrIConsolePtr.GetInterfacePtr ()) { hr = ptrIConsolePtr.CreateInstance( _T("StkCom.STKConsole") ); if (FAILED (hr)) { _com_error error (hr); CString strError = error.ErrorMessage (); //AfxMBMessageBox("Create the AMSession object failed!"); return false; } } } catch (_com_error& e) { _bstr_t bstrtError = e.Description(); SetLoginInfo( (LPCTSTR)(_bstr_t)bstrtError); SetLoginRes(false); return false; } try { if (!ptrIAMLoginInfo.GetInterfacePtr ()) { hr = ptrIAMLoginInfo.CreateInstance( _T("StkCom.STKLoginInfo") ); if (FAILED (hr)) { _com_error error (hr); CString strError = error.ErrorMessage (); //AfxMBMessageBox("Create the AMSession object failed!"); return false; } //ILoginInfo->AddRef(); } //if(m_MessengerPro.m_strMainServiceIP.IsEmpty()) { CString strErrInfo; int nVer = 0; CMBApplicationInfo *pApplicationInfo = new CMBApplicationInfo(); if( !pMBOrgWebCMgr->GetApplicationInfo2(_T("STK"),nVer,pApplicationInfo,strErrInfo)) { m_MessengerPro.m_strMainServiceIP = m_pServerMgr->GetUserLogin()->m_strServerName; m_MessengerPro.m_nMainServicePort = DEFAULTPORT_MAIN ; /*delete pApplicationInfo; pApplicationInfo = NULL; SetLoginInfo( strErrInfo); SetLoginRes(false); return false;*/ } else { m_MessengerPro.m_strMainServiceIP = pApplicationInfo->m_strServerIP; m_MessengerPro.m_nMainServicePort = _tstol(pApplicationInfo->m_strServicePort) ; if(m_MessengerPro.m_nMainServicePort < 1) m_MessengerPro.m_nMainServicePort = DEFAULTPORT_MAIN; } delete pApplicationInfo; pApplicationInfo = NULL; } bszValue = m_MessengerPro.GetLoginName().AllocSysString(); ptrIAMLoginInfo->put_LoginName(bszValue); SysFreeString(bszValue); bszValue = pMessengerPro->m_strMainServiceIP.AllocSysString(); ptrIAMLoginInfo->put_Server( bszValue ); SysFreeString(bszValue); ptrIAMLoginInfo->put_ServerPort(pMessengerPro->m_nMainServicePort); // 2013/06/20 strName = PROPNAME_ORGSSESSIONID; bszName = strName.AllocSysString(); bszValue = m_pServerMgr->GetUserLogin()->m_strSessionID.AllocSysString(); ptrIAMLoginInfo->SetProp( bszName, bszValue ); SysFreeString(bszName); SysFreeString(bszValue); strName = PROPNAME_ORGSVERIFY; bszName = strName.AllocSysString(); bszValue = m_pServerMgr->GetUserLogin()->m_strOrgSVerify.AllocSysString(); ptrIAMLoginInfo->SetProp( bszName, bszValue ); SysFreeString(bszName); SysFreeString(bszValue); /*strName = PROPNAME_STKKEY; bszName = strName.AllocSysString(); bszValue = m_pUserLogin->m_strSTKKey.AllocSysString(); ptrIAMLoginInfo->SetProp( bszName, bszValue ); SysFreeString(bszName); SysFreeString(bszValue); */ dLoginFlag = dLoginFlag | LOGINFLAG_OPENDB; //TEMP dLoginFlag = dLoginFlag | LOGINFLAG_SURENTYTASK; ptrIAMLoginInfo->put_LoginFlag( dLoginFlag ); ptrIAMLoginInfo->put_Version( 0 );//pMessengerPro->m_dwAppVer ); } catch (_com_error& e) { _bstr_t bstrtError = e.Description(); SetLoginInfo( (LPCTSTR)(_bstr_t)bstrtError); SetLoginRes(false); return false; } if ( pMessengerPro->m_ptrIAMSession && pMessengerPro->m_ptrIAMSession.GetInterfacePtr() ) { long nResult; pMessengerPro->m_ptrIAMSession->CloseSession( &nResult ); pMessengerPro->m_ptrIAMSession = NULL; } //-------------------------------------- // Á¬½Ó //-------------------------------------- try { ptrIConsolePtr->NewSession( &pMessengerPro->m_ptrIAMSession ); if ( pMessengerPro->m_ptrIAMSession== NULL || pMessengerPro->m_ptrIAMSession.GetInterfacePtr()== NULL ) { SetLoginInfo(_T("³õʼ»¯Ö÷·þÎñÁ¬½Ó»á»°Ê§°Ü£¡")); SetLoginRes(false); return false; } //Õâ¸öAM9ÊÇ·ñ¶¼Ã»ÓÐÓÃÁË BSTR bszParam; strName = _T( "SYSMSG" ); bszName = strName.AllocSysString(); strValue= _T( "" ); bszValue = strValue.AllocSysString(); bszParam = strValue.AllocSysString(); pMessengerPro->m_ptrIAMSession->AddMsgMap(bszName, bszValue, 0, bszParam, 0 ); SysFreeString(bszName); SysFreeString(bszValue); SysFreeString(bszParam); strName = _T( "MSG" ); bszName = strName.AllocSysString(); strValue= _T( "GEN" ); bszValue = strValue.AllocSysString(); strValue= _T( "" ); bszParam = strValue.AllocSysString(); pMessengerPro->m_ptrIAMSession->AddMsgMap(bszName, bszValue, 0, bszParam, 0 ); SysFreeString(bszName); SysFreeString(bszValue); SysFreeString(bszParam); strName = _T( "MSG" ); bszName = strName.AllocSysString(); strValue= _T( "MsgAddIn" ); bszValue = strValue.AllocSysString(); strValue= _T( "" ); bszParam = strValue.AllocSysString(); pMessengerPro->m_ptrIAMSession->AddMsgMap(bszName, bszValue, 0, bszParam, 0 ); SysFreeString(bszName); SysFreeString(bszValue); SysFreeString(bszParam); pMessengerPro->m_ptrIAMSession->SetCallBack( pMessengerPro->m_pMsger ); pMessengerPro->m_ptrIAMSession->SignIn( ptrIAMLoginInfo , &nReturn ); } catch(...) { return false; } // ÉèÖõǼµÄʱ¼äºÍ״̬ pMessengerPro->SetLoginStatus( LOGINSTATUS_LOGINING ); pMessengerPro->SetLoginTime( CHighTime::GetPresentTime( TRUE ) ); m_pHostWnd->KillTimer( TIMER_AMLOGINSTATUS ); m_pHostWnd->SetTimer( TIMER_AMLOGINSTATUS, TIME_LOGINSTATUS ); // ¼ì²âµÄµÇ¼µÄ״̬ return true; } void CMBAMWnd::SetLoginInfo(CString strFailedInfo ) { SStatic *pTxt = m_pPageRoot->FindChildByName2(_T("txt_amlogin")); if(pTxt) pTxt->SetWindowText(strFailedInfo); } void CMBAMWnd::SetLoginRes(bool bRes) { if(bRes ) { STabCtrl *pTab = m_pPageRoot->FindChildByName2(L"tab_amlogin_panel"); if(pTab) pTab->SetCurSel(1); } else { STabCtrl *pTab = m_pPageRoot->FindChildByName2(L"tab_amlogin_panel"); if(pTab) pTab->SetCurSel(0); m_pPageRoot->FindChildByName(L"btn_amlogin")->SetVisible(true); } } void CMBAMWnd::SetSelfUserStatus( AMUSERSTATUS nUserStatus ) { if(m_MessengerPro.GetSelfStatus() != nUserStatus) { m_MessengerPro.SetSelfStatus(nUserStatus); //Ìí¼ÓÐÞ¸ÄÓû§ÁбíÖÐÓû§×´Ì¬ m_AMOrgWnd.UpdateUserShow(); // SelfStatusChanged( nUserStatus ); //ChangeChatWndStatus( nUserStatus, m_MessengerPro.m_strLoginName ); // ¸Ä±ä¶Ô»°Ä£Ê½´°¿ÚµÄÓû§×´Ì¬ } if(nUserStatus != AM_USERSTATUS_FLN) { SetLoginRes(true); } ::SendMessage(m_hWnd,WM_AM_LOGINSTATUS,(WPARAM)nUserStatus,0); } BOOL CMBAMWnd::OpenDB() { CString strServerID; CString strLoginName; BOOL bFirstDB= FALSE; CString strLog; if ( !(m_MessengerPro.m_dLoginFlag & LOGINFLAG_OPENDB) ) return true; m_pHostWnd->KillTimer(TIMER_AMSAVEMAGOPENDATE); m_MessengerPro.m_AMDBMgr.CleanDBConnect( ); strServerID = m_MessengerPro.GetServerID( ) ; strLoginName = m_MessengerPro.GetLoginName( ); int nRet = m_MessengerPro.m_AMDBMgr.Logined( strLoginName, _T(""), strServerID,bFirstDB ); if( nRet) { strLog.Format(_T("Á¬½ÓÊý¾Ý¿âʧ°Ü,%d"),nRet); SetLoginInfo(strLog); return FALSE; } else { m_pHostWnd->KillTimer(TIMER_AMSAVEMAGOPENDATE); CMapStringToString mapUsersRemarks; mapUsersRemarks.RemoveAll(); m_MessengerPro.m_AMDBMgr.LoadUsersRemarks(mapUsersRemarks); m_MessengerPro.m_pMBOrgListMgr->RemoveAllUserRemarks(); POSITION pos; CString strKey; CString strValue; for(pos=mapUsersRemarks.GetStartPosition();pos;pos) { mapUsersRemarks.GetNextAssoc(pos,strKey,strValue); m_MessengerPro.m_pMBOrgListMgr->SetUserRemarksName(strKey,strValue); } m_MessengerPro.m_AMDBMgr.LoadContactMsgRight(m_mapUserMsgRight); m_MessengerPro.m_AMDBMgr.LoadContactMsgRight(m_mapCrowdMsgRight, AM_VIEWITEMTYPE_CROWD); } return TRUE; } void CMBAMWnd::Logined( ) { m_pHostWnd->KillTimer(TIMER_AMRECONNECT); m_pHostWnd->KillTimer(TIMER_AMINSTANTOFFINE_NOTIFY); bool bInstantRelogin = false; { CSingleLock lock( &m_csInstantRelogin, true ); bInstantRelogin = m_MessengerPro.m_bInstantRelogin; } SetSelfUserStatus(AM_USERSTATUS_NLN); m_AMAddinMgrWnd.SetServerMgrPtr( m_pServerMgr ); m_AMAddinMgrWnd.SetAddInProPtr( &m_AddInPro); m_AMAddinMgrWnd.SetAMWndPtr( this); m_AMAddinMgrWnd.OnInit(m_pHostWnd); if( !bInstantRelogin) { m_AMRecentContactWnd.RemoveTreeAllItem(); m_AMFriendWnd.RemoveTreeAllItem(); m_AMOrgWnd.RemoveTreeAllItem(); m_AMGroupWnd.RemoveTreeAllItem(); m_AMAddinMgrWnd.RemoveTreeAllItem(); CMBUserLogin *pUserLogin= m_pServerMgr->GetUserLogin(); CString strParamXml; CMBFileSvrInfo *pFileSvrInfo = m_pServerMgr->GetFileSvrMgr()->GetFileSvrInfo( m_pServerMgr->GetUserLogin()->m_strFileSFlag ); strParamXml.Format(_T(" \ \ \ \ \ \ \ \ %s"),pUserLogin->m_strLoginName,pUserLogin->m_strUserName,pUserLogin->m_strAliasName, pUserLogin->m_strUserConnIP,pUserLogin->m_strSessionID, pUserLogin->m_strOrgServerID, pUserLogin->m_strPCName, pUserLogin->m_strUnitGuid,pUserLogin->m_strUnitName,pUserLogin->m_strDepartGuid,pUserLogin->m_strDepartName, _T("MainServer"),_T(""), m_MessengerPro.m_strMainServiceIP,m_MessengerPro.m_nMainServicePort, _T("FileServer"), pUserLogin->m_strFileSFlag, pFileSvrInfo->m_strValidIP,_tstol(pFileSvrInfo->m_strValidPort), _T("ExtServer"),_T(""), pUserLogin->m_strExtServer,pUserLogin->m_nExtServerPort, _T("OrgServer"),_T(""), pUserLogin->m_strOrgServer,pUserLogin->m_nOrgServerPort, _T("MoboxServer"),_T(""), pUserLogin->m_strMoboxServer,pUserLogin->m_nMoboxSPort,_T("%s")); m_AddInPro.Logined( strParamXml ); m_AddInPro.InitData(CBaseCommFun::GetModulePath() + _T("\\AddIn") ); m_pHostWnd->KillTimer(TIMER_DEAL_ADDINMSG); m_pHostWnd->SetTimer( TIMER_DEAL_ADDINMSG, TIME_DEAL_ADDINMSG ); if(m_AddInPro.GetVAddInCount() > 0) { SRadioEx *pRadio = m_pPageRoot->FindChildByID2(30004); if( pRadio != NULL ) pRadio->SetVisible(TRUE,TRUE); m_AMAddinMgrWnd.ShowAddinList(); } } m_MessengerPro.Logined(bInstantRelogin); m_AMRecentContactWnd.SetServerMgrPtr( m_pServerMgr ); m_AMRecentContactWnd.SetMessengerProPtr( &m_MessengerPro); m_AMRecentContactWnd.OnInit(m_pHostWnd); STabCtrl *pTab = m_pPageRoot->FindChildByName2(L"tab_share_panel"); if(pTab) { pTab->SetCurSel(0); m_nTabSel = 0; m_AMRecentContactWnd.ShowWnd(); } SStringW strUnread = _T(""); SStatic *pTxt = m_pPageRoot->FindChildByName2(_T("txt_newmsgcnt")); SStatic *pTxt2 = m_pHostWnd->FindChildByName2(_T("txt_workmsgcnt")); SASSERT(pTxt); int nCount = m_MessengerPro.m_AMDBMgr.GetUnreadMsgCount(); if(nCount > 0) { pTxt->SetVisible(true, true); if(nCount < 100) strUnread.Format(L"%d",nCount); else strUnread.Format(L"99+"); pTxt->SetWindowText( strUnread); if(pTxt2) { pTxt2->SetVisible(true, true); pTxt2->SetWindowText( strUnread); } } else { pTxt->SetVisible(false, true); if(pTxt2) pTxt2->SetVisible(false, true); } if(m_hUpdateUserThread != INVALID_HANDLE_VALUE) { RemoveAllUpdateUser(); //WaitForSingleObject( m_hUpdateUserThread, 2 *1000 ); //CloseHandle( m_hUpdateUserThread ); //m_hUpdateUserThread = INVALID_HANDLE_VALUE; } m_AMGroupWnd.OnInit(m_pHostWnd); { CSingleLock lock( &m_csInstantRelogin, true ); m_MessengerPro.m_bInstantRelogin = false; } if (m_hUpdateUserThread == INVALID_HANDLE_VALUE ) { m_hUpdateUserThread = (HANDLE)::_beginthreadex(0, 0, ThreadFunctionUpdateUserInfo, (void*)this, 0, &m_nUpdateUserThreadID); } m_pHostWnd->KillTimer( TIMER_AMGETUNREADMSG ); m_pHostWnd->SetTimer(TIMER_AMGETUNREADMSG, TIME_FIRSTGETUNREADMSGSEC); m_pHostWnd->KillTimer( TIMER_AMCHECKREADMSG ); m_pHostWnd->SetTimer(TIMER_AMCHECKREADMSG, TIME_AMCHECKREADMSG); m_pHostWnd->KillTimer(TIMER_AMLOADUNREADMSG); m_pHostWnd->SetTimer(TIMER_AMLOADUNREADMSG,TIME_AMLOADUNREADMSG); } void CMBAMWnd::LogOut( ) { if( !m_bLayoutInited) return; //×Ô¶¯¼ì²âÍøÂç m_AddInPro.LayOut(); m_NetLinkChecker.StopCheck(); m_pHostWnd->KillTimer(TIMER_AMRECONNECT); m_pHostWnd->KillTimer(TIMER_AMINSTANTOFFINE_NOTIFY); SetSelfUserStatus(AM_USERSTATUS_FLN); SetLoginRes(false); SetLoginInfo(_T("µ±Ç°Óû§ÒÑÔÚÆäËüµØ·½µÇ¼")); m_AMRecentContactWnd.RemoveTreeAllItem(); m_AMFriendWnd.RemoveTreeAllItem(); m_AMOrgWnd.RemoveTreeAllItem(); m_AMGroupWnd.RemoveTreeAllItem(); m_AMAddinMgrWnd.RemoveTreeAllItem(); //m_AMChatFrame.RemoveChatData(); //m_AMGroupChatFrame.RemoveChatData(); m_MessengerPro.LayOut( ); POSITION pos; CMBChatWnd *pChatWnd = NULL; CString strKey; for ( pos = m_mapChatWnd.GetStartPosition(); pos; ) { m_mapChatWnd.GetNextAssoc( pos,strKey, pChatWnd ); if(pChatWnd && pChatWnd->IsWindow()) pChatWnd->DestroyWindow(); } m_mapChatWnd.RemoveAll(); CMBGroupChatWnd *pGroupChatWnd = NULL; for ( pos = m_mapGroupChatWnd.GetStartPosition(); pos; ) { m_mapGroupChatWnd.GetNextAssoc( pos,strKey, pGroupChatWnd ); if(pGroupChatWnd && pGroupChatWnd->IsWindow()) pGroupChatWnd->DestroyWindow(); } m_mapGroupChatWnd.RemoveAll(); CMBChatLogWnd *pChatLogWnd = NULL; for ( pos = m_mapChatLogWnd.GetStartPosition(); pos; ) { m_mapChatLogWnd.GetNextAssoc( pos,strKey, pChatLogWnd ); if(pChatLogWnd && pChatLogWnd->IsWindow()) pChatLogWnd->DestroyWindow(); } m_mapChatLogWnd.RemoveAll(); CMBGroupChatLogWnd *pGroupChatLogWnd = NULL; for ( pos = m_mapGroupChatLogWnd.GetStartPosition(); pos; ) { m_mapGroupChatLogWnd.GetNextAssoc( pos,strKey, pGroupChatLogWnd ); if( pGroupChatLogWnd && pGroupChatLogWnd->IsWindow()) pGroupChatLogWnd->DestroyWindow(); } m_mapGroupChatLogWnd.RemoveAll(); CMBUserInfoWnd *pUserInfoWnd = NULL; for ( pos = m_mapUserInfoWnd.GetStartPosition(); pos; ) { m_mapUserInfoWnd.GetNextAssoc( pos,strKey, pUserInfoWnd ); if(pUserInfoWnd && pUserInfoWnd->IsWindow()) pUserInfoWnd->DestroyWindow(); } m_mapUserInfoWnd.RemoveAll(); CMBGroupInfoWnd *pGroupInfoWnd = NULL; for ( pos = m_mapGroupInfoWnd.GetStartPosition(); pos; ) { m_mapGroupInfoWnd.GetNextAssoc( pos,strKey, pGroupInfoWnd ); if(pGroupInfoWnd && pGroupInfoWnd->IsWindow()) pGroupInfoWnd->DestroyWindow(); } m_mapGroupInfoWnd.RemoveAll(); if(m_pMsgAdminWnd && m_pMsgAdminWnd->IsWindow()) { m_pMsgAdminWnd->DestroyWindow(); } m_pMsgAdminWnd = NULL; if(m_pUserSetWnd && m_pUserSetWnd->IsWindow()) { m_pUserSetWnd->DestroyWindow(); } m_pUserSetWnd = NULL; if(m_pAMSettingWnd && m_pAMSettingWnd->IsWindow()) { m_pAMSettingWnd->DestroyWindow(); } m_pAMSettingWnd = NULL; if(m_pAddToFirendWnd && m_pAddToFirendWnd->IsWindow()) { m_pAddToFirendWnd->DestroyWindow(); } m_pAddToFirendWnd = NULL; } //========================================================= // ÀëÏß //========================================================= void CMBAMWnd::OffLine( ) { InstantOffLine( ); SetLoginRes(false); SetLoginInfo(_T("AMÒѵôÏß")); } bool CMBAMWnd::ImmediateLogin( AMUSERSTATUS nUserStatus ) { short nLoginStatus = m_MessengerPro.GetLoginStatus( ); m_pHostWnd->KillTimer(TIMER_AMRECONNECT); // ÈôÒѾ­µÇ¼µÄ if ( nLoginStatus == LOGINSTATUS_LOGINED ) { //----------------------------------------- // Ïò·þÎñÆ÷ÇëÇó״̬ //----------------------------------------- long nTrID; HRESULT hr; if ( m_MessengerPro.m_ptrIAMSession && m_MessengerPro.m_ptrIAMSession.GetInterfacePtr() ) { hr = m_MessengerPro.m_ptrIAMSession->ChangeStatus( nUserStatus, &nTrID ); if ( hr != S_OK ) return false; return true; } return false; } else if ( nLoginStatus == LOGINSTATUS_LOGINING ) { m_pHostWnd->KillTimer( TIMER_AMLOGINSTATUS ); m_pHostWnd->KillTimer( TIMER_AMAUTOLOGIN ); m_MessengerPro.CloseSession( ); } else { m_pHostWnd->KillTimer( TIMER_AMLOGINSTATUS ); m_pHostWnd->KillTimer( TIMER_AMAUTOLOGIN ); } m_MessengerPro.SetLoginStatus( LOGINSTATUS_FAILED ); m_MessengerPro.SetReSelfStatus( nUserStatus ); m_MessengerPro.SetReConState( true ); SignIn( &m_MessengerPro ); return true; } void CMBAMWnd::ResponseOrgContactGroupList(REQLOADSERVER_ITEM &reqLoadServerItem) { if( !m_bLayoutInited) return; m_AMFriendWnd.ResponseOrgContactGroupList(reqLoadServerItem); } void CMBAMWnd::ResponseOrgContactGroupMemeber(REQLOADSERVER_ITEM &reqLoadServerItem) { if( !m_bLayoutInited) return; CMBOrgGroup *pGroup = NULL; POSITION pos = NULL; CMBOrgMember *pMember = NULL; CString strID; int nType; int nVer; strID = reqLoadServerItem.strItemGUID; nType = AM_VIEWITEMTYPE_CUSTGROUP; if ( !m_pServerMgr->GetOrgListMgr()->LookupGroup(strID, pGroup) ) return ; if ( !pGroup ) return ; CString strUsers = _T(""); for ( pos = pGroup->m_listMember.GetHeadPosition(); pos; pos ) { pMember = (CMBOrgMember *)pGroup->m_listMember.GetNext( pos ); if ( pMember->m_nType == AM_VIEWITEMTYPE_USER && !pMember->m_bIsDelete ) { strUsers += pMember->m_strID + _T(";"); nVer = GetUserPictureVer(pMember->m_strID); if( pMember->m_nUserPhotoVer > nVer) AddUpdateUserItem(pMember->m_strID); } } if( !strUsers.IsEmpty()) { strUsers.TrimRight(_T(";")); m_MessengerPro.SubscribeUserStatus(strUsers.MakeLower()); } m_AMFriendWnd.ResponseOrgContactGroupMemeber(reqLoadServerItem ); } void CMBAMWnd::ResponseOrgUserAccessibleList(REQLOADSERVER_ITEM &reqLoadServerItem) { if( !m_bLayoutInited) return; m_AMOrgWnd.ResponseOrgUserAccessibleList(reqLoadServerItem); } void CMBAMWnd::ResponseOrgList(REQLOADSERVER_ITEM &reqLoadServerItem) { if( !m_bLayoutInited) return; m_AMOrgWnd.ResponseOrgList(reqLoadServerItem); if(reqLoadServerItem.hTreeItem && reqLoadServerItem.hTreeItem != STVI_ROOT) m_AMFriendWnd.ResponseOrgList(reqLoadServerItem); } void CMBAMWnd::ResponseOrgUserQuery(REQLOADSERVER_ITEM &reqLoadServerItem) { if( !m_bLayoutInited) return; CMBOrgView *pView = NULL; POSITION pos = NULL; CMBOrgMember *pMember = NULL; CString strUsers = _T(""); pView = (CMBOrgView*)reqLoadServerItem.pItem; if ( !pView ) return ; for ( pos = pView->m_listMember.GetHeadPosition(); pos; pos ) { pMember = (CMBOrgMember *)pView->m_listMember.GetNext( pos ); if ( pMember->m_nType == AM_VIEWITEMTYPE_USER && !pMember->m_bIsDelete ) { strUsers += pMember->m_strID + _T(";"); } } if( !strUsers.IsEmpty()) { strUsers.TrimRight(_T(";")); m_MessengerPro.SubscribeUserStatus(strUsers.MakeLower()); } m_AMUserWnd.ResponseOrgUserQuery(reqLoadServerItem); } void CMBAMWnd::ResponseOrgMemeber(REQLOADSERVER_ITEM &reqLoadServerItem) { if( !m_bLayoutInited) return; CMBOrgGroup *pGroup = NULL; CMBOrgView *pView = NULL; POSITION pos = NULL; CMBOrgMember *pMember = NULL; CString strUsers = _T(""); CString strID; int nType; int nVer; strID = reqLoadServerItem.strItemGUID; nType = _tstol(reqLoadServerItem.strItemType); if(nType == AM_VIEWITEMTYPE_VIEW) { if ( !m_pServerMgr->GetOrgListMgr()->LookupView(strID, pView) ) return ; if ( !pView ) return ; for ( pos = pView->m_listMember.GetHeadPosition(); pos; pos ) { pMember = (CMBOrgMember *)pView->m_listMember.GetNext( pos ); if ( pMember->m_nType == AM_VIEWITEMTYPE_USER && !pMember->m_bIsDelete ) { strUsers += pMember->m_strID + _T(";"); nVer = GetUserPictureVer(pMember->m_strID); if( pMember->m_nUserPhotoVer > nVer) AddUpdateUserItem(pMember->m_strID); } } } else { if ( !m_pServerMgr->GetOrgListMgr()->LookupGroup(strID, pGroup) ) return ; if ( !pGroup ) return ; for ( pos = pGroup->m_listMember.GetHeadPosition(); pos; pos ) { pMember = (CMBOrgMember *)pGroup->m_listMember.GetNext( pos ); if ( pMember->m_nType == AM_VIEWITEMTYPE_USER && !pMember->m_bIsDelete ) { strUsers += pMember->m_strID + _T(";"); nVer = GetUserPictureVer(pMember->m_strID); if( pMember->m_nUserPhotoVer > nVer) AddUpdateUserItem(pMember->m_strID); } } } if( !strUsers.IsEmpty()) { strUsers.TrimRight(_T(";")); m_MessengerPro.SubscribeUserStatus(strUsers.MakeLower()); } m_AMOrgWnd.ResponseOrgMemeber(reqLoadServerItem); m_AMFriendWnd.ResponseOrgMemeber(reqLoadServerItem); } void CMBAMWnd::ResponseOrgUserInfo(CString strUser,CString strBody, int nVer) { if( !m_bLayoutInited) return; CMBOrgUser *pUser = NULL; int nOldVer = 0; if(strUser.IsEmpty() || strBody.IsEmpty()) return; pUser = NULL; if ( m_MessengerPro.m_pMBOrgListMgr->LookupUser(strUser, pUser) ) { if(pUser) nOldVer = pUser->m_nUserVer; } CString strDispName = _T(""); CString strUserName = _T(""); CString strUnitInfo = _T(""); CString strLoginName = m_MessengerPro.GetLoginName( ) ; pUser = NULL; if ( m_MessengerPro.m_pMBOrgListMgr->LookupUser(strUser, pUser) ) { if ( pUser ) { if(pUser->m_nUserVer != nVer && nVer > 0 ) { pUser->m_nUserVer = nVer; m_MessengerPro.m_AMDBMgr.SaveUserInfo(pUser->m_strLoginName,strBody ,nVer); m_pHostWnd->KillTimer( TIMER_UPDATEUSERTREE ); m_pHostWnd->SetTimer(TIMER_UPDATEUSERTREE, 4000); } strUnitInfo = pUser->m_strUnitInfo; strDispName = pUser->m_strDispName; strUserName = pUser->m_strUserName; //int nOldLevel = m_MessengerPro.m_pMBOrgListMgr->GetUserLevel(strUser); //if(nOldLevel != pUser->m_nLevel) // m_MessengerPro.UpdateSTKUserLevel(strUser); } } /*pUser = NULL; if ( m_MessengerPro.m_CrowdDataMgr.LookupUser(reqItem.strGUID, pUser) ) { if ( pUser ) { pUser->m_strUnitInfo = strUnitInfo; pUser->m_strUserName =strUserName; if(strDispName.CompareNoCase(pUser->m_strDispName) != 0) { pUser->m_strDispName =strDispName; int nCount = m_arSTKDlgInfo.GetSize( ); for ( int nIndex = 0; nIndex < nCount; nIndex++ ) { CString strDlgTip; MSGTRID_HWND msgTrIDHwnd; CCrowdChatDlg *pDlgCrowdChat = NULL; strDlgTip = STK_DLGIDENTIFY_SUBSTR_CROWDCHAT; msgTrIDHwnd = m_arSTKDlgInfo.GetAt( nIndex ); int nPos = msgTrIDHwnd.strUser.Find(strDlgTip); if( msgTrIDHwnd.strUser.GetLength() - nPos == strDlgTip.GetLength()) { if ( ::IsWindow( msgTrIDHwnd.hWnd ) ) { pDlgCrowdChat = (CCrowdChatDlg *)CWnd::FromHandle( msgTrIDHwnd.hWnd ); if ( pDlgCrowdChat ) { pDlgCrowdChat->UpdateUserInfo(pUser); } } } } } } }*/ CMBChatWnd *pChatWnd = GetChatWnd(strUser); if(pChatWnd) { pChatWnd->ShowUserInfo(); } CMBUserInfoWnd *pInfoWnd = GetUserInfoWnd(strUser); if(pInfoWnd) pInfoWnd->ResponseOrgUserInfo(); else { if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode != 1) { m_AmUserInfoFrame.ResponseOrgUserInfo(strUser); } } if( strLoginName.CompareNoCase(strUser) == 0) { if( m_pUserSetWnd && m_pUserSetWnd->IsWindow() ) { m_pUserSetWnd->ResponseOrgUserInfo(); } } //m_MessengerPro.UpdateSTKUserSex(strUser); //m_MessengerPro.UpdateSTKUserSignature(strUser); } void CMBAMWnd::ResponseOrgUserPhoto(CString strUser,CString strFile, int nVer) { if( !m_bLayoutInited) return; if(strFile.IsEmpty() || strUser.IsEmpty()) return; if( !CBaseCommFun::ExistFile(strFile)) return; m_MessengerPro.m_AMDBMgr.SaveUserPictureVer( strUser, nVer ) ; CString strLoginName = m_MessengerPro.GetLoginName( ) ; SStringW strAvatarId; strAvatarId.Format(L"%s_photo",strUser); ImageProvider::Remove(strAvatarId); CMBChatWnd *pChatWnd = GetChatWnd(strUser); if(pChatWnd) pChatWnd->ShowUserPhoto(); CMBUserInfoWnd *pInfoWnd = GetUserInfoWnd(strUser); if(pInfoWnd) pInfoWnd->ResponseOrgUserPhoto(); else { if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode != 1) m_AmUserInfoFrame.ResponseOrgUserPhoto(strUser); } if( strLoginName.CompareNoCase(strUser) == 0) { if( m_pUserSetWnd && m_pUserSetWnd->IsWindow() ) { m_pUserSetWnd->ResponseOrgUserPhoto(); } } //int nStatus = m_MessengerPro.m_pMBOrgListMgr->GetUserStatus(strUser); //if ( CMBOrgFunc::IsOnlineUser( nStatus ) ) { m_pHostWnd->KillTimer( TIMER_UPDATEUSERTREE ); m_pHostWnd->SetTimer(TIMER_UPDATEUSERTREE, 1000); } //if(reqItem.hWnd && ::IsWindow(reqItem.hWnd)) // ::SendMessage(reqItem.hWnd, WM_USP, (WPARAM)&strLoginName, 0 ); } void CMBAMWnd::SetUserPhotoSuccess(CString strFile) { if( !m_bLayoutInited) return; if(strFile.IsEmpty()) return; if( !CBaseCommFun::ExistFile(strFile)) return; int nVer = 0; CString strImgPath; CString strLoginName = m_MessengerPro.GetLoginName( ) ; CString strServerID = m_MessengerPro.GetServerID( ) ; CBaseCommFun::MoveUserPhotoToUserDir(strLoginName,strServerID,strLoginName,strFile, strImgPath); m_MessengerPro.m_AMDBMgr.LoadUserPictureVer( strLoginName, nVer ) ; nVer++; m_pServerMgr->GetOrgListMgr()->SetUserVer(strLoginName, 0, nVer); m_MessengerPro.m_AMDBMgr.SaveUserPictureVer( strLoginName, nVer ) ; SRoundImage *pRImgAvatar = m_pHostWnd->FindChildByName2(L"btn_avatar"); if( pRImgAvatar ) { SStringT strPhotoFile; strPhotoFile.Format(_T("file:%s"),strImgPath); IBitmap* pBmpTemp = LOADIMAGE2(strPhotoFile); IBitmap* pBmp = NULL; if(pBmpTemp) { pBmp= CMBOrgFunc::GetFixSizeImage(pBmpTemp,40, 40); pRImgAvatar->SetImage(pBmpTemp,FilterLevel::kHigh_FilterLevel); pBmpTemp->Release(); } if(pBmp) m_pServerMgr->GetOrgListMgr()->AddUserPhoto(strLoginName,pBmp); } SStringW strAvatarId; strAvatarId.Format(L"%s_photo",strLoginName); ImageProvider::Remove(strAvatarId); if( m_pUserSetWnd && m_pUserSetWnd->IsWindow() ) { m_pUserSetWnd->ResponseOrgUserPhoto(); } { m_pHostWnd->KillTimer( TIMER_UPDATEUSERTREE ); m_pHostWnd->SetTimer(TIMER_UPDATEUSERTREE, 1000); } } long CMBAMWnd::SetMsgAttitudeset( CString strMsgID, CString strMsgSender, CString strAttitudeset ) { HRESULT hr = S_OK; long nTrID(0); BSTR bszMsgID; BSTR bszMsgSender; BSTR bszAttitudeset; if ( m_MessengerPro.m_ptrIAMSession == NULL || m_MessengerPro.m_ptrIAMSession.GetInterfacePtr( ) == NULL ) return 0; bszMsgID = strMsgID.AllocSysString(); bszMsgSender = strMsgSender.AllocSysString(); bszAttitudeset = strAttitudeset.AllocSysString(); hr = m_MessengerPro.m_ptrIAMSession->SetMsgAttitudeset( bszMsgID, bszMsgSender, bszAttitudeset, &nTrID ); SysFreeString(bszMsgID); SysFreeString(bszMsgSender); SysFreeString(bszAttitudeset); if ( hr != S_OK ) return 0; return nTrID; } //==================================================== // ÏûÏ¢·¢ËÍ(·µ»ØÃüÁîIDºÅ) // 0-´ú±íÏûÏ¢·¢ËͲ»³É¹¦»ò³ö´í; > 0 ·¢Ëͳɹ¦ //==================================================== long CMBAMWnd::MsgSendMsg( ISTKMessage *pMsg,CString &strRes,HWND hWndDlg, int nSendType, DWORD dwOption /*=1 */) { strRes = _T(""); if ( m_MessengerPro.m_ptrIAMSession== NULL || m_MessengerPro.m_ptrIAMSession.GetInterfacePtr( ) == NULL ) return 0; if ( !pMsg ) return 0; bool bInstantRelogin = false; { CSingleLock lock( &m_csInstantRelogin, true ); bInstantRelogin = m_MessengerPro.m_bInstantRelogin; } if ( bInstantRelogin ) { strRes = _T("Óû§ÏÖÔÚ˲¼äÀëÏß״̬£¬ÇëÉÔºóÔÙ½øÐÐÏûÏ¢·¢ËÍ£¡"); return 0; } long nTrID(0); CString strReceivers; CString strReturn; CString strMsgID; CComBSTR bszMsgID; long nMsgFlag = 0; CGuid msgID; if ( !ProcessMsgEvent( pMsg, strReturn ) ) { strRes = strReturn; return 0; } // ĬÈÏÖØ·¢ÏûÏ¢£¬ÏûÏ¢IDÓɿͻ§¶ËÉú³É pMsg->get_MsgFlag( &nMsgFlag ); if ( !(nMsgFlag & MSGFLAG_REPEATSENDMSG) ) { nMsgFlag |= MSGFLAG_REPEATSENDMSG; pMsg->put_MsgFlag( nMsgFlag ); } CMsgItem msg; msg.LoadData( pMsg ); // end modify dwOption = 0; HRESULT hr = m_MessengerPro.m_ptrIAMSession->SendMsg( pMsg, dwOption, &nTrID ); if (hr != S_OK) { _com_error error (hr); CString strError = error.ErrorMessage (); strRes = strError; return 0; } AddAMTrIDData( pMsg, nTrID, hWndDlg, nSendType ); return nTrID; } BOOL CMBAMWnd::ProcessMsgEvent( ISTKMessage *pMsg, CString &strReturn ) { if ( !ProcessLimitMsg( pMsg, strReturn ) ) return false; if ( !ProcessSendMsgTac( pMsg, strReturn ) ) return false; return true; } BOOL CMBAMWnd::ProcessSendMsgTac( ISTKMessage *pMsg, CString &strReturn ) { if ( !pMsg ) return TRUE; //return TRUE; BOOL bRet = TRUE; long nReceiverCount = 0; CComBSTR bszReceiver; //CComBSTR bszReceiverName; CString strReceiver; CString strLog; //CString strReceiverName; if(m_MessengerPro.GetUserIsProhibitCount() > 0 ) { pMsg->GetReceiverCount(&nReceiverCount); if(nReceiverCount > 100) { //strLog.Format(_T("bool CMBAMWnd::ProcessSendMsgTac:¼ì²â·¢ËÍÓû§¸öÊý£º%d "), nReceiverCount); //CSTKCommFun::WriteLog(strLog); } for (int nNum = 0; nNum < nReceiverCount; nNum++) { //pMsg->GetReceiverName(nNum, &bszReceiverName); pMsg->GetReceiver(nNum, &bszReceiver); //strReceiverName = (LPCTSTR)(_bstr_t)bszReceiverName; strReceiver = (LPCTSTR)(_bstr_t)bszReceiver; if(m_MessengerPro.CheckUserIsProhibit(strReceiver)) { strReturn.Format(_T("·¢ËÍÏûϢʧ°ÜÁË£¬'%s'ÊDZ»½ûÖ¹µÄ½ÓÊÕÓû§£¡"),strReceiver); bRet = FALSE; break; } } if(nReceiverCount > 100) { // strLog.Format(_T("bool CMBAMWnd::ProcessSendMsgTac:½áÊø£¬%s "), strReturn); //CSTKCommFun::WriteLog(strLog); } } return bRet; } BOOL CMBAMWnd::ProcessLimitMsgFileExt( ISTKMessage *pMsg, CString &strReturn ) { strReturn = _T(""); if ( !pMsg ) return false; CComBSTR bszAttachName; CString strAttachName; CString strAttachFileExt; CString strTemp; CString strInfo; long nAttachCount = 0; long nNum = 0; pMsg->GetAttachCount( &nAttachCount ); for (nNum = 0; nNum < nAttachCount; nNum++) { bszAttachName.Empty( ); pMsg->GetAttachName(nNum, &bszAttachName); strAttachName.Format(_T("%s"),(LPCTSTR)(_bstr_t)bszAttachName); if ( strAttachName.Right( 1 ) == _T("\\") ) // ÊÇĿ¼£¬Ñ¡ÔñĿ¼ { strAttachFileExt = CBaseCommFun::GetFileType( strAttachName ); } else strAttachFileExt = CBaseCommFun::GetFileType( strAttachName ); if ( strAttachFileExt.IsEmpty() ) continue; ; if ( CMBAMUIBaseFun::FindStrNoCaseInArray( strAttachFileExt, m_pServerMgr->GetUserLogin()->GetUserAce()->m_asFileLimitExt ) >= 0 ) { if ( !strTemp.IsEmpty() ) strTemp += _T("\r\n"); strTemp += strAttachName; } CString strFileID; CString strFileSFlag; bszAttachName.Empty( ); pMsg->GetAttachFileID(nNum, &bszAttachName); strFileID.Format(_T("%s"),(LPCTSTR)(_bstr_t)bszAttachName); bszAttachName.Empty( ); pMsg->GetAttachFileSFlag(nNum, &bszAttachName); strFileSFlag.Format(_T("%s"),(LPCTSTR)(_bstr_t)bszAttachName); } bszAttachName.Empty(); if ( !strTemp.IsEmpty() ) { strInfo.LoadString( IDS_FILE_LIMIT ); strReturn.Format( strInfo, strTemp ); return false; } return true; } BOOL CMBAMWnd::ProcessLimitMsg( ISTKMessage *pMsg, CString &strReturn ) { if ( !ProcessLimitMsgAce( pMsg, strReturn ) ) return false; if ( !ProcessLimitMsgFileExt( pMsg, strReturn ) ) return false; return true; } BOOL CMBAMWnd::ProcessLimitMsgAce( ISTKMessage *pMsg, CString &strReturn ) { if ( !pMsg ) return FALSE; if ( ( !m_pServerMgr->GetUserLogin()->GetUserAce()->m_bCanSendFile ) ) { // ÏûÏ¢²»ÄÜ´ø¸½¼þ long nAttachCount = 0; pMsg->GetAttachCount( &nAttachCount ); if ( nAttachCount > 0 ) { strReturn.LoadString( IDS_MSGFILE_LIMIT ); return FALSE; } } return TRUE; } long CMBAMWnd::GetAttachSizeLimit( ) { if(m_pServerMgr->GetUserLogin()->GetUserAce()->m_bCanSendFile) return m_pServerMgr->GetUserLogin()->GetUserAce()->m_nFileSizeLimit; return 0; } BOOL CMBAMWnd::ProcessLimitAttacshAce(CString strFilePath, __int64 nFileSize, CString &strReturn ) { strReturn = _T(""); CString strAttachFileExt; CString strTemp; CString strInfo; __int64 nSizeLimit = GetAttachSizeLimit(); if ( strFilePath.Right( 1 ) == _T("\\") ) // ÊÇĿ¼£¬Ñ¡ÔñĿ¼ { strAttachFileExt = CBaseCommFun::GetFileType( strFilePath ); } else strAttachFileExt = CBaseCommFun::GetFileType( strFilePath ); if ( strAttachFileExt.IsEmpty() ) { if(nSizeLimit >= 0 ) { if(nFileSize > (nSizeLimit * 1024 * 1024)) { CString strText; strInfo.LoadString( IDS_SM_SIZELIMIT ); strText.Format(_T("%I64d MB"), nSizeLimit); strReturn.Format( strInfo, strText ); return false; } } return true; } if ( CMBAMUIBaseFun::FindStrNoCaseInArray( strAttachFileExt, m_pServerMgr->GetUserLogin()->GetUserAce()->m_asFileLimitExt ) >= 0 ) { strTemp = strFilePath; } if ( !strTemp.IsEmpty() ) { strInfo.LoadString( IDS_FILE_LIMIT ); strReturn.Format( strInfo, strTemp ); return false; } if(nSizeLimit >= 0 ) { if(nFileSize > (nSizeLimit * 1024 * 1024)) { CString strText; strInfo.LoadString( IDS_SM_SIZELIMIT ); strText.Format(_T("%I64d MB"), nSizeLimit); strReturn.Format( strInfo, strText ); return false; } } return true; } BOOL CMBAMWnd::ProcessLimitMsgAce( int nAttachCount, CString &strReturn) { if ( ( !m_pServerMgr->GetUserLogin()->GetUserAce()->m_bCanSendFile ) ) { // ÏûÏ¢²»ÄÜ´ø¸½¼þ if ( nAttachCount > 0 ) { strReturn.LoadString( IDS_MSGFILE_LIMIT ); return false; } } return true; } //================================================= // ±£´æ·¢Ë͵ÄÏûÏ¢ÄÚÈÝ //================================================= bool CMBAMWnd::AddAMTrIDData( ISTKMessagePtr ptrMsg, int nTrID, HWND hSendHwnd, int nSendType, long nMsg, CString strSubject ) { if ( ptrMsg.GetInterfacePtr() == NULL ) return false; long nMsgFlag = 0; ptrMsg->get_MsgFlag( &nMsgFlag ); if ( nMsgFlag & MSGFLAG_LOCAL_MSG ) {// ±¾µØÏûÏ¢µÄ´¦Àí CMsgItem MsgItem; ISTKMessage *pMsg = ptrMsg; AMMSGCONTENTTYPE AMContentType; CComBSTR bszMsg; CString strMsg; ptrMsg->get_MsgContentType(&AMContentType); bszMsg.Empty(); ptrMsg->GetMsgContent(AMContentType, &bszMsg); strMsg = (LPCTSTR)(_bstr_t)bszMsg; bszMsg.Empty(); MsgItem.LoadData( pMsg ); m_MessengerPro.m_AMDBMgr.DispatchMsg( &MsgItem ); // ±£´æÊý¾Ýµ½Êý¾Ý¿âÖÐ OnNtyNewMsg( &MsgItem ); return true; } if ( nTrID <= 0 ) { // ÏûÏ¢·¢Ëͳö´íµÄ´¦Àí CMsgItem MsgItem; ISTKMessage *pMsg = ptrMsg; MsgItem.LoadData( pMsg ); m_AMChatFrame.RecSendMsgBack(nTrID,&MsgItem, 1 ); return false; } CString strExtPro; CHighTime tmLocalSend = CHighTime::GetPresentTime( TRUE ); strExtPro = CBaseCommFun::GenStringID( ); m_MessengerPro.m_StkSendMsgPro.AddAmSendMsgItem( nTrID, strExtPro, tmLocalSend ); // end modify return m_MessengerPro.AddAMTrIDData( ptrMsg, nTrID, hSendHwnd, nSendType, nMsg, strExtPro, tmLocalSend ); } //================================================= // µÃµ½Ö¸¶¨TrIDµÄÏûÏ¢ÄÚÈÝ //================================================= CBaseAMTrIDItem* CMBAMWnd::GetAMTrIDData( int nTrID ) { return m_MessengerPro.GetAMTrIDData( nTrID ); } //================================================= // ÕÒµ½Ö¸¶¨TrIDµÄÏûÏ¢ÄÚÈÝ //================================================= POSITION CMBAMWnd::FindAMTrIDData( int nTrID ) { return m_MessengerPro.FindAMTrIDData( nTrID ); } //================================================= // ´ÓÁ´±íÖÐÒÆ×ßÖ¸¶¨TrIDµÄÏûÏ¢ÄÚÈÝ //================================================= CBaseAMTrIDItem* CMBAMWnd::RemoveAMTrIDData( int nTrID ) { return m_MessengerPro.RemoveAMTrIDData( nTrID ); } //================================================= // ´ÓÁ´±íÖÐÒÆ×ßÖ¸¶¨TrIDµÄÏûÏ¢ÄÚÈÝ //================================================= void CMBAMWnd::RemoveAMTrIDData( POSITION pos ) { m_MessengerPro.RemoveAMTrIDData( pos ); } //================================================= // ´ÓÁ´±íÖÐɾ³ýÖ¸¶¨TrIDµÄÏûÏ¢ÄÚÈÝ //================================================= bool CMBAMWnd::DetachTrIDItem( int nTrID ) { return m_MessengerPro.DetachTrIDItem( nTrID ); } //========================================================= // ÊÕµ½Óз¢ËÍÏûÏ¢³¬Ê± //========================================================= BOOL CMBAMWnd::ProcessRepeatSendMsg( long nTrID, CString strExtPro ) { CBaseAMTrIDItem* pItem = NULL; BOOL bReturn = true; CString strLog; pItem = RemoveAMTrIDData( nTrID ); if ( !pItem ) return true; if ( m_MessengerPro.m_ptrIAMSession == NULL || m_MessengerPro.m_ptrIAMSession.GetInterfacePtr() == NULL) { delete pItem; pItem = NULL; return false; } m_MessengerPro.m_ptrIAMSession->SetCmderCancel( nTrID ); // È¡ÏûÔ­À´µÄÖ¸Áî if ( pItem->m_nMsgFlag & MSGFLAG_REPEATSENDMSG ) { // ·¢ËͲ»³É¹¦,ÖØ·¢ strLog.Format(_T("ÐèÒªÖØ·¢µÄÏûÏ¢£¬ÖØ·¢ÏûÏ¢£º%s"),pItem->m_strSubject); //CSTKCommFun::WriteLog( strLog ); bReturn = RepeatSendMsg(nTrID, pItem ); if ( !bReturn ) { strLog.Format(_T("ÖØ·¢ÏûϢʧ°Ü£º%s"),pItem->m_strSubject); //CSTKCommFun::WriteLog( strLog ); // ÏûÏ¢·¢Ëͳö´íµÄ´¦Àí if ( IsWindow( pItem->m_hWnd ) ) ::SendMessage( pItem->m_hWnd, WM_RECSENDMSGBACK, (WPARAM)&pItem, 1 ); } } else { // ¸ø³öÏûÏ¢·¢ËͲ»³É¹¦µÄÌáʾ if ( IsWindow( pItem->m_hWnd ) ) { strLog.Format(_T("ÎÞÐèÖØ·¢µÄÏûÏ¢£¬Ìáʾʧ°Ü£º%s"),pItem->m_strSubject); //CSTKCommFun::WriteLog( strLog ); bReturn = RepeatShowFailedTip(nTrID, pItem ); } // begin modify wangcheng 2010/03/25 else if ( pItem->m_hWnd ) // end modify else { strLog.Format(_T("ÎÞÐèÖØ·¢µÄÏûÏ¢£¬ÎÞ·¢ËÍ´°¿ÚµÄ¾ÍÖØ·¢´ËÏûÏ¢£º%s"),pItem->m_strSubject); //CSTKCommFun::WriteLog( strLog ); bReturn = RepeatSendMsg(nTrID, pItem ); // Èç¹û´°¿Ú²»´æÔÚ,²»³É¹¦µÄÌáʾ¾ÍûÓÐÓÃÁË,ÄǾÍÖØ·¢ºÃÁË if ( !bReturn ) { strLog.Format(_T("ÖØ·¢ÏûϢʧ°Ü£º%s"),pItem->m_strSubject); //CSTKCommFun::WriteLog( strLog ); //ShowTip( strLog, TIPICO_TYPE_ERROR, 2, false ); ShowAMToolTip(strLog); } } } delete pItem; pItem = NULL; return bReturn; } //========================================================= // ÖØ·¢ÏûÏ¢ //========================================================= BOOL CMBAMWnd::RepeatSendMsg(long nOldTrID, CBaseAMTrIDItem *pItem ) { if ( m_MessengerPro.m_ptrIAMSession == NULL || m_MessengerPro.m_ptrIAMSession.GetInterfacePtr( ) == NULL ) return false; HRESULT hr; long nTrID = 0; ISTKMessagePtr ptrAMMsg = NULL; CComPtr IMessagePtr = NULL; hr = ptrAMMsg.CreateInstance( _T("StkCom.STKMessage") ); if (FAILED (hr)) { _com_error error (hr); CString strError = error.ErrorMessage(); MBMessageBox( m_hWnd,strError,_T("Ìáʾ"),MB_OK ); return false; } ptrAMMsg->put_MsgFlag( 0 ); if ( !(pItem->m_nMsgFlag & MSGFLAG_REPEATMSG) ) { pItem->m_nMsgFlag |= MSGFLAG_REPEATMSG; } IMessagePtr = ptrAMMsg; pItem->CapyDataTo( IMessagePtr ); hr = m_MessengerPro.m_ptrIAMSession->SendMsg( ptrAMMsg, 0, &nTrID ); if ( hr != S_OK ) { _com_error error (hr); CString strError = error.ErrorMessage (); MBMessageBox( m_hWnd,strError,_T("Ìáʾ"),MB_OK ); return false; } if ( nTrID <= 0 ) { // ÏûÏ¢·¢Ëͳö´íµÄ´¦Àí return false; } if(pItem->m_hWnd == m_hWnd) { m_AMChatFrame.RepeatSendMsg(nOldTrID,nTrID); } else { if ( IsWindow( pItem->m_hWnd ) ) SendMessage( pItem->m_hWnd, WM_REPEATSENDMSG, (WPARAM)nOldTrID, (LPARAM)nTrID ); else m_AMChatFrame.RepeatSendMsg(nOldTrID,nTrID); } CHighTime tmLocalSend = CHighTime::GetPresentTime( TRUE ); m_MessengerPro.m_StkSendMsgPro.AddAmSendMsgItem( nTrID, pItem->m_strExtPro, tmLocalSend ); return m_MessengerPro.AddAMTrIDData( ptrAMMsg, nTrID, pItem->m_hWnd, pItem->m_nSendWndType, pItem->m_nMsg, pItem->m_strExtPro, tmLocalSend ); } //========================================================= // È¡ÏûÖØ¸´·¢ËÍ //========================================================= BOOL CMBAMWnd::MsgRepeatCancelSend(long nTrID ) { CBaseAMTrIDItem* pItem = NULL; pItem = RemoveAMTrIDData( nTrID ); if ( !pItem ) return FALSE; if ( m_MessengerPro.m_ptrIAMSession == NULL ) return FALSE; m_MessengerPro.m_ptrIAMSession->SetCmderCancel( nTrID ); RepeatShowFailedTip(nTrID, pItem ); delete pItem; pItem = NULL; return TRUE; } //========================================================= // µ¯³öÏûÏ¢·¢ËÍʧ°ÜµÄÌáʾ //========================================================= BOOL CMBAMWnd::RepeatShowFailedTip(long nTrID, CBaseAMTrIDItem *pItem ) { if ( !pItem ) return false; HWND hWnd = NULL; CString strErrorInfo; BOOL bRetValue = false; CString strLog; hWnd = pItem->m_hWnd; #ifdef AFX_TARG_CHS strErrorInfo = _T("ÏûÏ¢·¢ËÍʧ°Ü£¬Ê§°ÜÔ­Òò£º³¬Ê±"); #else strErrorInfo = _T("Send message failed£¬reason£ºouttime"); #endif strLog.Format(_T("ʧ°ÜÌáʾ£º%s"),pItem->m_strSubject); //CSTKCommFun::WriteLog( strLog ); if ( !IsWindow( hWnd ) ) { // µ±Ç°´°¿ÚÒѾ­¹Ø±ÕµÄÇé¿ö CString strMessage; strMessage.Format(_T("%s\r\n%s"),strErrorInfo,pItem->m_strSubject); //ShowTip( strMessage, TIPICO_TYPE_ERROR, 2, false ); ShowAMToolTip(strMessage); return false; } switch ( pItem->m_nSendWndType ) { case SENDTYPE_SEND: ::SendMessage( pItem->m_hWnd, WM_RECSENDMSGTIME, (WPARAM)pItem, (long)&strErrorInfo ); bRetValue = true; break; case SENDTYPE_CHAT: { BOOL bPopWnd = FALSE; if( pItem->m_hWnd != m_hWnd) { if(::IsWindow(pItem->m_hWnd)) { bPopWnd = TRUE; ::SendMessage( pItem->m_hWnd, WM_RECSENDMSGTIME, (WPARAM)pItem, (long)&strErrorInfo ); } } if(!bPopWnd) { m_AMChatFrame.RecSendMsgTime(nTrID,(CMsgItem*)pItem,strErrorInfo); } } bRetValue = true; break; default: if ( pItem->m_nMsg > 0 ) { ::SendMessage( pItem->m_hWnd, pItem->m_nMsg, 0, (long)&strErrorInfo ); bRetValue = true; } else bRetValue = false; break; } return bRetValue; } //================================================= // ÏûÏ¢·¢Ëͳɹ¦ºó,»ØÀ¡¸øÏàÓ¦µÄ´°¿Ú //================================================= bool CMBAMWnd::BackToMsgSendHwnd(long nTrID, CBaseAMTrIDItem *pItem, long nErrorCode/* = 0*/ ) { if ( !pItem || pItem->m_hWnd == NULL ) return false; bool bRetValue = false; switch ( pItem->m_nSendWndType ) { case SENDTYPE_SEND: { if ( nErrorCode == 0 ) { ::SendMessage( pItem->m_hWnd, WM_SENDMSGSUCCESS, (WPARAM)&pItem->m_strID, 0 ); if( pItem->m_hWnd != m_hWnd) ::SendMessage( pItem->m_hWnd, WM_CLOSE, 0, 0 ); } else ::SendMessage( pItem->m_hWnd, WM_RECSENDMSGBACK, (WPARAM)pItem, nErrorCode ); bRetValue = true; } break; case SENDTYPE_CHAT: { BOOL bPopWnd = FALSE; if( pItem->m_hWnd != m_hWnd) { if(::IsWindow(pItem->m_hWnd)) { bPopWnd = TRUE; ::SendMessage( pItem->m_hWnd, WM_RECSENDMSGBACK, (WPARAM)pItem, nErrorCode ); } } if(!bPopWnd) { m_AMChatFrame.RecSendMsgBack(nTrID,(CMsgItem*)pItem,nErrorCode); } bRetValue = true; } break; default: if ( pItem->m_nMsg > 0 ) { ::SendMessage( pItem->m_hWnd, pItem->m_nMsg, 0, nErrorCode ); bRetValue = true; } else bRetValue = false; break; } return bRetValue; } void CMBAMWnd::OnNtyNewMsg( CMsgItem *pMsgItem ) { if ( !pMsgItem ) return; ISTKMessagePtr ptrMsg = NULL; ISTKMessage *pMsg = NULL; long bReturn =0; HRESULT hr; CString strFolderName; CComBSTR bszFileName; hr = ptrMsg.CreateInstance( _T("StkCom.STKMessage") ); if (FAILED (hr)) { _com_error error (hr); CString strError = error.ErrorMessage (); return; } if ( ptrMsg.GetInterfacePtr() == NULL ) return; m_MessengerPro.AddUserMsgDataMsg( pMsgItem ); pMsg = ptrMsg; pMsgItem->CapyDataTo( pMsg ); m_MessengerPro.m_AMDBMgr.GetFolderName( pMsgItem->m_nMsgFolder, strFolderName ); bszFileName = strFolderName.AllocSysString(); pMsg->put_FolderName( bszFileName ); bszFileName.Empty(); pMsg->IsDownloaded( false, &bReturn ); if( bReturn == 0 ) { /*if(m_bMsgNotifyFlag) { SetTimer(EVENT_IS_MSG_NOTIFY, TIME_IS_MSG_NOTIFY, NULL); m_bMsgNotifyFlag = FALSE; ProcUserNotify( EVENTSOUND_NEWMSG, pMsgItem->m_strSender ); }*/ AMMsgReceiveTip( pMsg, true ); } } bool CMBAMWnd::AMMsgReceiveTip( ISTKMessage *pMsg, bool bUnReadMsg /*= false*/ ) { ISTKMessagePtr IMessagePtr = pMsg; CAMUnreadMsg *pUnreadMsg = NULL; CComBSTR bzMsgID,bzSubject,bzSender,bzSenderName; CComBSTR bszMsgExtType; CComBSTR bszSendDate; CString strMsgID; CString strServer = m_pServerMgr->GetUserLogin()->m_strServerName; CString strLoginName = m_MessengerPro.GetLoginName(); long nMsgFlag(0); long nIsDownload(0); bool bHaveNewMsg = false; CMsgItem msg; long nMsgType(0); if ( !pMsg ) return false; pMsg->IsDownloaded( false, &nIsDownload ); pMsg->get_MsgID( &bzMsgID ); strMsgID.Format(_T("%s"),(LPCTSTR)(_bstr_t)bzMsgID); bzMsgID.Empty(); if ( strMsgID.IsEmpty( ) ) { TRACE( _T("msgreceive msgid is empty!\r\n") ); return false; } bzSender.Empty(); pMsg->get_Sender( &bzSender ); int nRight = MSGRIGHT_PROMPTSHOW; CString strChatDlg; CString strSender; strSender.Format(_T("%s"),(LPCTSTR)(_bstr_t)bzSender); if( !nIsDownload ) { nRight = GetContactMsgRight( strSender ); if(nRight == MSGRIGHT_AUTOSHOW) { long nTrID; m_MessengerPro.ReadUserMsg(strSender, strMsgID, nTrID ); //strChatDlg.Format(_T("0-%s"), strSender); //m_TipMgr.OpenUnreadMsg(strSender,strChatDlg ); bzSender.Empty(); return true; } } CString strShowName; bzSenderName.Empty(); bzSubject.Empty(); bszMsgExtType.Empty(); bszSendDate.Empty();; pMsg->get_SenderName( &bzSenderName ); pMsg->get_Subject( &bzSubject ); pMsg->get_MsgFlag( &nMsgFlag ); pMsg->get_MsgExtType( &bszMsgExtType ); pMsg->get_SendDate( &bszSendDate); pMsg->get_MsgType(&nMsgType); strShowName = m_MessengerPro.m_pMBOrgListMgr->GetUserListShowName(strSender); if(strShowName.IsEmpty()) { strShowName = (LPCTSTR)(_bstr_t)bzSenderName; } if ( nIsDownload <= 0 ) { //---------------------------------------------------- // °Ñ»ñµÃµÄÏûÏ¢Êý¾Ý±£´æµ½Î´¶ÁÏûÏ¢Á´±í //---------------------------------------------------- pUnreadMsg = m_TipMgr.GetAMUnreadMsg( strMsgID); if (pUnreadMsg == NULL) { bHaveNewMsg = true; pUnreadMsg = new CAMUnreadMsg; pUnreadMsg->m_strMsgID = strMsgID; pUnreadMsg->m_strSender.Format(_T("%s"),strSender); pUnreadMsg->m_strSendDate.Format(_T("%s"),(LPCTSTR)(_bstr_t)bszSendDate); pUnreadMsg->m_strSenderName.Format(_T("%s"),strShowName); m_TipMgr.AddAMUnreadMsg( pUnreadMsg, !bUnReadMsg ); pUnreadMsg->m_strLoginName =strLoginName; pUnreadMsg->m_strServerName = strServer; pUnreadMsg->m_bDownLoaded = false; pUnreadMsg->m_strSubject.Format(_T("%s"),(LPCTSTR)(_bstr_t)bzSubject); pUnreadMsg->m_strMsgExtType.Format(_T("%s"),(LPCTSTR)(_bstr_t)bszMsgExtType); pUnreadMsg->m_nMsgType = nMsgType; } } else if ( ( nMsgFlag & MSGFLAG_FORCE_POPUPTIP ) && nIsDownload == 1 ) { //---------------------------------------------------- // °Ñ»ñµÃµÄÏûÏ¢Êý¾Ý±£´æµ½Î´¶ÁÏûÏ¢Á´±í //---------------------------------------------------- pUnreadMsg = m_TipMgr.GetAMUnreadMsg(strMsgID ); if (pUnreadMsg == NULL) { bHaveNewMsg = true; pUnreadMsg = new CAMUnreadMsg; pUnreadMsg->m_strMsgID = strMsgID; pUnreadMsg->m_strSender.Format(_T("%s"), strSender); pUnreadMsg->m_strSendDate.Format(_T("%s"),(LPCTSTR)(_bstr_t)bszSendDate); pUnreadMsg->m_strSenderName.Format(_T("%s"),strShowName); m_TipMgr.AddAMUnreadMsg( pUnreadMsg, !bUnReadMsg ); pUnreadMsg->m_strLoginName = strLoginName; pUnreadMsg->m_strServerName = strServer; pUnreadMsg->m_bDownLoaded = true; pUnreadMsg->m_strSubject.Format(_T("%s"),(LPCTSTR)(_bstr_t)bzSubject); pUnreadMsg->m_strMsgExtType.Format(_T("%s"),(LPCTSTR)(_bstr_t)bszMsgExtType); pUnreadMsg->m_IMessagePtr = pMsg; pUnreadMsg->m_nMsgType = nMsgType; } } bzSenderName.Empty(); bzSender.Empty(); bzSubject.Empty(); bszMsgExtType.Empty(); bszSendDate.Empty();; //------------------------------------------------------ // ÏûÏ¢Ìáʾ //------------------------------------------------------ if ( bHaveNewMsg ) { //ShowMsgNotify( ); NotifyReceiveMsg(); } return true; } void CMBAMWnd::NotifyReceiveMsg() { int nMsgCount = m_TipMgr.GetAMUnreadMsgCount(); if ( nMsgCount== 0 || !m_TipMgr.IsHaveNewMsg() ) { SShellNotifyIcon* notify = m_pHostWnd->FindChildByID2(110); notify->StopAni(); m_TipMgr.ShowMsgTipWindow( SW_HIDE ); return; } BOOL bCloseHeadFlashes = FALSE; CMBUserProFun::IsCloseHeadFlashes(bCloseHeadFlashes,GetMessengerPro()->GetLoginName(),GetMessengerPro()->GetServerID()); if( !bCloseHeadFlashes) { SShellNotifyIcon* notify = m_pHostWnd->FindChildByID2(110); notify->StartAni(); } m_TipMgr.ShowMsgTooltip( ); } bool CMBAMWnd::ResponseFileClientReceive( REQLOADSERVER_ITEM &reqLoadServerItem,COISysMsg *pSMsg,CString &strErrInfo ) { if(!m_bLayoutInited) return true; m_AMChatFrame.ResponseFileClientReceive(reqLoadServerItem,pSMsg,strErrInfo); m_AMGroupChatFrame.ResponseFileClientReceive(reqLoadServerItem,pSMsg,strErrInfo); if( reqLoadServerItem.strItemType == ITEM_TYPE_AMDOWNLOAD ) { ResponseAMDownloadFileReceive(reqLoadServerItem,pSMsg,strErrInfo); } return true; } bool CMBAMWnd::ResponseAMDownloadFileReceive( REQLOADSERVER_ITEM &reqLoadServerItem,COISysMsg *pSMsg,CString &strErrInfo ) { if(!m_bLayoutInited) return true; if(!pSMsg) return true; CString strMethod = pSMsg->GetMethod(); CString strConnectType = pSMsg->GetProp( _T( "ConnectType" ) ); CString strAppType = pSMsg->GetProp( _T( "AppType" ) ); if ( FILECLIENT_DOWNLOADFILEASYN == reqLoadServerItem.strMethod ) { __int64 nTranferedSize = 0; __int64 nFileSize = 0; CString strFileName = _T(""); CString strIsOk = pSMsg->GetProp( _T( "IsOk" ) ); if ( _T( "1" ) != strIsOk ) // ±íʾÊÇÏÂÔØ½ø¶ÈÐÅÏ¢ { nFileSize = pSMsg->GetParamInt64( 2 ); nTranferedSize = pSMsg->GetParamInt64( 1 ); CMBDownloadFileInfo *pDownloadFileInfo = (CMBDownloadFileInfo *)reqLoadServerItem.pItem; if( NULL == pDownloadFileInfo ) return false; DWORD nowTickCount = GetTickCount(); if( pDownloadFileInfo->m_nOldTickCount == 0 ) { pDownloadFileInfo->m_nOldTickCount = nowTickCount; } else if( nowTickCount - pDownloadFileInfo->m_nOldTickCount >= 1000 ) // 1s { pDownloadFileInfo->m_nOldTickCount = nowTickCount; pDownloadFileInfo->m_nTransRate = nTranferedSize - pDownloadFileInfo->m_nOldTranferedSize; pDownloadFileInfo->m_nOldTranferedSize = nTranferedSize; // ×öÅжϣ¬Ê¹nOldTranferedSizeÏà²î1s } pDownloadFileInfo->m_nFileSize = nFileSize; } else { strFileName = pSMsg->GetProp( _T( "LocalPath" ) ); CString strFrom,strLocalPath,strErrInfo; CMBDownloadFileInfo *pDownloadFileInfo = (CMBDownloadFileInfo *)reqLoadServerItem.pItem; if( NULL == pDownloadFileInfo ) return false; // À´Ô´ strFrom = pDownloadFileInfo->m_strFrom; //strLocalPath = pDownloadFileInfo->GetLocalPath(); pDownloadFileInfo->SetTrID(0); pDownloadFileInfo->m_nOldTranferedSize = pDownloadFileInfo->m_nFileSize; CString strOpenKey; CString strOpenValue; strOpenKey.Format(_T("%s_%s_%s"),pDownloadFileInfo->m_strCabinetName,pDownloadFileInfo->m_strFileID,pDownloadFileInfo->GetLocalPath()); strOpenKey.MakeLower(); if( pDownloadFileInfo->m_strServerPath.IsEmpty()) { pDownloadFileInfo->SetStatus(CMBDownloadFileInfo::Status_Finish); pDownloadFileInfo->m_strTEndTime = CStrFileUtils::GetLocalDt(); // ¿ÉÒÔ´Ó¶ÓÁÐÖÐɾ³ýÁË pDownloadFileInfo->SetStatus(CMBDownloadFileInfo::Status_Finish); m_pTransMgr->AdjustDownloadFileToHistory(pDownloadFileInfo,strErrInfo); // Ôö¼ÓʵʱÀúÊ·¼Ç¼ m_pTransMgr->GetHistoryTransMgr()->AddRealTimeHistoryFile(pDownloadFileInfo); // ÉèÖÃÀúÊ·Êý¾ÝÌõÊý m_pTransMgr->IncrementHistoryRecordCount(); // Ôö¼ÓÉÏ´«×ܼǼ m_pTransMgr->AddDownloadTranferedSize(pDownloadFileInfo->m_nFileSize); //±£´æ m_MessengerPro.m_AMDBMgr.SetMsgFilePath(pDownloadFileInfo->m_strCabinetName,pDownloadFileInfo->m_strFileID,strFileName); EventAMDownloadFileFinish *pTempEvt = new EventAMDownloadFileFinish(NULL); pTempEvt->m_strMsgID = pDownloadFileInfo->m_strCabinetName; pTempEvt->m_strFileID = pDownloadFileInfo->m_strFileID; pTempEvt->m_strFilePath = strFileName; // ÒÆ³ý pDownloadFileInfo->SetStatus(CMBDownloadFileInfo::Status_DeleteOnQueue); if( mapDownloadAndOpen.Lookup(strOpenKey,strOpenValue) ) { mapDownloadAndOpen.RemoveKey(strOpenKey); ShellExecute(NULL, _T("open"), _T("explorer.exe"), strFileName, NULL, SW_SHOW); } pTempEvt->m_nResult = 1; SNotifyCenter::getSingleton().FireEventAsync(pTempEvt); pTempEvt->Release(); } else { stAttachInfo itemDownFile; itemDownFile.strFilePath = pDownloadFileInfo->GetLocalPath(); itemDownFile.strCompressFile = strFileName; itemDownFile.strMsgID = pDownloadFileInfo->m_strCabinetName; itemDownFile.strFileID = pDownloadFileInfo->m_strFileID; itemDownFile.dwData = (DWORD)reqLoadServerItem.pItem; if( mapDownloadAndOpen.Lookup(strOpenKey,strOpenValue) ) { itemDownFile.bIsOpen = true; mapDownloadAndOpen.RemoveKey(strOpenKey); } m_mapDwonloadFolderZip.SetAt(strOpenKey,itemDownFile); DealDownloadFoldersZip(); } } } return true; } bool CMBAMWnd::ResponseFileClientError(REQLOADSERVER_ITEM & reqLoadServerItem,CString strParam,CString &strErrInfo) { if(!m_bLayoutInited) return true; m_AMChatFrame.ResponseFileClientError(reqLoadServerItem,strParam,strErrInfo); m_AMGroupChatFrame.ResponseFileClientError(reqLoadServerItem,strParam,strErrInfo); if( reqLoadServerItem.strItemType == ITEM_TYPE_AMDOWNLOAD ) { CMBDownloadFileInfo *pDownloadFileInfo = (CMBDownloadFileInfo *)reqLoadServerItem.pItem; if( NULL == pDownloadFileInfo ) return false; CString strLocalDt = CStrFileUtils::GetLocalDt(); // ¸üÐÂErr pDownloadFileInfo->SetErr(strErrInfo); m_pTransMgr->UpdataSqliteDownloadFileForErr( pDownloadFileInfo,strLocalDt,strErrInfo,_T("Y") ); // ½«¸Ã´íÎó¼Ç¼·ÅÈë´íÎóÁбí CAutoRefPtr pErrFileInfo(new CMBErrFileInfo()); pErrFileInfo->Release(); CString strOpenKey; strOpenKey.Format(_T("%s_%s_%s"),pDownloadFileInfo->m_strCabinetName,pDownloadFileInfo->m_strFileID,pDownloadFileInfo->GetLocalPath()); EventAMDownloadFileFinish *pTempEvt = new EventAMDownloadFileFinish(NULL); pTempEvt->m_strMsgID = pDownloadFileInfo->m_strCabinetName; pTempEvt->m_strFileID = pDownloadFileInfo->m_strFileID; pTempEvt->m_strFilePath = pDownloadFileInfo->GetLocalPath(); pTempEvt->m_nResult = 0; SNotifyCenter::getSingleton().FireEventAsync(pTempEvt); pTempEvt->Release(); pErrFileInfo->m_strID = pDownloadFileInfo->m_strID; pErrFileInfo->m_strFileID = pDownloadFileInfo->m_strFileID; pErrFileInfo->m_nType = 0; // ÀàÐÍ 1 ÉÏ´«; 0 ÏÂÔØ pErrFileInfo->m_strLocalPath = pDownloadFileInfo->GetLocalPath(); pErrFileInfo->m_nFileSize = pDownloadFileInfo->m_nFileSize; pErrFileInfo->m_nStatus = CMBDownloadFileInfo::Status_Err; pErrFileInfo->m_strFileSvr = pDownloadFileInfo->m_strFileSvr; pErrFileInfo->m_strErr = pDownloadFileInfo->GetErr(); pErrFileInfo->m_strTErrTime = strLocalDt; pErrFileInfo->m_strTAddTime = pDownloadFileInfo->m_strTAddTime; m_pTransMgr->GetErrTransMgr()->AddRealTimeErr(pErrFileInfo); m_pTransMgr->GetDownloadQueue()->RemoveQueue(pErrFileInfo->m_strID); strOpenKey.MakeLower(); mapDownloadAndOpen.RemoveKey(strOpenKey); } return true; } // ¼ÆËãmd5 bool CMBAMWnd::ResponseFileMD5Finish( CString strFilePath,CString strFileMD5 ) { if(!m_bLayoutInited) return true; m_AMChatFrame.ResponseFileMD5Finish(strFilePath,strFileMD5); m_AMGroupChatFrame.ResponseFileMD5Finish(strFilePath,strFileMD5); return true; } bool CMBAMWnd::ResponseFileMD5Error( CString strFilePath) { if(!m_bLayoutInited) return true; m_AMChatFrame.ResponseFileMD5Error(strFilePath); m_AMGroupChatFrame.ResponseFileMD5Error(strFilePath); return true; } bool CMBAMWnd::OnMsgExtWebResReceive( REQLOADSERVER_ITEM & reqLoadServerItem,CString strBody ) { if( !m_bLayoutInited ) return true; if( reqLoadServerItem.strMethod.Compare(_T("MsgTactics_GetProhibitList")) ==0 ) { m_MessengerPro.PaserProhibitMsgUserList(strBody); } else if( reqLoadServerItem.strMethod.Compare(_T("Msg_GetUnreadMsgList")) ==0 ) { if( !strBody.IsEmpty()) m_MessengerPro.DealUnreadMsgData(strBody); } return true; } bool CMBAMWnd::OnMsgExtWebResError(REQLOADSERVER_ITEM & reqLoadServerItem,int nErrCode) { if( !m_bLayoutInited ) return true; if( reqLoadServerItem.strMethod.Compare(_T("Msg_GetUnreadMsgList")) ==0 ) { if(nErrCode == -1 || nErrCode == 28) { m_pHostWnd->KillTimer(TIMER_AMGETUNREADMSG); m_pHostWnd->SetTimer(TIMER_AMGETUNREADMSG,TIME_AMFAILEDGETUNREADMSG); } } return true; } //========================================================= // µÃµ½Óû§µÄ״̬ //========================================================= int CMBAMWnd::GetUserStatus( CString strLoginName ) { CString strLogin = _T(""); int nUserStatus = 0; strLogin = m_MessengerPro.GetLoginName( ); if ( strLoginName.CompareNoCase( strLogin ) == 0 ) { // µÃµ½×Ô¼ºµÄ״̬£¬ÒòΪ×Ô¼ºµÄ״̬£¬¿ÉÒÔ²»´ÓCObListÖлñÈ¡ nUserStatus = m_MessengerPro.GetSelfStatus( ); } else nUserStatus = GetUserStatus( strLoginName ); return nUserStatus; } //========================================================= // ÉèÖÃÓû§µÄ״̬ //========================================================= void CMBAMWnd::SetUserStatus( CString strLoginName, AMUSERSTATUS nUserStatus ) { CString strLogin = _T(""); strLogin = m_MessengerPro.GetLoginName( ); if ( strLogin.CompareNoCase( strLoginName ) == 0 ) SetSelfUserStatus( nUserStatus ); else { m_MessengerPro.UpdateGroupUserStatus(strLoginName, _T("") , nUserStatus ); } } void CMBAMWnd::AddContactItem( CString strID, int nType ) { if( !m_bLayoutInited) return; if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode == 1) { if(AM_VIEWITEMTYPE_USER == nType) { CMBOrgUser *pUser = NULL; if ( m_MessengerPro.m_pMBOrgListMgr->LookupUser(strID, pUser) ) { if(pUser->m_nUserPhotoVer < 1 ) AddUpdateUserItem(strID); } else AddUpdateUserItem(strID); } m_AMRecentContactWnd.AddContactItem(strID,nType); }else { if(AM_VIEWITEMTYPE_CROWD == nType) { CMBGroupChatWnd *pChatWnd = GetGroupChatWnd(strID); if( !pChatWnd ) m_AMRecentContactWnd.AddContactItem(strID,nType); } else if(AM_VIEWITEMTYPE_USER == nType) { CMBOrgUser *pUser = NULL; if ( m_MessengerPro.m_pMBOrgListMgr->LookupUser(strID, pUser) ) { if(pUser->m_nUserPhotoVer < 1 ) AddUpdateUserItem(strID); } else AddUpdateUserItem(strID); CMBChatWnd *pChatWnd = GetChatWnd(strID); if( !pChatWnd) m_AMRecentContactWnd.AddContactItem(strID,nType); } } } CMBChatFrame* CMBAMWnd::GetMBChatFrame( ) { return &m_AMChatFrame; } void CMBAMWnd::AMConnectError( ) { m_pHostWnd->KillTimer(TIMER_AMINSTANTOFFINE_NOTIFY); m_pHostWnd->SetTimer( TIMER_AMINSTANTOFFINE_NOTIFY,50 ); m_pHostWnd->KillTimer(TIMER_AMAUTOLOGIN); //InstantOffLine(); } void CMBAMWnd::AMError( long nErrCode, long nTrID, CString strParam) { CBaseAMTrIDItem* pItem = NULL; HWND hWnd = NULL; CString strContent; CString strLog; CString strSubject; CString strMethod; strLog.Format(_T("CMBAMWnd::AMError TrID:%d,ErrCode:%d,Param:%s"),nErrCode,nTrID,strParam ); // CSTKCommFun::WriteLog(strLog); //Sleep(60 * 1000); pItem = RemoveAMTrIDData( nTrID ); if ( pItem ) { hWnd = pItem->m_hWnd; strSubject = pItem->m_strSubject; m_MessengerPro.m_StkSendMsgPro.RemoveAmSendMsgItem( nTrID ); delete pItem; pItem = NULL; } CMBAMDBFun::GetParam( strParam, _T("Method") , strMethod , _T(";") ); if ( strMethod == _T("MSG") || strMethod == _T("MMSG") ) { if (m_hWnd != hWnd ) { ::SendMessage( hWnd, WM_SENDMSGFAILED, (long)nErrCode, (long)nTrID ); // ·¢ËÍÏûϢʧ°Ü return; } m_AMChatFrame.SendMsgFailed(nTrID,nErrCode); return; } else if ( strMethod == _T("MSYN") ) { if(m_MessengerPro.m_hSyncMsgWnd && ::IsWindow(m_MessengerPro.m_hSyncMsgWnd)) { ::PostMessage(m_MessengerPro.m_hSyncMsgWnd, WM_AM_OP_SYN_MSG_FINISH, 1, 0); } CString strErrorInfo; CString strToolTip; strErrorInfo = CMBAMUIBaseFun::GetErrorInfo( nErrCode ); strToolTip.Format( _T("%s ͬ²½ÏûϢʧ°Ü£¬Ô­ÒòÊÇ£º%s"), m_MessengerPro.GetUserName( ), strErrorInfo ); //ShowTip( strToolTip, TIPICO_TYPE_ERROR, 5, false ); ShowAMToolTip(strToolTip); } else if ( strMethod == _T("RCM") || strMethod == _T("MRCM")) { CString strTempMsgID; CString strMsgID; CString strSender; //CSTKCommFun::WriteLog(_T("CMBAMWnd::AMError")); CMBAMDBFun::GetParam( strParam, _T("MsgID") , strTempMsgID , _T(";") ); strMsgID = m_MessengerPro.m_StkReadMsgPro.GetReadMsgID(nTrID,strSender); if( strMsgID.IsEmpty()) strMsgID = strTempMsgID; HWND hWnd; strMsgID = m_MessengerPro.m_StkReadMsgPro.GetReadMsgIDAndWnd(nTrID,hWnd); if ( m_MessengerPro.m_StkReadMsgPro.ReReadMsg( strMsgID, nTrID, nErrCode,strSender ) ) // ÖØ¶ÁÏûÏ¢,²»ÏÔʾ´íÎó return; m_MessengerPro.m_AMDBMgr.SetMsgReadError(strMsgID); UpdateUnreadMsgCount(); //---------------------------------- // ¶ÁÈ¡Îļþʧ°Üºó,ÏÔʾTIP //---------------------------------- CString strErrorInfo; CString strToolTip; CString strInfo; strErrorInfo.Format(_T("·þÎñ¶Ë%s"),CMBAMUIBaseFun::GetErrorInfo( nErrCode )); strToolTip.Format( _T("¶ÁÈ¡ÏûϢʧ°Ü£¬Ô­ÒòÊÇ£º%s"), strErrorInfo ); //ShowTip( strToolTip, TIPICO_TYPE_ERROR, 5, false ); ShowAMToolTip(strToolTip); } else if ( strMethod == _T("LCA") ) { // дÈÕÖ¾ 2011/09/21 CString strErrInfo; strErrInfo.Format( _T("AMError - %d\r\n"), nErrCode ); if(CMBUserProFun::IsShowAMLog( )) CMBAMUIBaseFun::WriteToFile( _T("C:\\AMLCALog.txt"), strErrInfo ); } else if ( strMethod == _T("MRRI") ) { // дÈÕÖ¾ 2011/09/21 CString strErrInfo; strErrInfo.Format( _T("AMError - %d:%s\r\n"), nErrCode,CMBAMUIBaseFun::GetErrorInfo( nErrCode ) ); //ShowTip( strErrInfo, TIPICO_TYPE_ERROR, 5, false ); ShowAMToolTip(strErrInfo); } } void CMBAMWnd::UpdateUnreadMsgCount( ) { if( !m_bLayoutInited) return; SStringW strUnread = _T(""); SStatic *pTxt = m_pPageRoot->FindChildByName2(_T("txt_newmsgcnt")); SStatic *pTxt2 = m_pHostWnd->FindChildByName2(_T("txt_workmsgcnt")); SASSERT(pTxt); int nCount = m_MessengerPro.m_AMDBMgr.GetUnreadMsgCount(); if(nCount > 0) { if(nCount < 100) strUnread.Format(L"%d",nCount); else strUnread.Format(L"99+"); pTxt->SetVisible(true, true); pTxt->SetWindowText( strUnread); if(pTxt2) { pTxt2->SetVisible(true, true); pTxt2->SetWindowText( strUnread); } } else { pTxt->SetVisible(false, true); if(pTxt2) { pTxt2->SetVisible(false, true); } } m_AMRecentContactWnd.UpdateUserShow(); } //========================================================= // ´Ó±¾µØÊý¾Ý¿â¶Áȡδ¶ÁµÄÏûÏ¢ //========================================================= BOOL CMBAMWnd::LoadUnreadMsg( ) { CObList listMsg; POSITION pos; CMsgItem *pMsgItem = NULL; int nCount(0), nNum(0); CString strNum; CString strCount; CCrowdMsgItem *pCrowdMsgItem = NULL; if ( !m_MessengerPro.m_AMDBMgr.ListUnReadMsg( listMsg ) ) return false; nCount = listMsg.GetCount( ); strCount.Format( _T("%d"), nCount ); for ( pos = listMsg.GetHeadPosition(); pos; ) { nNum++; pMsgItem = (CMsgItem *)listMsg.GetNext( pos ); if ( pMsgItem && !pMsgItem->m_strID.IsEmpty() ) { OnNtyNewMsg( pMsgItem ); delete pMsgItem; pMsgItem = NULL; } } listMsg.RemoveAll(); if ( !m_MessengerPro.m_AMDBMgr.ListUnReadCrowdMsg( listMsg ) ) return false; nCount = listMsg.GetCount( ); strCount.Format( _T("%d"), nCount ); for ( pos = listMsg.GetHeadPosition(); pos; ) { pCrowdMsgItem = (CCrowdMsgItem *)listMsg.GetNext( pos ); if ( pCrowdMsgItem && !pCrowdMsgItem->m_strID.IsEmpty() ) { AMCrowdMsgReceiveTip( pCrowdMsgItem, true ); delete pCrowdMsgItem; pCrowdMsgItem = NULL; } } listMsg.RemoveAll(); UpdateUnreadMsgCount( ); return true; } int CMBAMWnd::GetUserPictureVer(const CString strUser) { CString strFileName; CString strTmpPath; int nPhotoVer = 0; if(strUser.IsEmpty()) return nPhotoVer; try { CString strFileDir = _T(""); CString strImgPath = _T(""); CString strServerID = _T(""); CString strLogin = _T(""); strServerID = m_MessengerPro.GetServerID( ); strLogin = m_MessengerPro.GetLoginName( ); strFileDir = CBaseCommFun::GetAMUserDataDir(CString(strLogin), strServerID); strFileDir += _T("\\UserPicture"); strImgPath.Format(_T("%s\\%s.png"),strFileDir, strUser); if ( GetFileAttributes( strImgPath ) == -1 ) { nPhotoVer = 0; } else m_MessengerPro.m_AMDBMgr.LoadUserPictureVer(strUser, nPhotoVer); } catch(...) { return nPhotoVer; } return nPhotoVer; } BOOL CMBAMWnd::GetUserPicture( HWND hWnd ,const CString strUser,BOOL bForceLoad) { CString strFileName; CString strTmpPath; int nPhotoVer = 0; BOOL bRet = FALSE; if(strUser.IsEmpty()) return FALSE; if ( !m_bCanUserPic ) return FALSE; try { if( !bForceLoad) { CString strFileDir = _T(""); CString strImgPath = _T(""); CString strServerID = _T(""); CString strLogin = _T(""); strServerID = m_MessengerPro.GetServerID( ); strLogin = m_MessengerPro.GetLoginName( ); strFileDir = CBaseCommFun::GetAMUserDataDir(CString(strLogin), strServerID); strFileDir += _T("\\UserPicture"); strImgPath.Format(_T("%s\\%s.png"),strFileDir, strUser); if ( GetFileAttributes( strImgPath ) == -1 ) { nPhotoVer = 0; } else m_MessengerPro.m_AMDBMgr.LoadUserPictureVer(strUser, nPhotoVer); } strFileName.Format(_T("%s\\%s"),CBaseCommFun::GetWorkTempFolder(),CBaseCommFun::GenStringID( ) );// = CSTKCommFun::GetWorkTempFolder(); if( !m_pServerMgr->GetOrgWebCMgr()->GetUserPhoto_Asyn( m_hWnd, strUser, _T(""),strFileName, nPhotoVer )) return bRet; } catch(...) { return bRet; } return TRUE; } BOOL CMBAMWnd::GetUserPicture( const CString strUser) { CString strFileName; int nPhotoVer = 0; BOOL bRet = FALSE; if(strUser.IsEmpty()) return FALSE; if ( !m_bCanUserPic ) return FALSE; try { CString strFileDir = _T(""); CString strImgPath = _T(""); CString strServerID = _T(""); CString strLogin = _T(""); strServerID = m_MessengerPro.GetServerID( ); strLogin = m_MessengerPro.GetLoginName( ); strFileDir = CBaseCommFun::GetAMUserDataDir(strLogin, strServerID); strFileDir += _T("\\UserPicture"); strImgPath.Format(_T("%s\\%s.png"),strFileDir, strUser); if ( GetFileAttributes( strImgPath ) == -1 ) { nPhotoVer = 0; } else m_MessengerPro.m_AMDBMgr.LoadUserPictureVer(strUser, nPhotoVer); strFileName.Format(_T("%s\\%s"),CBaseCommFun::GetWorkTempFolder(),CBaseCommFun::GenStringID( ) );// = CSTKCommFun::GetWorkTempFolder(); if( !m_pServerMgr->GetOrgWebCMgr()->GetUserPhoto_Asyn(m_hWnd, strUser, _T(""),strFileName, nPhotoVer)) { return bRet; } // CString strError; // if( !m_pServerMgr->GetOrgWebCMgr()->GetUserPhoto( strUser, _T(""),strFileName, nNewPhotoVer ,strError)) // { // return bRet; // } // if(nNewPhotoVer == nPhotoVer) // return TRUE; // CString strResBody; // CString strParam; // strResBody.Format(_T("%d\n%s"),nNewPhotoVer,strFileName); // strParam.Format(_T("TrID:0;AppType:;Method:GetUserPhoto")); // SendMessage(m_hWnd,WM_ORGWEB_RESPONSE,(WPARAM)&strResBody,(LPARAM)&strParam); ///* CBaseCommFun::MoveUserPhotoToUserDir(strLogin,strServerID,strUser,strFileName, strImgPath); // m_MessengerPro.m_pMBOrgListMgr->SetUserVer(strUser, 0, nNewPhotoVer); // SStringT strPhotoFile; // strPhotoFile.Format(_T("file:%s"),strImgPath); // IBitmap* pBmpTemp = LOADIMAGE2(strPhotoFile); // IBitmap* pBmp = NULL; // if(pBmpTemp) // { // pBmp= CMBOrgFunc::GetFixSizeImage(pBmpTemp,40, 40); // pBmpTemp->Release(); // } // if(pBmp) // m_MessengerPro.m_pMBOrgListMgr->AddUserPhoto(strUser,pBmp); // ResponseOrgUserPhoto(strUser,strFileName,nNewPhotoVer);*/ } catch(...) { return bRet; } return TRUE; } BOOL CMBAMWnd::GetUserInfo( const CString strUser) { CString strXML = _T(""); int nVer = 0; int nNewVer = 0; BOOL bRet = FALSE; try { if(strUser.IsEmpty()) return FALSE; m_MessengerPro.m_AMDBMgr.LoadUserInfoVer(strUser, nVer); nNewVer = nVer; CString strError; if( !m_pServerMgr->GetOrgWebCMgr()->GetUserInfo( strUser, strXML, nNewVer,strError )) return bRet; if(nNewVer == nVer) return TRUE; if( !strXML.IsEmpty()) { m_pServerMgr->GetOrgListMgr()->ParseOrgXml(AM_VIEWITEMTYPE_USER,_T(""),CMD_UBGI,strXML ); ResponseOrgUserInfo(strUser,strXML,nNewVer); } } catch(...) { return bRet; } return TRUE; } BOOL CMBAMWnd::UpdateUserItems() { CString strUser; BOOL bRet = TRUE; strUser = GetUpdateUserItem(); while( !strUser.IsEmpty()) { if( !m_MessengerPro.IsLogined() ) { bRet = FALSE; break; } GetUserPicture(strUser); RemoveUpdateUserItem(strUser); Sleep(1000); strUser = GetUpdateUserItem(); } return bRet; } void CMBAMWnd::AddUpdateUserItem(CString strUser) { CString strKey = strUser; strKey.MakeLower(); CSingleLock lock( &m_csUpdateUserInfo, true ); m_mapUpdateUserItem.SetAt(strKey,strUser); } void CMBAMWnd::RemoveAllUpdateUser() { CSingleLock lock( &m_csUpdateUserInfo, true ); m_mapUpdateUserItem.RemoveAll(); } void CMBAMWnd::RemoveUpdateUserItem(CString strUser) { strUser.MakeLower(); CSingleLock lock( &m_csUpdateUserInfo, true ); m_mapUpdateUserItem.RemoveKey(strUser); } CString CMBAMWnd::GetUpdateUserItem() { CString strValue = _T("") ; CString strKey ; CSingleLock lock( &m_csUpdateUserInfo, true ); POSITION pos = m_mapUpdateUserItem.GetStartPosition(); if(pos) m_mapUpdateUserItem.GetNextAssoc(pos,strKey,strValue); return strValue; } void CMBAMWnd::UpdateUserShow(CString strUser,int nStatus) { CString strKey; CMBChatWnd *pChatWnd = GetChatWnd(strUser); if(pChatWnd) pChatWnd->UpdateUserSatus(nStatus); m_pHostWnd->KillTimer( TIMER_UPDATEUSERTREE ); m_pHostWnd->SetTimer(TIMER_UPDATEUSERTREE, 1000); } void CMBAMWnd::Logining() { //×Ô¶¯¼ì²âÍøÂç if( !m_NetLinkChecker.ExistConnected()) { bool bInstantRelogin = false; { CSingleLock lock( &m_csInstantRelogin, true ); bInstantRelogin = m_MessengerPro.m_bInstantRelogin; } if( bInstantRelogin) { { CSingleLock lock( &m_csInstantRelogin, true ); m_MessengerPro.m_bInstantRelogin = false; } InstantOffLine( ); } SetLoginInfo( _T("ÍøÂ粻ͨ,ÇëÈ·¶¨ÍøÂçÕý³£ºóÔÙÁ¬½Ó£¡") ); SetLoginRes( false ); m_NetLinkChecker.StartCheck(m_hWnd); return ; } STabCtrl *pTab = m_pPageRoot->FindChildByName2(L"tab_amlogin_panel"); if(pTab) pTab->SetCurSel(0); m_pPageRoot->FindChildByName(L"btn_amlogin")->SetVisible(false,true); SignIn( &m_MessengerPro ); } void CMBAMWnd::OnAMRelogin() { Logining(); } void CMBAMWnd::OnAMUserChat() { CMBOrgUser* pOrgUser= m_AmUserInfoFrame.GetCurUser( ); if(pOrgUser->m_strLoginName.IsEmpty()) return; ShowAMUserChat(pOrgUser->m_strLoginName,pOrgUser->m_strUserName); } void CMBAMWnd::OnEditUserRemark() { CMBOrgUser* pOrgUser= m_AmUserInfoFrame.GetCurUser( ); if(pOrgUser->m_strLoginName.IsEmpty()) return; SStatic *pTxt =m_pPageRoot-> FindChildByName2(_T("text_userreamrk")); if(pTxt) pTxt->SetVisible(false); SImageButton *pButtont = m_pPageRoot->FindChildByName2(_T("btn_userreamrk")); if(pButtont) pButtont->SetVisible(false); SEdit *pEdit = m_pPageRoot->FindChildByName2(_T("edit_userreamrk")); if(pEdit) { pEdit->SetVisible(true); CString strRemark = m_MessengerPro.m_pMBOrgListMgr->GetUserRemarksName(pOrgUser->m_strLoginName); pEdit->SetWindowText(strRemark); } } void CMBAMWnd::OnEventKeyDownUserRemark(EventArgs *pEvt) { EventKeyDown *pKeyDown = (EventKeyDown *)pEvt; if( pKeyDown->nChar == VK_RETURN ) { CMBOrgUser* pOrgUser= m_AmUserInfoFrame.GetCurUser( ); if(pOrgUser->m_strLoginName.IsEmpty()) return; CString strRemarks = _T(""); SEdit *pEdit = m_pPageRoot->FindChildByName2(_T("edit_userreamrk")); if(pEdit) { strRemarks = pEdit->GetWindowText(); pEdit->SetVisible(false); } if(pOrgUser->m_strUserName == strRemarks) strRemarks = _T(""); ModifyUserRemarks(pOrgUser->m_strLoginName,strRemarks); SStatic *pTxt = m_pPageRoot->FindChildByName2(_T("text_userreamrk")); if(pTxt) { pTxt->SetWindowText(strRemarks); pTxt->SetVisible(true); } SImageButton *pButtont = m_pPageRoot->FindChildByName2(_T("btn_userreamrk")); if(pButtont) { pButtont->SetVisible(true); pButtont->SetAttribute(_T("pos"),_T("[8.0,@20,@20"),true); } } } void CMBAMWnd::OnEventKillFocusUserRemark(EventArgs *pEvt) { CMBOrgUser* pOrgUser= m_AmUserInfoFrame.GetCurUser( ); if(pOrgUser->m_strLoginName.IsEmpty()) return; CString strRemarks = _T(""); SEdit *pEdit = m_pPageRoot->FindChildByName2(_T("edit_userreamrk")); if(pEdit) { strRemarks = pEdit->GetWindowText(); pEdit->SetVisible(false); } if(pOrgUser->m_strUserName == strRemarks) strRemarks = _T(""); ModifyUserRemarks(pOrgUser->m_strLoginName,strRemarks); SStatic *pTxt = m_pPageRoot->FindChildByName2(_T("text_userreamrk")); if(pTxt) { pTxt->SetWindowText(strRemarks); pTxt->SetVisible(true); } SImageButton *pButtont = m_pPageRoot->FindChildByName2(_T("btn_userreamrk")); if(pButtont) { pButtont->SetVisible(true); pButtont->SetAttribute(_T("pos"),_T("[8.0,@20,@20"),true); } } void CMBAMWnd::OnAMCrowdChat() { CString strID= m_AmGroupInfoFrame.GetCurCrowdItem( ); ShowAMCrowdChat(strID); } void CMBAMWnd::ShowAMUserChat(CString strID, CString strName) { if(strID.IsEmpty()) return; if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode != 1) { SRadioEx *pRadio = (SRadioEx*)m_pPageRoot->FindChildByID(30000); if( pRadio){ pRadio->SetCheck(TRUE); } STabCtrl *pTab = m_pPageRoot->FindChildByName2(L"tab_share_panel"); if(pTab) pTab->SetCurSel(0); } POSITION pos = m_MessengerPro.m_mbLastContact.FindContactItem( strID, AM_VIEWITEMTYPE_USER ); if( !pos) { if(strName.IsEmpty()) { CMBOrgUser *pUser = NULL; m_MessengerPro.m_pMBOrgListMgr->LookupUser(strID,pUser); if(pUser) strName = pUser->m_strUserName; else strName = strID; } COleDateTime dtCurrent= COleDateTime::GetCurrentTime(); CString strDate = dtCurrent.Format(_T("%Y-%m-%d %H:%M")); m_MessengerPro.m_mbLastContact.AddContactItem(strID,strName,AM_VIEWITEMTYPE_USER,strDate,_T("")); AddContactItem(strID,AM_VIEWITEMTYPE_USER); } CMBChatWnd *pChatWnd = GetChatWnd(strID); if(pChatWnd) { if(pChatWnd->IsIconic()) pChatWnd->ShowWindow(SW_SHOWNORMAL); else pChatWnd->ShowWindow( SW_SHOW ); pChatWnd->SetWindowPos( HWND_TOPMOST, 0, 0, 0, 0,SWP_NOSIZE| SWP_NOMOVE ); pChatWnd->SetWindowPos( HWND_NOTOPMOST, 0, 0, 0, 0,SWP_NOSIZE| SWP_NOMOVE ); return; } if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode != 1) { m_AMRecentContactWnd.SelConcactTreeItem(strID,AM_VIEWITEMTYPE_USER); SEdit *pEdit = m_pPageRoot->FindChildByName2("edit_search"); if(pEdit) pEdit->SetWindowText(_T("")); SImageButton *pImgBtn = m_pPageRoot->FindChildByName2("btn_usersearch_close"); if(pImgBtn) pImgBtn->SetVisible(false,true); pImgBtn = m_pPageRoot->FindChildByName2("btn_usersearch"); if(pImgBtn) pImgBtn->SetVisible(true,true); } else { CMBOrgUser *pUser = NULL; m_MessengerPro.m_pMBOrgListMgr->LookupUser(strID,pUser); if(pUser) ShowChatWnd(*pUser); } } void CMBAMWnd::ShowAMCrowdChat(CString strID) { if(strID.IsEmpty()) return; if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode != 1) { SRadioEx *pRadio = (SRadioEx*)m_pPageRoot->FindChildByID(30000); if( pRadio) pRadio->SetCheck(TRUE); STabCtrl *pTab = m_pPageRoot->FindChildByName2(L"tab_share_panel"); if(pTab) pTab->SetCurSel(0); } CString strName = _T(""); CCrowdItem* pItem = NULL; if( m_MessengerPro.m_CrowdDataMgr.LookupCrowdItem(strID,pItem)) { strName = pItem->m_strName; if ( !pItem->GetLoaded() ) m_MessengerPro.m_CrowdDataMgr.ListCrowdMember(m_hWnd, strID ); if ( !pItem->GetFileListLoaded() ) m_MessengerPro.m_CrowdDataMgr.DoLoadShareFileList(m_hWnd, strID, _T(""),_T("DoLoadShareFileList") ); } POSITION pos = m_MessengerPro.m_mbLastContact.FindContactItem( strID, AM_VIEWITEMTYPE_CROWD ); if( !pos) { COleDateTime dtCurrent= COleDateTime::GetCurrentTime(); CString strDate = dtCurrent.Format(_T("%Y-%m-%d %H:%M")); m_MessengerPro.m_mbLastContact.AddContactItem(strID,strName,AM_VIEWITEMTYPE_CROWD,strDate,_T("")); AddContactItem(strID,AM_VIEWITEMTYPE_CROWD); } CMBGroupChatWnd *pChatWnd = GetGroupChatWnd(strID); if(pChatWnd) { if(pChatWnd->IsIconic()) pChatWnd->ShowWindow(SW_SHOWNORMAL); else pChatWnd->ShowWindow( SW_SHOW ); pChatWnd->SetWindowPos( HWND_TOPMOST, 0, 0, 0, 0,SWP_NOSIZE| SWP_NOMOVE ); pChatWnd->SetWindowPos( HWND_NOTOPMOST, 0, 0, 0, 0,SWP_NOSIZE| SWP_NOMOVE ); return; } if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode != 1) { m_AMRecentContactWnd.SelConcactTreeItem(strID,AM_VIEWITEMTYPE_CROWD); SEdit *pEdit = m_pPageRoot->FindChildByName2("edit_search"); if(pEdit) pEdit->SetWindowText(_T("")); SImageButton *pImgBtn = m_pPageRoot->FindChildByName2("btn_usersearch_close"); if(pImgBtn) pImgBtn->SetVisible(false,true); pImgBtn = m_pPageRoot->FindChildByName2("btn_usersearch"); if(pImgBtn) pImgBtn->SetVisible(true,true); } else { if(pItem) ShowGroupChatWnd(pItem); } } void CMBAMWnd::OnCloseUserSearch() { m_AMUserWnd.ClearTreeData(); SEdit *pEdit = m_pPageRoot->FindChildByName2("edit_search"); if(pEdit) pEdit->SetWindowText(_T("")); SImageButton *pImgBtn = m_pPageRoot->FindChildByName2("btn_usersearch_close"); if(pImgBtn) pImgBtn->SetVisible(false,true); pImgBtn = m_pPageRoot->FindChildByName2("btn_usersearch"); if(pImgBtn) pImgBtn->SetVisible(true,true); STabCtrl *pTab = m_pPageRoot->FindChildByName2(L"tab_share_panel"); if(pTab) { pTab->SetCurSel(m_nTabSel); } } void CMBAMWnd::OnSearchUser() { SEdit *pEdit = m_pPageRoot->FindChildByName2("edit_search"); if(!pEdit) return; CString strCondition = pEdit->GetWindowText(); strCondition.Trim(); //m_AMUserWnd.CleanAll(); CMBOrgView *pView = NULL ; m_MessengerPro.m_pMBOrgListMgr->RemoveMember(AM_VIEWITEMTYPE_VIEW,m_strQuerySessionID); m_strQuerySessionID = _T(""); if(strCondition.IsEmpty()) return; STabCtrl *pTab = m_pPageRoot->FindChildByName2(L"tab_share_panel"); if(pTab) { pTab->SetCurSel(4); } m_AMUserWnd.OnInit(m_pHostWnd); SImageButton *pImgBtn = m_pPageRoot->FindChildByName2("btn_usersearch"); if(pImgBtn) pImgBtn->SetVisible(false,true); pImgBtn = m_pPageRoot->FindChildByName2("btn_usersearch_close"); if(pImgBtn) pImgBtn->SetVisible(true,true); CString strViewName; CGuid guidTemp; guidTemp.NewID(); m_strQuerySessionID = guidTemp.GetString(); strViewName.Format(_T("%s²éѯ½á¹û"),strCondition); if( !m_MessengerPro.m_pMBOrgListMgr->LookupView(m_strQuerySessionID,pView)) { m_MessengerPro.m_pMBOrgListMgr->AddView(m_strQuerySessionID, 0,strViewName,_T("")); m_MessengerPro.m_pMBOrgListMgr->LookupView(m_strQuerySessionID,pView); } REQLOADSERVER_ITEM regItem; regItem.hWnd = m_hWnd; regItem.strMethod = CMD_UQCR; regItem.strParam = m_strQuerySessionID; regItem.pItem = (void*)pView; if(m_pServerMgr) m_pServerMgr->GetOrgWebCMgr()->UserQuery_Asyn(m_hWnd,regItem, strCondition,10000 ); } bool CMBAMWnd::OnEditSearchUserKeyDown(EventArgs *pEvt) { EventKeyDown * pev = (EventKeyDown*)pEvt; if(pev->nChar == VK_RETURN) { OnSearchUser(); } return true; } // ÊÇ·ñ½ÓÊÕÍÏ×§Îļþ bool CMBAMWnd::IsThisWndAcceptDropFile(SWND ptWnd) { if(!m_bLayoutInited) return false; int nSel = -1; STabCtrl *pTab2 = m_pPageRoot->FindChildByName2(L"tab_sharework_panel"); if(pTab2) nSel = pTab2->GetCurSel(); if(nSel != 0) return false; return true; if( !m_AMChatFrame.IsThisWndAcceptDropFile(ptWnd)) return false; return true; } // ½ÓÊÕÍÏ×§Îļþ //BOOL CMBAMWnd::OnDropFile( IDataObject* pDataObject ) //{ // if(!m_bLayoutInited) // return FALSE; // if( !m_AMChatFrame.OnDropFile(pDataObject)) // return FALSE; // return TRUE; //} // ·¢ËÍÎļþ void CMBAMWnd::AddSendFileLst( CStringArray &arFileLst ) { if(!m_bLayoutInited) return ; m_AMChatFrame.AddSendFileLst(arFileLst); } //ȺÏûÏ¢´¦Àí void CMBAMWnd::OnCrowdConnectError( CCrowdMessengerPro *pMessengerPro, long nErrCode ) { SetCrowdLoginRes(false); if ( pMessengerPro == m_MessengerPro.m_CrowdDataMgr.GetMainMessengerPro( ) ) { // ȺÖ÷·þÎñ CString strInfo; CString strErrorInfo; strErrorInfo = CCrowdCCmderFun::GetErrInfo( nErrCode, m_MessengerPro.m_strLanguage ); if(m_MessengerPro.m_strLanguage == _T("CHS") ) strInfo.Format( _T("ȺÖ÷·þÎñ-Á¬½Ó´íÎ󣡴íÎóÐÅÏ¢£º%s,´íÎóÂ룺%d"), strErrorInfo, nErrCode ); else strInfo.Format( _T("MainServer-OnConnectError:ErrInfo=%s,ErrCode=%d"), strErrorInfo, nErrCode ); pMessengerPro->OffLine(); SetCrowdLoginInfo(strInfo); m_MessengerPro.m_CrowdDataMgr.SetSignInErrorInfo(strInfo); m_pHostWnd->KillTimer( TIMER_AMCROWDAUTOLOGIN ); m_pHostWnd->SetTimer( TIMER_AMCROWDAUTOLOGIN, TIME_FIRST * 1000 ); return; } else { // Ⱥ·þÎñ CString strInfo; CString strErrorInfo; strErrorInfo = CCrowdCCmderFun::GetErrInfo( nErrCode, m_MessengerPro.m_strLanguage ); if(pMessengerPro) { if(m_MessengerPro.m_strLanguage == _T("CHS") ) strInfo.Format( _T("Ⱥ·þÎñ(%s:%d)-Á¬½Ó´íÎ󣡴íÎóÐÅÏ¢£º%s,´íÎóÂ룺%d"),pMessengerPro->m_LoginInfo.m_strServer,pMessengerPro->m_LoginInfo.m_dwPort, strErrorInfo, nErrCode); else strInfo.Format( _T("Server(%s:%d)-OnConnectError:ErrInfo=%s,ErrCode=%d"),pMessengerPro->m_LoginInfo.m_strServer,pMessengerPro->m_LoginInfo.m_dwPort, strErrorInfo, nErrCode ); pMessengerPro->OffLine(); SetCrowdLoginInfo(strInfo); m_MessengerPro.m_CrowdDataMgr.SetSignInErrorInfo(strInfo); m_pHostWnd->KillTimer( TIMER_AMCROWDAUTOLOGIN ); m_pHostWnd->SetTimer( TIMER_AMCROWDAUTOLOGIN, TIME_FIRST * 1000 ); } else { if(m_MessengerPro.m_strLanguage == _T("CHS") ) strInfo.Format( _T("Ⱥ·þÎñ-Á¬½Ó´íÎ󣡴íÎóÐÅÏ¢£º%s,´íÎóÂ룺%d"), strErrorInfo, nErrCode); else strInfo.Format( _T("Server-OnConnectError:ErrInfo=%s,ErrCode=%d"), strErrorInfo, nErrCode ); pMessengerPro->OffLine(); SetCrowdLoginInfo(strInfo); m_MessengerPro.m_CrowdDataMgr.SetSignInErrorInfo(strInfo); } return; } } void CMBAMWnd::OnCrowdError( CCrowdMessengerPro *pMessengerPro, long nErrCode, long nTrID, CString strParam ) { // CSTKCommFun::WriteLog( _T("OnCrowdError:")+ strParam); if ( pMessengerPro == m_MessengerPro.m_CrowdDataMgr.GetMainMessengerPro( ) ) { // ȺÖ÷·þÎñ CString strInfo; CString strErrorInfo; REQLOAD_ITEM item; if(pMessengerPro) { if( pMessengerPro->m_mapCrowdTrid.Lookup(nTrID,item)) { if ( item.strClassName == CMD_CKLC ) { strErrorInfo = CCrowdCCmderFun::GetErrInfo( nErrCode ,m_MessengerPro.m_strLanguage ); strInfo.Format( _T("ȺÖ÷·þÎñ»ñȡȺ·þÎñÁбíʧ°Ü£¡´íÎóÐÅÏ¢£º%s,´íÎóÂ룺%d"), strErrorInfo, nErrCode); m_MessengerPro.m_CrowdDataMgr.SetSignInErrorInfo(strInfo); } } pMessengerPro->m_mapCrowdTrid.RemoveKey(nTrID); } strErrorInfo = CCrowdCCmderFun::GetErrInfo( nErrCode ,m_MessengerPro.m_strLanguage ); if(m_MessengerPro.m_strLanguage == _T("CHS") ) strInfo.Format( _T("ȺÖ÷·þÎñ-·µ»Ø´íÎ󣡴íÎóÐÅÏ¢£º%s,´íÎóÂ룺%d"), strErrorInfo, nErrCode); else strInfo.Format( _T("MainServer-OnError:%s,ErrInfo=%s,ErrCode=%d"), strParam, strErrorInfo, nErrCode ); //ShowTip( strInfo, TIPICO_TYPE_ERROR, 5, false ); if(nErrCode == -1 || nErrCode == 28) { m_pHostWnd->KillTimer( TIMER_AMCROWDAUTOLOGIN ); m_pHostWnd->SetTimer( TIMER_AMCROWDAUTOLOGIN, TIME_FIRST * 1000 ); } return; } else { // Ⱥ·þÎñ CString strInfo; CString strErrorInfo; REQLOAD_ITEM item; strErrorInfo = CCrowdCCmderFun::GetErrInfo( nErrCode, m_MessengerPro.m_strLanguage ); if(pMessengerPro) { if(m_MessengerPro.m_strLanguage == _T("CHS") ) strInfo.Format( _T("Ⱥ·þÎñ(%s:%d)-·µ»Ø´íÎ󣡴íÎóÐÅÏ¢£º%s,´íÎóÂ룺%d"),pMessengerPro->m_LoginInfo.m_strServer,pMessengerPro->m_LoginInfo.m_dwPort, strErrorInfo, nErrCode ); else strInfo.Format( _T("Server(%s:%d)-OnError:%s,ErrInfo=%s,ErrCode=%d"),pMessengerPro->m_LoginInfo.m_strServer,pMessengerPro->m_LoginInfo.m_dwPort, strParam, strErrorInfo, nErrCode ); if( pMessengerPro->m_mapCrowdTrid.Lookup(nTrID,item)) { if ( item.strClassName == CMD_MLSF ) { CString strFileGroup = _T(""); // ::SendMessage(item.hWnd, WM_LOADCROWDFILES_RES, (WPARAM)&strFileGroup, 1); } else if ( item.strClassName == CMD_MSSF ) { CMBGroupChatWnd *pChatWnd = GetGroupChatWnd(item.strGUID); if(pChatWnd ) pChatWnd->ShareFileFailed(item.strParam); else { if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode != 1) { m_AMGroupChatFrame.ShareFileFailed(item.strGUID , item.strParam ); } } } pMessengerPro->m_mapCrowdTrid.RemoveKey(nTrID); CCrowdItem *pItem = (CCrowdItem*)item.pItem; if(pItem) delete pItem; pItem = NULL; } if(nErrCode == -1 || nErrCode == 28) { m_pHostWnd->KillTimer( TIMER_AMCROWDAUTOLOGIN ); m_pHostWnd->SetTimer( TIMER_AMCROWDAUTOLOGIN, TIME_FIRST * 1000 ); } } else { if(m_MessengerPro.m_strLanguage == _T("CHS") ) strInfo.Format( _T("Ⱥ·þÎñ-·µ»Ø´íÎ󣡴íÎóÐÅÏ¢£º%s,´íÎóÂ룺%d"), strErrorInfo, nErrCode ); else strInfo.Format( _T("Server-OnError:%s,ErrInfo=%s,ErrCode=%d"), strParam, strErrorInfo, nErrCode ); } /*CSTKCommFun::WriteLog(strInfo); if(nErrCode == MERR_CROWD_NOTEXIST || nErrCode == MERR_CROWD_ISDELETE || nErrCode == MERR_CROWD_OVERSCACOUNT) { ShowTip( strErrorInfo,TIPICO_TYPE_ERROR, 5, false ); } else ShowTip( strInfo, TIPICO_TYPE_ERROR, 5, false );*/ return; } } void CMBAMWnd::OnCrowdReceive( CCrowdMessengerPro *pMessengerPro, CQLSysMsg *pSMsg ) { CString strLoginName; CString strCrowdID; CString strMethod; long nTrID; CString strUserInfo; CString strParam = _T(""); CString strLog; CString strBody; nTrID = pSMsg->GetTrID(); strMethod = pSMsg->GetMethod(); strLoginName = pSMsg->GetParam( CPN_CKCC_LOGINNAME ); strCrowdID = pSMsg->GetParam( CPN_CKCC_CROWDID ); strBody = pSMsg->GetBody( ); m_MessengerPro.m_CrowdDataMgr.OnCrowdReceive(pMessengerPro, pSMsg, strCrowdID, strParam ); strLog.Format(_T("OnCrowdReceive:Method:%s,Body:%s"),strMethod,strBody); if ( strMethod == CMD_CKLC ) { if ( m_MessengerPro.m_CrowdDataMgr.m_mapMessengerPro.GetCount() < 1 ) { m_MessengerPro.m_CrowdDataMgr.AddDeaultCrowdMessengerPro(); } } else if ( strMethod == CMD_MLUC ) { /*CString strSex; strSex.Format(_T("%d"), m_MessengerPro.m_nSex); m_MessengerPro.UpdateCrowdUserStatus(m_MessengerPro.m_strLoginName, m_MessengerPro.m_strUserName, AM_USERSTATUS_NLN , strSex);*/ if(pMessengerPro) pMessengerPro->m_mapCrowdTrid.RemoveKey(nTrID); m_AMGroupWnd.Logined( ); POSITION pos; CCrowdItem *pItem = NULL; CString strDlgInfo; CString strKey; for ( pos = m_MessengerPro.m_CrowdDataMgr.m_mapCrowd.GetStartPosition(); pos; ) { m_MessengerPro.m_CrowdDataMgr.m_mapCrowd.GetNextAssoc( pos,strKey, pItem ); if(!pItem || pItem->IsDelete()) continue; CMBGroupChatWnd *pChatWnd = GetGroupChatWnd(pItem->m_strID); if(pChatWnd ) { m_MessengerPro.m_CrowdDataMgr.ListCrowdMember(m_hWnd, pItem->m_strID ); m_MessengerPro.m_CrowdDataMgr.DoLoadShareFileList(m_hWnd, pItem->m_strID, _T(""),_T("DoLoadShareFileList") ); } if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode != 1) { } else { if(m_AMGroupChatFrame.CheckCrowdChat(pItem->m_strID)) { m_MessengerPro.m_CrowdDataMgr.ListCrowdMember(m_hWnd, pItem->m_strID ); m_MessengerPro.m_CrowdDataMgr.DoLoadShareFileList(m_hWnd, pItem->m_strID, _T(""),_T("DoLoadShareFileList") ); } } } } else if ( strMethod == CMD_CKCC ) { if(pMessengerPro) pMessengerPro->m_mapCrowdTrid.RemoveKey(nTrID); AddCrowd(strCrowdID); ShowAMCrowdChat(strCrowdID); } else if ( strMethod == CMD_MCDC ) { if(pMessengerPro) pMessengerPro->m_mapCrowdTrid.RemoveKey(nTrID); RemoveCrowd(strCrowdID); } else if ( strMethod == CMD_MQUT ) { if(pMessengerPro) pMessengerPro->m_mapCrowdTrid.RemoveKey(nTrID); RemoveCrowd(strCrowdID); /* m_AMGroupWnd.RemoveCrowd(strCrowdID); m_AMRecentContactWnd.RemoveContactItem(strCrowdID,AM_VIEWITEMTYPE_CROWD); m_MessengerPro.m_mbLastContact.DeleteContactItem(strCrowdID,AM_VIEWITEMTYPE_CROWD); m_MessengerPro.m_AMDBMgr.RemoveLastContact(strCrowdID,AM_VIEWITEMTYPE_CROWD);*/ } else if ( strMethod == CMD_MCMC ) { if(pMessengerPro) pMessengerPro->m_mapCrowdTrid.RemoveKey(nTrID); if(strCrowdID.IsEmpty()) return ; m_AMGroupWnd.ModifyCrowd(strCrowdID); CMBGroupChatWnd *pGroupChatWnd = GetGroupChatWnd(strCrowdID); if(pGroupChatWnd ) { pGroupChatWnd->UpdateCrowdInfo(); } else { if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode != 1) m_AMGroupChatFrame.UpdateCrowdInfo(strCrowdID); } CMBGroupInfoWnd *pInfoWnd = GetGroupInfoWnd(strCrowdID); if(pInfoWnd) pInfoWnd->ShowCrowdInfo(); else { if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode != 1) m_AmGroupInfoFrame.UpdateCrowdInfo(strCrowdID); } } else if ( strMethod == CMD_MLMC ) { CCrowdItem *pItem = NULL; m_MessengerPro.m_CrowdDataMgr.LookupCrowdItem(strCrowdID,pItem); if(pItem) { POSITION pos; CCrowdUserItem *pUserItem; CMBOrgUser *pUser = NULL; for(pos = pItem->m_listUserItem.GetHeadPosition();pos; pos) { pUserItem = (CCrowdUserItem*)pItem->m_listUserItem.GetNext(pos); if ( pUserItem && !m_MessengerPro.m_pMBOrgListMgr->LookupUser( pUserItem->m_strLoginName,pUser ) ) { m_MessengerPro.m_pMBOrgListMgr->AddMember(AM_VIEWITEMTYPE_USER,pUserItem->m_strLoginName,pUserItem->m_strUserName ); } } } if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode == 1) { CMBGroupChatWnd *pGroupChatWnd = GetGroupChatWnd(strCrowdID); if(pGroupChatWnd ) pGroupChatWnd->UpdateCrowdUser(); CMBGroupInfoWnd *pInfoWnd = GetGroupInfoWnd(strCrowdID); if(pInfoWnd) pInfoWnd->UpdateCrowdUser(); } else { CMBGroupChatWnd *pGroupChatWnd = GetGroupChatWnd(strCrowdID); if(pGroupChatWnd ) pGroupChatWnd->UpdateCrowdUser(); else m_AMGroupChatFrame.UpdateCrowdUser(strCrowdID); CMBGroupInfoWnd *pInfoWnd = GetGroupInfoWnd(strCrowdID); if(pInfoWnd) pInfoWnd->UpdateCrowdUser(); else m_AmGroupInfoFrame.UpdateCrowdUser(strCrowdID); } } else if ( strMethod == CMD_MSSF ) { CHighTime dtDate; REQLOAD_ITEM itemReq; CString strShareID = pSMsg->GetParam( CPN_MSSF_ID ); strCrowdID = pSMsg->GetParam( CPN_MSSF_CROWDID ); CString strUserParam = pSMsg->GetProp( CPN_USERPARAM ); CString strDate = pSMsg->GetParam( CPN_MSSF_DATE ); dtDate.ParseDateTime( strDate ); dtDate.LocalTime( ); strDate = dtDate.Format( _T("%Y-%m-%d %H:%M") ); if( pMessengerPro->m_mapCrowdTrid.Lookup(nTrID,itemReq)) { CShareFileItem *pFileItem = NULL; CCrowdItem* pCrowdItem = NULL; CString strCrowdName = _T(""); m_MessengerPro.m_CrowdDataMgr.LookupCrowdItem(strCrowdID,pCrowdItem); if(pCrowdItem) strCrowdName = pCrowdItem->m_strName; pFileItem = (CShareFileItem*)itemReq.pItem; if( pFileItem) { CString strMsg; CCrowdMsgItem itemMsg; strMsg.Format(_T("%s ¹²ÏíÁËÎļþ£º %s ! "), pFileItem->m_strSenderName,pFileItem->m_strFileName); itemMsg.m_strID = strShareID; itemMsg.m_strCrowdID = strCrowdID; itemMsg.m_strCrowdName = strCrowdName; itemMsg.m_strSender = pFileItem->m_strSender; itemMsg.m_strSenderName = pFileItem->m_strSenderName; itemMsg.m_strSubject = strMsg; itemMsg.m_strContent = strMsg; itemMsg.m_strContentText = strMsg; itemMsg.m_strContentType = CONTYPE_TEXT_TEXT; itemMsg.m_nMsgFlag = CROWDMSGFLAG_SHAREFILE; SYSTEMTIME sysSendTime; dtDate.GetAsSystemTime(sysSendTime); itemMsg.m_tmDate = COleDateTime(sysSendTime.wYear, sysSendTime.wMonth, sysSendTime.wDay, sysSendTime.wHour, sysSendTime.wMinute, sysSendTime.wSecond); CString strShowName; strShowName= GetMessengerPro()->m_pMBOrgListMgr->GetUserShowName(itemMsg.m_strSender); if( !strShowName.IsEmpty()) itemMsg.m_strSenderName = strShowName; m_MessengerPro.m_AMDBMgr.AddGroupFileInfo(strCrowdID,strShareID,pFileItem->m_strFileName,pFileItem->m_nFileSize); itemMsg.m_nReadState = MSG_READSTATE_IOPEN | MSG_READSTATE_DOWNLOAD; m_MessengerPro.m_AMDBMgr.SaveCrowdMsg( &itemMsg); m_MessengerPro.AddContactItem(strCrowdID,strCrowdName , strDate,strMsg, AM_VIEWITEMTYPE_CROWD); AddContactItem(strCrowdID,AM_VIEWITEMTYPE_CROWD); } } CMBGroupChatWnd *pGroupChatWnd = GetGroupChatWnd(strCrowdID); if(pGroupChatWnd ) pGroupChatWnd->ShareFileSuccess( strShareID,strUserParam); else { if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode != 1) m_AMGroupChatFrame.ShareFileSuccess(strCrowdID, strShareID,strUserParam ); } } else if ( strMethod == CMD_MLSF ) { CMBGroupChatWnd *pGroupChatWnd = GetGroupChatWnd(strCrowdID); if(pGroupChatWnd ) pGroupChatWnd->UpdateFileList( ); else { if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode != 1) m_AMGroupChatFrame.UpdateFileList(strCrowdID); } } else if ( strMethod == CMD_MDSF ) { CString strID; CString strFileSFlag; CString strFileID; CString strUserParam; strID = pSMsg->GetParam( CPN_MDSF_ID ); strCrowdID = pSMsg->GetParam( CPN_MDSF_CROWDID ); strFileSFlag = pSMsg->GetParam( CPN_MDSF_FILESFLAG ); strFileID = pSMsg->GetParam( CPN_MDSF_FILEID ); m_MessengerPro.m_AMDBMgr.DeleteGroupFileInfo(strCrowdID,strID); m_MessengerPro.m_AMDBMgr.DeletCrowdMsg(strID,strCrowdID); CMBGroupChatWnd *pGroupChatWnd = GetGroupChatWnd(strCrowdID); if(pGroupChatWnd ) pGroupChatWnd->DeleteShareFileRes(strID,strFileSFlag,strFileID); { if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode != 1) m_AMGroupChatFrame.DeleteShareFileRes(strCrowdID,strID,strFileSFlag,strFileID); } } else if ( strMethod == CMD_MGSF ) { CString strID; CString strFileSFlag; CString strFileID; CString strFileMD5; CString strUserParam; strID = pSMsg->GetParam( CPN_MGSF_ID ); strCrowdID = pSMsg->GetParam( CPN_MGSF_CROWDID ); strFileSFlag = pSMsg->GetParam( CPN_MGSF_FILESFLAG ); strFileID = pSMsg->GetParam( CPN_MGSF_FILEID ); strFileMD5 = pSMsg->GetProp( CPN_FILEMD5 ); strUserParam = pSMsg->GetProp( CPN_USERPARAM ); CMBGroupChatWnd *pGroupChatWnd = GetGroupChatWnd(strCrowdID); if(pGroupChatWnd ) pGroupChatWnd->DownloadShareFileBeginRes(strID,strFileSFlag,strFileID,strUserParam); if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode != 1) m_AMGroupChatFrame.DownloadShareFileBeginRes(strCrowdID,strID,strFileSFlag,strFileID,strUserParam); } else if ( strMethod == CMD_MSDF ) { CString strID; CString strUserParam; strID = pSMsg->GetParam( CPN_MSDF_ID ); strCrowdID = pSMsg->GetParam( CPN_MSDF_CROWDID ); strUserParam = pSMsg->GetProp( CPN_USERPARAM ); CMBGroupChatWnd *pGroupChatWnd = GetGroupChatWnd(strCrowdID); if(pGroupChatWnd ) pGroupChatWnd->DownloadShareFileEndRes(strID); else { if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode != 1) m_AMGroupChatFrame.DownloadShareFileEndRes(strCrowdID,strID); } } else if ( strMethod == CMD_MCAM ) { if(pMessengerPro) pMessengerPro->m_mapCrowdTrid.RemoveKey(nTrID); m_AMGroupWnd.ModifyCrowd(strCrowdID); if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode == 1) { CMBGroupChatWnd *pGroupChatWnd = GetGroupChatWnd(strCrowdID); if(pGroupChatWnd ) pGroupChatWnd->UpdateCrowdUser(); CMBGroupInfoWnd *pInfoWnd = GetGroupInfoWnd(strCrowdID); if(pInfoWnd) pInfoWnd->UpdateCrowdUser(); } else { CMBGroupChatWnd *pGroupChatWnd = GetGroupChatWnd(strCrowdID); if(pGroupChatWnd ) pGroupChatWnd->UpdateCrowdUser(); else m_AMGroupChatFrame.UpdateCrowdUser(strCrowdID); CMBGroupInfoWnd *pInfoWnd = GetGroupInfoWnd(strCrowdID); if(pInfoWnd) pInfoWnd->UpdateCrowdUser(); else m_AmGroupInfoFrame.UpdateCrowdUser(strCrowdID); } } else if ( strMethod == CMD_CKAC ) { if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode == 1) { CMBGroupChatWnd *pGroupChatWnd = GetGroupChatWnd(strCrowdID); if(pGroupChatWnd ) pGroupChatWnd->UpdateCrowdUser(); CMBGroupInfoWnd *pInfoWnd = GetGroupInfoWnd(strCrowdID); if(pInfoWnd) pInfoWnd->UpdateCrowdUser(); } else { CMBGroupChatWnd *pGroupChatWnd = GetGroupChatWnd(strCrowdID); if(pGroupChatWnd ) pGroupChatWnd->UpdateCrowdUser(); else m_AMGroupChatFrame.UpdateCrowdUser(strCrowdID); CMBGroupInfoWnd *pInfoWnd = GetGroupInfoWnd(strCrowdID); if(pInfoWnd) pInfoWnd->UpdateCrowdUser(); else m_AmGroupInfoFrame.UpdateCrowdUser(strCrowdID); } //ChangeCrowdCreator(strCrowdID); } else if ( strMethod == CMD_MCRM ) { if(pMessengerPro) pMessengerPro->m_mapCrowdTrid.RemoveKey(nTrID); CCrowdItem *pCrowdItem = NULL; m_MessengerPro.m_CrowdDataMgr.LookupCrowdItem(strCrowdID, pCrowdItem); if( !pCrowdItem) { m_AMGroupWnd.RemoveCrowd(strCrowdID); } else { m_AMGroupWnd.ModifyCrowd(strCrowdID); } m_AMGroupWnd.ModifyCrowd(strCrowdID); CMBGroupChatWnd *pGroupChatWnd = GetGroupChatWnd(strCrowdID); if(pGroupChatWnd ) { if( !pCrowdItem) { pGroupChatWnd->PostMessage(WM_CLOSE); }else { pGroupChatWnd->UpdateCrowdUser(); } } else { if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode != 1) { if( !pCrowdItem) { m_AMGroupChatFrame.RemoveCrowd(strCrowdID); } else m_AMGroupChatFrame.UpdateCrowdUser(strCrowdID); } } CMBGroupInfoWnd *pInfoWnd = GetGroupInfoWnd(strCrowdID); if(pInfoWnd) { if( !pCrowdItem) { pInfoWnd->PostMessage(WM_CLOSE); }else { pInfoWnd->UpdateCrowdUser(); } } else { if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode != 1) { if( pCrowdItem) { m_AmGroupInfoFrame.UpdateCrowdUser(strCrowdID); } } } } else if ( strMethod == CMD_MSMG ) { CString strMsgID; CString strCrowdID; CString strCrowdName; CString strMsg; CString strDate; CHighTime dtDate; REQLOAD_ITEM item; CString strDlgInfo = _T( "" ); CCrowdMsgItem itemMsg; CCrowdItem *pCrowdItem = NULL; SYSTEMTIME sysSendTime; CHighTime dtTmp; strCrowdID = pSMsg->GetParam( CPN_MSMG_CROWDID ); strMsgID = pSMsg->GetParam( CPN_MSMG_ID ); strDate = pSMsg->GetParam( CPN_MSMG_DATE ); strMsg = pSMsg->GetProp( _T("Body") ); dtDate.ParseDateTime( strDate ); dtDate.LocalTime( ); strDate = dtDate.Format( _T("%Y-%m-%d %H:%M:%S") ); if( !pMessengerPro) return; if(!pMessengerPro->m_mapCrowdTrid.Lookup(nTrID, item)) pMessengerPro->m_mapCrowdTrid.RemoveKey(nTrID); if( strCrowdID.IsEmpty() ) { strCrowdID = item.strGUID; } CString strUserName = m_MessengerPro.GetUserName( ); CString strLogin = m_MessengerPro.GetLoginName( ); pCrowdItem = NULL; strMsg = item.strParam; strMsg.Replace( _T("%0D"), _T("\r") ); m_MessengerPro.m_CrowdDataMgr.LookupCrowdItem(strCrowdID, pCrowdItem); if( pCrowdItem) strCrowdName = pCrowdItem->m_strName; itemMsg.m_strID = strMsgID; itemMsg.m_strCrowdID = strCrowdID; itemMsg.m_strCrowdName = strCrowdName; itemMsg.m_strSender = strLogin; itemMsg.m_strSenderName =strUserName; itemMsg.m_strContent = strMsg; dtTmp.ParseDateTime(strDate); dtTmp.GetAsSystemTime(sysSendTime); itemMsg.m_tmDate = COleDateTime(sysSendTime.wYear, sysSendTime.wMonth, sysSendTime.wDay, sysSendTime.wHour, sysSendTime.wMinute, sysSendTime.wSecond); itemMsg.m_nReadState = MSG_READSTATE_IOPEN; itemMsg.m_strContentText = SChatEditMsg::GetTextContent(itemMsg.m_strContent); m_MessengerPro.m_AMDBMgr.SaveCrowdMsg( &itemMsg); CMBGroupChatWnd *pGroupChatWnd = GetGroupChatWnd(strCrowdID); if(pGroupChatWnd ) pGroupChatWnd->SendMsgSuccess(nTrID,strMsgID); else { if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode != 1) m_AMGroupChatFrame.SendMsgSuccess(nTrID,strMsgID); } CString strSubject,strTempData; strTempData = SChatEditMsg::GetSubjectFromFormatText(strMsg); strTempData = CMBAMUIBaseFun::GetRelSubject(strTempData, 64); strSubject.Format(_T("%s:%s"),strUserName,strTempData); m_MessengerPro.AddContactItem(strCrowdID,strCrowdName , strDate,strSubject, AM_VIEWITEMTYPE_CROWD); AddContactItem(strCrowdID,AM_VIEWITEMTYPE_CROWD); } else { if(pMessengerPro) pMessengerPro->m_mapCrowdTrid.RemoveKey(nTrID); } } void CMBAMWnd::OnCrowdSignInNotify( enum SIGN_IN_STATE nState, long nErrCode ) { CString strToolInfo; CString strTooltip; CString strTitle; strTitle = _T( "µÇ¼
" ); switch (nState) { case CRD_SEARCHING_SERVER: { //strTooltip.LoadString( IDS_LOGIN_SEARCHSERVER ); } break; case CRD_FOUND_SERVER: { //strTooltip.LoadString( IDS_LOGIN_FINDEDSERVER ); } break; case CRD_SEARCH_SERVER_ERR: { // ²éÕÒ·þÎñÆ÷ʧ°Ü strTooltip.Format( _T("Ⱥ·þÎñÁ¬½Óʧ°Ü£¬´íÎóÐÅÏ¢£º²éÕÒ·þÎñÆ÷ʧ°Ü, ´íÎóÂë:%d"), strToolInfo, nErrCode ); // ´¦Àí³ö´íµÄÇé¿ö //ShowTip(strTooltip, TIPICO_TYPE_ERROR, 5, false); // CSTKCommFun::WriteLog(strTooltip); } break; case CRD_CONNECTING: { //strTooltip.LoadString( IDS_LOGIN_CONNECTING ); } break; case CRD_CONNECTED: { //strTooltip.LoadString( IDS_LOGIN_CONNECTED ); } break; case CRD_CONNECT_CLOSED: { // Á¬½Ó¹Ø±Õ // ´¦Àí³ö´íµÄÇé¿ö //ShowTip(strTooltip, TIPICO_TYPE_ERROR, 5, false); strTooltip.Format( _T("Ⱥ·þÎñÁ¬½Óʧ°Ü£¬´íÎóÐÅÏ¢£ºÁ¬½Ó¹Ø±Õ, ´íÎóÂë:%d"), strToolInfo, nErrCode ); // CSTKCommFun::WriteLog(strTooltip); } break; case CRD_CONNECT_ERR: { strToolInfo = _T("Á¬½Ó´íÎó-") + CCrowdCCmderFun::GetErrInfo( nErrCode, m_MessengerPro.m_strLanguage ); if(m_MessengerPro.m_strLanguage == _T("CHS") ) strTooltip.Format( _T("Ⱥ·þÎñÁ¬½Óʧ°Ü£¬´íÎóÐÅÏ¢£º%s, ´íÎóÂë:%d"), strToolInfo, nErrCode ); else strTooltip.Format( _T("CrowdServer connect failed , Error info:%s, ErrCode:%d"), strToolInfo, nErrCode ); //ShowTip(strTooltip,TIPICO_TYPE_ERROR, 5, false); // CSTKCommFun::WriteLog(strTooltip); } break; case CRD_PROXY_CONNECTING: { //strTooltip.LoadString( IDS_LOGIN_CONNECTPROXY ); } break; case CRD_SIGN_IN: { //strTooltip.LoadString( IDS_LOGIN_LOGINSERVER ); } break; case CRD_SIGN_IN_OK: { //strTooltip.LoadString( IDS_LOGIN_SUCCESS ); //Logined( ); return; } break; case CRD_SIGN_IN_ERR: { CString strErrInfo = CCrowdCCmderFun::GetErrInfo( nErrCode, m_MessengerPro.m_strLanguage ); strToolInfo = (_T( "µÇ½ʧ°Ü -- " ) + strErrInfo); if(m_MessengerPro.m_strLanguage == _T("CHS") ) strTooltip.Format( _T("Ⱥ·þÎñÁ¬½Óʧ°Ü£¬´íÎóÐÅÏ¢£º%s, ´íÎóÂë:%d"), strToolInfo, nErrCode ); else strTooltip.Format( _T("CrowdServer connect failed , Error info:%s, ErrCode:%d"), strToolInfo, nErrCode ); // ShowTip(strTooltip,TIPICO_TYPE_ERROR, 5, false); // CSTKCommFun::WriteLog(strTooltip); return ; } break; case CRD_VER_UPDATE: // °æ±¾¸üР{ } break; default: return; break; } return ; } void CMBAMWnd::OnCrowdSignIn(CCrowdMessengerPro *pMessengerPro, enum SIGN_IN_STATE nState, long nErrCode ) { CString strTooltip; OnCrowdSignInNotify( nState, nErrCode ); if(nState == CRD_CONNECT_ERR) { strTooltip.Format( _T("Ⱥ·þÎñÁ¬½Ó´íÎó£¨%s£º%d£©, ´íÎóÂë:%d"),pMessengerPro->m_LoginInfo.m_strServer,pMessengerPro->m_LoginInfo.m_dwPort, nErrCode ); //CSTKCommFun::WriteLog(strTooltip); if ( pMessengerPro == m_MessengerPro.m_CrowdDataMgr.GetMainMessengerPro( ) ) { /*if(m_pTabCrowdCtrl) m_pTabCrowdCtrl->Hide(); m_bCrowdLogined = true; if(m_pButtonCrowdLink) { m_pButtonCrowdLink->Enable(); m_pButtonCrowdLink->Show(); }*/ strTooltip.Format(_T("ȺÖ÷·þÎñÁ¬½Ó´íÎó£¨%s£º%d£©, ´íÎóÂë:%d"),pMessengerPro->m_LoginInfo.m_strServer,pMessengerPro->m_LoginInfo.m_dwPort, nErrCode ); /*if(m_pStaticCrowdLinkHint) { m_pStaticCrowdLinkHint->SetText(strTooltip); m_pStaticCrowdLinkHint->Show(); }*/ m_MessengerPro.m_CrowdDataMgr.SetSignInErrorInfo(strTooltip); SetCrowdLoginInfo(strTooltip); } else { if ( m_MessengerPro.m_CrowdDataMgr.m_mapCrowd.GetCount() < 1) { /*if(m_pButtonCrowdLink) { m_pButtonCrowdLink->Enable(); m_pButtonCrowdLink->Show(); }*/ strTooltip.Format(_T("Ⱥ·þÎñÁ¬½Ó´íÎó£¨%s£º%d£©, ´íÎóÂë:%d"),pMessengerPro->m_LoginInfo.m_strServer,pMessengerPro->m_LoginInfo.m_dwPort, nErrCode ); /*if(m_pStaticCrowdLinkHint) { m_pStaticCrowdLinkHint->SetText(strTooltip); m_pStaticCrowdLinkHint->Show(); }*/ m_MessengerPro.m_CrowdDataMgr.SetSignInErrorInfo(strTooltip); SetCrowdLoginInfo(strTooltip); } } } if( nState == CRD_SIGN_IN_OK) { m_MessengerPro.m_CrowdDataMgr.Logined( ); m_MessengerPro.m_CrowdDataMgr.SetSignInErrorInfo(_T("")); pMessengerPro->Logined( ); SetCrowdLoginRes(true); if ( pMessengerPro == m_MessengerPro.m_CrowdDataMgr.GetMainMessengerPro( ) ) { strTooltip.Format( _T("Á¬½ÓȺÖ÷·þÎñ£¨%s£º%d£©³É¹¦"),pMessengerPro->m_LoginInfo.m_strServer,pMessengerPro->m_LoginInfo.m_dwPort ); /*CSTKCommFun::WriteLog(strTooltip); m_bCrowdLogined = true;*/ if( !m_MessengerPro.m_CrowdDataMgr.LoadCrowdServerList(m_hWnd)) { //CSTKCommFun::WriteLog(m_MessengerPro.m_CrowdDataMgr.GetLastErrInfo()); } /*if(m_pButtonCrowdLink) m_pButtonCrowdLink->Hide(); if(m_pStaticCrowdLinkHint) m_pStaticCrowdLinkHint->Hide();*/ } else { /*if(m_pStaticCrowdLinkHint) { m_pStaticCrowdLinkHint->Hide(); } if(m_MessengerPro.m_CrowdDataMgr.MainCrowdIsLogined()) { if(m_pButtonCrowdLink) m_pButtonCrowdLink->Hide(); if(m_pStaticCrowdLinkHint) m_pStaticCrowdLinkHint->Hide(); }*/ strTooltip.Format( _T("Á¬½ÓȺ·þÎñ£¨%s£º%d£©³É¹¦"),pMessengerPro->m_LoginInfo.m_strServer,pMessengerPro->m_LoginInfo.m_dwPort ); //CSTKCommFun::WriteLog(strTooltip); CString strSex; if ( !m_MessengerPro.m_CrowdDataMgr.LoadCrowdList(this->m_hWnd ,pMessengerPro)) { // CSTKCommFun::WriteLog(m_MessengerPro.m_CrowdDataMgr.GetLastErrInfo()); } //strSex.Format(_T("%d"), m_MessengerPro.m_nSex); //m_MessengerPro.UpdateCrowdUserStatus(m_MessengerPro.m_strLoginName, m_MessengerPro.m_strUserName, AM_USERSTATUS_NLN , strSex); } } } void CMBAMWnd::OnCrowdNtyReceive( CCrowdMessengerPro *pMessengerPro, CQLSysMsg *pSMsg ) { CString strMethod = pSMsg->GetMethod(); if ( strMethod == CMD_NTY ) { CString strNtyType = pSMsg->GetParam( 0 ); if ( strNtyType == NTYTYPE_MSG ) OnCrowdNtyReceiveMSG(pMessengerPro, pSMsg ); else if ( strNtyType == NTYTYPE_SSF ) OnCrowdNtyReceiveSSF( pSMsg ); else if ( strNtyType == NTYTYPE_DSF ) OnCrowdNtyReceiveDSF( pSMsg ); else if ( strNtyType == NTYTYPE_CDC ) OnCrowdNtyReceiveCDC( pSMsg ); else if ( strNtyType == NTYTYPE_CMC ) OnCrowdNtyReceiveCMC( pSMsg ); else if ( strNtyType == NTYTYPE_JAC ) OnCrowdNtyReceiveJAC( pSMsg ); else if ( strNtyType == NTYTYPE_CAC ) OnCrowdNtyReceiveCAC( pSMsg ); else if ( strNtyType ==NTYTYPE_UAC) OnCrowdNtyReceiveUAC( pSMsg ); } else if ( strMethod == CMD_NLN ) { OnCrowdNtyReceiveNLN( pSMsg ); } else if ( strMethod == CMD_FLN ) { OnCrowdNtyReceiveFLN( pSMsg ); } else if ( strMethod == CMD_MOUT ) { pMessengerPro->OffLine(); } } void CMBAMWnd::OnCrowdNtyReceiveMSG(CCrowdMessengerPro *pMessengerPro, CQLSysMsg *pSMsg ) { CString strMsgID; CString strCrowdID; CString strCrowdName; CString strSender; CString strSenderName; CString strDate; CString strMsg; CString strInfo; CCrowdMsgItem itemMsg; CHighTime dtDate; SYSTEMTIME sysSendTime; CHighTime dtTmp; strMsgID = pSMsg->GetParam( 1 ); strCrowdID = pSMsg->GetParam( 2 ); strCrowdName= pSMsg->GetParam( 3 ); strSender = pSMsg->GetParam( 4 ); strSenderName = pSMsg->GetParam( 5 ); strDate = pSMsg->GetParam( 6 ); dtDate.ParseDateTime( strDate ); dtDate.LocalTime( ); strDate = dtDate.Format( _T("%Y-%m-%d %H:%M:%S") ); strMsg = pSMsg->GetProp( _T("Body") ); strMsg.Replace( _T("%0D"), _T("\r") ); itemMsg.m_strID = strMsgID; itemMsg.m_strCrowdID = strCrowdID; itemMsg.m_strCrowdName = strCrowdName; itemMsg.m_strSender = strSender; itemMsg.m_strSenderName = strSenderName; itemMsg.m_strContent = strMsg; dtTmp.ParseDateTime(strDate); dtTmp.GetAsSystemTime(sysSendTime); itemMsg.m_tmDate = COleDateTime(sysSendTime.wYear, sysSendTime.wMonth, sysSendTime.wDay, sysSendTime.wHour, sysSendTime.wMinute, sysSendTime.wSecond); itemMsg.m_strContentText = SChatEditMsg::GetTextContent(itemMsg.m_strContent); // strDlgInfo.Format(_T("%s%s"), strCrowdID, STK_DLGIDENTIFY_SUBSTR_CROWDCHAT); strInfo.Format(_T("Receive Crowd Msg %s(%s)") , strCrowdName, strCrowdID); CString strShowName; strShowName= GetMessengerPro()->m_pMBOrgListMgr->GetUserShowName(strSender); if( !strShowName.IsEmpty()) itemMsg.m_strSenderName = strShowName; //CSTKCommFun::WriteLog(strInfo); CString strSubject,strTempData; strTempData = SChatEditMsg::GetSubjectFromFormatText(strMsg); strTempData = CMBAMUIBaseFun::GetRelSubject(strTempData, 64); strSubject.Format(_T("%s:%s"),strSenderName,strTempData); CMBGroupChatWnd *pGroupChatWnd = GetGroupChatWnd(strCrowdID); if(pGroupChatWnd ) { itemMsg.m_nReadState = MSG_READSTATE_IOPEN; m_MessengerPro.m_AMDBMgr.SaveCrowdMsg( &itemMsg); m_MessengerPro.AddContactItem(strCrowdID,strCrowdName , strDate,strSubject, AM_VIEWITEMTYPE_CROWD); AddContactItem(strCrowdID,AM_VIEWITEMTYPE_CROWD); pGroupChatWnd->SetMsgData(&itemMsg); return; } else { if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode != 1) { CString strChatID; int nType ; GetCurrentShowChat(strChatID,nType); if(nType ==AM_VIEWITEMTYPE_CROWD && strChatID.CompareNoCase(strCrowdID) == 0) { itemMsg.m_nReadState = MSG_READSTATE_IOPEN; m_MessengerPro.m_AMDBMgr.SaveCrowdMsg( &itemMsg); m_MessengerPro.AddContactItem(strCrowdID,strCrowdName , strDate,strSubject, AM_VIEWITEMTYPE_CROWD); AddContactItem(strCrowdID,AM_VIEWITEMTYPE_CROWD); m_AMGroupChatFrame.SendChatData(&itemMsg,true); return; } } } itemMsg.m_nReadState = MSG_READSTATE_NONE; m_MessengerPro.m_AMDBMgr.SaveCrowdMsg( &itemMsg); m_MessengerPro.AddContactItem(strCrowdID,strCrowdName , strDate,strSubject, AM_VIEWITEMTYPE_CROWD); AddContactItem(strCrowdID,AM_VIEWITEMTYPE_CROWD); CCrowdItem* pItem = NULL; if(m_MessengerPro.m_CrowdDataMgr.MainCrowdIsLogined()) { if ( !m_MessengerPro.m_CrowdDataMgr.LookupCrowdItem(strCrowdID,pItem)) { m_MessengerPro.m_CrowdDataMgr.AddCrowdItem(strCrowdID,strCrowdName); m_AMGroupWnd.AddCrowd(strCrowdID); m_MessengerPro.m_CrowdDataMgr.GetCrowdInfo(m_hWnd,strCrowdID,pMessengerPro); } } m_MessengerPro.AddContactItem(strCrowdID,strCrowdName , strDate,strSubject, AM_VIEWITEMTYPE_CROWD); //UpdateUnreadMsgCount(strCrowdID, AM_VIEWITEMTYPE_CROWD); /*if(m_bMsgNotifyFlag) { SetTimer(EVENT_IS_MSG_NOTIFY, TIME_IS_MSG_NOTIFY, NULL); m_bMsgNotifyFlag = FALSE; ProcUserNotify( EVENTSOUND_NEWMSG, itemMsg.m_strCrowdID ); }*/ AMCrowdMsgReceiveTip( &itemMsg, true ); UpdateUnreadMsgCount( ); } bool CMBAMWnd::AMCrowdMsgReceiveTip( CCrowdMsgItem *pMsg, bool bAMUnreadMsg /*= false*/ ) { CAMUnreadMsg *pAMUnreadMsg = NULL; bool bHaveNewMsg = false; if ( !pMsg ) return false; if ( pMsg->m_strID.IsEmpty( ) ) { TRACE( _T("Crowd msgreceive msgid is empty!\r\n") ); return false; } if ( pMsg->m_strCrowdID.IsEmpty( ) ) { TRACE( _T("Crowd msgreceive crowdid is empty!\r\n") ); return false; } pAMUnreadMsg = m_TipMgr.GetAMUnreadMsg(pMsg->m_strID, AMUnreadMsg_TYPE_CROWD ); if (pAMUnreadMsg == NULL) { int nRight = MSGRIGHT_PROMPTSHOW; CString strCrowdID; CString strChatDlg; strCrowdID = pMsg->m_strCrowdID; nRight = GetContactMsgRight(pMsg->m_strCrowdID,AM_VIEWITEMTYPE_CROWD); if(nRight == MSGRIGHT_AUTOSHOW) { m_MessengerPro.m_AMDBMgr.SetCrowdMsgReaded(pMsg->m_strID); if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode != 1) { m_AMGroupChatFrame.SendChatData(pMsg,true); } else { CMBGroupChatWnd *pGroupChatWnd = GetGroupChatWnd(strCrowdID); if( !pGroupChatWnd ) { CCrowdItem *pCrowdItem = NULL; m_MessengerPro.m_CrowdDataMgr.LookupCrowdItem(strCrowdID,pCrowdItem); if(pCrowdItem) ShowGroupChatWnd(pCrowdItem); else { CCrowdItem itemCrowd; itemCrowd.m_strID = strCrowdID; itemCrowd.m_strName = pMsg->m_strCrowdName; ShowGroupChatWnd(&itemCrowd); } } if( pGroupChatWnd ) pGroupChatWnd->SetMsgData(pMsg); } return true; } bHaveNewMsg = true; pAMUnreadMsg = new CAMUnreadMsg; pAMUnreadMsg->m_nAMUnreadMsgType =AMUnreadMsg_TYPE_CROWD; pAMUnreadMsg->m_strCrowdID = pMsg->m_strCrowdID; pAMUnreadMsg->m_strSendDate = CMBAMDBFun::FormatDBTIMEToStr(pMsg->m_tmDate); pAMUnreadMsg->m_strMsgID = pMsg->m_strID; pAMUnreadMsg->m_strCrowdName = pMsg->m_strCrowdName; m_TipMgr.AddAMUnreadMsg( pAMUnreadMsg, !bAMUnreadMsg ); pAMUnreadMsg->m_strSubject = pMsg->m_strContentText; pAMUnreadMsg->m_strSender = pMsg->m_strSender; pAMUnreadMsg->m_strSenderName = pMsg->m_strSenderName; pAMUnreadMsg->m_nFlag = pMsg->m_nMsgFlag; pAMUnreadMsg->m_itemCrowdMsg =*pMsg; } //------------------------------------------------------ // ÏûÏ¢Ìáʾ //------------------------------------------------------ if ( bHaveNewMsg ) { NotifyReceiveMsg(); //ShowMsgNotify( ); } return true; } void CMBAMWnd::OnCrowdNtyReceiveSSF( CQLSysMsg *pSMsg ) { CString strID; CString strCrowdID; CString strCrowdName; CString strSender; CString strSenderName; CString strDate; long nFileType = 0; CString strFileName; long nFileSize = 0; long nFileEnType; CString strFileID; CString strFileGroup; CString strInfo; CHighTime dtDate; CCrowdItem *pItem = NULL; CShareFileItem *pFileItem = NULL; strID = pSMsg->GetParam( 1 ); strCrowdID = pSMsg->GetParam( 2 ); strCrowdName= pSMsg->GetParam( 3 ); strSender = pSMsg->GetParam( 4 ); strSenderName = pSMsg->GetParam( 5 ); strDate = pSMsg->GetParam( 6 ); dtDate.ParseDateTime( strDate ); dtDate.LocalTime( ); strDate = dtDate.Format( _T("%Y-%m-%d %H:%M:%S") ); nFileType = pSMsg->GetParamInt( 7 ); strFileName = pSMsg->GetParam( 8 ); nFileSize = pSMsg->GetParamInt( 9 ); nFileEnType = pSMsg->GetParamInt( 10 ); strFileGroup= pSMsg->GetProp( CPN_FILEGROUP ); pFileItem = NULL; pItem = NULL; m_MessengerPro.m_CrowdDataMgr.LookupCrowdItem(strCrowdID, pItem ); if( !pItem) return; pFileItem = new CShareFileItem; pFileItem->m_strShareFileID = strID; pFileItem->m_strCrowdID = strCrowdID; pFileItem->m_strSender = strSender; pFileItem->m_strSenderName = strSenderName; pFileItem->m_strFileName = strFileName; pFileItem->m_dtSendDate = dtDate; pFileItem->m_nFileSize = nFileSize; pFileItem->m_nType = nFileType; pFileItem->m_nEnType = nFileEnType; pFileItem->m_strFileGroup = strFileGroup; pItem->AddFileItem(pFileItem); strInfo.Format( _T("%sÔÚȺ£¨%s£©·ÖÏíÁËÎļþ£º%s"), strSenderName, strCrowdName, strFileName ); ShowAMToolTip( strInfo); CString strMsg; CCrowdMsgItem itemMsg; strMsg.Format(_T("%s ¹²ÏíÁËÎļþ£º %s ! "), strSenderName,strFileName); itemMsg.m_strID = strID; itemMsg.m_strCrowdID = strCrowdID; itemMsg.m_strCrowdName = strCrowdName; itemMsg.m_strSender = strSender; itemMsg.m_strSenderName = strSenderName; itemMsg.m_strSubject = strMsg; itemMsg.m_strContent = strMsg; itemMsg.m_strContentText = strMsg; itemMsg.m_strContentType = CONTYPE_TEXT_TEXT; itemMsg.m_nMsgFlag = CROWDMSGFLAG_SHAREFILE; SYSTEMTIME sysSendTime; dtDate.GetAsSystemTime(sysSendTime); itemMsg.m_tmDate = COleDateTime(sysSendTime.wYear, sysSendTime.wMonth, sysSendTime.wDay, sysSendTime.wHour, sysSendTime.wMinute, sysSendTime.wSecond); CString strShowName; strShowName= GetMessengerPro()->m_pMBOrgListMgr->GetUserShowName(strSender); if( !strShowName.IsEmpty()) itemMsg.m_strSenderName = strShowName; m_MessengerPro.m_AMDBMgr.AddGroupFileInfo(strCrowdID,strID,strFileName,nFileSize); CMBGroupChatWnd *pGroupChatWnd = GetGroupChatWnd(strCrowdID); if(pGroupChatWnd ) { pGroupChatWnd->UpdateFileList(); itemMsg.m_nReadState = MSG_READSTATE_IOPEN; m_MessengerPro.m_AMDBMgr.SaveCrowdMsg( &itemMsg); m_MessengerPro.AddContactItem(strCrowdID,strCrowdName , strDate,strMsg, AM_VIEWITEMTYPE_CROWD); AddContactItem(strCrowdID,AM_VIEWITEMTYPE_CROWD); pGroupChatWnd->SetMsgData(&itemMsg); return; } else { if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode != 1) { CMBGroupChatData * pMBChatData = NULL; CString strChatID; int nType ; GetCurrentShowChat(strChatID,nType); if(nType ==AM_VIEWITEMTYPE_CROWD && strChatID.CompareNoCase(strCrowdID) == 0) { m_AMGroupChatFrame.UpdateFileList(strCrowdID); itemMsg.m_nReadState = MSG_READSTATE_IOPEN; m_MessengerPro.m_AMDBMgr.SaveCrowdMsg( &itemMsg); m_MessengerPro.AddContactItem(strCrowdID,strCrowdName , strDate,strMsg, AM_VIEWITEMTYPE_CROWD); AddContactItem(strCrowdID,AM_VIEWITEMTYPE_CROWD); m_AMGroupChatFrame.SendChatData(&itemMsg,true); return; } } } itemMsg.m_nReadState = MSG_READSTATE_NONE; m_MessengerPro.m_AMDBMgr.SaveCrowdMsg( &itemMsg); m_MessengerPro.AddContactItem(strCrowdID,strCrowdName , strDate,strMsg, AM_VIEWITEMTYPE_CROWD); AddContactItem(strCrowdID,AM_VIEWITEMTYPE_CROWD); //m_AMGroupChatFrame.SendChatData(&itemMsg,true); AMCrowdMsgReceiveTip( &itemMsg, true ); UpdateUnreadMsgCount( ); /*if(m_bMsgNotifyFlag) { SetTimer(EVENT_IS_MSG_NOTIFY, TIME_IS_MSG_NOTIFY, NULL); m_bMsgNotifyFlag = FALSE; ProcUserNotify( EVENTSOUND_NEWMSG, itemMsg.m_strCrowdID ); }*/ } void CMBAMWnd::OnCrowdNtyReceiveDSF( CQLSysMsg *pSMsg ) { CString strID; CString strCrowdID; CString strSender; CString strSenderName; CString strDate; CString strInfo; CHighTime dtDate; CString strCrowdName; CString strFileName; CCrowdItem *pItem = NULL; strID = pSMsg->GetParam( 1 ); strCrowdID = pSMsg->GetParam( 2 ); strCrowdName= pSMsg->GetParam( 3 ); strSender = pSMsg->GetParam( 4 ); strSenderName = pSMsg->GetParam( 5 ); strDate = pSMsg->GetParam( 6 ); dtDate.ParseDateTime( strDate ); dtDate.LocalTime( ); strDate = dtDate.Format( _T("%Y-%m-%d %H:%M:%S") ); strFileName = pSMsg->GetParam( 7 ); pItem = NULL; m_MessengerPro.m_CrowdDataMgr.LookupCrowdItem(strCrowdID,pItem ); if( pItem) pItem->RemoveFileItem(strID); strInfo.Format( _T("%sɾ³ýÁËȺ£¨%s£©·ÖÏíÎļþ '%s'"), strSenderName, strCrowdName, strFileName ); ShowAMToolTip( strInfo); CMBGroupChatWnd *pGroupChatWnd = GetGroupChatWnd(strCrowdID); if(pGroupChatWnd ) { pGroupChatWnd->DeleteShareFile(strID); } else { if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode != 1) m_AMGroupChatFrame.DeleteShareFile(strCrowdID,strID); } m_MessengerPro.m_AMDBMgr.DeletCrowdMsg(strID,strCrowdID); m_MessengerPro.m_AMDBMgr.DeleteGroupFileInfo(strCrowdID,strID); } void CMBAMWnd::OnCrowdNtyReceiveCDC( CQLSysMsg *pSMsg ) { CString strCrowdID; CString strCrowdName; CString strOperator; CString strOperatorName; CString strDate; CString strInfo; CHighTime dtDate; CCrowdItem *pItem = NULL; strCrowdID = pSMsg->GetParam( 1 ); strCrowdName= pSMsg->GetParam( 2 ); strOperator = pSMsg->GetParam( 3 ); strOperatorName = pSMsg->GetParam( 4 ); strDate = pSMsg->GetParam( 5 ); dtDate.ParseDateTime( strDate ); dtDate.LocalTime( ); strDate = dtDate.Format( _T("%Y-%m-%d %H:%M:%S") ); if(strCrowdID.IsEmpty()) return ; RemoveCrowd(strCrowdID); pItem = NULL; int nType = CROWD_TYPE_NORMAL; if(m_MessengerPro.m_CrowdDataMgr.LookupCrowdItem(strCrowdID,pItem)) { if(pItem) { nType = pItem->m_nType; } m_MessengerPro.m_CrowdDataMgr.RemoveCrowdItem(strCrowdID); pItem = NULL; } strInfo.Format( _T("%sʱ%sɾ³ý%s%s"), strDate,strOperatorName, CMBAMUIBaseFun::GetCrowdTypeName(nType), strCrowdName ); ShowAMToolTip( strInfo); } void CMBAMWnd::OnCrowdNtyReceiveCMC( CQLSysMsg *pSMsg ) { CString strCrowdID; CString strCrowdName; CString strOperator; CString strOperatorName; CString strDate; CString strInfo; CString strCrowdDesc; CString strCrowdNotice; long nCrowdVerify(0); long nCrowdState(0); CHighTime dtDate; CCrowdItem *pItem = NULL; int nType = CROWD_TYPE_NORMAL; strCrowdID = pSMsg->GetParam( 1 ); strCrowdName= pSMsg->GetParam( 2 ); strOperator = pSMsg->GetParam( 3 ); strOperatorName = pSMsg->GetParam( 4 ); strDate = pSMsg->GetParam( 5 ); dtDate.ParseDateTime( strDate ); dtDate.LocalTime( ); strDate = dtDate.Format( _T("%Y-%m-%d %H:%M:%S") ); strCrowdDesc = pSMsg->GetProp( CPN_NAME_DESC ); nCrowdVerify = _ttoi( pSMsg->GetProp( CPN_NAME_VERIFY ) ); nCrowdState = _ttoi( pSMsg->GetProp( CPN_NAME_STATE ) ); strCrowdNotice = pSMsg->GetProp( CPN_NAME_NOTICE ); pItem = NULL; if(m_MessengerPro.m_CrowdDataMgr.LookupCrowdItem(strCrowdID, pItem )) { if(pItem) { pItem->m_strName = strCrowdName; pItem->m_strNotice = strCrowdNotice; pItem->m_strDesc = strCrowdDesc; pItem->m_nVerify = nCrowdVerify; pItem->m_nState = nCrowdState; nType = pItem->m_nType; } } strInfo.Format( _T("%sʱ%sÐÞ¸Ä%s£¨%s£©ÐÅÏ¢"), strDate,strOperatorName,CMBAMUIBaseFun::GetCrowdTypeName(nType), strCrowdName ); ShowAMToolTip( strInfo); CMBGroupChatWnd *pGroupChatWnd = GetGroupChatWnd(strCrowdID); if(pGroupChatWnd ) { pGroupChatWnd->UpdateCrowdInfo(); } else { if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode != 1) m_AMGroupChatFrame.UpdateCrowdInfo(strCrowdID); } CMBGroupInfoWnd *pInfoWnd = GetGroupInfoWnd(strCrowdID); if(pInfoWnd) pInfoWnd->ShowCrowdInfo(); } void CMBAMWnd::OnCrowdNtyReceiveJAC( CQLSysMsg *pSMsg ) { CString strCrowdID; CString strCrowdName; CString strOperator; CString strOperatorName; CString strDate; CString strInfo; CString strUserInfos; CHighTime dtDate; CCrowdItem *pItem = NULL; CString strDlgInfo; CCrowdUserItem *pUserItem = NULL; CMBOrgUser *pUser = NULL; CString strLoginName; CString strUserName; CString strSex; CString strStatus ; CString strSubInfo; CString strAddUsers = _T(""); strCrowdID = pSMsg->GetParam( 2 ); strCrowdName= pSMsg->GetParam( 3 ); strOperator = pSMsg->GetParam( 4 ); strOperatorName = pSMsg->GetParam( 5 ); strDate = pSMsg->GetParam( 6 ); dtDate.ParseDateTime( strDate ); dtDate.LocalTime( ); strDate = dtDate.Format( _T("%Y-%m-%d %H:%M:%S") ); strUserInfos = pSMsg->GetProp( CPN_NAME_USER ); pItem = NULL; if( !m_MessengerPro.m_CrowdDataMgr.LookupCrowdItem(strCrowdID, pItem )) { m_MessengerPro.m_CrowdDataMgr.AddCrowdItem(strCrowdID,strCrowdName); } if( m_MessengerPro.m_CrowdDataMgr.LookupCrowdItem(strCrowdID, pItem )) { if(pItem) { pItem->m_strCreater = strOperator; pItem->m_strCreaterName = strOperatorName; while( !strUserInfos.IsEmpty()) { CMBOrgFunc::GetElementItem( strUserInfos, strSubInfo, _T("|") ); CMBOrgFunc::GetElementItem( strSubInfo, strLoginName, _T(";") ); CMBOrgFunc::GetElementItem( strSubInfo, strUserName, _T(";") ); CMBOrgFunc::GetElementItem( strSubInfo, strSex, _T(";") ); CMBOrgFunc::GetElementItem( strSubInfo, strStatus, _T(";") ); strAddUsers += strLoginName + _T("|"); pUserItem = new CCrowdUserItem; pUserItem->m_strCrowdID = strCrowdID; pUserItem->m_strLoginName = strLoginName; pUserItem->m_strUserName = strUserName; pUserItem->m_nSex = _tstol(strSex); pItem->AddUserItem(pUserItem); m_MessengerPro.m_CrowdDataMgr.AddUser(strLoginName, strUserName); if(m_MessengerPro.m_CrowdDataMgr.LookupUser(strLoginName,pUser )) { if( pUser) { pUser->m_strSex = strSex; pUser->m_nStatus = _tstol(strStatus); if( CMBOrgFunc::IsOnlineUser( pUser->m_nStatus ) ) { pItem->m_nOnLineUser += 1; if(pItem->m_nOnLineUser > pItem->m_listUserItem.GetCount()) pItem->m_nOnLineUser = pItem->m_listUserItem.GetCount(); } } } } } } m_AMGroupWnd.ModifyCrowd(strCrowdID); if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode == 1) { CMBGroupChatWnd *pGroupChatWnd = GetGroupChatWnd(strCrowdID); if(pGroupChatWnd ) { pGroupChatWnd->UpdateCrowdUser(); } CMBGroupInfoWnd *pInfoWnd = GetGroupInfoWnd(strCrowdID); if(pInfoWnd) pInfoWnd->UpdateCrowdUser(); } else { CMBGroupChatWnd *pGroupChatWnd = GetGroupChatWnd(strCrowdID); if(pGroupChatWnd ) { pGroupChatWnd->UpdateCrowdUser(); } else m_AMGroupChatFrame.UpdateCrowdUser(strCrowdID); CMBGroupInfoWnd *pInfoWnd = GetGroupInfoWnd(strCrowdID); if(pInfoWnd) pInfoWnd->UpdateCrowdUser(); else m_AmGroupInfoFrame.UpdateCrowdUser(strCrowdID); } } void CMBAMWnd::OnCrowdNtyReceiveLAC( CQLSysMsg *pSMsg ) { CString strCrowdID; CString strCrowdName; CString strOperator; CString strOperatorName; CString strDate; CString strInfo; CString strUserInfos; CHighTime dtDate; CCrowdItem *pItem = NULL; strCrowdID = pSMsg->GetParam( 2 ); strCrowdName= pSMsg->GetParam( 3 ); strOperator = pSMsg->GetParam( 4 ); strOperatorName = pSMsg->GetParam( 5 ); strDate = pSMsg->GetParam( 6 ); dtDate.ParseDateTime( strDate ); dtDate.LocalTime( ); strDate = dtDate.Format( _T("%Y-%m-%d %H:%M:%S") ); strUserInfos = pSMsg->GetProp( CPN_NAME_USER ); pItem = NULL; if( m_MessengerPro.m_CrowdDataMgr.LookupCrowdItem(strCrowdID, pItem)) { if(pItem) { pItem->RemoveUserItem(strUserInfos); CMBOrgUser *pUser = NULL; if( m_MessengerPro.m_CrowdDataMgr.LookupUser(strUserInfos,pUser )) { if( pUser ) { if( CMBOrgFunc::IsOnlineUser( pUser->m_nStatus ) ) { pItem->m_nOnLineUser--; if(pItem->m_nOnLineUser < 0) pItem->m_nOnLineUser = 0; } } } } } m_AMGroupWnd.ModifyCrowd(strCrowdID); if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode == 1) { CMBGroupChatWnd *pGroupChatWnd = GetGroupChatWnd(strCrowdID); if(pGroupChatWnd ) { pGroupChatWnd->UpdateCrowdUser(); } CMBGroupInfoWnd *pInfoWnd = GetGroupInfoWnd(strCrowdID); if(pInfoWnd) pInfoWnd->UpdateCrowdUser(); } else { CMBGroupChatWnd *pGroupChatWnd = GetGroupChatWnd(strCrowdID); if(pGroupChatWnd ) { pGroupChatWnd->UpdateCrowdUser(); } else m_AMGroupChatFrame.UpdateCrowdUser(strCrowdID); CMBGroupInfoWnd *pInfoWnd = GetGroupInfoWnd(strCrowdID); if(pInfoWnd) pInfoWnd->UpdateCrowdUser(); else m_AmGroupInfoFrame.UpdateCrowdUser(strCrowdID); } } void CMBAMWnd::OnCrowdNtyReceiveCAC( CQLSysMsg *pSMsg ) { CString strCrowdID; CString strCrowdName; CString strOperator; CString strOperatorName; CString strDate; CString strInfo; CString strUserInfos; CHighTime dtDate; strCrowdID = pSMsg->GetParam( 2 ); strCrowdName= pSMsg->GetParam( 3 ); strOperator = pSMsg->GetParam( 4 ); strOperatorName = pSMsg->GetParam( 5 ); strDate = pSMsg->GetParam( 6 ); dtDate.ParseDateTime( strDate ); dtDate.LocalTime( ); strDate = dtDate.Format( _T("%Y-%m-%d %H:%M:%S") ); m_MessengerPro.m_CrowdDataMgr.ChangeCrowdCreator(strCrowdID,strOperator,strOperatorName ); if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode == 1) { CMBGroupChatWnd *pGroupChatWnd = GetGroupChatWnd(strCrowdID); if(pGroupChatWnd ) { pGroupChatWnd->UpdateCrowdUser(); } CMBGroupInfoWnd *pInfoWnd = GetGroupInfoWnd(strCrowdID); if(pInfoWnd) pInfoWnd->UpdateCrowdUser(); } else { CMBGroupChatWnd *pGroupChatWnd = GetGroupChatWnd(strCrowdID); if(pGroupChatWnd ) { pGroupChatWnd->UpdateCrowdUser(); } else m_AMGroupChatFrame.UpdateCrowdUser(strCrowdID); CMBGroupInfoWnd *pInfoWnd = GetGroupInfoWnd(strCrowdID); if(pInfoWnd) pInfoWnd->UpdateCrowdUser(); else m_AmGroupInfoFrame.UpdateCrowdUser(strCrowdID); } strInfo.Format( _T("%s:'%s'ȺÖ÷±»¸ü»»³É'%s'"), strDate, strCrowdName,strOperatorName ); // ShowTip(strInfo, TIPICO_TYPE_INFO, 8, false ); } void CMBAMWnd::OnCrowdNtyReceiveUAC( CQLSysMsg *pSMsg ) { CString strCrowdID; CString strCrowdName; CString strOperator; CString strOperatorName; CString strDate; CString strInfo; CHighTime dtDate; CCrowdItem *pItem = NULL; strCrowdID = pSMsg->GetParam( 2 ); strCrowdName= pSMsg->GetParam( 3 ); strOperator = pSMsg->GetParam( 4 ); strOperatorName = pSMsg->GetParam( 5 ); strDate = pSMsg->GetParam( 6 ); dtDate.ParseDateTime( strDate ); dtDate.LocalTime( ); strDate = dtDate.Format( _T("%Y-%m-%d %H:%M:%S") ); pItem = NULL; if( m_MessengerPro.m_CrowdDataMgr.LookupCrowdItem(strCrowdID, pItem)) { if(pItem) { pItem->RemoveUserItem(strOperator); CMBOrgUser *pUser = NULL; if( m_MessengerPro.m_CrowdDataMgr.LookupUser(strOperator,pUser )) { if( pUser ) { if( CMBOrgFunc::IsOnlineUser( pUser->m_nStatus ) ) { pItem->m_nOnLineUser--; if(pItem->m_nOnLineUser < 0) pItem->m_nOnLineUser = 0; } } } } } m_AMGroupWnd.ModifyCrowd(strCrowdID); if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode == 1) { CMBGroupChatWnd *pGroupChatWnd = GetGroupChatWnd(strCrowdID); if(pGroupChatWnd ) { pGroupChatWnd->UpdateCrowdUser(); } CMBGroupInfoWnd *pInfoWnd = GetGroupInfoWnd(strCrowdID); if(pInfoWnd) pInfoWnd->UpdateCrowdUser(); } else { CMBGroupChatWnd *pGroupChatWnd = GetGroupChatWnd(strCrowdID); if(pGroupChatWnd ) { pGroupChatWnd->UpdateCrowdUser(); } else m_AMGroupChatFrame.UpdateCrowdUser(strCrowdID); CMBGroupInfoWnd *pInfoWnd = GetGroupInfoWnd(strCrowdID); if(pInfoWnd) pInfoWnd->UpdateCrowdUser(); else m_AmGroupInfoFrame.UpdateCrowdUser(strCrowdID); } } void CMBAMWnd::OnCrowdNtyReceiveNLN( CQLSysMsg *pSMsg ) { CString strInfo; CString strStatus; CString strLoginName; CString strUserName; long nTermType = 0; CString strUserSex; AMUSERSTATUS nStatus; POSITION pos; strStatus = pSMsg->GetParam( 0 ); strLoginName = pSMsg->GetParam( 1 ); strUserName = pSMsg->GetParam( 2 ); nTermType = _ttoi( pSMsg->GetProp( _T("TermType") ) ); strUserSex = pSMsg->GetProp( _T("Sex") ); nStatus = (AMUSERSTATUS)CMBAMUIBaseFun::GetUserStatus( strStatus ); if(strUserName == strLoginName) strUserName = _T(""); for ( pos = m_MessengerPro.m_CrowdDataMgr.m_mapCrowd.GetStartPosition(); pos; ) { CString strKey; CCrowdItem *pCrowdItem = NULL; m_MessengerPro.m_CrowdDataMgr.m_mapCrowd.GetNextAssoc( pos ,strKey,pCrowdItem ); if(pCrowdItem && pCrowdItem->FindUserItem(strLoginName)) { pCrowdItem->m_nOnLineUser += 1; if(pCrowdItem->m_nOnLineUser < 0) pCrowdItem->m_nOnLineUser = 0; else if(pCrowdItem->m_nOnLineUser > pCrowdItem->m_listUserItem.GetCount()) { pCrowdItem->m_nOnLineUser = pCrowdItem->m_listUserItem.GetCount(); } CMBGroupChatWnd *pGroupChatWnd = GetGroupChatWnd(pCrowdItem->m_strID); if(pGroupChatWnd ) { pGroupChatWnd->UpdateCrowdUser(); } else { if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode != 1) m_AMGroupChatFrame.UpdateCrowdUser(pCrowdItem->m_strID); } } } } void CMBAMWnd::OnCrowdNtyReceiveFLN( CQLSysMsg *pSMsg ) { CString strInfo; CString strLoginName; int nStatus; POSITION pos; strLoginName = pSMsg->GetParam( 0 ); nStatus = m_MessengerPro.m_pMBOrgListMgr->GetUserStatus(strLoginName); for ( pos = m_MessengerPro.m_CrowdDataMgr.m_mapCrowd.GetStartPosition(); pos; ) { CString strKey; CCrowdItem *pCrowdItem = NULL; m_MessengerPro.m_CrowdDataMgr.m_mapCrowd.GetNextAssoc( pos ,strKey,pCrowdItem ); if(pCrowdItem && pCrowdItem->FindUserItem(strLoginName)) { pCrowdItem->m_nOnLineUser -= 1; if(pCrowdItem->m_nOnLineUser < 0) pCrowdItem->m_nOnLineUser = 0; CMBGroupChatWnd *pGroupChatWnd = GetGroupChatWnd(pCrowdItem->m_strID); if(pGroupChatWnd ) { pGroupChatWnd->UpdateCrowdUser(); } else { if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode != 1) m_AMGroupChatFrame.UpdateCrowdUser(pCrowdItem->m_strID); } } } } void CMBAMWnd::SetCrowdLoginInfo(CString strFailedInfo ) { if(!m_bLayoutInited) return; SStatic *pTxt = m_pPageRoot->FindChildByName2(_T("lbl_groupsigninhint")); if(pTxt) pTxt->SetWindowText(strFailedInfo); } void CMBAMWnd::SetCrowdLoginRes(bool bRes) { if(!m_bLayoutInited) return; if(bRes ) { STabCtrl *pTab = m_pPageRoot->FindChildByName2(L"tab_group_panel"); if(pTab) pTab->SetCurSel(1); } else { STabCtrl *pTab = m_pPageRoot->FindChildByName2(L"tab_group_panel"); if(pTab) pTab->SetCurSel(3); m_pPageRoot->FindChildByName(L"btn_grouprelogin")->SetVisible(true); } } // ÏÔʾ¸ÃÓû§ÏûÏ¢ void CMBAMWnd::ShowChatObjMsg( CString strID, int nType) { if(::IsIconic(m_hWnd)) ::ShowWindow(m_hWnd,SW_SHOWNORMAL); ::SetWindowPos(m_hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE|SWP_NOACTIVATE|SWP_NOZORDER); SetForegroundWindow(m_hWnd); if( !m_bLayoutInited) return; if( strID.IsEmpty() ) return ; STabCtrl *pTab = m_pHostWnd->FindChildByName2(L"tab_main"); if(pTab) { pTab->SetCurSel(_T("AM")); STabCtrl *pTab2 = m_pPageRoot->FindChildByName2(L"tab_share_panel"); if( !pTab2) pTab2->SetCurSel(0); } if(nType ==AM_VIEWITEMTYPE_CROWD ) { ShowAMCrowdChat(strID); } else { ShowAMUserChat(strID,strID); } if ( ::IsIconic(m_hWnd) ) { ShowWindow(m_hWnd,SW_SHOWNORMAL); } else ShowWindow( m_hWnd,SW_SHOW ); ::SetWindowPos(m_hWnd,HWND_TOPMOST,0,0,0,0, SWP_SHOWWINDOW | SWP_NOMOVE |SWP_NOSIZE); ::SetWindowPos(m_hWnd,HWND_NOTOPMOST,0,0,0,0, SWP_SHOWWINDOW| SWP_NOMOVE |SWP_NOSIZE); } // ºöÂÔÏûÏ¢ void CMBAMWnd::IgnoreChatObjMsg( CString strID, int nType) { if( strID.IsEmpty() ) return ; m_TipMgr.SetMsgIgnore(strID,nType); UpdateUnreadMsgCount(); NotifyReceiveMsg(); } // ºöÂÔËùÓÐÏûÏ¢ void CMBAMWnd::IgnoreAllUnreadMsg( ) { m_TipMgr.SetMsgIgnore(_T(""),0); UpdateUnreadMsgCount(); NotifyReceiveMsg(); } void CMBAMWnd::OpenAMUnreadMsg(CString strID, int nType ) { CString strChatDlg; if(nType ==AM_VIEWITEMTYPE_CROWD ) { strChatDlg.Format(_T("1-%s"),strID ); m_TipMgr.OpenAMUnreadMsg(_T(""), strChatDlg); UpdateUnreadMsgCount(); } else { strChatDlg.Format(_T("0-%s"),strID ); m_TipMgr.OpenAMUnreadMsg(strID, strChatDlg); } NotifyReceiveMsg(); } void CMBAMWnd::GetCurrentShowChat(CString &strChatID,int &nType ) { strChatID = _T(""); nType = 0; int nSel = 0; if ( !IsWindowVisible(m_hWnd)) { return; } STabCtrl *pTab = m_pHostWnd->FindChildByName2(L"tab_main"); if( !pTab) return; CString strTitle = _T(""); nSel = pTab->GetCurSel(); STabPage *pPage = pTab->GetItem(nSel); if(pPage) strTitle = pPage->GetTitle(); if(strTitle.CompareNoCase( _T("AM")) != 0) { return; } STabCtrl *pTab3 = m_pPageRoot->FindChildByName2(L"tab_share_panel"); if( !pTab3) return; nSel = pTab3->GetCurSel(); if( nSel > 0) return; STabCtrl *pTab2 = m_pHostWnd->FindChildByName2(L"tab_sharework_panel"); if( !pTab2) return; nSel = pTab2->GetCurSel(); if(nSel == 0) { CMBChatData * pMBChatData = NULL; pMBChatData = m_AMChatFrame.GetCurChatData(); if(pMBChatData) { strChatID = pMBChatData->m_itemReceiver.m_strLoginName ; } nType = AM_VIEWITEMTYPE_USER; } else if(nSel == 2) { CMBGroupChatData * pMBChatData = NULL; pMBChatData = m_AMGroupChatFrame.GetCurChatData(); if(pMBChatData) { strChatID = pMBChatData->m_strCrowdID ; } nType = AM_VIEWITEMTYPE_CROWD; } } void CMBAMWnd::ShowWnd() { if( !m_bLayoutInited) return; STabCtrl *pTab = m_pPageRoot->FindChildByName2(L"tab_share_panel"); if( !pTab) return; int nSel = pTab->GetCurSel(); if(nSel == 1 ) { m_AMFriendWnd.OnInit(m_pHostWnd); } else if(nSel == 2 ) { m_AMOrgWnd.OnInit(m_pHostWnd); } else if(nSel == 3 ) { m_AMGroupWnd.ShowWnd(); } else { m_AMRecentContactWnd.ShowWnd(); } } void CMBAMWnd::OnShowContanctAttr( CString strID,CString strName,int nType) { if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode != 1) { EventCloseGungHoDetailWnd *pTmpEvt = new EventCloseGungHoDetailWnd(NULL); SNotifyCenter::getSingleton().FireEventAsync(pTmpEvt); pTmpEvt->Release(); } if(nType == AM_VIEWITEMTYPE_USER )// { CMBOrgUser *pUser = NULL; m_MessengerPro.m_pMBOrgListMgr->LookupUser(strID, pUser); if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode != 1) { STabCtrl *pTab2 = m_pHostWnd->FindChildByName2(L"tab_sharework_panel"); if(!pUser) { if(pTab2) pTab2->SetCurSel(4); return; } if(pTab2) pTab2->SetCurSel(1); } if(pUser->m_nUserVer < 1) { CString strXml = _T(""); int nVer = 0; m_MessengerPro.m_AMDBMgr.LoadUserInfo(pUser->m_strLoginName,strXml,nVer); if( !strXml.IsEmpty()) m_MessengerPro.m_pMBOrgListMgr->ParseOrgXml(AM_VIEWITEMTYPE_USER,_T(""), CMD_UBGI,strXml, false); else m_MessengerPro.m_pMBOrgListMgr->AddMember(AM_VIEWITEMTYPE_USER,pUser->m_strLoginName, pUser->m_strUserName); } ShowUserInfo(*pUser); } else if(nType == AM_VIEWITEMTYPE_CROWD )// { CCrowdItem* pItem = NULL; if( m_MessengerPro.m_CrowdDataMgr.LookupCrowdItem(strID,pItem)) { if ( !pItem->GetLoaded() ) m_MessengerPro.m_CrowdDataMgr.ListCrowdMember(m_hWnd, strID ); } if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode != 1) { STabCtrl *pTab2 = m_pHostWnd->FindChildByName2(L"tab_sharework_panel"); if(!pItem) { if(pTab2) pTab2->SetCurSel(4); return; } if(pTab2) pTab2->SetCurSel(3); } ShowGroupInfo(strID,strName); } } void CMBAMWnd::NewDissGroup( CString strName, CString strUsersInfo, int nUserCount) { CString strMsg; int nMultiplayerSessionUsersLimit= m_pServerMgr->GetUserLogin()->GetUserAce()->m_nMultiplayerSessionUsersLimit; if(nMultiplayerSessionUsersLimit >0 && nMultiplayerSessionUsersLimit < 3) { strMsg.Format(_T("¶àÈ˻Ự³ÉÔ±¸öÊýÉèÖÃÓÐÎÊÌ⣬µ¼ÖÂÎÞ·¨Ð½¨¶àÈ˻Ự£¬ÇëÁªÏµ¹ÜÀíÔ±Ð޸ģ¡")); MBMessageBox(m_hWnd,strMsg, _T("Ìáʾ"), MB_OK); return; } if(nUserCount > nMultiplayerSessionUsersLimit ) { strMsg.Format(_T("ÄãÑ¡ÔñµÄÓû§ÊýÒѳ¬³ö¶àÈ˻Ự³ÉÔ±¸öÊýÏÞÖÆ£¨%d£©£¬ÎÞ·¨´´½¨³É¹¦£¡"),nMultiplayerSessionUsersLimit); MBMessageBox(m_hWnd,strMsg, _T("Ìáʾ"), MB_OK); return; } CCrowdItem itemCrowd; itemCrowd.m_nUserCount = nUserCount; itemCrowd.m_strName = strName; itemCrowd.m_nVerify = CROWD_VERIFY_NORMAL; itemCrowd.m_nType = CROWD_TYPE_DISSGROUP; itemCrowd.m_nScaCount = nMultiplayerSessionUsersLimit; itemCrowd.m_strDesc = _T(""); if( !m_MessengerPro.m_CrowdDataMgr.CreateCrowd(m_hWnd, &itemCrowd, strUsersInfo)) { CString strMess = m_MessengerPro.m_CrowdDataMgr.GetLastErrInfo(); MBMessageBox(m_hWnd,strMess, _T("Ìáʾ"), MB_OK); return; } } BOOL CMBAMWnd::NewNormalCrowd( CCrowdItem *pItem,CString strUserInfo) { if( !pItem) return FALSE; if( !m_MessengerPro.m_CrowdDataMgr.CreateCrowd(m_hWnd, pItem, strUserInfo)) { CString strMess = m_MessengerPro.m_CrowdDataMgr.GetLastErrInfo(); MBMessageBox(m_hWnd,strMess, _T("Ìáʾ"), MB_OK); return FALSE; } return TRUE; } BOOL CMBAMWnd::ModifyNormalCrowd( CCrowdItem *pItem) { if( !pItem) return FALSE; if( !m_MessengerPro.m_CrowdDataMgr.ModifyCrowd(m_hWnd, pItem)) { CString strMess = m_MessengerPro.m_CrowdDataMgr.GetLastErrInfo(); MBMessageBox(m_hWnd,strMess, _T("Ìáʾ"), MB_OK); return FALSE; } return TRUE; } void CMBAMWnd::ShowAMToolTip(LPCTSTR tipMsg) { SShellNotifyIcon* notify = m_pHostWnd->FindChildByID2(110); notify->SetTip(tipMsg); } void CMBAMWnd::OnNewDissGroup() { CMBSelOrgList listSelOrg; listSelOrg.m_bMultiSelect = true; listSelOrg.m_nSelectStyle = SELORGITEM_TYPE_USER; CString strLoginName = m_MessengerPro.GetLoginName( ); BOOL bRet = CMBOrgUIBaseFun::ShowSelectOrgItemWnd(m_pServerMgr, &m_MessengerPro.m_mbLastContact,_T("ȺÑûÇëÓû§"),&listSelOrg) ; if( !bRet) return ; CMBSelOrgItem *pItemmOrg; CString strNames = _T(""); CString strTmpNames = _T(""); CString strData = _T(""); CString strTmpUserInfo = _T(""); int nUserCount = 1; for(int i = 0; i < listSelOrg.GetOrgCount();i++) { pItemmOrg= listSelOrg.GetOrgAt(i); if (pItemmOrg->m_nType != AM_VIEWITEMTYPE_USER) continue; if(pItemmOrg->m_strID.CompareNoCase(strLoginName) == 0) { continue; } strTmpUserInfo.Format(_T("%s;%s;%d"), pItemmOrg->m_strID, pItemmOrg->m_strName,pItemmOrg->m_nSex); strTmpNames +=pItemmOrg->m_strName; nUserCount++; strData += strTmpUserInfo + APART_MULLOGIN; if(strTmpNames.GetLength() < 20) { strNames += pItemmOrg->m_strName + _T("¡¢"); strTmpNames =strNames; } else { if(strNames.IsEmpty()) strNames = pItemmOrg->m_strName; } } if(strNames.Right(1) == _T("¡¢")) strNames = strNames.Left(strNames.GetLength() -1); NewDissGroup(strNames,strData,nUserCount); } void CMBAMWnd::OnNewNormalCrowd() { CString strMsg; int nCrowdLimit= m_pServerMgr->GetUserLogin()->GetUserAce()->m_nCrowdLimit; if ( nCrowdLimit > 0) { int nCount = m_MessengerPro.m_CrowdDataMgr.GetCreateCrowdCount(); if(nCount >= nCrowdLimit) { strMsg.Format(_T("Óû§×î¶àÖ»¿ÉÒÔ´´½¨ %d ¸öȺ"), nCrowdLimit); MBMessageBox(m_hWnd,strMsg, _T("Ìáʾ"), MB_OK); return; } } if ( nCrowdLimit == 0) { strMsg.Format(_T("Óû§×î¶àÖ»¿ÉÒÔ´´½¨ %d ¸öȺ"),nCrowdLimit); MBMessageBox(m_hWnd,strMsg, _T("Ìáʾ"), MB_OK); return; } int nUserLimit= m_pServerMgr->GetUserLogin()->GetUserAce()->m_nCrowdUsersLimit; if(nUserLimit >0 && nUserLimit < 3) { strMsg.Format(_T("Ⱥ³ÉÔ±¸öÊýÉèÖÃÓÐÎÊÌ⣬µ¼ÖÂÎÞ·¨Ð½¨Èº£¬ÈôÏëн¨ÇëÁªÏµ¹ÜÀíÔ±Ð޸ģ¡")); MBMessageBox(m_hWnd,strMsg, _T("Ìáʾ"), MB_OK); return; } CMBCreateCrowdWnd dlgCreateWnd; dlgCreateWnd.SetAMWndPtr(this); dlgCreateWnd.SetServerMgrPtr(m_pServerMgr); if( IDOK != dlgCreateWnd.DoModal()) return; } void CMBAMWnd::OnModifyNormalCrowd(CCrowdItem *pCrowdItem) { if(!pCrowdItem) return ; if(pCrowdItem->m_nType == CROWD_TYPE_DISSGROUP) { CMBInputWnd dlgWnd; dlgWnd.SetWndData(_T("ÐÞ¸ÄÖ÷Ìâ"),_T(""),_T("Ö÷Ìâ")); dlgWnd.SetValueData(pCrowdItem->m_strName); if ( dlgWnd.DoModal() != IDOK) return ; CString strName = dlgWnd.GetValueData(); if(pCrowdItem->m_strName != strName) { pCrowdItem->m_strName = dlgWnd.GetValueData(); ModifyNormalCrowd(pCrowdItem); } } else { CMBCreateCrowdWnd dlgCreateWnd; dlgCreateWnd.SetAMWndPtr(this); dlgCreateWnd.SetModifyCrowd(pCrowdItem); dlgCreateWnd.SetServerMgrPtr(m_pServerMgr); if( IDOK != dlgCreateWnd.DoModal()) return; } } void CMBAMWnd::InviteCrowdUsers(CCrowdItem *pCrowdItem) { if(!pCrowdItem) return; CMBSelOrgList listSelOrg; listSelOrg.m_bMultiSelect = true; listSelOrg.m_nSelectStyle = SELORGITEM_TYPE_USER; CString strLoginName = m_MessengerPro.GetLoginName( ); BOOL bRet = CMBOrgUIBaseFun::ShowSelectOrgItemWnd(m_pServerMgr, &m_MessengerPro.m_mbLastContact,_T("ȺÑûÇëÓû§"),&listSelOrg) ; if( !bRet) return ; CString strTmpUserInfo = _T(""); CMBSelOrgItem *pItemmOrg; CMapStringToString mapFixSelUser; mapFixSelUser.RemoveAll(); CString strValue; CString stSelUsers = _T(""); int nSelCount = 0; for(int i = 0; i < listSelOrg.GetOrgCount();i++) { pItemmOrg= listSelOrg.GetOrgAt(i); if(pCrowdItem->FindUserItem(pItemmOrg->m_strID)) continue; if( !mapFixSelUser.Lookup(pItemmOrg->m_strID, strValue)) { mapFixSelUser.SetAt(pItemmOrg->m_strID,pItemmOrg->m_strID); nSelCount++; strTmpUserInfo.Format(_T("%s;%s;%d"), pItemmOrg->m_strID, pItemmOrg->m_strName,pItemmOrg->m_nSex); stSelUsers += strTmpUserInfo + APART_MULLOGIN; } } int nUserLimit = 0; if(pCrowdItem->m_nType == CROWD_TYPE_NORMAL) nUserLimit = pCrowdItem->m_nScaCount; //nUserLimit = ((CMBAMWnd*)m_pOwner)->GetMessengerPro( )->m_itemUserAce.m_nMultiplayerSessionUsersLimit; if(nUserLimit >0 && nSelCount + pCrowdItem->m_nUserCount > nUserLimit) { CString strMess; if(pCrowdItem->m_nType == CROWD_TYPE_NORMAL) strMess.Format(_T("ÑûÇëµÄȺÓû§¸öÊý³¬¹ýÏÞÖÆÊý(%d)£¬ÇëÖØÐÂÑ¡Ôñ¼ÓÈëµÄȺÓû§£¡"), nUserLimit); else strMess.Format(_T("Ìí¼ÓµÄ¶àÈ˻ỰÓû§¸öÊý³¬¹ýÏÞÖÆÊý(%d)£¬ÇëÖØÐÂÑ¡ÔñÌí¼ÓÓû§£¡"), nUserLimit); MBMessageBox(m_hWnd,strMess, _T("Ìáʾ"), MB_OK); return ; } if( !m_MessengerPro.m_CrowdDataMgr.AddCrowdUser(m_hWnd,pCrowdItem->m_strID,stSelUsers)) { CString strMess; if(pCrowdItem->m_nType == CROWD_TYPE_NORMAL) strMess.Format(_T("ÑûÇëµÄȺÓû§¼ÓÈëʧ°Ü£¬Ô­Òò£º%s"), m_MessengerPro.m_CrowdDataMgr.GetLastErrInfo()); else strMess.Format(_T("Ìí¼ÓµÄ¶àÈ˻ỰÓû§Ê§°Ü£¬Ô­Òò£º%s"), m_MessengerPro.m_CrowdDataMgr.GetLastErrInfo()); MBMessageBox(m_hWnd,strMess, _T("Ìáʾ"), MB_OK); } } void CMBAMWnd::RemoveCrowdUsers(CCrowdItem *pCrowdItem, CString strLogin,CString strName) { if(!pCrowdItem) return; if(strLogin.IsEmpty()) return; CString strMess; strMess.Format(_T("È·ÈÏÒª°ÑÓû§£¨%s£©ÒƳöȺ£¨%s£©£¿"),strName, pCrowdItem->m_strName); if( MBMessageBox(m_hWnd,strMess,_T("Ìáʾ"), MB_OKCANCEL) != IDOK) { return; } if( !m_MessengerPro.m_CrowdDataMgr.RemoveCrowdUser(m_hWnd,pCrowdItem->m_strID,strLogin)) { CString strMess; strMess.Format(_T("°ÑÓû§£¨%s£©ÒƳöȺ£¨%s£©Ê§°Ü£¬Ô­Òò£º%s"),strName, pCrowdItem->m_strName,m_MessengerPro.m_CrowdDataMgr.GetLastErrInfo()); MBMessageBox(m_hWnd,strMess, _T("Ìáʾ"), MB_OK); } } void CMBAMWnd::SetTreeShowStyle( int nTreeShowStyle ) { m_pServerMgr->GetUserLogin()->GetUserPro()->m_nTreeShowStyle = nTreeShowStyle; CMBUserProFun::SaveTreeShowStyle(nTreeShowStyle, m_MessengerPro.GetLoginName( ), m_MessengerPro.GetServerID( ) ); m_AMFriendWnd.SetTreeShowStyle(nTreeShowStyle); m_AMOrgWnd.SetTreeShowStyle(nTreeShowStyle); m_AMGroupWnd.SetTreeShowStyle(nTreeShowStyle); m_AMUserWnd.SetTreeShowStyle(nTreeShowStyle); } void CMBAMWnd::SetCrowdSortStyle( int nSortStyle ) { m_pServerMgr->GetUserLogin()->GetUserPro()->m_nCrowdSortStyle = nSortStyle; CMBUserProFun::SaveCrowdSortStyle(nSortStyle, m_MessengerPro.GetLoginName( ), m_MessengerPro.GetServerID( ) ); m_AMGroupWnd.SetCrowdSortStyle(nSortStyle); } void CMBAMWnd::KillAMTimer( int nIDEvent ) { if( !m_bLayoutInited) return; m_pHostWnd->KillTimer(nIDEvent); } void CMBAMWnd::SetAMTimer( int nIDEvent, int nElapse ) { if( !m_bLayoutInited) return; m_pHostWnd->SetTimer(nIDEvent,nElapse); } bool CMBAMWnd::OnEventNetLinkCheckerConnected(EventArgs *e) { m_pHostWnd->KillTimer(TIMER_AMRECONNECT); m_pHostWnd->SetTimer(TIMER_AMRECONNECT,TIME_AMRECONNECT); return true; } void CMBAMWnd::LoadFileIcoInImageProvider() { if( !m_bLayoutInited) return; if( !m_pServerMgr) return; CMBFileLogoMgr *pFileLogoMgr = m_pServerMgr->GetFileLogoMgr(); if( !m_pServerMgr) return; CMBFileLogoInfoMap *pMapFileLogoInfo = pFileLogoMgr->GetFileLogoMap(); if( !pMapFileLogoInfo) return; CString strTmpFileType; CString strTmpFile; CString strTmpKey; CMBFileLogoInfoMap::iterator it; CMBFileLogoInfo *pFileLogoInfo = NULL; for( it = pMapFileLogoInfo->begin();it != pMapFileLogoInfo->end();it++ ) { pFileLogoInfo = it->second; int nCount = pFileLogoInfo->m_arFileType.GetCount(); for( int i = 0;i < nCount;i++ ) { strTmpFileType = pFileLogoInfo->m_arFileType[i]; strTmpFile = pFileLogoMgr->GetFileLogoMiddleIcon(strTmpFileType); strTmpKey.Format(_T("m_%s"),strTmpFileType); strTmpKey.MakeLower(); ImageProvider::Insert(strTmpKey,strTmpFile); strTmpFile = pFileLogoMgr->GetFileLogoSmallIcon(strTmpFileType); strTmpKey.Format(_T("s_%s"),strTmpFileType); strTmpKey.MakeLower(); ImageProvider::Insert(strTmpKey,strTmpFile); } } } void CMBAMWnd::OnMsgOpened( CString strMsgID, CString strLoginName, CString strUserName, CString strSubject ) { if ( strMsgID.IsEmpty() || strLoginName.IsEmpty() || strUserName.IsEmpty() ) return; m_pHostWnd->KillTimer(TIMER_AMSAVEMAGOPENDATE); m_pHostWnd->SetTimer(TIMER_AMSAVEMAGOPENDATE,10 * 1000); BOOL bOpenMsgNotify = true; CString strLogin = m_MessengerPro.GetLoginName( ); CString strServerID = m_MessengerPro.GetServerID( ); CMBUserProFun::LoadMsgOpenNotify( bOpenMsgNotify,strLogin, strServerID ); if ( bOpenMsgNotify == 0 ) return; if ( m_MessengerPro.m_pMBOrgListMgr->GetUserStatus( strLoginName ) == AM_USERSTATUS_HDN ) { // ¶Ô·½ÒþÉí²»ÄܸæËßÓû§ return; } CMBChatWnd *pChatWnd = GetChatWnd(strLoginName); if(pChatWnd) return; if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode != 1) { CString strID = _T(""); int nType = 0; GetCurrentShowChat(strID,nType); if ( nType == AM_VIEWITEMTYPE_USER && strID.CompareNoCase(strLoginName) ==0) { // ÊǶԻ°Ä£Ê½£¬¾Í²»ÓÃÏÔʾ¶Ô·½´ò¿ªÐÅÏ¢ return; } } m_MessengerPro.ProcUserNotify( EVENTSOUND_NEWNOTIFY ); CString strToolTip, strInfo; CMsgItem itemMsg; strInfo = _T("%s ÒѾ­´ò¿ªÏûÏ¢\n\nÖ÷Ì⣺%s"); if( m_MessengerPro.m_AMDBMgr.LoadMsgFromDB(strMsgID,&itemMsg)) { if(itemMsg.m_nNeedConfirm) { strInfo = _T("%s ÒѾ­Ç©ÊÕÏûÏ¢\n\nÖ÷Ì⣺%s"); } } strToolTip.Format(strInfo, strUserName, strSubject ); ShowAMToolTip( strToolTip ); } void CMBAMWnd::AddCrowd( CString strCrowdID ) { if(strCrowdID.IsEmpty()) return ; m_AMGroupWnd.AddCrowd(strCrowdID); CCrowdItem *pCrowdItem = NULL; m_MessengerPro.m_CrowdDataMgr.LookupCrowdItem(strCrowdID,pCrowdItem); CString strCrowdName= strCrowdID; if(pCrowdItem) strCrowdName = pCrowdItem->m_strName; CHighTime dtDate = CHighTime::GetPresentTime(); CString strDate = dtDate.Format( _T("%Y-%m-%d %H:%M:%S") ); m_MessengerPro.AddContactItem(strCrowdID,strCrowdName , strDate,_T("н¨Èº"), AM_VIEWITEMTYPE_CROWD); AddContactItem(strCrowdID,AM_VIEWITEMTYPE_CROWD); m_AMRecentContactWnd.UpdateUserShow(); } void CMBAMWnd::RemoveCrowd( CString strCrowdID ) { if(strCrowdID.IsEmpty()) return ; m_MessengerPro.m_CrowdDataMgr.RemoveCrowdItem(strCrowdID); CMBGroupChatWnd *pGroupChatWnd = GetGroupChatWnd(strCrowdID); if(pGroupChatWnd ) { pGroupChatWnd->PostMessage(WM_CLOSE); } m_AMGroupChatFrame.RemoveCrowd(strCrowdID); m_AMGroupWnd.RemoveCrowd(strCrowdID); m_AMRecentContactWnd.RemoveContactItem(strCrowdID,AM_VIEWITEMTYPE_CROWD); m_MessengerPro.m_mbLastContact.DeleteContactItem(strCrowdID,AM_VIEWITEMTYPE_CROWD); m_MessengerPro.m_AMDBMgr.RemoveLastContact(strCrowdID,AM_VIEWITEMTYPE_CROWD); } void CMBAMWnd::ChangeCrowdCreator( CString strCrowdID ) { if(strCrowdID.IsEmpty()) return ; if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode == 1) { CMBGroupChatWnd *pGroupChatWnd = GetGroupChatWnd(strCrowdID); if(pGroupChatWnd ) { pGroupChatWnd->UpdateCrowdUser(); } CMBGroupInfoWnd *pInfoWnd = GetGroupInfoWnd(strCrowdID); if(pInfoWnd) pInfoWnd->UpdateCrowdUser(); } else { m_AMGroupChatFrame.UpdateCrowdUser(strCrowdID); m_AmGroupInfoFrame.UpdateCrowdUser(strCrowdID); } } void CMBAMWnd::SendModeMsg(CMBSelOrgList &lstSelOrg) { CMBSendMsgWnd *pSendMsgWnd= new CMBSendMsgWnd(); pSendMsgWnd->SetServerMgrPtr(m_pServerMgr); pSendMsgWnd->SetAMWndPtr(this); pSendMsgWnd->Create(NULL); pSendMsgWnd->CenterWindow(GetDesktopWindow()); pSendMsgWnd->SetReceiverOrg(lstSelOrg); pSendMsgWnd->SendMessage(WM_INITDIALOG); pSendMsgWnd->ShowWindow(SW_SHOWDEFAULT); pSendMsgWnd->SetWindowPos( HWND_TOPMOST, 0, 0, 0, 0,SWP_NOSIZE| SWP_NOMOVE ); pSendMsgWnd->SetWindowPos( HWND_NOTOPMOST, 0, 0, 0, 0,SWP_NOSIZE| SWP_NOMOVE ); } void CMBAMWnd::ReadModeMsg(CMsgItem *pMsg) { CMBReadMsgWnd *pReadMsgWnd= new CMBReadMsgWnd(); pReadMsgWnd->SetServerMgrPtr(m_pServerMgr); pReadMsgWnd->SetAMWndPtr(this); pReadMsgWnd->Create(NULL); pReadMsgWnd->CenterWindow(GetDesktopWindow()); pReadMsgWnd->SetData(pMsg); pReadMsgWnd->SendMessage(WM_INITDIALOG); pReadMsgWnd->ShowWindow(SW_SHOWDEFAULT); pReadMsgWnd->SetMsgData(); } void CMBAMWnd::ShowGungHoWndResetCtrlPos() { SWindow *pWnd = m_pPageRoot->FindChildByName2(L"wnd_amcontactbg"); if(pWnd) pWnd->SetAttribute(_T("pos"),_T("[0,0,@72,-1")); SWindow *pWnd2 = m_pPageRoot->FindChildByName2(L"wnd_amworkbg"); if(pWnd2) pWnd2->SetAttribute(_T("pos"),_T("[0,0,-617,-0")); SWindow *pWnd3 = m_pPageRoot->FindChildByName2(L"wnd_searchuser"); if(pWnd3) pWnd3->SetVisible(FALSE, TRUE); } void CMBAMWnd::HideGungHoWndResetCtrlPos() { SWindow *pWnd = m_pPageRoot->FindChildByName2(L"wnd_amcontactbg"); if(pWnd) pWnd->SetAttribute(_T("pos"),_T("[0,0,@300,-1")); SWindow *pWnd2 = m_pPageRoot->FindChildByName2(L"wnd_amworkbg"); if(pWnd2) pWnd2->SetAttribute(_T("pos"),_T("[0,0,-0,-0")); SWindow *pWnd3 = m_pPageRoot->FindChildByName2(L"wnd_searchuser"); if(pWnd3) pWnd3->SetVisible(TRUE, TRUE); } void CMBAMWnd::ForwardMsg(CMsgItem *pMsgItem) { if(!pMsgItem) return; CMBSendMsgWnd *pSendMsgWnd= new CMBSendMsgWnd(); pSendMsgWnd->SetServerMgrPtr(m_pServerMgr); pSendMsgWnd->SetAMWndPtr(this); pSendMsgWnd->Create(NULL); pSendMsgWnd->CenterWindow(GetDesktopWindow()); pSendMsgWnd->SendMessage(WM_INITDIALOG); pSendMsgWnd->ShowWindow(SW_SHOWDEFAULT); pSendMsgWnd->CenterWindow(); pSendMsgWnd->Forwarded( pMsgItem ); pSendMsgWnd->SetWindowPos( HWND_TOPMOST, 0, 0, 0, 0,SWP_NOSIZE| SWP_NOMOVE ); pSendMsgWnd->SetWindowPos( HWND_NOTOPMOST, 0, 0, 0, 0,SWP_NOSIZE| SWP_NOMOVE ); } void CMBAMWnd::ReplyMsg(CMsgItem *pMsgItem) { if(!pMsgItem) return; CMBSendMsgWnd *pSendMsgWnd= new CMBSendMsgWnd(); pSendMsgWnd->SetServerMgrPtr(m_pServerMgr); pSendMsgWnd->SetAMWndPtr(this); pSendMsgWnd->Create(NULL); pSendMsgWnd->CenterWindow(GetDesktopWindow()); pSendMsgWnd->SendMessage(WM_INITDIALOG); pSendMsgWnd->ShowWindow(SW_SHOWDEFAULT); pSendMsgWnd->CenterWindow(); pSendMsgWnd->ReplyMsg( pMsgItem ); pSendMsgWnd->SetWindowPos( HWND_TOPMOST, 0, 0, 0, 0,SWP_NOSIZE| SWP_NOMOVE ); pSendMsgWnd->SetWindowPos( HWND_NOTOPMOST, 0, 0, 0, 0,SWP_NOSIZE| SWP_NOMOVE ); } void CMBAMWnd::ReplyAll(CMsgItem *pMsgItem) { if(!pMsgItem) return; CString strLoginName = m_MessengerPro.GetLoginName(); if(pMsgItem->m_strSender.CompareNoCase(strLoginName) != 0 && pMsgItem->m_nIsGroupSend ) { if ( pMsgItem->m_arMsgOwners.GetCount() == 30 ) { m_MessengerPro.GetAMMsgReceiverInfo(pMsgItem->m_strID); return; } } CMBSendMsgWnd *pSendMsgWnd= new CMBSendMsgWnd(); pSendMsgWnd->SetServerMgrPtr(m_pServerMgr); pSendMsgWnd->SetAMWndPtr(this); pSendMsgWnd->Create(NULL); pSendMsgWnd->CenterWindow(GetDesktopWindow()); pSendMsgWnd->SendMessage(WM_INITDIALOG); pSendMsgWnd->ShowWindow(SW_SHOWDEFAULT); pSendMsgWnd->CenterWindow(); pSendMsgWnd->ReplyAll( pMsgItem ); pSendMsgWnd->SetWindowPos( HWND_TOPMOST, 0, 0, 0, 0,SWP_NOSIZE| SWP_NOMOVE ); pSendMsgWnd->SetWindowPos( HWND_NOTOPMOST, 0, 0, 0, 0,SWP_NOSIZE| SWP_NOMOVE ); } void CMBAMWnd::MsgReplyAll( CString strMsgID,CString strReceivers ) { CMsgItem msgItem; CString strMsg, strInfo; CString strDlgID; CString strReceiverInfo, strLogin,strName; CArray arMsgOwners; CMsgOwnerItem itemMsgOwner; if( strMsgID.IsEmpty()) return; if ( !m_MessengerPro.IsLogined( ) ) return; m_MessengerPro.m_AMDBMgr.LoadMsgFromDB(strMsgID,&msgItem); arMsgOwners.RemoveAll(); while( !strReceivers.IsEmpty()) { CMBOrgFunc::GetElementItem( strReceivers, strReceiverInfo, _T("|") ); if(!strReceiverInfo.IsEmpty()) { CMBOrgFunc::GetElementItem( strReceiverInfo, strLogin, _T(";") ); strName = strReceiverInfo; itemMsgOwner.m_strMsgID = strMsgID; itemMsgOwner.m_strOwner = strLogin; itemMsgOwner.m_strOwnerName = strName; arMsgOwners.Add(itemMsgOwner); } } if(arMsgOwners.GetCount() > 0) { msgItem.m_arMsgOwners.RemoveAll(); msgItem.m_arMsgOwners.Copy(arMsgOwners); } strMsg = msgItem.m_strContent; msgItem.m_arMsgAttachments.RemoveAll( ); CMBSendMsgWnd *pSendMsgWnd= new CMBSendMsgWnd(); pSendMsgWnd->SetServerMgrPtr(m_pServerMgr); pSendMsgWnd->SetAMWndPtr(this); pSendMsgWnd->Create(NULL); pSendMsgWnd->CenterWindow(GetDesktopWindow()); pSendMsgWnd->SendMessage(WM_INITDIALOG); pSendMsgWnd->ShowWindow(SW_SHOWDEFAULT); pSendMsgWnd->CenterWindow(); pSendMsgWnd->ReplyAll( &msgItem ); pSendMsgWnd->SetWindowPos( HWND_TOPMOST, 0, 0, 0, 0,SWP_NOSIZE| SWP_NOMOVE ); pSendMsgWnd->SetWindowPos( HWND_NOTOPMOST, 0, 0, 0, 0,SWP_NOSIZE| SWP_NOMOVE ); return; } void CMBAMWnd::ForwardAllAttchment(CString strMsgID) { if(strMsgID.IsEmpty()) return; CMsgItem MsgItem; CMsgItem itemMsg; CString strFileNames = _T(""); CString strFileName = _T(""); CString strFilePath = _T(""); m_MessengerPro.m_AMDBMgr.LoadMsgFromDB( strMsgID, &MsgItem ); itemMsg.m_strID = _T(""); itemMsg.m_strContent = _T(""); CMsgAttachmentItem itemMsgAttachment; for(int nIndex = 0; nIndex < MsgItem.m_arMsgAttachments.GetCount();nIndex++) { itemMsgAttachment = MsgItem.m_arMsgAttachments.GetAt(nIndex); if(itemMsgAttachment.m_strFileID.IsEmpty()||itemMsgAttachment.m_strFileSFlag.IsEmpty()||itemMsgAttachment.m_strFileName.IsEmpty()) { if( !itemMsgAttachment.m_strFileName.IsEmpty()) { strFilePath = itemMsgAttachment.m_strFileName; if( strFilePath.Right(1) == _T('\\')) { strFilePath = strFilePath.Left(strFilePath.GetLength() - 1); } strFileName = CBaseCommFun::GetFileName(strFilePath); if(strFileName.IsEmpty()) strFileName = strFilePath; strFileNames += strFileName + _T("¡¢"); } continue; } itemMsg.m_arMsgAttachments.Add(itemMsgAttachment); } if(itemMsg.m_arMsgAttachments.GetCount() < 1) { CString strToolTip = _T("¶¼ÊÇÎÞЧµÄ¸½¼þÎÞ·¨×ª·¢£¡"); MBMessageBox(m_hWnd, strToolTip,_T("Ìáʾ"),MB_OK); return ; } strFileNames.TrimRight( _T("¡¢")); if( !strFileNames.IsEmpty()) { CString strToolTip; strToolTip.Format(_T("¡®%s¡¯ÊÇÎÞЧµÄ¸½¼þÎÞ·¨×ª·¢£¡"),strFileNames); MBMessageBox(m_hWnd, strToolTip,_T("Ìáʾ"),MB_OK); return ; } if(!(itemMsg.m_nMsgFlag & MSGFLAG_RESTRICTFILEACE) ) { ForwardMsg(&itemMsg); } } void CMBAMWnd::ForwardAttchment(CString strMsgID,CString strFileID) { if(strFileID.IsEmpty()) return; CMsgItem MsgItem; //CMsgItem Msg; CMsgAttachmentItem itemMsgAttachment; itemMsgAttachment.m_strFileID =strFileID ; m_MessengerPro.m_AMDBMgr.GetMsgFileInfo( strMsgID,strFileID,itemMsgAttachment.m_strFileName, itemMsgAttachment.m_strFileSFlag, itemMsgAttachment.m_nFileSize ); if(itemMsgAttachment.m_strFileSFlag.IsEmpty()||itemMsgAttachment.m_strFileName.IsEmpty()) { CString strToolTip = _T("ÎÞЧµÄ¸½¼þÎÞ·¨×ª·¢£¡"); MBMessageBox(m_hWnd, strToolTip,_T("Ìáʾ"),MB_OK); return; } MsgItem.m_strID = _T(""); MsgItem.m_strContent = _T(""); MsgItem.m_arMsgAttachments.RemoveAll(); MsgItem.m_arMsgAttachments.Add(itemMsgAttachment); if(!(MsgItem.m_nMsgFlag & MSGFLAG_RESTRICTFILEACE) ) { ForwardMsg(&MsgItem); } } void CMBAMWnd::ForwardAttchment(CString strFileID,CString strFileSFlag,CString strFileName,__int64 nFileSize) { if(strFileID.IsEmpty() || strFileSFlag.IsEmpty()||strFileName.IsEmpty()) return; CMsgItem MsgItem; CMsgAttachmentItem itemMsgAttachment; itemMsgAttachment.m_strFileID =strFileID ; itemMsgAttachment.m_strFileName =strFileName ; itemMsgAttachment.m_strFileSFlag =strFileSFlag ; itemMsgAttachment.m_nFileSize =nFileSize ; MsgItem.m_strID = _T(""); MsgItem.m_strContent = _T(""); MsgItem.m_arMsgAttachments.RemoveAll(); MsgItem.m_arMsgAttachments.Add(itemMsgAttachment); if(!(MsgItem.m_nMsgFlag & MSGFLAG_RESTRICTFILEACE) ) { ForwardMsg(&MsgItem); } } void CMBAMWnd::ResendMsg(CMsgItem *pMsgItem) { if( !pMsgItem) return; if(m_MessengerPro.m_ptrIAMSession == NULL || m_MessengerPro.m_ptrIAMSession.GetInterfacePtr() == NULL) return; HRESULT hr; long nTrID = 0; ISTKMessagePtr ptrAMMsg = NULL; CComPtr IMessagePtr = NULL; hr = ptrAMMsg.CreateInstance( _T("StkCom.STKMessage") ); if (FAILED (hr)) { _com_error error (hr); CString strError = error.ErrorMessage(); return; } ptrAMMsg->put_MsgFlag( 0 ); if ( !(pMsgItem->m_nMsgFlag & MSGFLAG_REPEATMSG) ) { pMsgItem->m_nMsgFlag |= MSGFLAG_REPEATMSG; } IMessagePtr = ptrAMMsg; pMsgItem->CapyDataTo( IMessagePtr ); hr = m_MessengerPro.m_ptrIAMSession->SendMsg( ptrAMMsg, 0, &nTrID ); if ( hr != S_OK ) { _com_error error (hr); CString strError = error.ErrorMessage (); return ; } AddAMTrIDData( ptrAMMsg, nTrID, m_hWnd, SENDTYPE_SEND ); } void CMBAMWnd::ModifyResendMsg( CMsgItem *pMsgItem ) { if( !pMsgItem) return; CMBSendMsgWnd *pSendMsgWnd= new CMBSendMsgWnd(); pSendMsgWnd->SetServerMgrPtr(m_pServerMgr); pSendMsgWnd->SetAMWndPtr(this); pSendMsgWnd->Create(NULL); pSendMsgWnd->CenterWindow(GetDesktopWindow()); pSendMsgWnd->SendMessage(WM_INITDIALOG); pSendMsgWnd->ShowWindow(SW_SHOWDEFAULT); pSendMsgWnd->CenterWindow(); pSendMsgWnd->SetData( pMsgItem); pSendMsgWnd->SetWindowPos( HWND_TOPMOST, 0, 0, 0, 0,SWP_NOSIZE| SWP_NOMOVE ); pSendMsgWnd->SetWindowPos( HWND_NOTOPMOST, 0, 0, 0, 0,SWP_NOSIZE| SWP_NOMOVE ); } void CMBAMWnd::ReadDlgOpenMsg( CMsgItem *pMsgItem ) { if( !pMsgItem ) return; CString strLoginName = m_MessengerPro.GetLoginName( ); if(pMsgItem->m_bDownLoaded) { if( !pMsgItem->m_strMsgExtType.IsEmpty() || (pMsgItem->m_nNeedConfirm && pMsgItem->m_strSender != strLoginName) ) { if( !m_MessengerPro.ShowMessage( pMsgItem )) return; //ReadModeMsg(pMsgItem); return; } if(pMsgItem->m_strSender.CompareNoCase(strLoginName) != 0 && !(pMsgItem->m_nReadState & MSG_READSTATE_IOPEN) ) m_MessengerPro.m_AMDBMgr.SetMsgReaded( pMsgItem->m_strID ); ReadModeMsg(pMsgItem); return; } else { long nTrID; m_MessengerPro.ReadUserMsg(pMsgItem->m_strSender , pMsgItem->m_strID, nTrID ); m_MessengerPro.m_mapReadOnlyMsgTrID.SetAt(nTrID, pMsgItem->m_strID); m_TipMgr.RemoveUnreadMsg( pMsgItem->m_strID); NotifyReceiveMsg(); } return; } void CMBAMWnd::DownloadMsg( CMsgItem *pMsgItem) { if( !pMsgItem ) return; if(pMsgItem->m_bDownLoaded) return; long nTrID; m_MessengerPro.ReadUserMsg(pMsgItem->m_strSender , pMsgItem->m_strID, nTrID ); m_MessengerPro.m_mapDownOnlyMsgTrID.SetAt(nTrID, pMsgItem->m_strID); m_TipMgr.RemoveUnreadMsg( pMsgItem->m_strID); NotifyReceiveMsg(); return; } BOOL CMBAMWnd::SendMsg( CString strUsers, CString strSubject, CString strMsg, CString strSourceMsgID ) { if ( strUsers.IsEmpty() || strMsg.IsEmpty() ) return false; CString strMessage; HRESULT hr; int nMsgFlag(0); ISTKMessagePtr ptrMsg; CString strName, strValue; BSTR bszName, bszValue; long nTrID; CString strSendDate; if ( !m_MessengerPro.IsLogined() ) return false; try { hr = ptrMsg.CreateInstance( _T("StkCom.STKMessage") ); if (FAILED (hr)) { _com_error error (hr); CString strError = error.ErrorMessage(); return FALSE; } } catch (_com_error& e) { _bstr_t bstrtError = e.Description(); MBMessageBox(m_hWnd,(LPCTSTR)(_bstr_t)bstrtError,_T("´íÎó"),MB_OK); return FALSE; } strMessage.Format(_T("%s"), CBaseCommFun::FormatXML(strMsg)); strSubject = strMsg; ptrMsg->put_MsgContentType(AM_CONTENTTYPE_XML); bszValue = strMessage.AllocSysString(); ptrMsg->SetMsgContent( AM_CONTENTTYPE_XML, bszValue ); SysFreeString(bszValue); bszValue = strSourceMsgID.AllocSysString(); ptrMsg->put_SourceMsgID( bszValue); SysFreeString(bszValue); bszValue = strSubject.AllocSysString(); ptrMsg->put_Subject( bszValue ); SysFreeString(bszValue); ptrMsg->put_MsgFlag( nMsgFlag ); strSendDate= CTime::GetCurrentTime().Format( _T("%Y-%m-%d %H:%M:%S") ); bszValue = strSendDate.AllocSysString(); ptrMsg->put_SendDate(bszValue); SysFreeString(bszValue); bszName = strUsers.AllocSysString(); bszValue = strUsers.AllocSysString(); ptrMsg->AddReceiver( bszName,bszValue ); SysFreeString(bszName); SysFreeString(bszValue); DWORD dwOption = 0; CString strRes; nTrID = MsgSendMsg(ptrMsg, strRes,m_hWnd, SENDTYPE_SEND, dwOption); if ( ptrMsg.GetInterfacePtr() ) { ptrMsg.Release( ); ptrMsg = NULL; } if ( nTrID <= 0 ) { return false; } return true; } void CMBAMWnd::OnShowHomeMenu() { SOUI::CPoint pt; GetCursorPos(&pt); MenuWrapper menu(L"menuex_template", L"SMENU"); menu.AddMenu(_T("ÏûÏ¢¹ÜÀíÆ÷"), 1); menu.AddMenu(_T("ÉèÖÃ"), 2); int ret = menu.ShowMenu(TPM_RETURNCMD | TPM_BOTTOMALIGN, pt.x, pt.y, m_hWnd); if (ret== 1) { OnMsgAdmingWnd(); } if (ret== 2) { OnMsgSettingWnd(); } } void CMBAMWnd::OnMsgAdmingWnd() { if( !m_pMsgAdminWnd || !m_pMsgAdminWnd->IsWindow() ) { m_pMsgAdminWnd = new CMBMsgAdminWnd(); m_pMsgAdminWnd->SetServerMgrPtr(m_pServerMgr); m_pMsgAdminWnd->SetAMWndPtr(this); m_pMsgAdminWnd->Create(NULL); m_pMsgAdminWnd->CenterWindow(GetDesktopWindow()); m_pMsgAdminWnd->SendMessage(WM_INITDIALOG); m_pMsgAdminWnd->ShowWindow(SW_SHOWDEFAULT); m_pMsgAdminWnd->CenterWindow(); } else { if(m_pMsgAdminWnd->IsIconic()) m_pMsgAdminWnd->ShowWindow(SW_SHOWNORMAL); else m_pMsgAdminWnd->ShowWindow(SW_SHOW); m_pMsgAdminWnd->SetWindowPos( HWND_TOPMOST, 0, 0, 0, 0,SWP_NOSIZE| SWP_NOMOVE ); m_pMsgAdminWnd->SetWindowPos( HWND_NOTOPMOST, 0, 0, 0, 0,SWP_NOSIZE| SWP_NOMOVE ); } } void CMBAMWnd::OnMsgSettingWnd(int nShowPage) { if( !m_pAMSettingWnd || !m_pAMSettingWnd->IsWindow() ) { m_pAMSettingWnd = new CMBAMSettingWnd(); m_pAMSettingWnd->SetServerMgrPtr(m_pServerMgr); m_pAMSettingWnd->Create(NULL); m_pAMSettingWnd->CenterWindow(GetDesktopWindow()); m_pAMSettingWnd->SendMessage(WM_INITDIALOG); m_pAMSettingWnd->SetShowPage(nShowPage); m_pAMSettingWnd->ShowWindow(SW_SHOWDEFAULT); m_pAMSettingWnd->CenterWindow(); } else { m_pAMSettingWnd->SetShowPage(nShowPage); if(m_pAMSettingWnd->IsIconic()) m_pAMSettingWnd->ShowWindow(SW_SHOWNORMAL); else m_pAMSettingWnd->ShowWindow(SW_SHOW); m_pAMSettingWnd->SetWindowPos( HWND_TOPMOST, 0, 0, 0, 0,SWP_NOSIZE| SWP_NOMOVE ); m_pAMSettingWnd->SetWindowPos( HWND_NOTOPMOST, 0, 0, 0, 0,SWP_NOSIZE| SWP_NOMOVE ); } } // ´ÓÎļþÁбíÖУ¬ÏÂÔØ bool CMBAMWnd::OnEventAMDownloadFileClick(EventArgs *e) { EventAMDownloadFileClick *pDownloadClick = (EventAMDownloadFileClick *)e; CMBDownloadRootMgr *pDownloadRootMgr = new CMBDownloadRootMgr(); pDownloadRootMgr->m_strRootPath = pDownloadClick->m_strFileDir; CMBDownloadFileMgr *pDownloadFileMgr = new CMBDownloadFileMgr(); CMBDownFileInfo *pDownFileInfo = new CMBDownFileInfo(); pDownFileInfo->m_nType = CMBDownFileInfo::DOWNFILE_NONE; pDownFileInfo->m_strID = pDownloadClick->m_strMsgID; pDownFileInfo->m_strCabinetName = pDownloadClick->m_strMsgID; pDownFileInfo->m_strName = pDownloadClick->m_strFileName; pDownFileInfo->m_strFileID = pDownloadClick->m_strFileID; pDownFileInfo->m_strFileName = pDownloadClick->m_strFileName; pDownFileInfo->m_strServerFlag = pDownloadClick->m_strFileSFlag; pDownFileInfo->m_strParentDir = pDownloadClick->m_strFileDir; pDownFileInfo->m_strCatalogPath = pDownloadClick->m_strCompressFile; if( !pDownloadClick->m_strCompressFile.IsEmpty()) pDownFileInfo->m_nIsDir = 1; pDownFileInfo->m_strFrom = FCTN_AM; pDownFileInfo->SetIsGetDocInfo(); pDownFileInfo->m_strCanDownload = _T("1"); pDownFileInfo->m_strFileType = CBaseCommFun::GetFileType( pDownloadClick->m_strFileName ); if( !pDownloadFileMgr->AddDownloadFileInfo(pDownFileInfo) ) { delete pDownFileInfo; pDownFileInfo = NULL; delete pDownloadFileMgr; pDownloadFileMgr = NULL; delete pDownloadRootMgr; pDownloadRootMgr = NULL; return false; } if( !pDownloadRootMgr->AddDownloadFileMgr(pDownloadFileMgr)) { delete pDownloadFileMgr; pDownloadFileMgr = NULL; delete pDownloadRootMgr; pDownloadRootMgr = NULL; return false; } // ¼ÓÔØµ½ÏÂÔØ¹ÜÀíÆ÷ if( !m_pThreadDownloadDB->AddDownloadMgr(pDownloadRootMgr) ) { delete pDownloadRootMgr; pDownloadRootMgr = NULL; return false; } if(pDownloadClick->m_bIsOpen) { CString strOpenKey; strOpenKey.Format(_T("%s_%s_%s\\%s"),pDownloadClick->m_strMsgID,pDownloadClick->m_strFileID,pDownloadClick->m_strFileDir,pDownloadClick->m_strFileName); strOpenKey.MakeLower(); mapDownloadAndOpen.SetAt(strOpenKey,pDownFileInfo->m_strFileID); } return true; } bool CMBAMWnd::OnEventAMDownloadFile(EventArgs *e) { DoMessageLoop(); CString strPath; CString strErrInfo,strFileName; EventAMDownloadFile *pEvt = (EventAMDownloadFile *)e; CMBDownloadFileInfo *pDownloadFileInfo = pEvt->m_pDownloadFileInfo; if( pDownloadFileInfo->GetStatus() != CMBDownloadFileInfo::Status_CalledDownServer ) { return false; } REQLOADSERVER_ITEM reqLoadServerItem; reqLoadServerItem.hWnd = m_hWnd; reqLoadServerItem.strItemType = ITEM_TYPE_AMDOWNLOAD; reqLoadServerItem.pItem = pDownloadFileInfo; // m_strServerPath²»Îª¿Õ±íʾÎļþ¼ÐѹËõÎļþÏÂÔØÁÙʱ·¾¶ CString strLocalPath = pDownloadFileInfo->m_strServerPath; if(strLocalPath.IsEmpty()) strLocalPath = pDownloadFileInfo->GetLocalPath(); // ÏÂÔØÊ±ÅжÏÎļþÃû¿É´æÔÚ if( strLocalPath.IsEmpty() ) // ¸ÃÎļþÃû²»´æÔÚ { pDownloadFileInfo->SetErr( strLocalPath + _T(" ²»´æÔÚ£¡") ); CString strLocalDt = CStrFileUtils::GetLocalDt(); // ¸üÐÂErr pDownloadFileInfo->SetErr(strErrInfo); //m_pTransMgr->UpdataSqliteDownloadFileForErr( pDownloadFileInfo,strLocalDt,strErrInfo,_T("Y") ); // ½«¸Ã´íÎó¼Ç¼·ÅÈë´íÎóÁбí CAutoRefPtr pErrFileInfo(new CMBErrFileInfo()); pErrFileInfo->Release(); pErrFileInfo->m_strID = pDownloadFileInfo->m_strID; pErrFileInfo->m_strFileID = pDownloadFileInfo->m_strFileID; pErrFileInfo->m_nType = 0; // ÀàÐÍ 1 ÉÏ´«; 0 ÏÂÔØ pErrFileInfo->m_strLocalPath = pDownloadFileInfo->GetLocalPath(); pErrFileInfo->m_nFileSize = pDownloadFileInfo->m_nFileSize; pErrFileInfo->m_nStatus = CMBDownloadFileInfo::Status_Err; pErrFileInfo->m_strFileSvr = pDownloadFileInfo->m_strFileSvr; pErrFileInfo->m_strErr = pDownloadFileInfo->GetErr(); pErrFileInfo->m_strTErrTime = strLocalDt; pErrFileInfo->m_strTAddTime = pDownloadFileInfo->m_strTAddTime; m_pTransMgr->GetErrTransMgr()->AddRealTimeErr(pErrFileInfo); // ´ÓÉÏ´«ºÍÏÂÔØ¶ÓÁÐÖУ¬É¾³ý¸Ã¼Ç¼ m_pTransMgr->GetDownloadQueue()->RemoveQueue(pDownloadFileInfo->m_strID); pDownloadFileInfo->SetStatus(CMBDownloadFileInfo::Status_Err); return false; } //// ´´½¨Ä¿Â¼ strPath = CStrFileUtils::GetPath(strLocalPath); if(!CStrFileUtils::IsDirExit(strPath)) { CStrFileUtils::CreateDir( strPath ); } // µÃµ½ÏÂÔØÎļþµÄÃû³Æ strFileName = pDownloadFileInfo->GetDownloadFileName(); // CMBFileClientMgr *pClientMgr = m_pServerMgr->GetFileSvrClientMgr()->GetFileClientMgr(pDownloadFileInfo->m_strFileSvr,strErrInfo); if( NULL != pClientMgr ) { pClientMgr->DownloadFile_Asyn(reqLoadServerItem,pDownloadFileInfo->m_strFileID,_T(""),strLocalPath); pDownloadFileInfo->SetTrID(reqLoadServerItem.nTrID); } return true; } void CMBAMWnd::DealDownloadFoldersZip() { if(m_hDownloadFileThread != INVALID_HANDLE_VALUE) { if ( WAIT_TIMEOUT ==::WaitForSingleObject( m_hDownloadFileThread, 500 )) { return; } ::CloseHandle(m_hDownloadFileThread); m_hDownloadFileThread = INVALID_HANDLE_VALUE; } unsigned int nThreadID; m_hDownloadFileThread = (HANDLE)::_beginthreadex(0, 0, ThreadFunctionDecompressFile, (void*)this, 0, &nThreadID); } void CMBAMWnd::DecompressDownloadFolder() { POSITION pos; stAttachInfo itemDownFile; CString strKey; CString strValue; pos = m_mapDwonloadFolderZip.GetStartPosition(); while( pos) { m_mapDwonloadFolderZip.GetNextAssoc(pos,strKey,itemDownFile); m_mapDwonloadFolderZip.RemoveKey(strKey); EventAMDecompressFolderZipFinish *pEvt = new EventAMDecompressFolderZipFinish(NULL); pEvt->strMsgID = itemDownFile.strMsgID; pEvt->strFileID = itemDownFile.strFileID; pEvt->strFilePath = itemDownFile.strFilePath; pEvt->pItem = (void*)itemDownFile.dwData; CString strDestPath = itemDownFile.strFilePath; strDestPath.TrimRight(_T("\\")); strDestPath = CBaseCommFun::GetPathName(strDestPath); if ( !CBaseCommFun::DecompressData(itemDownFile.strCompressFile,strDestPath ) ) { pEvt->bResult = false; } else { pEvt->bResult = true; if( itemDownFile.bIsOpen) { ShellExecute(NULL, _T( "open" ), pEvt->strFilePath, NULL, NULL, SW_SHOWNORMAL ); } } ::DeleteFile(itemDownFile.strCompressFile); SNotifyCenter::getSingleton().FireEventAsync(pEvt); pEvt->Release(); } } unsigned int _stdcall CMBAMWnd::ThreadFunctionDecompressFile(void *pV) { CMBAMWnd *pItem = NULL; pItem = (CMBAMWnd*)pV; if ( pItem ) { try { CoInitialize( NULL ); pItem->DecompressDownloadFolder(); CoUninitialize( ); } catch(...) { } } _endthreadex( 0 ); return 0; } bool CMBAMWnd::OnEventAMDecompressFolderZipFinish(EventArgs *e) { EventAMDecompressFolderZipFinish *pEvt = (EventAMDecompressFolderZipFinish*)e; if(pEvt) { EventAMDownloadFileFinish *pTempEvt = new EventAMDownloadFileFinish(NULL); pTempEvt->m_strMsgID = pEvt->strMsgID; pTempEvt->m_strFileID = pEvt->strFileID; pTempEvt->m_strFilePath = pEvt->strFilePath; pTempEvt->m_nResult = pEvt->bResult; if(pEvt->bResult) { CString strErrInfo = _T(""); m_MessengerPro.m_AMDBMgr.SetMsgFilePath(pEvt->strMsgID,pEvt->strFileID,pEvt->strFilePath); SNotifyCenter::getSingleton().FireEventAsync(pTempEvt); pTempEvt->Release(); CMBDownloadFileInfo *pDownloadFileInfo = (CMBDownloadFileInfo *)pEvt->pItem; if( NULL == pDownloadFileInfo ) return false; pDownloadFileInfo->SetStatus(CMBDownloadFileInfo::Status_Finish); pDownloadFileInfo->m_strTEndTime = CStrFileUtils::GetLocalDt(); // ¿ÉÒÔ´Ó¶ÓÁÐÖÐɾ³ýÁË pDownloadFileInfo->SetStatus(CMBDownloadFileInfo::Status_Finish); m_pTransMgr->AdjustDownloadFileToHistory(pDownloadFileInfo,strErrInfo); // Ôö¼ÓʵʱÀúÊ·¼Ç¼ m_pTransMgr->GetHistoryTransMgr()->AddRealTimeHistoryFile(pDownloadFileInfo); // ÉèÖÃÀúÊ·Êý¾ÝÌõÊý m_pTransMgr->IncrementHistoryRecordCount(); // Ôö¼ÓÉÏ´«×ܼǼ m_pTransMgr->AddDownloadTranferedSize(pDownloadFileInfo->m_nFileSize); // ÒÆ³ý pDownloadFileInfo->SetStatus(CMBDownloadFileInfo::Status_DeleteOnQueue); } else { SNotifyCenter::getSingleton().FireEventAsync(pTempEvt); pTempEvt->Release(); CMBDownloadFileInfo *pDownloadFileInfo = (CMBDownloadFileInfo *)pEvt->pItem; if( NULL == pDownloadFileInfo ) return false; CString strErrInfo = _T("½âѹʧ°Ü"); CString strLocalDt = CStrFileUtils::GetLocalDt(); // ¸üÐÂErr pDownloadFileInfo->SetErr(strErrInfo); m_pTransMgr->UpdataSqliteDownloadFileForErr( pDownloadFileInfo,strLocalDt,strErrInfo,_T("Y") ); // ½«¸Ã´íÎó¼Ç¼·ÅÈë´íÎóÁбí CAutoRefPtr pErrFileInfo(new CMBErrFileInfo()); pErrFileInfo->Release(); pErrFileInfo->m_strID = pDownloadFileInfo->m_strID; pErrFileInfo->m_strFileID = pDownloadFileInfo->m_strFileID; pErrFileInfo->m_nType = 0; // ÀàÐÍ 1 ÉÏ´«; 0 ÏÂÔØ pErrFileInfo->m_strLocalPath = pDownloadFileInfo->GetLocalPath(); pErrFileInfo->m_nFileSize = pDownloadFileInfo->m_nFileSize; pErrFileInfo->m_nStatus = CMBDownloadFileInfo::Status_Err; pErrFileInfo->m_strFileSvr = pDownloadFileInfo->m_strFileSvr; pErrFileInfo->m_strErr = pDownloadFileInfo->GetErr(); pErrFileInfo->m_strTErrTime = strLocalDt; pErrFileInfo->m_strTAddTime = pDownloadFileInfo->m_strTAddTime; m_pTransMgr->GetErrTransMgr()->AddRealTimeErr(pErrFileInfo); m_pTransMgr->GetDownloadQueue()->RemoveQueue(pErrFileInfo->m_strID); } } return true; } void CMBAMWnd::SetMBCShowMode( ) { if( !m_bLayoutInited) return; if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode == 1) { m_AMChatFrame.CloseGungHoDetailWnd(); SWindow *pWnd = m_pPageRoot->FindChildByName2(L"wnd_amcontactbg"); if(pWnd) pWnd->SetAttribute(_T("pos"),_T("[0,0,-1,-1")); SWindow *pWnd2 = m_pPageRoot->FindChildByName2(L"wnd_amworkbg"); if(pWnd2) pWnd2->SetVisible(false); POSITION pos; CMBChatWnd *pChatWnd = NULL; CString strKey; for ( pos = m_mapChatWnd.GetStartPosition(); pos; ) { m_mapChatWnd.GetNextAssoc( pos,strKey, pChatWnd ); if(!pChatWnd || pChatWnd->IsWindow()) { m_AMRecentContactWnd.AddContactItem(strKey); } } CMBGroupChatWnd *pGroupChatWnd = NULL; for ( pos = m_mapGroupChatWnd.GetStartPosition(); pos; ) { m_mapGroupChatWnd.GetNextAssoc( pos,strKey, pGroupChatWnd ); if(!pGroupChatWnd || pGroupChatWnd->IsWindow()) m_AMRecentContactWnd.AddContactItem(strKey,AM_VIEWITEMTYPE_CROWD); } m_AMRecentContactWnd.SortContactreeItem(); } else { SWindow *pWnd = m_pPageRoot->FindChildByName2(L"wnd_amcontactbg"); if(pWnd) pWnd->SetAttribute(_T("pos"),_T("[0,0,@288,-1")); SWindow *pWnd2 = m_pPageRoot->FindChildByName2(L"wnd_amworkbg"); if(pWnd2) { pWnd2->SetVisible(true); pWnd2->SetAttribute(_T("pos"),_T("[0,0,-0,-0")); } POSITION pos; CMBChatWnd *pChatWnd = NULL; CString strKey; for ( pos = m_mapChatWnd.GetStartPosition(); pos; ) { m_mapChatWnd.GetNextAssoc( pos,strKey, pChatWnd ); if(!pChatWnd || pChatWnd->IsWindow()) { m_AMRecentContactWnd.RemoveContactItem(strKey); } } CMBGroupChatWnd *pGroupChatWnd = NULL; for ( pos = m_mapGroupChatWnd.GetStartPosition(); pos; ) { m_mapGroupChatWnd.GetNextAssoc( pos,strKey, pGroupChatWnd ); if(!pGroupChatWnd || pGroupChatWnd->IsWindow()) m_AMRecentContactWnd.RemoveContactItem(strKey,AM_VIEWITEMTYPE_CROWD); } CString strID; int nType; m_AMRecentContactWnd.GelConcactTreeItem(strID, nType); if(strID.IsEmpty()) return; STabCtrl *pTab2 = m_pPageRoot->FindChildByName2(L"tab_sharework_panel"); if(nType == AM_VIEWITEMTYPE_CROWD) { CCrowdItem *pItem = NULL; m_MessengerPro.m_CrowdDataMgr.LookupCrowdItem(strID,pItem); if(!pItem) { if(pTab2) pTab2->SetCurSel(4); return; } if(pTab2) pTab2->SetCurSel(2); m_AMGroupChatFrame.SetCrowdChat(pItem); } else{ CMBOrgUser *pUser = NULL; m_MessengerPro.m_pMBOrgListMgr->LookupUser(strID,pUser); if(!pUser) { if(pTab2) pTab2->SetCurSel(4); return; } if(pTab2) pTab2->SetCurSel(0); m_AMChatFrame.SetReceiver(*pUser); } } } void CMBAMWnd::ShowUserChat( CMBOrgUser &itemReceiver,bool bDBClik) { if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode == 1) { if(bDBClik) ShowChatWnd(itemReceiver); } else { if( !bDBClik) m_AMChatFrame.SetReceiver(itemReceiver); } } void CMBAMWnd::ShowGroupChat( CCrowdItem *pCrowdItem,bool bDBClik) { if(!pCrowdItem) return; if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode == 1) { if(bDBClik) ShowGroupChatWnd(pCrowdItem); } else { if( !bDBClik) m_AMGroupChatFrame.SetCrowdChat(pCrowdItem); } } void CMBAMWnd::ShowUserInfo( CMBOrgUser &itemReceiver) { if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode == 1) { ShowUserInfoWnd(itemReceiver); return; } else { m_AmUserInfoFrame.SetUser(itemReceiver); } } void CMBAMWnd::ShowGroupInfo( CString strID,CString strName) { if(strID.IsEmpty()) return; if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode == 1) { ShowGroupInfoWnd(strID,strName); return; } else { m_AmGroupInfoFrame.SetCrowdItem(strID,strName); } } void CMBAMWnd::ShowChatWnd( CMBOrgUser &itemReceiver) { CString strKey; if(itemReceiver.m_strLoginName.IsEmpty()) return; if(itemReceiver.m_nUserVer < 1) { CString strXml = _T(""); int nVer = 0; m_MessengerPro.m_AMDBMgr.LoadUserInfo(itemReceiver.m_strLoginName,strXml,nVer); if( !strXml.IsEmpty()) m_MessengerPro.m_pMBOrgListMgr->ParseOrgXml(AM_VIEWITEMTYPE_USER,_T(""), CMD_UBGI,strXml, false); else m_MessengerPro.m_pMBOrgListMgr->AddMember(AM_VIEWITEMTYPE_USER,itemReceiver.m_strLoginName, itemReceiver.m_strUserName); } strKey.Format(_T("%s"),itemReceiver.m_strLoginName); CMBChatWnd *pChatWnd = NULL; strKey.MakeLower(); if( !m_mapChatWnd.Lookup(strKey,pChatWnd)) { pChatWnd = NULL; } if(!pChatWnd || !pChatWnd->IsWindow()) { pChatWnd = new CMBChatWnd(); pChatWnd->SetServerMgrPtr(m_pServerMgr); pChatWnd->SetAMWndPtr(this); pChatWnd->SetReceiver(itemReceiver); pChatWnd->Create(NULL); m_mapChatWnd.SetAt(strKey, pChatWnd); pChatWnd->CenterWindow(GetDesktopWindow()); pChatWnd->SendMessage(WM_INITDIALOG); pChatWnd->ShowWindow(SW_SHOWDEFAULT); } else { if(pChatWnd->IsIconic()) pChatWnd->ShowWindow(SW_SHOWNORMAL); else pChatWnd->ShowWindow(SW_SHOW); pChatWnd->SetWindowPos( HWND_TOPMOST, 0, 0, 0, 0,SWP_NOSIZE| SWP_NOMOVE ); pChatWnd->SetWindowPos( HWND_NOTOPMOST, 0, 0, 0, 0,SWP_NOSIZE| SWP_NOMOVE ); OpenAMUnreadMsg(itemReceiver.m_strLoginName, AM_VIEWITEMTYPE_USER); } } CMBChatWnd* CMBAMWnd::GetChatWnd( CString strLoginName) { if(strLoginName.IsEmpty()) return NULL; CMBChatWnd *pChatWnd = NULL; strLoginName.MakeLower(); if( !m_mapChatWnd.Lookup(strLoginName,pChatWnd)) { return NULL; } if(pChatWnd && pChatWnd->IsWindow()) { return pChatWnd; } return NULL; } void CMBAMWnd::CloseChatWnd( CString strUser) { if(strUser.IsEmpty()) return; strUser.MakeLower(); m_mapChatWnd.RemoveKey(strUser); if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode == 1) { m_AMChatFrame.LoadChatWndNewMsg(strUser); return; } m_AMRecentContactWnd.AddContactItem(strUser,AM_VIEWITEMTYPE_USER); m_AMRecentContactWnd.SortContactreeItem(); m_AMChatFrame.LoadChatWndNewMsg(strUser); } void CMBAMWnd::ShowGroupChatWnd( CCrowdItem *pCrowdItem) { if( !pCrowdItem) return; CString strKey; strKey = pCrowdItem->m_strID; CMBGroupChatWnd *pChatWnd = NULL; strKey.MakeLower(); if( !m_mapGroupChatWnd.Lookup(strKey,pChatWnd)) { pChatWnd = NULL; } if(!pChatWnd || !pChatWnd->IsWindow()) { pChatWnd = new CMBGroupChatWnd(); pChatWnd->SetServerMgrPtr(m_pServerMgr); pChatWnd->SetAMWndPtr(this); pChatWnd->SetCrowdChat(pCrowdItem); pChatWnd->Create(NULL); pChatWnd->CenterWindow(GetDesktopWindow()); m_mapGroupChatWnd.SetAt(strKey, pChatWnd); pChatWnd->SendMessage(WM_INITDIALOG); pChatWnd->ShowWindow(SW_SHOWDEFAULT); } else { if(pChatWnd->IsIconic()) pChatWnd->ShowWindow(SW_SHOWNORMAL); else pChatWnd->ShowWindow(SW_SHOW); pChatWnd->SetWindowPos( HWND_TOPMOST, 0, 0, 0, 0,SWP_NOSIZE| SWP_NOMOVE ); pChatWnd->SetWindowPos( HWND_NOTOPMOST, 0, 0, 0, 0,SWP_NOSIZE| SWP_NOMOVE ); OpenAMUnreadMsg(pCrowdItem->m_strID, AM_VIEWITEMTYPE_CROWD); } } CMBGroupChatWnd* CMBAMWnd::GetGroupChatWnd( CString strID) { if(strID.IsEmpty()) return NULL; CMBGroupChatWnd *pChatWnd = NULL; strID.MakeLower(); if( !m_mapGroupChatWnd.Lookup(strID,pChatWnd)) { return NULL; } if(pChatWnd && pChatWnd->IsWindow()) { return pChatWnd; } return NULL; } void CMBAMWnd::CloseGroupChatWnd( CString strID) { if(strID.IsEmpty()) return; strID.MakeLower(); m_mapGroupChatWnd.RemoveKey(strID); if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode == 1) { m_AMGroupChatFrame.LoadChatWndNewMsg(strID); return; } m_AMRecentContactWnd.AddContactItem(strID,AM_VIEWITEMTYPE_CROWD); m_AMRecentContactWnd.SortContactreeItem(); m_AMGroupChatFrame.LoadChatWndNewMsg(strID); } void CMBAMWnd::ShowChatLogWnd( CMBOrgUser &itemReceiver) { CString strKey; if(itemReceiver.m_strLoginName.IsEmpty()) return; strKey.Format(_T("%s"),itemReceiver.m_strLoginName); CMBChatLogWnd *pChatLogWnd = NULL; strKey.MakeLower(); if( !m_mapChatLogWnd.Lookup(strKey,pChatLogWnd)) { pChatLogWnd = NULL; } if(!pChatLogWnd || !pChatLogWnd->IsWindow()) { pChatLogWnd = new CMBChatLogWnd(); pChatLogWnd->SetServerMgrPtr(m_pServerMgr); pChatLogWnd->SetAMWndPtr(this); pChatLogWnd->SetTransSvrMgr( m_pTransSvrMgr ); pChatLogWnd->Create(NULL); pChatLogWnd->CenterWindow(GetDesktopWindow()); pChatLogWnd->SetUser(itemReceiver); m_mapChatLogWnd.SetAt(strKey, pChatLogWnd); pChatLogWnd->SendMessage(WM_INITDIALOG); pChatLogWnd->ShowWindow(SW_SHOWDEFAULT); pChatLogWnd->LoadChatRecordData(); } else { if(pChatLogWnd->IsIconic()) pChatLogWnd->ShowWindow(SW_SHOWNORMAL); else pChatLogWnd->ShowWindow(SW_SHOW); pChatLogWnd->LoadChatRecordData(); pChatLogWnd->SetWindowPos( HWND_TOPMOST, 0, 0, 0, 0,SWP_NOSIZE| SWP_NOMOVE ); pChatLogWnd->SetWindowPos( HWND_NOTOPMOST, 0, 0, 0, 0,SWP_NOSIZE| SWP_NOMOVE ); } } CMBChatLogWnd* CMBAMWnd::GetChatLogWnd( CString strLoginName) { if(strLoginName.IsEmpty()) return NULL; CMBChatLogWnd *pChatLogWnd = NULL; strLoginName.MakeLower(); if( !m_mapChatLogWnd.Lookup(strLoginName,pChatLogWnd)) { return NULL; } if(pChatLogWnd && pChatLogWnd->IsWindow()) { return pChatLogWnd; } return NULL; } void CMBAMWnd::CloseChatLogWnd( CString strUser) { if(strUser.IsEmpty()) return; strUser.MakeLower(); m_mapChatLogWnd.RemoveKey(strUser); } void CMBAMWnd::ShowGroupChatLogWnd(CString strCrowdID) { if(strCrowdID.IsEmpty()) return; CString strKey; strKey = strCrowdID; CMBGroupChatLogWnd *pChatLogWnd = NULL; strKey.MakeLower(); if( !m_mapGroupChatLogWnd.Lookup(strKey,pChatLogWnd)) { pChatLogWnd = NULL; } if(!pChatLogWnd || !pChatLogWnd->IsWindow()) { pChatLogWnd = new CMBGroupChatLogWnd(); pChatLogWnd->SetServerMgrPtr(m_pServerMgr); pChatLogWnd->SetAMWndPtr(this); pChatLogWnd->Create(NULL); pChatLogWnd->CenterWindow(GetDesktopWindow()); pChatLogWnd->SetCrowd(strCrowdID); m_mapGroupChatLogWnd.SetAt(strKey, pChatLogWnd); pChatLogWnd->SendMessage(WM_INITDIALOG); pChatLogWnd->ShowWindow(SW_SHOWDEFAULT); pChatLogWnd->LoadChatRecordData(); } else { if(pChatLogWnd->IsIconic()) pChatLogWnd->ShowWindow(SW_SHOWNORMAL); else pChatLogWnd->ShowWindow(SW_SHOW); pChatLogWnd->LoadChatRecordData(); pChatLogWnd->SetWindowPos( HWND_TOPMOST, 0, 0, 0, 0,SWP_NOSIZE| SWP_NOMOVE ); pChatLogWnd->SetWindowPos( HWND_NOTOPMOST, 0, 0, 0, 0,SWP_NOSIZE| SWP_NOMOVE ); } } CMBGroupChatLogWnd* CMBAMWnd::GetGroupChatLogWnd( CString strCrowdID) { if(strCrowdID.IsEmpty()) return NULL; CMBGroupChatLogWnd *pChatLogWnd = NULL; strCrowdID.MakeLower(); if( !m_mapGroupChatLogWnd.Lookup(strCrowdID,pChatLogWnd)) { return NULL; } if(pChatLogWnd && pChatLogWnd->IsWindow()) { return pChatLogWnd; } return NULL; } void CMBAMWnd::CloseGroupChatLogWnd( CString strCrowdID) { if(strCrowdID.IsEmpty()) return; strCrowdID.MakeLower(); m_mapGroupChatLogWnd.RemoveKey(strCrowdID); } void CMBAMWnd::ShowUserInfoWnd( CMBOrgUser &itemReceiver) { CString strKey; if(itemReceiver.m_strLoginName.IsEmpty()) return; strKey.Format(_T("%s"),itemReceiver.m_strLoginName); CMBUserInfoWnd *pInfoWnd = NULL; strKey.MakeLower(); if( !m_mapUserInfoWnd.Lookup(strKey,pInfoWnd)) { pInfoWnd = NULL; } if(!pInfoWnd || !pInfoWnd->IsWindow()) { pInfoWnd = new CMBUserInfoWnd(); pInfoWnd->SetServerMgrPtr(m_pServerMgr); pInfoWnd->SetAMWndPtr(this); pInfoWnd->SetUser(itemReceiver); pInfoWnd->Create(NULL); pInfoWnd->CenterWindow(GetDesktopWindow()); pInfoWnd->SendMessage(WM_INITDIALOG); pInfoWnd->ShowWindow(SW_SHOWDEFAULT); m_mapUserInfoWnd.SetAt(strKey, pInfoWnd); } else { if(pInfoWnd->IsIconic()) pInfoWnd->ShowWindow(SW_SHOWNORMAL); else pInfoWnd->ShowWindow(SW_SHOW); pInfoWnd->SetWindowPos( HWND_TOPMOST, 0, 0, 0, 0,SWP_NOSIZE| SWP_NOMOVE ); pInfoWnd->SetWindowPos( HWND_NOTOPMOST, 0, 0, 0, 0,SWP_NOSIZE| SWP_NOMOVE ); } } CMBUserInfoWnd* CMBAMWnd::GetUserInfoWnd( CString strLoginName) { if(strLoginName.IsEmpty()) return NULL; CMBUserInfoWnd *pInfoWnd = NULL; strLoginName.MakeLower(); if( !m_mapUserInfoWnd.Lookup(strLoginName,pInfoWnd)) { return NULL; } if(pInfoWnd && pInfoWnd->IsWindow()) { return pInfoWnd; } return NULL; } void CMBAMWnd::CloseUserInfoWnd( CString strUser) { if(strUser.IsEmpty()) return; strUser.MakeLower(); m_mapUserInfoWnd.RemoveKey(strUser); } void CMBAMWnd::ShowGroupInfoWnd( CString strID,CString strName) { if( strID.IsEmpty()) return; CMBGroupInfoWnd *pInfoWnd = NULL; strID.MakeLower(); if( !m_mapGroupInfoWnd.Lookup(strID,pInfoWnd)) { pInfoWnd = NULL; } if(!pInfoWnd || !pInfoWnd->IsWindow()) { pInfoWnd = new CMBGroupInfoWnd(); pInfoWnd->SetServerMgrPtr(m_pServerMgr); pInfoWnd->SetAMWndPtr(this); pInfoWnd->SetCrowdDataMgr(&m_MessengerPro.m_CrowdDataMgr); pInfoWnd->SetCrowdItem(strID,strName); pInfoWnd->Create(NULL); pInfoWnd->CenterWindow(GetDesktopWindow()); pInfoWnd->SendMessage(WM_INITDIALOG); pInfoWnd->ShowWindow(SW_SHOWDEFAULT); m_mapGroupInfoWnd.SetAt(strID, pInfoWnd); } else { if(pInfoWnd->IsIconic()) pInfoWnd->ShowWindow(SW_SHOWNORMAL); else pInfoWnd->ShowWindow(SW_SHOW); pInfoWnd->SetWindowPos( HWND_TOPMOST, 0, 0, 0, 0,SWP_NOSIZE| SWP_NOMOVE ); pInfoWnd->SetWindowPos( HWND_NOTOPMOST, 0, 0, 0, 0,SWP_NOSIZE| SWP_NOMOVE ); } } CMBGroupInfoWnd* CMBAMWnd::GetGroupInfoWnd( CString strID) { if(strID.IsEmpty()) return NULL; CMBGroupInfoWnd *pInfoWnd = NULL; strID.MakeLower(); if( !m_mapGroupInfoWnd.Lookup(strID,pInfoWnd)) { return NULL; } if(pInfoWnd && pInfoWnd->IsWindow()) { return pInfoWnd; } return NULL; } void CMBAMWnd::CloseGroupInfoWnd( CString strID) { if(strID.IsEmpty()) return; strID.MakeLower(); m_mapGroupInfoWnd.RemoveKey(strID); } void CMBAMWnd::IFMsgModeSendMsg( CMsgItem *pItem ) { if ( !pItem ) return; CMsgAttachmentItem itemMsgAttachment; int nCount, nIndex; CString strReturn; CString strMessage; CString strCaption; DWORD dwAttr; __int64 nFileSize; CFileStatus statusFile; CString strFileNames; BOOL bFlag = FALSE; nCount = pItem->m_arMsgAttachments.GetSize(); CString strLog; if( !ProcessLimitMsgAce(nCount, strMessage )) { MBMessageBox(m_hWnd,strMessage, _T("Ìáʾ"), MB_OK); return; } strFileNames = _T(""); for ( nIndex = 0; nIndex < nCount; ) { itemMsgAttachment = pItem->m_arMsgAttachments.GetAt( nIndex ); if ( itemMsgAttachment.m_strFileName.IsEmpty() ) { pItem->m_arMsgAttachments.RemoveAt(nIndex); nCount--; continue; } dwAttr= ::GetFileAttributes(itemMsgAttachment.m_strFileName); if(dwAttr == DWORD(-1) ) { pItem->m_arMsgAttachments.RemoveAt(nIndex); nCount--; continue; } else if(dwAttr & FILE_ATTRIBUTE_DIRECTORY) { nFileSize = 0; nFileSize = CMBAMUIBaseFun::GetFolderSize(itemMsgAttachment.m_strFileName); if ( nFileSize <= 0 ) { pItem->m_arMsgAttachments.RemoveAt(nIndex); strFileNames += CStrFileUtils::GetFileName(itemMsgAttachment.m_strFileName) + _T("_1;"); nCount--; continue; } if( !ProcessLimitAttacshAce(itemMsgAttachment.m_strFileName, nFileSize, strReturn)) { pItem->m_arMsgAttachments.RemoveAt(nIndex); strFileNames += CStrFileUtils::GetFileName(itemMsgAttachment.m_strFileName) + _T("_2;"); nCount--; continue; } bFlag = TRUE; nIndex++; } else { if ( CFile::GetStatus( itemMsgAttachment.m_strFileName, statusFile ) ) { nFileSize = statusFile.m_size; if( !ProcessLimitAttacshAce(itemMsgAttachment.m_strFileName, nFileSize, strReturn)) { pItem->m_arMsgAttachments.RemoveAt(nIndex); strFileNames += CStrFileUtils::GetFileName(itemMsgAttachment.m_strFileName) + _T("_3;"); nCount--; continue; } if(statusFile.m_size < 1) { pItem->m_arMsgAttachments.RemoveAt(nIndex); strFileNames += CStrFileUtils::GetFileName(itemMsgAttachment.m_strFileName) + _T("_4;"); nCount--; continue; } if( !ProcessLimitAttacshAce(itemMsgAttachment.m_strFileName, statusFile.m_size, strReturn)) { pItem->m_arMsgAttachments.RemoveAt(nIndex); strFileNames += CStrFileUtils::GetFileName(itemMsgAttachment.m_strFileName) + _T("_5;"); nCount--; continue; } } bFlag = TRUE; nIndex++; } } strFileNames.TrimRight(_T(";")); if( !strFileNames.IsEmpty()) { CString strLimitExts = _T(""); strLimitExts = m_pServerMgr->GetUserLogin()->GetUserAce()->GetFileLimitExtString(); if( strLimitExts.IsEmpty()) { if(m_pServerMgr->GetUserLogin()->GetUserAce()->m_nFileSizeLimit < 0) strMessage.Format(_T("%s µÈ¸½¼þ²»·ûºÏ·¢ËÍÒªÇó£¬ Óû§Ö»ÄÜ·¢Ëͷǿո½¼þ£¡"),strFileNames); else strMessage.Format(_T("%s µÈ¸½¼þ²»·ûºÏ·¢ËÍÒªÇó£¬ Óû§Ö»ÄÜ·¢ËÍ´óС²»³¬¹ý %d MBµÄ·Ç¿Õ¸½¼þ£¡"),strFileNames, m_pServerMgr->GetUserLogin()->GetUserAce()->m_nFileSizeLimit); } else { if(m_pServerMgr->GetUserLogin()->GetUserAce()->m_nFileSizeLimit < 0) strMessage.Format(_T("%s µÈ¸½¼þ²»·ûºÏ·¢ËÍÒªÇó£¬ Óû§Ö»ÄÜ·¢ËͳýÁËÀàÐÍ %s Ö®ÍâµÄ·Ç¿Õ¸½¼þ£¡"),strFileNames,strLimitExts); else strMessage.Format(_T("%s µÈ¸½¼þ²»·ûºÏ·¢ËÍÒªÇó£¬ Óû§Ö»ÄÜ·¢ËͳýÁËÀàÐÍ %s Ö®Íâ¡¢´óС²»³¬¹ý %d MBµÄ·Ç¿Õ¸½¼þ£¡"),strFileNames,strLimitExts, m_pServerMgr->GetUserLogin()->GetUserAce()->m_nFileSizeLimit); } MBMessageBox(m_hWnd,strMessage, _T("Ìáʾ"), MB_OK); return; } CMBSendMsgWnd *pSendMsgWnd= new CMBSendMsgWnd(); pSendMsgWnd->SetServerMgrPtr(m_pServerMgr); pSendMsgWnd->SetAMWndPtr(this); pSendMsgWnd->Create(NULL); pSendMsgWnd->CenterWindow(GetDesktopWindow()); pSendMsgWnd->SendMessage(WM_INITDIALOG); pSendMsgWnd->ShowWindow(SW_SHOWDEFAULT); pSendMsgWnd->SetData( pItem ); pSendMsgWnd->SetWindowPos( HWND_TOPMOST, 0, 0, 0, 0,SWP_NOSIZE| SWP_NOMOVE ); pSendMsgWnd->SetWindowPos( HWND_NOTOPMOST, 0, 0, 0, 0,SWP_NOSIZE| SWP_NOMOVE ); } void CMBAMWnd::IFChatModeSendMsg( CMsgItem *pItem ) { CString strUser; int nCount(0); CMsgOwnerItem itemReceiver; if ( !pItem ) return; nCount = pItem->m_arMsgOwners.GetSize(); if ( nCount == 0 ) return; itemReceiver = pItem->m_arMsgOwners.GetAt( 0 ); strUser = itemReceiver.m_strOwner; if ( strUser.IsEmpty() ) return; int nIndex; CStringArray arFile; CMsgAttachmentItem itemMsgAttachment; arFile.RemoveAll(); for ( nIndex = 0; nIndex < pItem->m_arMsgAttachments.GetSize(); nIndex++ ) { itemMsgAttachment = pItem->m_arMsgAttachments.GetAt( nIndex ); arFile.Add(itemMsgAttachment.m_strFileName); } CMBChatWnd* pChatWnd = GetChatWnd( strUser); if ( pChatWnd ) { pChatWnd->AddSendFileLst( arFile); if (pChatWnd->IsIconic()) pChatWnd->ShowWindow(SW_SHOWNORMAL); else pChatWnd->ShowWindow( SW_SHOW ); pChatWnd->SetWindowPos( HWND_TOPMOST, 0, 0, 0, 0,SWP_NOSIZE| SWP_NOMOVE ); pChatWnd->SetWindowPos( HWND_NOTOPMOST, 0, 0, 0, 0,SWP_NOSIZE| SWP_NOMOVE ); return; } CMBOrgUser *pUserItem = NULL; CMBOrgUser itemUserReceiver; if ( m_MessengerPro.m_pMBOrgListMgr->LookupUser( strUser,pUserItem ) ) { if ( pUserItem ) { itemUserReceiver = *pUserItem; } else { itemUserReceiver.m_strLoginName =itemReceiver.m_strOwner ; itemUserReceiver.m_strUserName =itemReceiver.m_strOwnerName ; } } else { itemUserReceiver.m_strLoginName =itemReceiver.m_strOwner ; itemUserReceiver.m_strUserName =itemReceiver.m_strOwnerName ; } if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode == 1) { ShowChatWnd(itemUserReceiver); CMBChatWnd *pChatWnd = GetChatWnd(strUser); if(pChatWnd) pChatWnd->AddSendFileLst( arFile); } else { m_AMChatFrame.SetReceiver(itemUserReceiver); m_AMChatFrame.AddSendFileLst( arFile); } } void CMBAMWnd::IFMsgModeSendMsgOpenUser( CMsgItem *pItem ) { if ( !pItem ) return; CMBSendMsgWnd *pSendMsgWnd= new CMBSendMsgWnd(); pSendMsgWnd->SetServerMgrPtr(m_pServerMgr); pSendMsgWnd->SetAMWndPtr(this); pSendMsgWnd->Create(NULL); pSendMsgWnd->CenterWindow(GetDesktopWindow()); pSendMsgWnd->SendMessage(WM_INITDIALOG); pSendMsgWnd->ShowWindow(SW_SHOWDEFAULT); pSendMsgWnd->SetData( pItem); pSendMsgWnd->SetWindowPos( HWND_TOPMOST, 0, 0, 0, 0,SWP_NOSIZE| SWP_NOMOVE ); pSendMsgWnd->SetWindowPos( HWND_NOTOPMOST, 0, 0, 0, 0,SWP_NOSIZE| SWP_NOMOVE ); } void CMBAMWnd::IFMsgSendAdvance( CMsgItem *pItem ) { if ( !pItem ) return; ISTKMessagePtr ptrIAMMessage; CComPtr pIAMMessage; HRESULT hr; hr = ptrIAMMessage.CreateInstance( _T("StkCom.STKMessage") ); if (FAILED (hr)) { _com_error error (hr); CString strError = error.ErrorMessage (); return; } CString strRes = _T(""); pIAMMessage = ptrIAMMessage; pItem->CapyDataTo( pIAMMessage ); long nTrID = MsgSendMsg( ptrIAMMessage, strRes,NULL, SENDTYPE_SEND ); if ( ptrIAMMessage.GetInterfacePtr() ) { ptrIAMMessage.Release( ); ptrIAMMessage = NULL; } if ( nTrID <= 0 ) { return; } } void CMBAMWnd::IFMsgSendAddInMsg( CMsgItem *pItem ) { if ( !pItem ) return; CString strAddInName; CString strParam; CString strUser; CString strPrompt; CString strData; pItem->GetProp( _T("addin_name"), strAddInName ); //CMBAddInObj* pAddInOb; //CSTKCAddInItem* pAddInItem ; //pAddInItem = GetCAddInItem(strAddInName); //if ( ! pAddInItem) //{ // //----------------------- // // δ°²×°²å¼þ´¦Àí // //----------------------- // strData.LoadString(IDS_SYS_COMNOTFIND); // strPrompt.Format(strData, strAddInName ); // STKMBMessageBox( strPrompt); // return ; //} //pAddInOb = InitAddIn(pAddInItem); //if ( ! pAddInOb) //{ // //----------------------- // // δ°²×°²å¼þ´¦Àí // //----------------------- // strPrompt.Format(_T("û·¢ÏÖÃûΪ '%s' µÄ²å¼þ£¡"), strAddInName ); // MBMessageBox( m_hWnd,strPrompt,_T("Ìáʾ"),MB_OK ); // return ; //} //CString strAttachXml; //CString strParamXml; //CString strAttachListXml; //CMsgAttachmentItem itemAttach; //if(pItem->m_arMsgAttachments.GetCount() > 0) //{ // strAttachListXml = _T(""); // for(int i = 0; i < pItem->m_arMsgAttachments.GetCount();i++) // { // itemAttach = pItem->m_arMsgAttachments.GetAt(i); // strAttachXml.Format(_T("%s"), itemAttach.m_strFileName ); // strAttachListXml += strAttachXml; // } // strAttachListXml += _T(""); //} //strParamXml.Format(_T("%s"), strAttachListXml); //pAddInOb->OnAddInCmdReceive( strParamXml ); } void CMBAMWnd::SendFileList( CStringArray &arFileist,CString strAddinName ) { if ( !m_MessengerPro.IsLogined( ) ) return ; if(arFileist.GetCount() < 1) return; CMsgItem itemMsg; CString strFile; for(int i = 0;i < arFileist.GetCount(); i++) { strFile = arFileist.GetAt(i); CMsgAttachmentItem itemMsgAttachment; itemMsgAttachment.m_strFileName = strFile; itemMsg.m_arMsgAttachments.Add( itemMsgAttachment ); } if(strAddinName.IsEmpty()) { IFMsgModeSendMsg( &itemMsg ); } else { itemMsg.SetProp( _T("addin_name"), strAddinName ); IFMsgSendAddInMsg( &itemMsg ); } } void CMBAMWnd::ModifyUserRemarks( CString strLoginName,CString strRemarksName ) { CString strOldRemarks = _T(""); if(strLoginName.IsEmpty()) return; strOldRemarks = m_MessengerPro.m_pMBOrgListMgr->GetUserRemarksName(strLoginName); if(strOldRemarks == strRemarksName) return; m_MessengerPro.m_AMDBMgr.SaveUserRemarks(strLoginName,strRemarksName); m_MessengerPro.m_pMBOrgListMgr->SetUserRemarksName(strLoginName,strRemarksName); CMBChatWnd *pChatWnd = GetChatWnd(strLoginName); if(pChatWnd) { pChatWnd->ShowUserInfo(); } /*else { if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode != 1) { m_AMChatFrame.ShowUserInfo(strUser); } }*/ /*CMBChatLogWnd *pChatLogWnd = GetChatLogWnd(strLoginName); if(pChatLogWnd) { pChatLogWnd->ShowUserInfo(); }*/ m_AMRecentContactWnd.UpdateUserShow(); m_AMFriendWnd.UpdateUserShow(); m_AMOrgWnd.UpdateUserShow(); } void CMBAMWnd::OnUserInfoSet( ) { if( !m_pUserSetWnd || !m_pUserSetWnd->IsWindow() ) { m_pUserSetWnd = new CMBUserSetWnd(); m_pUserSetWnd->SetServerMgrPtr(m_pServerMgr); m_pUserSetWnd->SetAMWndPtr(this); m_pUserSetWnd->Create(NULL); m_pUserSetWnd->CenterWindow(GetDesktopWindow()); m_pUserSetWnd->SendMessage(WM_INITDIALOG); m_pUserSetWnd->ShowWindow(SW_SHOWDEFAULT); m_pUserSetWnd->CenterWindow(); } else { if(m_pUserSetWnd->IsIconic()) m_pUserSetWnd->ShowWindow(SW_SHOWNORMAL); else m_pUserSetWnd->ShowWindow(SW_SHOW); m_pUserSetWnd->SetWindowPos( HWND_TOPMOST, 0, 0, 0, 0,SWP_NOSIZE| SWP_NOMOVE ); m_pUserSetWnd->SetWindowPos( HWND_NOTOPMOST, 0, 0, 0, 0,SWP_NOSIZE| SWP_NOMOVE ); } } BOOL CMBAMWnd::ChangeStatus(int nUserStatus) { return m_MessengerPro.ChangeStatus( nUserStatus ); } void CMBAMWnd::OnWndHideToShow( ) { if(!m_bLayoutInited) return; if( !m_MessengerPro.IsLogined()) return; if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode == 1) { return; } CString strID = _T(""); int nType = 0; GetCurrentShowChat(strID,nType); if(strID.IsEmpty()) return; if ( nType == AM_VIEWITEMTYPE_USER ) { CMBChatWnd *pChatWnd = GetChatWnd(strID); if( pChatWnd) { return; } CMBOrgUser *pUser = NULL; m_MessengerPro.m_pMBOrgListMgr->LookupUser(strID,pUser); if(pUser) m_AMChatFrame.SetReceiver(*pUser); } else if ( nType == AM_VIEWITEMTYPE_CROWD ) { CMBGroupChatWnd *pChatWnd = GetGroupChatWnd(strID); if( pChatWnd) { return; } CCrowdItem *pItem = NULL; m_MessengerPro.m_CrowdDataMgr.LookupCrowdItem(strID,pItem); if(pItem) m_AMGroupChatFrame.SetCrowdChat(pItem); } } void CMBAMWnd::OnMsgTooltipPop( ) { if(!m_bLayoutInited) return; if( !m_MessengerPro.IsLogined()) return; int nMsgCount = m_TipMgr.GetAMUnreadMsgCount(); if ( nMsgCount == 0 || !m_TipMgr.IsHaveNewMsg() ) { m_TipMgr.ShowMsgTipWindow( SW_HIDE ); SShellNotifyIcon* notify = m_pHostWnd->FindChildByID2(110); notify->StopAni(); m_TipMgr.ShowMsgTipWindow( SW_HIDE ); return; } CAMUnreadMsg *pUnreadMsg = NULL; CString strMsgExtType = _T(""); // ÏûÏ¢À´Ô´£¬ÊÇ·ñAddIn CString strMsgID; ISTKMessagePtr IMessagePtr; long nTrID = 0; CString strChatDlg = _T(""); int nMsgIndex; nMsgIndex = 0; pUnreadMsg = m_TipMgr.GetAMUnreadMsgAt( nMsgIndex ); if( !pUnreadMsg) { m_TipMgr.ShowMsgTipWindow( SW_HIDE ); SShellNotifyIcon* notify = m_pHostWnd->FindChildByID2(110); notify->StopAni(); m_TipMgr.ShowMsgTipWindow( SW_HIDE ); return; } strMsgID = pUnreadMsg->m_strMsgID; CMsgItem itemMsg; CCrowdMsgItem itemCrowdMsg; CString strSender; CString strUserID = _T(""); // ReadMsg if ( strMsgID.CompareNoCase( m_TipMgr.m_strCurMsgID ) != 0 ) // ·ÀÖ¹ÖØ¸´µã»÷ijһÏûÏ¢ { m_TipMgr.m_strCurMsgID = strMsgID; if(pUnreadMsg->m_nAMUnreadMsgType != AMUnreadMsg_TYPE_CROWD) { strChatDlg.Format(_T("0-%s"),pUnreadMsg->m_strSender ); strSender = pUnreadMsg->m_strSender; ShowChatObjMsg( strSender, AM_VIEWITEMTYPE_USER); //CMsgItem msg; //GetMessengerPro( )->m_AMDBMgr.LoadMsgFromDB(strMsgID,&itemMsg); //if( !pUnreadMsg->m_bDownLoaded ) //{ // //--------------------------------------------- // // Èç¹ûÏûÏ¢»¹Ã»ÏÂÔØ£¬ÔòÏÈÏÂÔØ // //--------------------------------------------- // m_TipMgr.RemoveAMUnreadMsgAt( nMsgIndex ); // m_MessengerPro.ReadUserMsg(strSender , strMsgID, nTrID ); // //} //else //{ // m_TipMgr.RemoveAMUnreadMsgAt( nMsgIndex ); // m_MessengerPro.ShowMessage( &itemMsg, IMessagePtr ); // //} //NotifyReceiveMsg(); return ; } else { CString strCrowdID = pUnreadMsg->m_strCrowdID; ShowChatObjMsg( strCrowdID, AM_VIEWITEMTYPE_CROWD); /*strChatDlg.Format(_T("1-%s"),strCrowdID ); itemCrowdMsg = pUnreadMsg->m_itemCrowdMsg; m_TipMgr.RemoveAMUnreadMsgAt( nMsgIndex ); CCrowdItem* pItem = NULL; if( m_MessengerPro.m_CrowdDataMgr.LookupCrowdItem(strCrowdID,pItem)) { ShowGroupChatWnd(pItem); m_MessengerPro.m_AMDBMgr.SetCrowdMsgReaded( pUnreadMsg->m_strMsgID ); m_TipMgr.OpenAMUnreadMsg(_T(""),strChatDlg ); NotifyReceiveMsg(); } UpdateUnreadMsgCount();*/ return ; } } m_TipMgr.RemoveAMUnreadMsgAt( nMsgIndex ); NotifyReceiveMsg(); return ; } bool CMBAMWnd::OnEventBatchSaveSyncMsgToDB(EventArgs *e) { m_MessengerPro.m_AMDBMgr.BatchSaveSyncMsgToDB(); EventBatchSaveSyncMsgToDB *pEvt = (EventBatchSaveSyncMsgToDB*)e; if( !pEvt) return false; if( !pEvt->m_bIsUnreadMsg) return true; m_MessengerPro.m_strGetUnreadMsgTime = pEvt->m_strGetUnreadMsgTime; m_MessengerPro.m_AMDBMgr.SaveGetUnreadMsgTime(m_MessengerPro.m_strGetUnreadMsgTime ); CMapStrToStr mapTmpSender; CMapStringContact mapSender; CMBContactItem itemContact; CString strValue; mapTmpSender.RemoveAll(); mapSender.RemoveAll(); CMsgItem MsgItem; for(int i=0; i < pEvt->m_arSaveToDBMsg.GetCount();i++) { MsgItem = pEvt->m_arSaveToDBMsg.GetAt(i); if( m_MessengerPro.UseChat( &MsgItem ) ) { if(mapTmpSender.Lookup(MsgItem.m_strSender,strValue)) { m_MessengerPro.AMMsgReceiveShow(&MsgItem); } else { mapTmpSender.SetAt(MsgItem.m_strSender,MsgItem.m_strID); } } else OnNtyNewMsg( &MsgItem ); if( !mapSender.Lookup(MsgItem.m_strSender,itemContact)) { itemContact.m_strID = MsgItem.m_strSender; itemContact.m_strName = MsgItem.m_strSenderName; itemContact.m_strMsgDate = MsgItem.m_tmDate.Format(_T("%Y-%m-%d %H:%M:%S")); itemContact.m_strSubject = MsgItem.m_strSubject; mapSender.SetAt(MsgItem.m_strSender,itemContact); } } CString strSender; for(POSITION pos = mapTmpSender.GetStartPosition();pos;pos) { long nTrID; mapTmpSender.GetNextAssoc(pos,strSender,strValue); m_MessengerPro.ReadUserMsg( strSender,strValue,nTrID ); } mapTmpSender.RemoveAll(); CMBContactItem *pItemContact = NULL; POSITION posTemp; CString strUsers = _T(""); CString strDate; int nContancts = mapSender.GetCount(); if(nContancts > 0) { for(POSITION pos = mapSender.GetStartPosition();pos;pos) { mapSender.GetNextAssoc(pos,strSender,itemContact); strUsers += itemContact.m_strID + _T(";"); posTemp = m_MessengerPro.m_mbLastContact.FindContactItem( itemContact.m_strID, AM_VIEWITEMTYPE_USER ); if(posTemp) { pItemContact = (CMBContactItem*) m_MessengerPro.m_mbLastContact.m_listContact.GetAt(posTemp); if(pItemContact) { if(pItemContact->m_strMsgDate >= strDate) continue; } } m_MessengerPro.m_mbLastContact.AddContactItem(itemContact.m_strID,itemContact.m_strName,AM_VIEWITEMTYPE_USER,strDate,itemContact.m_strSubject ); AddContactItem(itemContact.m_strID,AM_VIEWITEMTYPE_USER ); } if( !strUsers.IsEmpty()) { strUsers.TrimRight(_T(";")); strUsers.MakeLower(); m_MessengerPro.SubscribeUserStatus(strUsers); } } return true; } bool CMBAMWnd::OnEventBatchAddLastContacts(EventArgs *e) { EventBatchAddLastContacts *pEvt = (EventBatchAddLastContacts*)e; if( !pEvt) return false; CString strContanctsInfo= pEvt->m_strContanctsInfo; int nContancts= pEvt->m_nContanctCount; stSTKLastContact itemContact; CString strLogin; CString strUsers = _T(""); CString strDate; CMBContactItem *pItemContact = NULL; POSITION posTemp; while(CMBOrgFunc::GetElementItem( strContanctsInfo, strLogin, _T(";") )) { if(strLogin.IsEmpty()) continue; if( m_MessengerPro.m_AMDBMgr.GetLastContactItem(strLogin,AM_VIEWITEMTYPE_USER,itemContact)) { strUsers += itemContact.strID + _T(";"); strDate = itemContact.dtDate.Format( _T("%Y-%m-%d %H:%M:%S") ); posTemp = m_MessengerPro.m_mbLastContact.FindContactItem( itemContact.strID, AM_VIEWITEMTYPE_USER ); if(posTemp) { pItemContact = (CMBContactItem*) m_MessengerPro.m_mbLastContact.m_listContact.GetAt(posTemp); if(pItemContact) { if(pItemContact->m_strMsgDate >= strDate) continue; } } m_MessengerPro.m_mbLastContact.AddContactItem(itemContact.strID,itemContact.strName,AM_VIEWITEMTYPE_USER,strDate,itemContact.strSubject ); AddContactItem(itemContact.strID,AM_VIEWITEMTYPE_USER ); } } if( !strUsers.IsEmpty()) { //CSTKCommFun::WriteLog(_T("¶©ÔÄ×î½üÓû§×´Ì¬")); strUsers.TrimRight(_T(";")); strUsers.MakeLower(); m_MessengerPro.SubscribeUserStatus(strUsers); } return true; } void CMBAMWnd::NewSendMsg( ) { if(!m_bLayoutInited) return; if( !m_MessengerPro.IsLogined()) return; CMBSelOrgList lstSelOrg; SendModeMsg(lstSelOrg); } void CMBAMWnd::OpenCapture(CString strRecever,CString strReceverName ) { if(!m_bLayoutInited) return; if( !m_MessengerPro.IsLogined()) return; if ( !m_pServerMgr->GetUserLogin()->GetUserAce()->m_bCanCutScreen) { MBMessageBox(m_hWnd,_T("Óû§Ã»Óз¢ËÍͼƬµÄȨÏÞ"),_T("Ìáʾ"),MB_OK); return; } BOOL bCaptureHideWnd = false; CMBUserProFun::LoadCaptureHideCurWnd(bCaptureHideWnd,m_pServerMgr->GetUserLogin()->m_strLoginName, m_pServerMgr->GetUserLogin()->m_strOrgServerID ); if(bCaptureHideWnd) { ShowWindow(m_hWnd,SW_HIDE ); } CMBSelOrgList lstSelOrg; BOOL bHaveDirectSend = TRUE; SStringW strUserName =L""; strUserName = m_pServerMgr->GetUserLogin()->m_strUserName; CString strCaptureFile; CString strWaterMark = _T(""); strWaterMark.Format(_T("MBC@%s"),strUserName); if(strRecever.IsEmpty()) bHaveDirectSend = FALSE; int nRet = CMBCaptureScreenFun::StartCaptureScreen(strCaptureFile,strWaterMark, TRUE,bHaveDirectSend); if(nRet == CaptureResult_Complete ) { if( !strRecever.IsEmpty()) { lstSelOrg.AddOrgItem(strRecever,strReceverName,0); } CMBSendMsgWnd *pSendMsgWnd= new CMBSendMsgWnd(); pSendMsgWnd->SetServerMgrPtr(m_pServerMgr); pSendMsgWnd->SetAMWndPtr(this); pSendMsgWnd->Create(NULL); pSendMsgWnd->CenterWindow(GetDesktopWindow()); pSendMsgWnd->SetReceiverOrg(lstSelOrg); pSendMsgWnd->SendMessage(WM_INITDIALOG); pSendMsgWnd->ShowWindow(SW_SHOWDEFAULT); pSendMsgWnd->SetWindowPos( HWND_TOPMOST, 0, 0, 0, 0,SWP_NOSIZE| SWP_NOMOVE ); pSendMsgWnd->SetWindowPos( HWND_NOTOPMOST, 0, 0, 0, 0,SWP_NOSIZE| SWP_NOMOVE ); pSendMsgWnd->SetSendImage(strCaptureFile); } else if( nRet == CaptureResult_DirectSend ) { lstSelOrg.AddOrgItem(strRecever,strReceverName,0); CMBSendMsgWnd *pSendMsgWnd= new CMBSendMsgWnd(); pSendMsgWnd->SetServerMgrPtr(m_pServerMgr); pSendMsgWnd->SetAMWndPtr(this); pSendMsgWnd->Create(NULL); pSendMsgWnd->CenterWindow(GetDesktopWindow()); pSendMsgWnd->SetReceiverOrg(lstSelOrg); pSendMsgWnd->SendMessage(WM_INITDIALOG); pSendMsgWnd->ShowWindow(SW_HIDE); pSendMsgWnd->SetSendImage(strCaptureFile,TRUE); //SendCaptureImage(strCaptureFile); } } void CMBAMWnd::UpdateAdmingWndMsg(CMsgItem *pMsgItem) { if( m_pMsgAdminWnd && m_pMsgAdminWnd->IsWindow() ) { m_pMsgAdminWnd->SendMessage( WM_SENDCHATDATA, (WPARAM)pMsgItem, 0 ); } } void CMBAMWnd::ShowUrlWebWnd(CString strURL, CString strTitle,int nWidth ,int nHeight) { if(strURL.IsEmpty()) return; CMBGungHoDetailWnd *pGungHoDetailWnd = new CMBGungHoDetailWnd(); pGungHoDetailWnd->SetOnlyWebWnd(TRUE,strTitle); pGungHoDetailWnd->SetServerMgrPtr(m_pServerMgr); pGungHoDetailWnd->Create(m_hWnd); pGungHoDetailWnd->SendMessage(WM_INITDIALOG); pGungHoDetailWnd->ShowWindow(SW_SHOWDEFAULT); pGungHoDetailWnd->LoadURL(strURL); if(nWidth > 0 && nHeight> 0) pGungHoDetailWnd->SetWindowPos( HWND_TOPMOST, 0, 0, nWidth, nHeight,SWP_NOMOVE ); else pGungHoDetailWnd->SetWindowPos( HWND_NOTOPMOST, 0, 0, 0, 0,SWP_NOSIZE| SWP_NOMOVE ); pGungHoDetailWnd->SetWindowPos( HWND_NOTOPMOST, 0, 0, 0, 0,SWP_NOSIZE| SWP_NOMOVE ); } void CMBAMWnd::DoMsgAddIn( CComPtr pMsg ) { CString strExtType; CString strParam; int nPos; CString strName; CString strType; CString strPrompt; CString strTitle; CComBSTR bszExtType; CString strData; bszExtType.Empty( ); pMsg->get_MsgExtType(&bszExtType); strExtType = (LPCTSTR)_bstr_t(bszExtType); bszExtType.Empty( ); nPos = strExtType.Find( _T("?") ); if( nPos <= 0 ) return; strType = strExtType.Left( nPos ); if( strType.CompareNoCase( _T("MsgAddIn") ) != 0 ) return; strParam = strExtType.Mid( nPos + 1 ); #ifdef _TTVNC if(strParam.CompareNoCase(TTVNCADDIN_FLAG) ==0) { m_MessengerPro.m_mgrTTVNCAddin.OnMsgReceive(pMsg); return; } #endif if(strParam.CompareNoCase(GUNGHOMSG_FLAG) ==0) { CMsgItem msg; msg.LoadData( pMsg ); ReadGungHoMsg(&msg); return; } else if(strParam.CompareNoCase(REMINDMSG_FLAG) ==0) { CMsgItem msg; msg.LoadData( pMsg ); ReadRemindMsg(&msg); return; } else if(strParam.CompareNoCase(MEETNOTICEMSG_FLAG) ==0) { CMsgItem msg; msg.LoadData( pMsg ); ReadMeetNoticeMsg(&msg); return; } m_AddInPro.AMSubAddInMsgReceive(strParam, pMsg); } void CMBAMWnd::ReadGungHoMsg(CMsgItem *pMsg) { CMBGungHoMsgWnd *pReadMsgWnd= new CMBGungHoMsgWnd(); pReadMsgWnd->SetServerMgrPtr(m_pServerMgr); pReadMsgWnd->SetAMWndPtr(this); pReadMsgWnd->Create(NULL); pReadMsgWnd->CenterWindow(GetDesktopWindow()); pReadMsgWnd->SetData(pMsg); pReadMsgWnd->SendMessage(WM_INITDIALOG); pReadMsgWnd->ShowWindow(SW_SHOWDEFAULT); pReadMsgWnd->SetMsgData(); } void CMBAMWnd::ReadRemindMsg(CMsgItem *pMsg) { CMBRemindMsgWnd *pReadMsgWnd= new CMBRemindMsgWnd(); pReadMsgWnd->SetServerMgrPtr(m_pServerMgr); pReadMsgWnd->SetAMWndPtr(this); pReadMsgWnd->Create(NULL); pReadMsgWnd->CenterWindow(GetDesktopWindow()); pReadMsgWnd->SetData(pMsg); pReadMsgWnd->SendMessage(WM_INITDIALOG); pReadMsgWnd->ShowWindow(SW_SHOWDEFAULT); pReadMsgWnd->SetMsgData(); } void CMBAMWnd::ReadMeetNoticeMsg(CMsgItem *pMsg) { CMBMeetNoticeMsgWnd *pReadMsgWnd= new CMBMeetNoticeMsgWnd(); pReadMsgWnd->SetServerMgrPtr(m_pServerMgr); pReadMsgWnd->SetAMWndPtr(this); pReadMsgWnd->Create(NULL); pReadMsgWnd->CenterWindow(GetDesktopWindow()); pReadMsgWnd->SetData(pMsg); pReadMsgWnd->SendMessage(WM_INITDIALOG); pReadMsgWnd->ShowWindow(SW_SHOWDEFAULT); pReadMsgWnd->SetMsgData(); } // ÏÔʾȺÏûÏ¢µ½´°¿ÚÉÏ void CMBAMWnd::ShowCrowdMsgToChat( CString strMsgID) { if( strMsgID.IsEmpty()) return; CCrowdMsgItem itemMsg; m_MessengerPro.m_AMDBMgr.SetCrowdMsgReaded(strMsgID); if( m_MessengerPro.m_AMDBMgr.LoadCrowdMsgFromDB(strMsgID,&itemMsg)) { if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode != 1) { m_AMGroupChatFrame.SendChatData(&itemMsg,true); } else { CMBGroupChatWnd *pGroupChatWnd = GetGroupChatWnd(itemMsg.m_strCrowdID); if( pGroupChatWnd ) { pGroupChatWnd->SetMsgData(&itemMsg); } } } } void CMBAMWnd::OnAddUserToFirend(CMBSelOrgList &lstSelOrg) { if( !m_pAddToFirendWnd || !m_pAddToFirendWnd->IsWindow() ) { m_pAddToFirendWnd = new CMBAddToFirendWnd(); m_pAddToFirendWnd->SetServerMgrPtr(m_pServerMgr); m_pAddToFirendWnd->SetAMWndPtr(this); m_pAddToFirendWnd->Create(NULL); m_pAddToFirendWnd->CenterWindow(GetDesktopWindow()); m_pAddToFirendWnd->SendMessage(WM_INITDIALOG); m_pAddToFirendWnd->SetSelUserList(lstSelOrg); m_pAddToFirendWnd->ShowWindow(SW_SHOWDEFAULT); m_pAddToFirendWnd->CenterWindow(); } else { if(m_pAMSettingWnd->IsIconic()) m_pAMSettingWnd->ShowWindow(SW_SHOWNORMAL); else m_pAMSettingWnd->ShowWindow(SW_SHOW); m_pAMSettingWnd->SetWindowPos( HWND_TOPMOST, 0, 0, 0, 0,SWP_NOSIZE| SWP_NOMOVE ); m_pAMSettingWnd->SetWindowPos( HWND_NOTOPMOST, 0, 0, 0, 0,SWP_NOSIZE| SWP_NOMOVE ); } } void CMBAMWnd::AddUserToFirendCtrl(CString strLogin,CString strName,CString strGroupID) { m_AMFriendWnd.AddUserToFirendCtrl(strLogin,strName,strGroupID); } void CMBAMWnd::AddUserToFirendCtrlEnd(CString strGroupID) { m_AMFriendWnd.AddUserToFirendCtrlEnd(strGroupID); } // н¨·Ö×é void CMBAMWnd::OnNewContactGroup() { if (!m_bLayoutInited) return ; CMBNewGroupWnd dlgNewGroupWnd; dlgNewGroupWnd.SetServerMgrPtr(m_pServerMgr); dlgNewGroupWnd.SetOrgWndtr( &m_AMFriendWnd); dlgNewGroupWnd.DoModal(); return ; } int CMBAMWnd::GetContactMsgRight(CString strID, int nType) { strID.MakeLower(); int nMsgRight = MSGRIGHT_PROMPTSHOW; if(nType == AM_VIEWITEMTYPE_USER) { m_mapUserMsgRight.Lookup(strID, nMsgRight); return nMsgRight; } else if(nType == AM_VIEWITEMTYPE_CROWD) { m_mapCrowdMsgRight.Lookup(strID, nMsgRight); return nMsgRight; } return nMsgRight; } void CMBAMWnd::SetContactMsgRight(CString strID,int nMsgRight, int nType) { if(strID.IsEmpty()) return; strID.MakeLower(); if(nType == AM_VIEWITEMTYPE_USER || nType == AM_VIEWITEMTYPE_CROWD ) { m_mapUserMsgRight.SetAt(strID, nMsgRight); m_MessengerPro.m_AMDBMgr.SaveContactMsgRight(strID,nMsgRight,nType); if(nMsgRight ==MSGRIGHT_AUTOSHOW ) { OpenAMUnreadMsg(strID,nType); } } } BOOL CMBAMWnd::IsShowChatFrame(CString strLoginName) { return m_AMChatFrame.IsShowChatFrame(strLoginName); } bool CMBAMWnd::OnEventChangeUserStatus(EventArgs *e) { EventChangeUserStatus *pEvt = (EventChangeUserStatus*)e; if( !pEvt) return false; m_MessengerPro.ChangeStatus(pEvt->m_nUserStatus); return true; } void CMBAMWnd::OnAddInLoginedRun( ) { CObList listMBCAddIn; m_AddInPro.GetMBAddInItem(ADDIN_SHOWTYPE_LOGINED, listMBCAddIn); POSITION pos; CMBCAddInItem *pItem = NULL; for( pos = listMBCAddIn.GetHeadPosition() ; pos ; ) { pItem = ( CMBCAddInItem * )listMBCAddIn.GetNext( pos ); if(pItem) { if ( pItem && !pItem->m_bIsDisabled ) { InitAddIn( pItem ); } } } } CMBAddInObj * CMBAMWnd::CreateCmdAddIn(CMBCAddInItem *pItem) { if ( !pItem ) return NULL; CMBAddInObj *pAddInObj = NULL; pAddInObj = new CMBAddInObj; if ( !pAddInObj ) return NULL; pAddInObj->OnInitData(*pItem); m_AddInPro.m_listSTKCAddInObj.AddTail( pAddInObj ); return pAddInObj; } CMBAddInObj * CMBAMWnd::GetAddInObj(CMBCAddInItem *pItem) { POSITION pos; CMBAddInObj *pAddInObj = NULL; for ( pos = m_AddInPro.m_listSTKCAddInObj.GetHeadPosition() ; pos ; ) { pAddInObj = (CMBAddInObj *)m_AddInPro.m_listSTKCAddInObj.GetNext( pos ); if( pAddInObj->m_itemAddIn.m_strAddInFlag.CompareNoCase( pItem->m_strAddInFlag ) == 0 ) { return pAddInObj; } } return NULL; } CMBAddInObj * CMBAMWnd::InitAddIn( CMBCAddInItem *pItem ) { if ( !pItem ) return NULL; CMBAddInObj *pAddInObj = NULL; // Èç¹û pItem->Flag ʹÓÃÏÖÓÐAddin ʵÀý pAddInObj = GetAddInObj( pItem ); if( !pAddInObj ) { // ´´½¨Ð嵀 AddIn ʵÀý pAddInObj = CreateCmdAddIn( pItem ); if( pAddInObj ) { try { pAddInObj->OnAddInInitData( m_hWnd , m_AddInPro.GetLoginInfo() ); } catch ( ... ) { delete pAddInObj; pAddInObj = NULL; } } } return pAddInObj; } void CMBAMWnd::RemoveAddIn(CMBAddInObj *pItem) { POSITION pos,OldPos; CMBAddInObj *pAddInObj = NULL; for( pos = m_AddInPro.m_listSTKCAddInObj.GetHeadPosition() ; pos ; ) { OldPos = pos; pAddInObj = (CMBAddInObj *)m_AddInPro.m_listSTKCAddInObj.GetNext( pos ); if( pAddInObj == pItem ) { delete pAddInObj; pAddInObj = NULL; m_AddInPro.m_listSTKCAddInObj.RemoveAt( OldPos ); break; } } } CMBAddInObj* CMBAMWnd::GetCAddInObj(CString strAddInFlag) { return m_AddInPro.GetSTKCAddInObj(strAddInFlag); } CMBCAddInItem *CMBAMWnd::GetCAddInItem(CString strAddInFlag) { return m_AddInPro.GetMBCAddInItem(strAddInFlag); } void CMBAMWnd::OnLoadVAddInItem( ) { POSITION pos; CMBVAddInItem *pItem = NULL; CString strURL; if(m_AddInPro.m_listSTKVAddIn.GetCount() < 1) return; for( pos = m_AddInPro.m_listSTKVAddIn.GetHeadPosition() ; pos ; ) { pItem = ( CMBVAddInItem * )m_AddInPro.m_listSTKVAddIn.GetNext( pos ); if(pItem && pItem->m_nAddInTargetType == ADDIN_TARGETTPYE_URL && pItem->m_nAddInVTargetPos == ADDIN_TARGETPOS_APPINTERATION) { } } for( pos = m_AddInPro.m_listSTKSVAddIn.GetHeadPosition() ; pos ; ) { pItem = ( CMBVAddInItem * )m_AddInPro.m_listSTKSVAddIn.GetNext( pos ); if(pItem && pItem->m_nAddInTargetType == ADDIN_TARGETTPYE_URL && pItem->m_nAddInVTargetPos == ADDIN_TARGETPOS_APPINTERATION) { } } } void CMBAMWnd::OnUnloadVAddInItem( ) { } void CMBAMWnd::OnShowAddinViewInfo(CString strFlag,CString strName,CString strURL) { if(m_pServerMgr->GetUserLogin()->m_nMBCShowMode != 1) { EventCloseGungHoDetailWnd *pTmpEvt = new EventCloseGungHoDetailWnd(NULL); SNotifyCenter::getSingleton().FireEventAsync(pTmpEvt); pTmpEvt->Release(); m_AmAddinFrame.ShowAddinViewWeb(strFlag,strName,strURL); } else { CString strTitle; strTitle.Format(_T("²åÒ³-%s"),strName); ShowUrlWebWnd(strURL,strTitle, 840,720); //CString strTitle; //SStringT strPopupUrl = strURL; //strTitle.Format(_T("²åÒ³-%s"),strName); //CMBViewWebWnd* pViewWnd = new CMBViewWebWnd(); //pViewWnd->SetTitle( strTitle ); //pViewWnd->Create(GetActiveWindow(),WS_POPUP | WS_DLGFRAME | WS_CLIPSIBLINGS | WS_CLIPCHILDREN,NULL,0,0,0,0); //pViewWnd->SendMessage(WM_INITDIALOG); ////pViewWnd->ShowWindow(SW_MAXIMIZE); //pViewWnd->LoadUrl(strPopupUrl); } }