// MBSelOrgWnd.cpp : implementation file // #include "stdafx.h" #include "mborgui.h" #include "MBSelOrgWnd.h" #include "MBOrgUIDef.h" // CMBSelOrgWnd CMBSelOrgWnd::CMBSelOrgWnd(): SHostDialog(_T("LAYOUT:XML_SELORG")) { m_pMBLastContact = NULL; m_pServerMgr = NULL; m_pAdapterOrgItemTile = NULL; m_pTileVOrgItem = NULL; m_nRetCode = 0; m_strWndTitle = _T(""); m_strQuerySessionID = _T(""); m_bMultiSelect = true; m_nSelectStyle = SELORGITEM_TYPE_USER; m_nTabSel = 0; m_pSelOrgList = NULL; } CMBSelOrgWnd::~CMBSelOrgWnd() { } // CMBSelOrgWnd member functions int CMBSelOrgWnd::OnCreate(LPCREATESTRUCT lpCreateStruct) { // MARGINS mar = {5,5,30,5}; // DwmExtendFrameIntoClientArea ( m_hWnd, &mar ); SetMsgHandled(FALSE); return 0; } BOOL CMBSelOrgWnd::OnInitDialog(HWND hWnd, LPARAM lParam) { Init(); m_bLayoutInited = TRUE; return 0; } void CMBSelOrgWnd::Init() { m_mbOrgListMgr.AddView(ROOTVIEW_SYSORGID,10000, _T("×éÖ¯½á¹¹"), _T("") ); m_mbOrgListMgr.AddView(SUBVIEW_ROLEROOTID,10000, _T("½ÇÉ«"), _T("") ); CMBOrgView *pView = NULL; CString strUsers = _T(""); m_mbOrgListMgr.AddView( SUBVIEW_CONTACTSTOOT, 10000, _T("ÁªÏµÈË"), _T("") ); m_mbOrgListMgr.LookupView(SUBVIEW_CONTACTSTOOT, pView); if(pView) { pView->AddMember( AM_VIEWITEMTYPE_CUSTGROUP, SUBVIEW_TOPCONTACTS, _T("³£ÓÃÁªÏµÈË"), _T(""),0 ); if( !m_pServerMgr->GetUserLogin()->m_strDepartGuid.IsEmpty() ) { pView->AddMember( AM_VIEWITEMTYPE_GROUP, m_pServerMgr->GetUserLogin()->m_strDepartGuid, m_pServerMgr->GetUserLogin()->m_strDepartName, _T(""), 10000 ); m_mbOrgListMgr.AddMember( AM_VIEWITEMTYPE_GROUP, m_pServerMgr->GetUserLogin()->m_strDepartGuid,m_pServerMgr->GetUserLogin()->m_strDepartName, 10000 ); } else if( !m_pServerMgr->GetUserLogin()->m_strUnitGuid.IsEmpty()) { pView->AddMember( AM_VIEWITEMTYPE_VIEW, m_pServerMgr->GetUserLogin()->m_strUnitGuid, m_pServerMgr->GetUserLogin()->m_strUnitName, _T(""), 10000 ); m_mbOrgListMgr.AddMember( AM_VIEWITEMTYPE_VIEW,m_pServerMgr->GetUserLogin()->m_strUnitGuid,m_pServerMgr->GetUserLogin()->m_strUnitName, 10000 ); } } m_mbOrgListMgr.AddMember( AM_VIEWITEMTYPE_CUSTGROUP, SUBVIEW_TOPCONTACTS, _T("³£ÓÃÁªÏµÈË"), 0 ); m_AMFriendWnd.SetFriendView(); m_AMFriendWnd.SetMBOrgListMgr(&m_mbOrgListMgr); m_AMOrgWnd.SetMBOrgListMgr(&m_mbOrgListMgr); m_AMUserWnd.SetMBOrgListMgr(&m_mbOrgListMgr); if(m_pMBLastContact) { m_AMRecentContactWnd.SetMBOrgListMgr(&m_mbOrgListMgr); m_AMRecentContactWnd.OnInit(this); } else { SRadioEx *pRadio = (SRadioEx*)FindChildByID(30000); if( pRadio){ pRadio->SetVisible(false,true); } pRadio = (SRadioEx*)FindChildByID(30001); if( pRadio){ pRadio->SetCheck(TRUE); } m_AMFriendWnd.OnInit(this); STabCtrl *pTab = FindChildByName2(L"tab_share_panel"); if( pTab != NULL ){ pTab->SetCurSel(_T("page_friendlist")); m_nTabSel = 1; } } //tileView m_pTileVOrgItem = FindChildByName2("tileex_selitem"); if(m_pTileVOrgItem) { m_pAdapterOrgItemTile = new CMBOrgItemTileAdapter; m_pAdapterOrgItemTile->SetDataPtr( m_pSelOrgList ); m_pAdapterOrgItemTile->SetSelectData(m_bMultiSelect); m_pAdapterOrgItemTile->SetMBOrgListMgr(&m_mbOrgListMgr); m_pAdapterOrgItemTile->SetServerMgrPtr(m_pServerMgr); m_pTileVOrgItem->SetAdapter(m_pAdapterOrgItemTile); m_pAdapterOrgItemTile->Release(); // ²»»áÕæµÄÊÍ·Å£¬ÈüÆÊýÆ÷¼õÒ» } if( !m_strWndTitle.IsEmpty()) { SStatic *Txt = FindChildByName2("title"); if(Txt) Txt->SetWindowText(m_strWndTitle); } SEdit *pEdit = FindChildByName2("edit_search"); if(pEdit) { pEdit->GetEventSet()->subscribeEvent(EVT_KEYDOWN, Subscriber(&CMBSelOrgWnd::OnEditSearchUserKeyDown,this)); } } // void CMBSelOrgWnd::OnOK() { if(m_pSelOrgList->GetOrgCount() < 1) return; SHostDialog::OnOK(); } void CMBSelOrgWnd::OnCancel() { SHostDialog::OnCancel(); } void CMBSelOrgWnd::OnClearAllSelOrg() { m_pSelOrgList->RemoveOrgAll(); m_pAdapterOrgItemTile->SetDataChanged(); } void CMBSelOrgWnd::OnCloseUserSearch() { SEdit *pEdit = FindChildByName2("edit_search"); if(pEdit) pEdit->SetWindowText(_T("")); SImageButton *pImgBtn = FindChildByName2("btn_usersearch_close"); if(pImgBtn) pImgBtn->SetVisible(false,true); pImgBtn = FindChildByName2("btn_usersearch"); if(pImgBtn) pImgBtn->SetVisible(true,true); STabCtrl *pTab = this->FindChildByName2(L"tab_share_panel"); if(pTab) { pTab->SetCurSel(m_nTabSel); } } void CMBSelOrgWnd::OnSearchUser() { SEdit *pEdit = FindChildByName2("edit_search"); if(!pEdit) return; CString strCondition = pEdit->GetWindowText(); strCondition.Trim(); POSITION pos; CMBOrgView *pView = NULL ; m_mbOrgListMgr.RemoveMember(AM_VIEWITEMTYPE_VIEW,m_strQuerySessionID); m_strQuerySessionID = _T(""); if(strCondition.IsEmpty()) return; STabCtrl *pTab = this->FindChildByName2(L"tab_share_panel"); if(pTab) { pTab->SetCurSel(3); } m_AMUserWnd.OnInit(this); SImageButton *pImgBtn = FindChildByName2("btn_usersearch"); if(pImgBtn) pImgBtn->SetVisible(false,true); pImgBtn = 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_mbOrgListMgr.LookupView(m_strQuerySessionID,pView)) { m_mbOrgListMgr.AddView(m_strQuerySessionID, 0,strViewName,_T("")); m_mbOrgListMgr.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 ); } void CMBSelOrgWnd::SetServerMgrPtr( CMBServerMgr *pMBServerMgr ) { m_pServerMgr = pMBServerMgr; m_AMFriendWnd.SetServerMgrPtr(m_pServerMgr); m_AMOrgWnd.SetServerMgrPtr(m_pServerMgr); m_AMRecentContactWnd.SetServerMgrPtr(m_pServerMgr); m_AMUserWnd.SetServerMgrPtr(m_pServerMgr); } void CMBSelOrgWnd::SetRecentContact( CMBRecentContact *pMBRecentContact ) { m_pMBLastContact = pMBRecentContact; m_AMRecentContactWnd.SetMBRecentContact(m_pMBLastContact); } void CMBSelOrgWnd::SetSelectData( CString strTitle,bool bMultiSelect,int nSelectStyle) { m_strWndTitle = strTitle; m_bMultiSelect = bMultiSelect; m_nSelectStyle = nSelectStyle; m_pSelOrgList->m_bMultiSelect = m_bMultiSelect; m_pSelOrgList->m_nSelectStyle = m_nSelectStyle; m_AMRecentContactWnd.SetSelectData(m_bMultiSelect,m_nSelectStyle); m_AMFriendWnd.SetSelectData(m_bMultiSelect,m_nSelectStyle); m_AMOrgWnd.SetSelectData(m_bMultiSelect,m_nSelectStyle); m_AMUserWnd.SetSelectData(m_bMultiSelect,m_nSelectStyle); } LRESULT CMBSelOrgWnd::OnOrgWebResponse(UINT uMsg,WPARAM wParam,LPARAM lParam,BOOL & bHandled) { CString strResBody= *(CString*)wParam; CString strParam= *(CString*)lParam; long nTrID = 0; CString strData; CString strName; CString strValue; CString strAppType = _T(""); CString strMethod = _T(""); CString strErrInfo; CString strListXML; int nVer = 0; CString strXML; int nPhotoVer = 0; CMBParseServerXml::ParseParamInfo( strParam,nTrID, strAppType,strMethod ); if( strMethod.CompareNoCase(CMD_MFLG) == 0 || strMethod.CompareNoCase(CMD_MFGU) == 0 ) { CString strParam1; CString strID; int nMemberType; int nVer = 0; CMBOrgView *pView = NULL; CMBOrgGroup *pGroup = NULL; POSITION pos = NULL; CMBOrgMember *pMember = NULL; BOOL bNewVer = FALSE; CString strUsers = _T(""); CString strXml =_T(""); CString strBody =_T(""); REQLOADSERVER_ITEM reqItem; m_pServerMgr->GetOrgWebCMgr()->LookupOrgTrID(nTrID,reqItem); m_pServerMgr->GetOrgWebCMgr()->RemoveOrgTrID(nTrID); CMBOrgFunc::GetElementItem( strResBody, strParam1, _T("\n") ); strBody = strResBody; nVer = _tstol(strParam1); if(strMethod.CompareNoCase(CMD_MFLG) == 0) { strID = SUBVIEW_CONTACTSTOOT ; nMemberType = AM_VIEWITEMTYPE_VIEW; if ( !m_mbOrgListMgr.LookupView(strID,pView) ) return S_OK; if ( !pView ) return S_OK; pView->SetLoaded(true); for ( pos =pView->m_listMember.GetHeadPosition(); pos; ) { pMember = (CMBOrgMember *)pView->m_listMember.GetNext( pos ); if(pMember ) { if(pMember->m_strID.CompareNoCase(SUBVIEW_TOPCONTACTS) == 0) continue; if(pMember->m_strID.CompareNoCase(m_pServerMgr->GetUserLogin()->m_strDepartGuid) == 0) continue; if(pMember->m_strID.CompareNoCase(m_pServerMgr->GetUserLogin()->m_strUnitGuid) == 0) continue; pMember->m_bIsDelete = TRUE; } } if( !strBody.IsEmpty())// { m_mbOrgListMgr.ParseOrgXml(nMemberType,strID,strMethod,strBody ); } pView->SetLoaded(true); m_AMFriendWnd.ResponseOrgContactGroupList(reqItem); } else { strID = reqItem.strItemGUID; if(strID.IsEmpty()) strID = SUBVIEW_TOPCONTACTS ; nMemberType = AM_VIEWITEMTYPE_CUSTGROUP; if ( !m_mbOrgListMgr.LookupGroup(strID, pGroup) ) return S_OK; if ( !pGroup ) return S_OK; pGroup->SetLoaded(true); for ( pos =pGroup->m_listMember.GetHeadPosition(); pos; ) { pMember = (CMBOrgMember *)pGroup->m_listMember.GetNext( pos ); pMember->m_bIsDelete = TRUE; } m_mbOrgListMgr.ParseOrgXml(nMemberType,strID,strMethod,strBody ); pGroup->m_nMUserCount = pGroup->GetUserMemberCount(); m_AMFriendWnd.ResponseOrgContactGroupMemeber(reqItem); } return S_OK; } else if( strMethod.CompareNoCase(CMD_OBGL) == 0 || strMethod.CompareNoCase(CMD_UAGO) == 0 || strMethod.CompareNoCase(CMD_OMGU) == 0 ) { CString strParam1; CString strID; int nMemberType; int nVer = 0; CMBOrgView *pView = NULL; CMBOrgGroup *pGroup = NULL; POSITION pos = NULL; CMBOrgMember *pMember = NULL; BOOL bNewVer = FALSE; CString strUsers = _T(""); CString strXml =_T(""); CString strBody =_T(""); REQLOADSERVER_ITEM reqItem; m_pServerMgr->GetOrgWebCMgr()->LookupOrgTrID(nTrID,reqItem); m_pServerMgr->GetOrgWebCMgr()->RemoveOrgTrID(nTrID); if(strMethod.CompareNoCase(CMD_UAGO) == 0) { strBody = strResBody; strID = ROOTVIEW_SYSORGID ; nMemberType = AM_VIEWITEMTYPE_VIEW; if ( !m_mbOrgListMgr.LookupView(strID,pView) ) return S_OK; if ( !pView ) return S_OK; pView->SetLoaded(true); for ( pos =pView->m_listMember.GetHeadPosition(); pos; ) { pMember = (CMBOrgMember *)pView->m_listMember.GetNext( pos ); pMember->m_bIsDelete = TRUE; } if( !strBody.IsEmpty())// { m_mbOrgListMgr.ParseOrgXml(nMemberType,strID,strMethod,strBody ); } m_AMOrgWnd.ResponseOrgUserAccessibleList(reqItem); } else if(strMethod.CompareNoCase(CMD_OBGL) == 0) { CMBOrgFunc::GetElementItem( strResBody, strParam1, _T("\n") ); strBody = strResBody; nVer = _tstol(strParam1); strID = reqItem.strItemGUID; nMemberType = _tstol(reqItem.strItemType); if(nMemberType == AM_VIEWITEMTYPE_VIEW) { if ( !m_mbOrgListMgr.LookupView(strID,pView) ) return S_OK; if ( !pView ) return S_OK; pView->SetLoaded(true); for ( pos =pView->m_listMember.GetHeadPosition(); pos; ) { pMember = (CMBOrgMember *)pView->m_listMember.GetNext( pos ); if(pMember && pMember->m_nType != AM_VIEWITEMTYPE_USER) pMember->m_bIsDelete = TRUE; } } else { if ( !m_mbOrgListMgr.LookupGroup(strID, pGroup) ) return S_OK; if ( !pGroup ) return S_OK; pGroup->SetLoaded(true); for ( pos =pGroup->m_listMember.GetHeadPosition(); pos; ) { pMember = (CMBOrgMember *)pView->m_listMember.GetNext( pos ); if(pMember && pMember->m_nType != AM_VIEWITEMTYPE_USER) pMember->m_bIsDelete = TRUE; } } if( !strBody.IsEmpty())// { m_mbOrgListMgr.ParseOrgXml(nMemberType,strID,strMethod,strBody ); } m_AMOrgWnd.ResponseOrgList(reqItem); if(reqItem.hTreeItem && reqItem.hTreeItem != STVI_ROOT) m_AMFriendWnd.ResponseOrgList(reqItem); } else { CMBOrgFunc::GetElementItem( strResBody, strParam1, _T("\n") ); strBody = strResBody; nVer = _tstol(strParam1); strID = reqItem.strItemGUID; nMemberType = _tstol(reqItem.strItemType); if(nMemberType == AM_VIEWITEMTYPE_VIEW) { if ( !m_mbOrgListMgr.LookupView(strID,pView) ) return S_OK; if ( !pView ) return S_OK; pView->SetLoaded(true); for ( pos =pView->m_listMember.GetHeadPosition(); pos; ) { pMember = (CMBOrgMember *)pView->m_listMember.GetNext( pos ); if(pMember && pMember->m_nType == AM_VIEWITEMTYPE_USER) pMember->m_bIsDelete = TRUE; } } else { if ( !m_mbOrgListMgr.LookupGroup(strID, pGroup) ) return S_OK; if ( !pGroup ) return S_OK; pGroup->SetLoaded(true); for ( pos =pGroup->m_listMember.GetHeadPosition(); pos; ) { pMember = (CMBOrgMember *)pView->m_listMember.GetNext( pos ); if(pMember && pMember->m_nType == AM_VIEWITEMTYPE_USER) pMember->m_bIsDelete = TRUE; } } if( !strBody.IsEmpty())// { m_mbOrgListMgr.ParseOrgXml(nMemberType,strID,strMethod,strBody ); } m_AMOrgWnd.ResponseOrgMemeber(reqItem); m_AMFriendWnd.ResponseOrgMemeber(reqItem); } } else if( strMethod.CompareNoCase(CMD_UQCR) == 0 ) { CString strParam1; CString strID; CMBOrgView *pView = NULL; POSITION pos = NULL; CMBOrgMember *pMember = NULL; REQLOADSERVER_ITEM reqItem; m_pServerMgr->GetOrgWebCMgr()->LookupOrgTrID(nTrID,reqItem); m_pServerMgr->GetOrgWebCMgr()->RemoveOrgTrID(nTrID); strID = reqItem.strParam; if ( !m_mbOrgListMgr.LookupView(strID,pView) ) return S_OK; if ( !pView ) return S_OK; pView->SetLoaded(true); for ( pos =pView->m_listMember.GetHeadPosition(); pos; ) { pMember = (CMBOrgMember *)pView->m_listMember.GetNext( pos ); if(pMember && pMember->m_nType == AM_VIEWITEMTYPE_USER) pMember->m_bIsDelete = TRUE; } if( !strResBody.IsEmpty())// { m_mbOrgListMgr.ParseOrgXml(AM_VIEWITEMTYPE_VIEW,strID,strMethod,strResBody ); } m_AMUserWnd.ResponseOrgUserQuery(reqItem); } return TRUE; } LRESULT CMBSelOrgWnd::OnOrgWebError(UINT uMsg,WPARAM wParam,LPARAM lParam,BOOL & bHandled) { CString strXml= *(CString*)wParam; CString strParam= *(CString*)lParam; long nTrID = 0; CString strData; CString strName; CString strValue; CString strAppType = _T(""); CString strMethod = _T(""); int nErrCode = 0; CString strErrInfo; CMBParseServerXml::ParseParamInfo( strParam,nTrID, strAppType,strMethod ); CMBParseServerXml::ParseErrInfo( strXml, nErrCode,strErrInfo); return TRUE; } void CMBSelOrgWnd::OnTimer(UINT_PTR nIDEvent) { m_AMRecentContactWnd.OnTimer(nIDEvent); m_AMFriendWnd.OnTimer(nIDEvent); m_AMOrgWnd.OnTimer(nIDEvent); m_AMUserWnd.OnTimer(nIDEvent); } void CMBSelOrgWnd::OnTabPageRadioSwitch(int nID) { if(m_bLayoutInited) { STabCtrl *pTab = this->FindChildByName2(L"tab_share_panel"); if(pTab) { SEdit *pEdit = FindChildByName2("edit_search"); if(pEdit) pEdit->SetWindowText(_T("")); SImageButton *pImgBtn = FindChildByName2("btn_usersearch_close"); if(pImgBtn) pImgBtn->SetVisible(false,true); pImgBtn = FindChildByName2("btn_usersearch"); if(pImgBtn) pImgBtn->SetVisible(true,true); switch (nID){ case 30000: { pTab->SetCurSel(0); m_nTabSel = 0; } break; case 30001: { pTab->SetCurSel(1); m_AMFriendWnd.OnInit(this); m_nTabSel = 1; } break; case 30002: { m_AMOrgWnd.OnInit(this); pTab->SetCurSel(2); m_nTabSel = 2; } break; } } } } void CMBSelOrgWnd::SelectedOrgItem( CString strID, CString strName, int nType,int nSex ) { if(strID.IsEmpty()) return; if( !m_bMultiSelect) { m_pSelOrgList->RemoveOrgAll(); } m_pSelOrgList->AddOrgItem(strID,strName,nType,nSex); if(m_pAdapterOrgItemTile) m_pAdapterOrgItemTile->SetDataChanged(); } void CMBSelOrgWnd::SetSelectOrgList(CMBSelOrgList *pListSelOrg ) { m_pSelOrgList = pListSelOrg; } bool CMBSelOrgWnd::OnEditSearchUserKeyDown(EventArgs *pEvt) { EventKeyDown * pev = (EventKeyDown*)pEvt; if(pev->nChar == VK_RETURN) { OnSearchUser(); } return true; }