// 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<long> &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() <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 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<SImageWndEx>(_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<SImageWndEx>(_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<SImageWndEx>(_T("img_usericon"));
|
pImg->SetImage(NULL);
|
pImg->SetSkin(GETSKIN(strSkin, pImg->GetScale()));
|
}
|
else
|
{
|
strSkin = _T("skin_user_middle");
|
SImageWndEx *pImg = pItem->FindChildByName2<SImageWndEx>(_T("img_usericon"));
|
pImg->SetImage(NULL);
|
pImg->SetSkin(GETSKIN(strSkin, pImg->GetScale()));
|
}
|
SStatic *pTxt = pItem->FindChildByName2<SStatic>(_T("txt_name"));
|
pTxt->SetWindowText( strName);
|
pItem->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( strDate);
|
pTxt = pItem->FindChildByName2<SStatic>(_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<SWindow>(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<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 CMBRecentContactMcAdapter::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 CMBRecentContactMcAdapter::SetDataPtr( CObject *pData )
|
{
|
m_pData = pData;
|
}
|
|
void CMBRecentContactMcAdapter::SetAMContactCommomFunctonPtr( CMBAMContactCommomFunction *pAMContactCommomFunction )
|
{
|
m_pAMContactCommomFunction = pAMContactCommomFunction;
|
}
|
|
void CMBRecentContactMcAdapter::ClearUserMC( )
|
{
|
m_pData = NULL;
|
//notifyDataSetChanged();
|
}
|