// MBContactTleAdapter.cpp : implementation file // #include "stdafx.h" #include "mbamui.h" #include "MBContactTleAdapter.h" #include "MBAMUIBaseFun.h" // MBContactTleAdapter CMBContactTleAdapter::CMBContactTleAdapter() { m_pData = NULL; m_pAMContactCommomFunction = NULL; } CMBContactTleAdapter::~CMBContactTleAdapter() { } // MBContactTleAdapter member functions int CMBContactTleAdapter::getCount() { if( m_pData == NULL ) return 0; CMBRecentContact *pRecentContact = ( CMBRecentContact* )m_pData; int nCount = pRecentContact->m_listContact.GetCount(); return nCount; } void CMBContactTleAdapter::getView(int position, SWindow *pItem, pugi::xml_node xmlTemplate) { if(pItem->GetChildrenCount() == 0) { pItem->InitFromXml(xmlTemplate); } if( m_pData == NULL ) return ; CObject *pObj = GetData( position ); if(NULL==pObj) return ; CMBContactItem *pUser = ( CMBContactItem* )pObj; if( NULL == pUser ) return ; SetMcItemValue( pItem,pUser->m_nType,pUser->m_strID, pUser->m_strName,pUser->m_strMsgDate,pUser->m_strSubject,(CObject*)pUser); pItem->GetEventSet()->subscribeEvent(EVT_ITEMPANEL_DBCLICK, Subscriber(&CMBContactTleAdapter::OnDbButtonClick, this)); pItem->GetEventSet()->subscribeEvent(EVT_ITEMPANEL_CLICK, Subscriber(&CMBContactTleAdapter::OnItemButtonClick, this)); pItem->GetEventSet()->subscribeEvent(EVT_ITEMPANEL_RCLICK, Subscriber(&CMBContactTleAdapter::OnRItemButtonClick, this)); } CObject *CMBContactTleAdapter::GetData( int position ) { if( m_pData->IsKindOf(RUNTIME_CLASS(CMBRecentContact)) ) { CMBRecentContact *pRecentContact = ( CMBRecentContact* )m_pData; if( NULL == pRecentContact ) return NULL; if(pRecentContact->m_listContact.GetCount() m_listContact.FindIndex(position); if ( pos ) { pItem = (CMBContactItem*)pRecentContact->m_listContact.GetAt( pos ); return pItem; } } return NULL; } void CMBContactTleAdapter::SetMcItemValue( SWindow *pItem,int nType,CString strID,CString strName,CString strDate,CString strMsg,CObject *pObj ) { SStringW strSkin = _T(""); CString strBigImg = _T(""); SStringW strFile = _T(""); if(nType == AM_VIEWITEMTYPE_USER) { int nStatus = 0; int nSex = 0; SStringW strStatusSkin = _T(""); if(m_pAMContactCommomFunction) { CMBOrgUser* pOrgUser= m_pAMContactCommomFunction->GetMBOrgUser(strID); if(pOrgUser) { nStatus = pOrgUser->m_nStatus; nSex = _tstol(pOrgUser->m_strSex); } m_pAMContactCommomFunction->GetUserPicturePath(strID,nSex,strBigImg); } strSkin = CMBAMUIBaseFun::GetContactMiddleSkin(nSex,nStatus); strStatusSkin= CMBAMUIBaseFun::GetContactStatusSkin(nStatus); SRoundImage *pRImgAvatar = pItem->FindChildByName2(_T("img_usericon")); SASSERT(pRImgAvatar); if ( !CMBOrgFunc::IsOnlineUser( nStatus ) ) { pRImgAvatar->SetImageGray(TRUE); } else pRImgAvatar->SetImageGray(FALSE); if( !strBigImg.IsEmpty() && CStrFileUtils::IsExist(strBigImg) ) { strFile.Format(_T("file:%s"),strBigImg); } else { strBigImg = CMBAMUIBaseFun::GetContactMiddleFile(nSex); strFile.Format(_T("file:%s"),strBigImg); } IBitmap * pBmp = LOADIMAGE2(strFile); pRImgAvatar->SetImage(pBmp); SImageWndEx *pImg = pItem->FindChildByName2(_T("img_status")); pImg->SetImage(NULL); if( !strStatusSkin.IsEmpty() && nStatus != AM_USERSTATUS_FLN) { pImg->SetSkin(GETSKIN(strStatusSkin, pImg->GetScale())); } } else if(nType == AM_VIEWITEMTYPE_CROWD) { SImageWndEx *pImg = pItem->FindChildByName2(_T("img_status")); pImg->SetImage(NULL); strSkin = _T("skin_crowd_middle"); SRoundImage *pRImgAvatar = pItem->FindChildByName2(_T("img_usericon")); SASSERT(pRImgAvatar); strBigImg = CMBAMUIBaseFun::GetCrowdMiddleFile(); strFile.Format(_T("file:%s"),strBigImg); IBitmap * pBmp = LOADIMAGE2(strFile); pRImgAvatar->SetImage(pBmp); } else { SImageWndEx *pImg = pItem->FindChildByName2(_T("img_status")); pImg->SetImage(NULL); strSkin = _T("skin_user_middle"); SRoundImage *pRImgAvatar = pItem->FindChildByName2(_T("img_usericon")); SASSERT(pRImgAvatar); strBigImg = CMBAMUIBaseFun::GetContactMiddleFile(0); strFile.Format(_T("file:%s"),strBigImg); IBitmap * pBmp = LOADIMAGE2(strFile); pRImgAvatar->SetImageGray(TRUE); pRImgAvatar->SetImage(pBmp); } SStatic *pTxt = pItem->FindChildByName2(_T("txt_name")); pTxt->SetWindowText( strName); pTxt->SetUserData((ULONG_PTR)pObj); pTxt = pItem->FindChildByName2(_T("txt_msg")); pTxt->SetWindowText( strMsg); CString strShowDate = CMBAMUIBaseFun::GetDateTimeString(strDate); pTxt = pItem->FindChildByName2(_T("txt_date")); pTxt->SetWindowText( strShowDate); SStringW strUnread = _T(""); pTxt = pItem->FindChildByName2(_T("txt_msgcnt")); int nCount = m_pAMContactCommomFunction->GetUnreadMsgCount(strID,nType); if(nCount > 0) { pTxt->SetVisible(true, true); strUnread.Format(L"%d",nCount); pTxt->SetWindowText( strUnread); } else pTxt->SetVisible(false, true); } bool CMBContactTleAdapter::OnDbButtonClick(EventArgs *pEvt) { SWindow *pWindow = sobj_cast(pEvt->sender); SWindow *pBtn = pWindow->FindChildByName(L"txt_name"); CObject *obj = (CObject*)pBtn->GetUserData(); m_pAMContactCommomFunction->OnDBItemBtnClick(obj); return true; } bool CMBContactTleAdapter::OnItemButtonClick(EventArgs *pEvt) { SWindow *pWindow = sobj_cast(pEvt->sender); SWindow *pBtn = pWindow->FindChildByName(L"txt_name"); CObject *obj = (CObject*)pBtn->GetUserData(); if( m_pAMContactCommomFunction ) m_pAMContactCommomFunction->OnItemButtonClick( obj ); return true; } bool CMBContactTleAdapter::OnRItemButtonClick(EventArgs *pEvt) { SWindow *pWindow = sobj_cast(pEvt->sender); SWindow *pBtn = pWindow->FindChildByName(L"txt_name"); CObject *obj = (CObject*)pBtn->GetUserData(); if( m_pAMContactCommomFunction ) m_pAMContactCommomFunction->OnRItemBtnClick( obj ); return true; } void CMBContactTleAdapter::SetDataPtr( CObject *pData ) { m_pData = pData; } void CMBContactTleAdapter::SetAMContactCommomFunctonPtr( CMBAMContactCommomFunction *pAMContactCommomFunction ) { m_pAMContactCommomFunction = pAMContactCommomFunction; } void CMBContactTleAdapter::ClearUserMC( ) { m_pData = NULL; //notifyDataSetChanged(); } // Ë¢ÐÂÐÅÏ¢ void CMBContactTleAdapter::SetDataChanged( ) { notifyDataSetChanged(); }