// 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() <position + 1)
|
return NULL;
|
CMBContactItem *pItem = NULL;
|
POSITION pos = pRecentContact->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<SRoundImage>(_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<SImageWndEx>(_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<SImageWndEx>(_T("img_status"));
|
pImg->SetImage(NULL);
|
strSkin = _T("skin_crowd_middle");
|
SRoundImage *pRImgAvatar = pItem->FindChildByName2<SRoundImage>(_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<SImageWndEx>(_T("img_status"));
|
pImg->SetImage(NULL);
|
strSkin = _T("skin_user_middle");
|
SRoundImage *pRImgAvatar = pItem->FindChildByName2<SRoundImage>(_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<SStatic>(_T("txt_name"));
|
pTxt->SetWindowText( strName);
|
pTxt->SetUserData((ULONG_PTR)pObj);
|
pTxt = pItem->FindChildByName2<SStatic>(_T("txt_msg"));
|
pTxt->SetWindowText( strMsg);
|
CString strShowDate = CMBAMUIBaseFun::GetDateTimeString(strDate);
|
pTxt = pItem->FindChildByName2<SStatic>(_T("txt_date"));
|
pTxt->SetWindowText( strShowDate);
|
|
SStringW strUnread = _T("");
|
pTxt = pItem->FindChildByName2<SStatic>(_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<SWindow>(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<SWindow>(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<SWindow>(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();
|
}
|