// UserMcAdapterFix.cpp : implementation file // #include "stdafx.h" #include "mbamui.h" #include "MBRecentContactMcAdapter.h" #include "MBAMUIBaseFun.h" // CMBRecentContactMcAdapter CMBRecentContactMcAdapter::CMBRecentContactMcAdapter() { m_pData = NULL; m_pAMContactCommomFunction = NULL; } CMBRecentContactMcAdapter::~CMBRecentContactMcAdapter() { } // CMBRecentContactMcAdapter member functions int CMBRecentContactMcAdapter::getCount() { if( m_pData == NULL ) return 0; CMBRecentContact *pRecentContact = ( CMBRecentContact* )m_pData; int nCount = pRecentContact->m_listContact.GetCount(); return nCount; } void CMBRecentContactMcAdapter::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(&CMBRecentContactMcAdapter::OnButtonDbClick, this)); pItem->GetEventSet()->subscribeEvent(EVT_ITEMPANEL_CLICK, Subscriber(&CMBRecentContactMcAdapter::OnItemButtonClick, this)); pItem->GetEventSet()->subscribeEvent(EVT_ITEMPANEL_RCLICK, Subscriber(&CMBRecentContactMcAdapter::OnRItemButtonClick, this)); } bool CMBRecentContactMcAdapter::SwapItem(long pos, SList &sellist) { return true; } SStringW CMBRecentContactMcAdapter::GetColumnName(int iCol) const { return SStringW().Format(L"col_%d", iCol + 1); } CObject *CMBRecentContactMcAdapter::GetData( int position ) { if( m_pData->IsKindOf(RUNTIME_CLASS(CMBSysAppInfo)) ) { 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 CMBRecentContactMcAdapter::SetMcItemValue( SWindow *pItem,int nType,CString strID,CString strName,CString strDate,CString strMsg,CObject *pObj ) { SStringW strSkin = _T(""); if(nType == AM_VIEWITEMTYPE_USER) { int nStatus = 0; int nSex = 0; CString strBigGrayImg = _T(""); CString strBigImg = _T(""); SStringW strStatusSkin = _T(""); SStringW strFile = _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,strBigGrayImg,strBigImg); } strSkin = CMBAMUIBaseFun::GetContactMiddleSkin(nSex,nStatus); strStatusSkin= CMBAMUIBaseFun::GetContactStatusSkin(nStatus); SImageWndEx *pImg = pItem->FindChildByName2(_T("img_usericon")); if ( !CMBOrgFunc::IsOnlineUser( nStatus ) ) { strBigImg = strBigGrayImg; } if( CStrFileUtils::IsExist(strBigImg) ) { strFile.Format(_T("file:%s"),strBigImg); IBitmap * m_bmp = LOADIMAGE2(strFile); pImg->SetImage(m_bmp); }else{ pImg->SetImage(NULL); pImg->SetSkin(GETSKIN(strSkin, pImg->GetScale())); } pImg = pItem->FindChildByName2(_T("img_status")); pImg->SetImage(NULL); if( !strStatusSkin.IsEmpty()) { pImg->SetSkin(GETSKIN(strStatusSkin, pImg->GetScale())); } } else if(nType == AM_VIEWITEMTYPE_CROWD) { strSkin = _T("skin_crowd_middle"); SImageWndEx *pImg = pItem->FindChildByName2(_T("img_usericon")); pImg->SetImage(NULL); pImg->SetSkin(GETSKIN(strSkin, pImg->GetScale())); } else { strSkin = _T("skin_user_middle"); SImageWndEx *pImg = pItem->FindChildByName2(_T("img_usericon")); pImg->SetImage(NULL); pImg->SetSkin(GETSKIN(strSkin, pImg->GetScale())); } SStatic *pTxt = pItem->FindChildByName2(_T("txt_name")); pTxt->SetWindowText( strName); pItem->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( strDate); pTxt = pItem->FindChildByName2(_T("txt_msgcnt")); int nMsgCount = m_pAMContactCommomFunction->GetUnreadMsgCount(strID,nType); if(nMsgCount > 0) { CString strText; if(nMsgCount < 100) strText.Format(_T("%d"),nMsgCount); else strText.Format(_T("99+")); pTxt->SetWindowText( strText); pTxt->SetVisible(TRUE,TRUE); } else { pTxt->SetVisible(FALSE,TRUE); } } bool CMBRecentContactMcAdapter::OnButtonClick(EventArgs *pEvt) { return true; } bool CMBRecentContactMcAdapter::OnButtonDbClick(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 CMBRecentContactMcAdapter::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 CMBRecentContactMcAdapter::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 CMBRecentContactMcAdapter::SetDataPtr( CObject *pData ) { m_pData = pData; } void CMBRecentContactMcAdapter::SetAMContactCommomFunctonPtr( CMBAMContactCommomFunction *pAMContactCommomFunction ) { m_pAMContactCommomFunction = pAMContactCommomFunction; } void CMBRecentContactMcAdapter::ClearUserMC( ) { m_pData = NULL; //notifyDataSetChanged(); }