Exemplo n.º 1
0
void SessionLayout::FreshGroupMemberAvatar(IN const std::string& sID)
{
	module::UserInfoEntity userInfo;
	if (!module::getUserListModule()->getUserInfoBySId(sID, userInfo))
	{
		APP_LOG(LOG_ERROR, _T("SessionLayout::_updateGroupMembersList(),can't find the userInfo"));
		return;
	}

	if (!m_pGroupMemberList)
	{
		return;
	}
	for (int n = 0; n < m_pGroupMemberList->GetCount(); n++)
	{
		CListContainerElementUI* pItem = (CListContainerElementUI*)m_pGroupMemberList->GetItemAt(n);
		if (pItem)
		{
			CDuiString userData = pItem->GetUserData();
			if (!userData.IsEmpty())
			{
				std::string sid = util::cStringToString(CString(userData));
				if (sid == sID)
				{
					CButtonUI* btnAvatarInfo = (CButtonUI*)pItem->FindSubControl(_T("AvatarInfo"));
					if (btnAvatarInfo)
					{
						btnAvatarInfo->SetBkImage(util::stringToCString(userInfo.getAvatarPath()));
					}
				}
			}
		}
	}
	m_pGroupMemberList->SortItems(GroupMemberListItemCompareFunc, 0);
}
Exemplo n.º 2
0
void SessionLayout::_AddGroupMemberToList(IN const std::string& sID, IN const BOOL bCreator)
{
	module::UserInfoEntity userInfo;
	if (!module::getUserListModule()->getUserInfoBySId(sID, userInfo))
	{
		LOG__(ERR, _T("can't find the userInfo:%s,GroupId:%s"),util::stringToCString(sID),util::stringToCString(m_sId));
		return;
	}
	CDialogBuilder dlgBuilder;
	CListContainerElementUI* pListElement = (CListContainerElementUI*)dlgBuilder.Create(_T("SessionDialog\\groupMembersListItem.xml"), (UINT)0, NULL, &m_paint_manager);
	if (!pListElement)
	{
		LOG__(ERR, _T("群item创建失败"));
		return;
	}
	CButtonUI* pLogo = static_cast<CButtonUI*>(pListElement->FindSubControl(_T("AvatarInfo")));
	PTR_VOID(pLogo);
	pLogo->SetBkImage(util::stringToCString(userInfo.getAvatarPath()));

	if (bCreator)
	{
		CButtonUI* pCreator = static_cast<CButtonUI*>(pListElement->FindSubControl(_T("Creator")));
		PTR_VOID(pCreator);
		pCreator->SetVisible(true);
		pCreator->SetUserData(_T("Creator"));
	}

	CLabelUI* pNameLable = static_cast<CLabelUI*>(pListElement->FindSubControl(_T("nickname")));
	PTR_VOID(pNameLable);
	pNameLable->SetText(userInfo.getRealName());
	pListElement->SetUserData(util::stringToCString(userInfo.sId));

	m_pGroupMemberList->Add(pListElement);
}
Exemplo n.º 3
0
void SessionLayout::FreshAllGroupMemberAvatar()
{
	if (!m_pGroupMemberList)
	{
		return;
	}
	for (int n = 0; n < m_pGroupMemberList->GetCount(); n++)
	{
		CListContainerElementUI* pItem = (CListContainerElementUI*)m_pGroupMemberList->GetItemAt(n);
		if (pItem)
		{
			CDuiString userData = pItem->GetUserData();
			if (!userData.IsEmpty())
			{
				std::string sid = util::cStringToString(CString(userData));
				module::UserInfoEntity userInfo;
				if (!module::getUserListModule()->getUserInfoBySId(sid, userInfo))
				{
					LOG__(ERR, _T("can't find the userInfo:%s,GroupId:%s"),util::stringToCString(sid),util::stringToCString(m_sId));
					continue;;
				}
				CButtonUI* btnAvatarInfo = (CButtonUI*)pItem->FindSubControl(_T("AvatarInfo"));
				if (btnAvatarInfo)
				{
					btnAvatarInfo->SetBkImage(util::stringToCString(userInfo.getAvatarPath()));
				}
			}
		}
	}
	m_pGroupMemberList->SortItems(GroupMemberListItemCompareFunc, 0);
}
Exemplo n.º 4
0
void SessionLayout::_AddGroupMemberToList(IN const std::string& sID)
{
	module::UserInfoEntity userInfo;
	if (!module::getUserListModule()->getUserInfoBySId(sID, userInfo))
	{
		APP_LOG(LOG_ERROR, _T("SessionLayout::_updateGroupMembersList(),can't find the userInfo"));
		return;
	}
	CDialogBuilder dlgBuilder;
	CListContainerElementUI* pListElement = (CListContainerElementUI*)dlgBuilder.Create(_T("SessionDialog\\groupMembersListItem.xml"), (UINT)0, NULL, &m_paint_manager);
	if (!pListElement)
	{
		APP_LOG(LOG_ERROR, _T("群item创建失败"));
		return;
	}
	CButtonUI* pLogo = static_cast<CButtonUI*>(pListElement->FindSubControl(_T("AvatarInfo")));
	if (!pLogo)
	{
		return;
	}
	pLogo->SetBkImage(util::stringToCString(userInfo.getAvatarPath()));

	CLabelUI* pNameLable = static_cast<CLabelUI*>(pListElement->FindSubControl(_T("nickname")));
	if (!pNameLable)
	{
		return;
	}
	pNameLable->SetText(userInfo.getRealName());
	pListElement->SetUserData(util::stringToCString(userInfo.sId));

	m_pGroupMemberList->Add(pListElement);

}
Exemplo n.º 5
0
void CProjectInfoPage::RemoveAllListItems()
{
	int nCount = m_pListProjs->GetCount();
	if (nCount>0)
	{
		for (int i=0; i<nCount; i++)
		{
			CListContainerElementUI* pListItem = static_cast<CListContainerElementUI*>(m_pListProjs->GetItemAt(i));
			if (NULL != pListItem)
			{
				sProjectItem* pProjData = (sProjectItem*)pListItem->GetTag();
				if (NULL != pProjData)
				{
					delete pProjData;
					pProjData = NULL;
				}
			}
		}

		m_pListProjs->RemoveAll();
	}

	//还原Index
	m_nCurrentPageIndex = -1;
}
Exemplo n.º 6
0
CHorizontalLayoutUI* CListUIEx::GetListSubItem(int iIndex, int iSubIndex)
{
	//获取具体行控件
	CListContainerElementUI *pListItem = static_cast<CListContainerElementUI*>(CListUI::GetItemAt(iIndex));
	if (pListItem == NULL)
		return NULL;
	return static_cast<CHorizontalLayoutUI*>(pListItem->GetItemAt(iSubIndex));
}
Exemplo n.º 7
0
static bool OnLogoButtonEvent(void* event) {
    if( ((TEventUI*)event)->Type == UIEVENT_BUTTONDOWN ) {
        CControlUI* pButton = ((TEventUI*)event)->pSender;
        if( pButton != NULL ) {
            CListContainerElementUI* pListElement = (CListContainerElementUI*)(pButton->GetTag());
            if( pListElement != NULL ) pListElement->DoEvent(*(TEventUI*)event);
        }
    }
    return true;
}
Exemplo n.º 8
0
bool CFriendsUI::SelectItem(int iIndex, bool bTakeFocus)
{
    if( iIndex == m_iCurSel ) return true;

    // We should first unselect the currently selected item
    if( m_iCurSel >= 0 ) {
        CControlUI* pControl = GetItemAt(m_iCurSel);
        if( pControl != NULL) {
            IListItemUI* pListItem = static_cast<IListItemUI*>(pControl->GetInterface(_T("ListItem")));
            if( pListItem != NULL )
			{
				CListContainerElementUI* pFriendListItem = static_cast<CListContainerElementUI*>(pControl);
				Node* node = (Node*)pControl->GetTag();
				if ((pFriendListItem != NULL) && (node != NULL) && !node->folder())
				{
					pFriendListItem->SetFixedHeight(kFriendListItemNormalHeight);
					CContainerUI* pOperatorPannel = static_cast<CContainerUI*>(paint_manager_.FindSubControlByName(pFriendListItem, kOperatorPannelControlName));
					if (pOperatorPannel != NULL)
					{
						pOperatorPannel->SetVisible(false);
					}
				}
				pListItem->Select(false);
			}
        }

        m_iCurSel = -1;
    }

    if( iIndex < 0 )
		return false;

	if (!__super::SelectItem(iIndex, bTakeFocus))
		return false;


	CControlUI* pControl = GetItemAt(m_iCurSel);
	if( pControl != NULL) {
		CListContainerElementUI* pFriendListItem = static_cast<CListContainerElementUI*>(pControl);
		Node* node = (Node*)pControl->GetTag();
		if ((pFriendListItem != NULL) && (node != NULL) && !node->folder())
		{
			pFriendListItem->SetFixedHeight(kFriendListItemSelectedHeight);
			CContainerUI* pOperatorPannel = static_cast<CContainerUI*>(paint_manager_.FindSubControlByName(pFriendListItem, kOperatorPannelControlName));
			if (pOperatorPannel != NULL)
			{
				pOperatorPannel->SetVisible(true);
			}
		}
	}
	return true;
}
Exemplo n.º 9
0
static bool OnLogoButtonEvent(void* event) {
	if (((TEventUI*)event)->Type == UIEVENT_BUTTONDOWN) {
		CControlUI* pButton = ((TEventUI*)event)->pSender;
		if (pButton != NULL) {
			CListContainerElementUI* pListElement = (CListContainerElementUI*)(pButton->GetTag());
			if (pListElement != NULL)
			{
				pListElement->DoEvent(*(TEventUI*)event);
				std::string sid = util::cStringToString(CString(pListElement->GetUserData()));
				if (!sid.empty())
				{
					//show the detail window.
					module::getSysConfigModule()->asynNotifyObserver(module::KEY_SYSCONFIG_SHOW_USERDETAILDIALOG, sid);
				}
			}
		}
	}
	return true;
}
Exemplo n.º 10
0
//聊天框信息已准备好
void CRightFrame::OnTalkBufferReady(BzDui::CStdString strBuf,int iTextHeight)
{
	if (strBuf.GetLength() == 0)
	{
		return;
	}

	CTextUI* pText = new CTextUI();
	pText->SetFloat(false);
	pText->SetShowHtml(true);
	pText->SetText(strBuf);

	CListContainerElementUI* pCtn = new CListContainerElementUI();
	pCtn->SetFixedHeight(iTextHeight);
	pCtn->Add(pText);

	m_pTalkBoxList->Add(pCtn);

	return;
}
Exemplo n.º 11
0
static bool OnButtonEvent(void* event) {
	if (((TEventUI*)event)->Type == UIEVENT_BUTTONDOWN) {
		CControlUI* pButton = ((TEventUI*)event)->pSender;
		if (pButton != NULL) {
			CListContainerElementUI* pListElement = (CListContainerElementUI*)(pButton->GetTag());
			if (pButton->GetName() == kcreatGroupControlName)
			{
				//创建讨论组
				std::string sid;
				module::getGroupListModule()->onCreateDiscussionGrpDialog(sid);
			}
			else
			{
				if (pListElement != NULL) pListElement->DoEvent(*(TEventUI*)event);
			}
		
		}
	}
	return true;
}
Exemplo n.º 12
0
void SessionLayout::_GetGroupNameListByShortName(IN const CString& sShortName, OUT std::vector<string>& nameList)
{
	for (int n = 0; n < m_pGroupMemberList->GetCount();++n)
	{
		CListContainerElementUI* pListElement = static_cast<CListContainerElementUI*>(m_pGroupMemberList->GetItemAt(n));
		if (pListElement)
		{
			CLabelUI* pNameLable = static_cast<CLabelUI*>(pListElement->FindSubControl(_T("nickname")));
			if (!pNameLable)
			{
				continue;;
			}
			CString Name = pNameLable->GetText();
			std::string sid = util::cStringToString(CString(pListElement->GetUserData()));

			if (util::isIncludeChinese(util::cStringToString(sShortName, CP_ACP)))//检索中文
			{
				if (Name.Find(sShortName) != -1)
				{
					nameList.push_back(sid);
				}
			}
			else//检索字母
			{
				CString firstPY = util::HZ2FirstPY(util::cStringToString(Name, CP_ACP));
				if (firstPY.Find(sShortName) != -1)//先检索简拼
				{
					nameList.push_back(sid);
				}
				else
				{
					CString allPY = util::HZ2AllPY(Name);//再检索全拼
					if (allPY.Find(sShortName) != -1)
					{
						nameList.push_back(sid);
					}
				}
			}
		}
	}
}
Exemplo n.º 13
0
int CListUIEx::InsertItem(int nItem, int nHeight)
{
	CListContainerElementUI *pListItem = new CListContainerElementUI;
	pListItem->SetFixedHeight(nHeight);/*固定一个行高*/

	pListItem->m_pHeader = CListUI::GetHeader();
	if (NULL != pListItem->m_pHeader)
	{
		int nHeaderCount = pListItem->m_pHeader->GetCount();
		for (int i = 0; i < nHeaderCount; i++)
		{
			pListItem->Add(new CHorizontalLayoutUI);
		}
	}
	if ( !CListUI::AddAt(pListItem, nItem) )
	{
		delete pListItem;
		pListItem = NULL;
		return -1;
	}
	return nItem;
}
Exemplo n.º 14
0
void SessionLayout::_UpdateSearchRsultList(IN const std::vector<std::string>& nameList)
{
	if (nameList.empty())
	{
		return;
	}
	for (std::string sid : nameList)
	{
		module::UserInfoEntity userInfo;
		if (!module::getUserListModule()->getUserInfoBySId(sid, userInfo))
		{
			LOG__(ERR, _T("can't find the userInfo:%s,GroupId: %s"),util::stringToCString(sid),util::stringToCString(m_sId));
			continue;
		}
		CDialogBuilder dlgBuilder;
		CListContainerElementUI* pListElement = (CListContainerElementUI*)dlgBuilder.Create(_T("SessionDialog\\groupMembersListItem.xml"), (UINT)0, NULL, &m_paint_manager);
		if (!pListElement)
		{
			LOG__(ERR, _T("creat group item failed"));
			return;
		}
		CButtonUI* pLogo = static_cast<CButtonUI*>(pListElement->FindSubControl(_T("AvatarInfo")));
		if (!pLogo)
		{
			return;
		}
		pLogo->SetBkImage(util::stringToCString(userInfo.getAvatarPath()));

		CLabelUI* pNameLable = static_cast<CLabelUI*>(pListElement->FindSubControl(_T("nickname")));
		if (!pNameLable)
		{
			return;
		}
		pNameLable->SetText(userInfo.getRealName());
		pListElement->SetUserData(util::stringToCString(userInfo.sId));

		m_pSearchResultList->Add(pListElement);
	}
}
Exemplo n.º 15
0
void CMonitoringUI::ShowMonitInfoList()
{
	CDialogBuilder builder;
	CListContainerElementUI* SubList = (CListContainerElementUI*)(builder.Create(_T("xml//RegInfoList.xml"), (UINT)0, NULL, &m_PaintManager));
	CListUI* pList = dynamic_cast<CListUI*>(m_PaintManager.FindControl(_T("Refer_InfoList")));
	pList->Add(SubList);
	CControlUI* photoUI = dynamic_cast<CControlUI*>(m_PaintManager.FindSubControlByClass(SubList, DUI_CTR_CONTROL));
	CLabelUI* lab_ID = dynamic_cast<CLabelUI*>(m_PaintManager.FindSubControlByClass(SubList, DUI_CTR_LABEL, 1));
	CLabelUI* lab_similarity = dynamic_cast<CLabelUI*>(m_PaintManager.FindSubControlByClass(SubList, DUI_CTR_LABEL, 3));
	CLabelUI* lab_time = dynamic_cast<CLabelUI*>(m_PaintManager.FindSubControlByClass(SubList, DUI_CTR_LABEL, 5));

	std::string strName = std::string(_T("file = 'bmp/test")) + std::to_string(m_nBmp) + std::string(".bmp'");
	photoUI->SetBkImage(strName.c_str());
	lab_ID->SetText(std::to_string(m_testID).c_str());
	lab_similarity->SetText("76%");
	lab_time->SetText("2016-7-29 17:12:55");

	if (m_testID % 3 == 0)
	{
		SubList->SetBkColor(0xFFFFDDDD);
	}
	m_testID++;
}
void CreateDiscussionGrpDialog::_updateSearchResultList(IN const std::vector<std::string>& nameList)
{
	if (nameList.empty())
	{
		return;
	}
	for (std::string sid : nameList)
	{
		module::UserInfoEntity userInfo;
		if (!module::getUserListModule()->getUserInfoBySId(sid, userInfo))
		{
			LOG__(ERR, _T("can't find the userInfo:%s"), util::stringToCString(sid));
			return;
		}
		CDialogBuilder dlgBuilder;
		CListContainerElementUI* pListElement = (CListContainerElementUI*)dlgBuilder.Create(_T("CreateDiscussionGrpDialog\\ListGroupMembersItem.xml"), (UINT)0, NULL, &m_PaintManager);
		if (!pListElement)
		{
			LOG__(ERR, _T("群item创建失败"));
			return;
		}
		pListElement->SetName(_T("SearchResultItem"));
		CControlUI* pLogo = static_cast<CControlUI*>(pListElement->FindSubControl(_T("AvatarInfo")));
		if (!pLogo)
		{
			return;
		}
		pLogo->SetBkImage(util::stringToCString(userInfo.getAvatarPath()));

		CLabelUI* pNameLable = static_cast<CLabelUI*>(pListElement->FindSubControl(_T("nickname")));
		if (!pNameLable)
		{
			return;
		}
		pNameLable->SetText(userInfo.getRealName());

		CButtonUI* pRemoveBtn = static_cast<CButtonUI*>(pListElement->FindSubControl(_T("removebtn")));
		if (pRemoveBtn)
		{
			pRemoveBtn->SetVisible(false);
		}

		pListElement->SetUserData(util::stringToCString(userInfo.sId));

		m_pListSearchResult->Add(pListElement);
	}
}
Exemplo n.º 17
0
void SessionLayout::Notify(TNotifyUI& msg)
{
	if (_tcsicmp(msg.sType, DUI_MSGTYPE_WINDOWINIT) == 0 )
	{
		OnWindowInitialized(msg);
	}
	else if (msg.sType == DUI_MSGTYPE_CLICK)
	{
		if (msg.pSender == m_pBtnSendMsg)
		{
			SendMsg();
		}
		else if (m_pBtnClose == msg.pSender)
		{
		}
		else if (msg.pSender == m_pBtnEmotion)
		{
			//表情先不展示
			POINT pt = { 0 };
			CDuiRect rcEmotionBtn = msg.pSender->GetPos();
			CDuiRect rcWindow;
			GetWindowRect(m_pManager->GetPaintWindow(), &rcWindow);

			pt.y = rcWindow.top + rcEmotionBtn.top;
			pt.x = rcWindow.left + rcEmotionBtn.left;

			module::getEmotionModule()->showEmotionDialog(m_sId,pt);
		}
		else if (msg.pSender == m_pBtnSendImage)
		{
			std::list<CString> lstFile;
			util::GetOpenFilePath(AfxGetMainWnd(), lstFile, FALSE, _T("图片 文件|*.png;*.jpeg;*.jpg;*.gif;*.bmp||"));
			if (lstFile.empty())
				return;
			CString strFile = lstFile.front();
			if (strFile.IsEmpty())
			{
				return;
			}
			_SendImage(strFile);
		}
		else if (msg.pSender == m_pBtnbanGroupMsg)
		{
			_OnBanGroupMsg(true);
		}
		else if (msg.pSender == m_pBtndisplayGroupMsg)
		{
			_OnBanGroupMsg(false);
		}
		else if (msg.pSender == m_pBtnshock)
		{
			module::UserInfoEntity userInfo;
			if (module::getUserListModule()->getUserInfoBySId(m_sId, userInfo))
			{
				if (userInfo.onlineState != USER_STATUS_ONLINE)
				{
					_DisplaySysMsg(_T("STRID_SESSIONMODULE_SHAKEWINDOW_OFFLINE_TIP"));
					return;
				}
			}
			else
			{
				return;
			}
			DWORD CurTime = GetTickCount();
			if (CurTime - m_tShakeWindow < 5000)
			{
				_DisplaySysMsg(_T("STRID_SESSIONMODULE_SHAKEWINDOW_TOOMAMY_TIP"));
				return;
			}
			m_tShakeWindow = CurTime;
			_DisplaySysMsg(_T("STRID_SESSIONMODULE_SHAKEWINDOW_SEND_TIP"));
			logic::GetLogic()->asynNotifyObserver(module::KEY_SESSION_SHAKEWINDOW_MSG, m_sId);
			module::getP2PCmdModule()->tcpSendShakeWindowCMD(m_sId);
		}
		//文件传输
		else if (msg.pSender == m_pBtnsendfile)
		{
			module::UserInfoEntity userInfo;
			if (!module::getUserListModule()->getUserInfoBySId(m_sId, userInfo))
			{
				APP_LOG(LOG_ERROR, _T("SendFile can't find the sid"));
				return;
			}
			std::list<CString> lstFile;
			util::GetOpenFilePath(AfxGetMainWnd(), lstFile, FALSE, _T("文件|*.*||"));
			if (lstFile.empty())
				return;
			CString strFile = lstFile.front();
			if (strFile.IsEmpty())
			{
				return;
			}
			module::getFileTransferModule()->sendFile(strFile, m_sId, userInfo.isOnlne());
		}
		else if (msg.pSender == m_pBtnadduser)
		{
			module::getGroupListModule()->onCreateDiscussionGrpDialog(m_sId);
		}
	}
	else if (msg.sType == _T("return"))
	{
		if (msg.pSender == m_pInputRichEdit)
		{
			SendMsg();
		}
	}
	else if (0 == _tcsicmp(msg.sType, DUI_MSGTYPE_ITEMACTIVATE))
	{
		if (msg.pSender->GetName() == _T("ListGroupMembersItem"))
		{
			CListContainerElementUI* pListElement = static_cast<CListContainerElementUI*>(msg.pSender);
			if (!pListElement->GetUserData().IsEmpty())
			{
				std::string sid = util::cStringToString(CString(pListElement->GetUserData()));
				logic::GetLogic()->asynNotifyObserver(module::KEY_SESSION_OPENNEWSESSION, sid);//通知主窗口创建会话
			}
		}
	}
	else if (0 == _tcsicmp(msg.sType, UIIMEdit_MSGTYPE_TEXTCHANGED))
	{
		if (msg.pSender->GetName() == _T("input_richedit"))
		{
			if (!m_bGroupSession)
			{
				module::getP2PCmdModule()->tcpSendWritingCMD(m_sId, TRUE);
				m_pManager->KillTimer(this, TIMER_CHECK_WRITING);
				m_pManager->SetTimer(this, TIMER_CHECK_WRITING, 5000);
			}
		}
	}
	else if (0 == _tcsicmp(msg.sType, DUI_MSGTYPE_KILLFOCUS))
	{
		if (!m_bGroupSession)
		{
			m_pManager->KillTimer(this, TIMER_CHECK_WRITING);
			module::getP2PCmdModule()->tcpSendWritingCMD(m_sId, FALSE);
		}
	}
	else if (0 == _tcsicmp(msg.sType, DUI_MSGTYPE_TEXTCHANGED))
	{
		if (msg.pSender == m_pSearchEdit)
		{
			m_pSearchResultList->RemoveAll();
			CDuiString inputText = m_pSearchEdit->GetText();
			if (inputText.IsEmpty())
			{
				m_pSearchResultList->SetVisible(false);
				m_pGroupMemberList->SetVisible(true);
			}
			else
			{
				m_pGroupMemberList->SetVisible(false);
				m_pSearchResultList->SetVisible(true);

				module::UserInfoEntityVec userList;
				_GetGroupNameListByShortName(inputText.GetData(), userList);
				_UpdateSearchRsultList(userList);
			}
		}
	}
}
Exemplo n.º 18
0
Node* CUIRecentSessionList::AddNode(const SessionListItemInfo& item, Node* parent /*= NULL*/, int index /*= 0*/)
{
	if (!parent)
		parent = root_node_;

	TCHAR szBuf[MAX_PATH] = { 0 };

	CListContainerElementUI* pListElement = NULL;
	if (!m_dlgBuilder.GetMarkup()->IsValid()) {
		pListElement = static_cast<CListContainerElementUI*>(m_dlgBuilder.Create(_T("MainDialog\\recentlyListItem.xml"), (UINT)0, NULL, &paint_manager_));
	}
	else {
		pListElement = static_cast<CListContainerElementUI*>(m_dlgBuilder.Create((UINT)0, &paint_manager_));
	}
	if (pListElement == NULL)
		return NULL;

	Node* node = new Node;

	node->data().level_ = parent->data().level_ + 1;
	if (item.folder)
		node->data().has_child_ = !item.empty;
	else
		node->data().has_child_ = false;

	node->data().folder_ = item.folder;
	node->data().child_visible_ = (node->data().level_ == 0);
	node->data().sId = item.id;
	node->data().text_ = item.nickName;
	node->data().list_elment_ = pListElement;

	if (!parent->data().child_visible_)
		pListElement->SetVisible(false);

	if (parent != root_node_ && !parent->data().list_elment_->IsVisible())
		pListElement->SetVisible(false);

	CDuiRect rcPadding = text_padding_;
	for (int i = 0; i < node->data().level_; ++i)
	{
		rcPadding.left += level_text_start_pos_;
	}
	pListElement->SetPadding(rcPadding);

	CControlUI* log_button = static_cast<CControlUI*>(paint_manager_.FindSubControlByName(pListElement, kLogoButtonControlName));
	if (log_button != NULL)
	{
		if (!item.folder && !item.avatarPath.IsEmpty())
		{
			_stprintf_s(szBuf, MAX_PATH - 1, _T("%s"), item.avatarPath);
			log_button->SetBkImage(szBuf);
		}
		else
		{
			CContainerUI* logo_container = static_cast<CContainerUI*>(paint_manager_.FindSubControlByName(pListElement, kLogoContainerControlName));
			if (logo_container != NULL)
				logo_container->SetVisible(false);
		}
		log_button->SetTag((UINT_PTR)pListElement);
		//log_button->OnEvent += MakeDelegate(&OnLogoButtonEvent);//右键替代了该功能,不用绑定
	}

	CDuiString html_text;
	if (node->data().has_child_)
	{
		if (node->data().child_visible_)
			html_text += level_expand_image_;
		else
			html_text += level_collapse_image_;

		_stprintf_s(szBuf, MAX_PATH - 1, _T("<x %d>"), level_text_start_pos_);
		html_text += szBuf;
	}

	if (item.folder)
	{
		html_text += node->data().text_;
	}
	else
	{
		_stprintf_s(szBuf, MAX_PATH - 1, _T("%s"), item.nickName);
		html_text += szBuf;
	}

	CLabelUI* nick_name = static_cast<CLabelUI*>(paint_manager_.FindSubControlByName(pListElement, kNickNameControlName));
	if (nick_name != NULL)
	{
		if (item.folder)
			nick_name->SetFixedWidth(0);

		nick_name->SetShowHtml(true);
		nick_name->SetText(html_text);
	}

	CLabelUI* lastTime = static_cast<CLabelUI*>(paint_manager_.FindSubControlByName(pListElement, lastContentTimeControlName));
	if (lastTime != NULL)
	{
		lastTime->SetShowHtml(true);
		CString strTime = module::getMiscModule()->makeShortTimeDescription(item.Time);//timeData.Format(_T("-%Y%m%d-%H-%M-%S-"));
		lastTime->SetText(strTime);
	}

	CLabelUI* plastMsgUI = static_cast<CLabelUI*>(paint_manager_.FindSubControlByName(pListElement, klastmsgControlName));
	if (plastMsgUI)
	{
		CString strContent = item.description;
		ReceiveMsgManage::getInstance()->parseContent(strContent, TRUE, 400);//需要转换成本地的格式
		plastMsgUI->SetText(strContent);
	}

	pListElement->SetFixedHeight(kIMListItemNormalHeight);
	pListElement->SetTag((UINT_PTR)node);
	pListElement->SetUserData(item.id);
	if (0 == index)
	{
		if (parent->has_children())
		{
			Node* prev = parent->get_last_child();
			index = prev->data().list_elment_->GetIndex() + 1;
		}
		else
		{
			if (parent == root_node_)
				index = 0;
			else
				index = parent->data().list_elment_->GetIndex() + 1;
		}
	}

	if (!CListUI::AddAt(pListElement, index))
	{
		delete pListElement;
		delete node;
		node = NULL;
	}

	parent->add_child(node);
	return node;
}
void CreateDiscussionGrpDialog::_AddToGroupMemberList(std::string sid)
{
	if (sid.empty())
	{
		return;
	}
	//确认没有重复的项
	for (int n = 0; n < m_pListGroupMembers->GetCount();n++)
	{
		CControlUI* pItem = m_pListGroupMembers->GetItemAt(n);
		if (pItem)
		{
			CString strId = pItem->GetUserData();
			if (!strId.IsEmpty())
			{
				std::string sId = util::cStringToString(strId);
				if (sId == sid)
				{
					return;
				}
			}
		}
	}
	//插入ITEM
	module::UserInfoEntity userInfo;
	if (!module::getUserListModule()->getUserInfoBySId(sid, userInfo))
	{
		LOG__(DEBG, _T("can't find the userInfo:%s"), util::stringToCString(sid));
		return;
	}
	CDialogBuilder dlgBuilder;
	CListContainerElementUI* pListElement = (CListContainerElementUI*)dlgBuilder.Create(_T("CreateDiscussionGrpDialog\\ListGroupMembersItem.xml"), (UINT)0, NULL, &m_PaintManager);
	if (!pListElement)
	{
		LOG__(ERR, _T("群item创建失败"));
		return;
	}
	CControlUI* pLogo = static_cast<CControlUI*>(pListElement->FindSubControl(_T("AvatarInfo")));
	if (!pLogo)
	{
		return;
	}
	pLogo->SetBkImage(util::stringToCString(userInfo.getAvatarPath()));

	CLabelUI* pNameLable = static_cast<CLabelUI*>(pListElement->FindSubControl(_T("nickname")));
	if (!pNameLable)
	{
		return;
	}
	pNameLable->SetText(userInfo.getRealName());

	CButtonUI* pRemoveBtn = static_cast<CButtonUI*>(pListElement->FindSubControl(_T("removebtn")));
	if (pRemoveBtn)
	{
		//点击删除按钮的时候根据这个来判断是哪个项
		pRemoveBtn->SetTag(UINT_PTR(pListElement));
	}

	if (module::getSysConfigModule()->userID() == userInfo.sId)//自己不能删除
	{
		pRemoveBtn->SetVisible(false);
	}
	
	pListElement->SetUserData(util::stringToCString(userInfo.sId));

	m_pListGroupMembers->Add(pListElement);

}
Exemplo n.º 20
0
void CProjectInfoPage::AddListItem(int nFromIndex, int nCount)
{
	for (int i=nFromIndex; i<nCount+nFromIndex; i++)
	{
		CDialogBuilder DlgBuilder;
		CListContainerElementUI *plstItem = NULL;
		if (!DlgBuilder.GetMarkup()->IsValid())
		{
			plstItem = static_cast<CListContainerElementUI*>(DlgBuilder.Create(_T("project_list_item.xml"),
				(UINT)0, NULL, m_PaintManager));
		}
		else
		{
			plstItem = static_cast<CListContainerElementUI*>(DlgBuilder.Create((UINT)0, m_PaintManager));
		}
		if (plstItem == NULL)
			return ;
		else
		{
			sProjectItem& oneProj = m_vecProjects[i];
			sProjectItem* pNewData = new sProjectItem;
			pNewData->strCreateTime = oneProj.strCreateTime;
			pNewData->strDestOrgID = oneProj.strDestOrgID;
			pNewData->strDestOrgName = oneProj.strDestOrgName;
			pNewData->strProjID = oneProj.strProjID;
			pNewData->strProjName = oneProj.strProjName;
			pNewData->strRoomID = oneProj.strRoomID;
			pNewData->vecDestParticipants = oneProj.vecDestParticipants;

			CLabelUI *pLabelProjName = static_cast<CLabelUI *>(m_PaintManager->FindSubControlByName(plstItem, _T("lable_project_name")));
			if (pLabelProjName != NULL)
			{
				pLabelProjName->SetText(oneProj.strProjName.c_str());
			}

			tstring strShowDest;
			//判断是个人还是机构。
			if (oneProj.strDestOrgID.empty() 
				&& oneProj.strDestOrgName.empty()
				&& oneProj.vecDestParticipants.size()>0)
			{
				tstring strAccount = oneProj.vecDestParticipants[0];
				strAccount += MMPC_ACCOUNT;
			

				//策略修改:取消了用户的备注名
				sUserVCard oneUser;
				if (GetDBTaskModule()->LoadUserVCard(strAccount,  oneUser))
				{
					strShowDest = oneUser.strUserNickname.c_str();
				}
				sUserVCard oneNewVCard;
				if(CController::Instance()->GetUserInfoMgr()->GetUserVCard(strAccount, oneNewVCard))
				{
					strShowDest = oneNewVCard.strUserNickname;
				}

				if (strShowDest.empty())
				{
					strShowDest = oneProj.vecDestParticipants[0];
				}
				
			}
			else
			{
				strShowDest = oneProj.strDestOrgName;
			}

			CLabelUI *pLabelOrgName = static_cast<CLabelUI *>(m_PaintManager->FindSubControlByName(plstItem, _T("label_orgnization_name")));
			if (pLabelOrgName != NULL)
			{
				pLabelOrgName->SetText(strShowDest.c_str());
			}

			CLabelUI *pLabelTime = static_cast<CLabelUI *>(m_PaintManager->FindSubControlByName(plstItem, _T("label_project_time")));
			if (pLabelTime != NULL)
			{
				pLabelTime->SetText(oneProj.strCreateTime.c_str());
			}

			//用roomID来标识唯一的Item
			plstItem->SetTag((UINT_PTR)pNewData);

			plstItem->SetFixedHeight(50);
			if (!m_pListProjs->Add(plstItem))
			{
				delete plstItem;
			}
		}
	}
}
Exemplo n.º 21
0
	void DuiLib::CRecentCallContactUI::AddItem( recentCallContactItem *item, int indx/*=-1*/ )
	{
		CListContainerElementUI *pListElement = NULL;
		if (!m_DlgBuilder.GetMarkup()->IsValid())
		{
			pListElement = static_cast<CListContainerElementUI*>(m_DlgBuilder.Create(_T("Call\\recent_call_contacts_list_item.xml"),
				(UINT)0, NULL, m_pPaintManager));
		}
		else
		{
			pListElement = static_cast<CListContainerElementUI*>(m_DlgBuilder.Create((UINT)0, m_pPaintManager));
		}
		if (pListElement == NULL)
			return;

		CControlUI* pBtnLogo = static_cast<CControlUI*>(m_pPaintManager->FindSubControlByName(pListElement, kLogoControl));
		if (pBtnLogo != NULL)
		{			
			pBtnLogo->SetBkImage(item->m_strLogo);			
		}

		CLabelUI *pLblNickName = static_cast<CLabelUI*>(m_pPaintManager->FindSubControlByName(pListElement, kNickNameLabel));
		if (pLblNickName != NULL)
		{			
			pLblNickName->SetText(item->m_strNickName);
		}

		CLabelUI *pOrgNameLabel = static_cast<CLabelUI*>(m_pPaintManager->FindSubControlByName(pListElement, kOrgNameLabel));
		if (pOrgNameLabel != NULL)
		{			
			pOrgNameLabel->SetText(item->m_strOrgName);
		}

		CControlUI *pDialIndicate = static_cast<CControlUI*>(m_pPaintManager->FindSubControlByName(pListElement, "dialIndicateLogo"));
		if (pDialIndicate != NULL)
		{			
			CDuiString strImg;
			strImg.Format("Call\\call%d.png", item->dialIndicate);
			pDialIndicate->SetBkImage(strImg);
		}
			

		pListElement->SetTag(item->nItemID);
		pListElement->SetFixedHeight(kContactListItemNormalHeight);

		CButtonUI* pBtnVoiceCall= static_cast<CButtonUI*>(m_pPaintManager->FindSubControlByName(pListElement, kVoiceCallBtnName));
		CButtonUI* pBtnVedioCall= static_cast<CButtonUI*>(m_pPaintManager->FindSubControlByName(pListElement, kVedioCallBtnName));
		if (NULL != pBtnVoiceCall)  pBtnVoiceCall->SetTag(item->nItemID);
		if (NULL != pBtnVedioCall)  pBtnVedioCall->SetTag(item->nItemID);


		if (-1 == indx)
		{
			if (!CListUI::Add(pListElement))
			{
				delete pListElement;
			}
		}
		else if(indx >= 0)
		{
			if (!CListUI::AddAt(pListElement,indx))
			{
				delete pListElement;
			}
		}		

	}
Exemplo n.º 22
0
Node* CGroupsTreelistUI::AddNode(const GroupsListItemInfo& item, Node* parent)
{
	if (!parent)
		parent = root_node_;

	TCHAR szBuf[MAX_PATH] = {0};

    CListContainerElementUI* pListElement = NULL;
	if (!UIIMList::m_dlgBuilder.GetMarkup()->IsValid()) {
		pListElement = static_cast<CListContainerElementUI*>(UIIMList::m_dlgBuilder.Create(kXMLFilePath, (UINT)0, NULL, &paint_manager_));
    }
    else {
		pListElement = static_cast<CListContainerElementUI*>(UIIMList::m_dlgBuilder.Create((UINT)0, &paint_manager_));
    }
    if (pListElement == NULL)
        return NULL;

	Node* node = new Node;
	node->data().level_ = parent->data().level_ + 1;
	if (item.folder)
		node->data().has_child_ = !item.empty;
	else
		node->data().has_child_ = false;

	node->data().folder_ = item.folder;

	node->data().child_visible_ = (node->data().level_ == 0);
	node->data().child_visible_ = false;
	node->data().sId = item.id;
	node->data().text_ = item.nickName;
	node->data().list_elment_ = pListElement;

	if (!parent->data().child_visible_)
		pListElement->SetVisible(false);

	if (parent != UIIMList::root_node_ && !parent->data().list_elment_->IsVisible())
		pListElement->SetVisible(false);

	CDuiRect rcPadding = UIIMList::text_padding_;
	for (int i = 0; i < node->data().level_; ++i)
	{
		rcPadding.left += UIIMList::level_text_start_pos_;
	}
	pListElement->SetPadding(rcPadding);

	CButtonUI* log_button = static_cast<CButtonUI*>(UIIMList::paint_manager_.FindSubControlByName(pListElement, kLogoButtonControlName));
	if (log_button != NULL)
	{
		if (!item.folder && !item.avatarPath.IsEmpty())
		{
			_stprintf_s(szBuf, MAX_PATH - 1, _T("%s"), item.avatarPath);
			log_button->SetNormalImage(szBuf);
		}
		else
		{
			CContainerUI* logo_container = static_cast<CContainerUI*>(paint_manager_.FindSubControlByName(pListElement, kLogoContainerControlName));
			if (logo_container != NULL)
				logo_container->SetVisible(false);
		}
        log_button->SetTag((UINT_PTR)pListElement);
        log_button->OnEvent += MakeDelegate(&OnButtonEvent);
	}

	CDuiString html_text;
	if (node->data().has_child_)
	{
		if (node->data().child_visible_)
			html_text += UIIMList::level_expand_image_;
		else
			html_text += UIIMList::level_collapse_image_;

		_stprintf_s(szBuf, MAX_PATH - 1, _T("<x %d>"), level_text_start_pos_);

		html_text += szBuf;
	}

	if (item.folder)
	{
		html_text += node->data().text_;
	}
	else
	{
		_stprintf_s(szBuf, MAX_PATH - 1, _T("%s"), item.nickName);

		html_text += szBuf;
	}

	CLabelUI* nick_name = static_cast<CLabelUI*>(UIIMList::paint_manager_.FindSubControlByName(pListElement, kNickNameControlName));
	if (nick_name != NULL)
	{
		if (item.folder)
			nick_name->SetFixedWidth(0);

		nick_name->SetShowHtml(true);
		nick_name->SetText(html_text);
	}

	if (item.folder && item.id == MY_DISCUSSGROUP_ITEMID)
	{
		CButtonUI* btnCreatGroup = static_cast<CButtonUI*>(UIIMList::paint_manager_.FindSubControlByName(pListElement, kcreatGroupControlName));
		if (btnCreatGroup != NULL)
		{
			btnCreatGroup->SetVisible(true);
			btnCreatGroup->SetTag((UINT_PTR)pListElement);
			btnCreatGroup->OnEvent += MakeDelegate(&OnButtonEvent);
		}
	}

	if (!item.folder && !item.description.IsEmpty())
	{
		CLabelUI* description = static_cast<CLabelUI*>(UIIMList::paint_manager_.FindSubControlByName(pListElement, kDescriptionControlName));
		if (description != NULL)
		{
			_stprintf_s(szBuf, MAX_PATH - 1, _T("<x 10><c #808080>%s</c>"), item.description);

			description->SetShowHtml(true);
			description->SetText(szBuf);
		}
	}

	if (item.folder)
	{
		pListElement->SetFixedHeight(kGroupListFolderItemHeight);
	}
	else
		pListElement->SetFixedHeight(kGroupListNormalItemHeight);

	pListElement->SetTag((UINT_PTR)node);
	int index = 0;
	if (parent->has_children())
	{
		Node* prev = parent->get_last_child();
		index = prev->data().list_elment_->GetIndex() + 1;
	}
	else 
	{
		if (parent == UIIMList::root_node_)
			index = 0;
		else
			index = parent->data().list_elment_->GetIndex() + 1;
	}
	if (!CListUI::AddAt(pListElement, index))
	{
		delete pListElement;
		delete node;
		node = NULL;
	}

	parent->add_child(node);

	return node;
}
Exemplo n.º 23
0
Node* CGroupsUI::AddNode(const FriendListItemInfo& item, Node* parent)
{
	if (!parent)
		parent = root_node_;

	TCHAR szBuf[MAX_PATH] = {0};

    CListContainerElementUI* pListElement = NULL;
    if( !m_dlgBuilder.GetMarkup()->IsValid() ) 
	{
		if (uiType == eUI_Group)
		{
			pListElement = static_cast<CListContainerElementUI*>(m_dlgBuilder.Create(_T("item_group_list.xml"), (UINT)0, NULL, &paint_manager_));
			kGroupListItemNormalHeight = 26;
			kGroupListItemSelectedHeight = 44;
		}
		else if (uiType == eUI_Member)
		{
			pListElement = static_cast<CListContainerElementUI*>(m_dlgBuilder.Create(_T("item_member_list.xml"), (UINT)0, NULL, &paint_manager_));
			kGroupListItemNormalHeight = 26;
			kGroupListItemSelectedHeight = 44;
		}
		else if (uiType == eUI_Recent)
		{
			pListElement = static_cast<CListContainerElementUI*>(m_dlgBuilder.Create(_T("item_recent_list.xml"), (UINT)0, NULL, &paint_manager_));
			kGroupListItemNormalHeight = 56;
			kGroupListItemSelectedHeight = 56;
		}
    }
    else 
	{
        pListElement = static_cast<CListContainerElementUI*>(m_dlgBuilder.Create((UINT)0, &paint_manager_));
    }
    if (pListElement == NULL)
        return NULL;

	Node* node = new Node;

	node->data().level_ = parent->data().level_ + 1;
	if (item.folder)
		node->data().has_child_ = !item.empty;
	else
		node->data().has_child_ = false;

	node->data().folder_ = item.folder;
	node->data().child_visible_ = (node->data().level_ == 0);

	node->data().nodetype = item.nodetype;
	node->data().type = item.type;
	node->data().rusertype = item.rusertype;
	node->data().text_ = item.showname;
	node->data().value = item.id;
	node->data().id = item.id;
	node->data().numid = item.numid;
	node->data().Parentid = item.Parentid;
	node->data().nickname = item.nick_name;
	node->data().list_elment_ = pListElement;

	//IM2.0
	node->data().Lastword = item.Lastword;
	node->data().GoodAt = item.GoodAt;
	node->data().lastwordtime = item.lastwordtime;
	node->data().isvip = item.isvip;
	node->data().hasright = item.hasright;
	node->data().totlenum = item.totlenum;
	node->data().onlinenum = item.onlinenum;

	if (!parent->data().child_visible_)
		pListElement->SetVisible(false);

	if (parent != root_node_ && !parent->data().list_elment_->IsVisible())
		pListElement->SetVisible(false);

	CDuiRect rcPadding = text_padding_;
	for (int i = 0; i < node->data().level_; ++i)
	{
		rcPadding.left += level_text_start_pos_;		
	}
	pListElement->SetPadding(rcPadding);

	CButtonUI* log_button = static_cast<CButtonUI*>(paint_manager_.FindSubControlByName(pListElement, kLogoButtonControlName));
	if (log_button != NULL)
	{
		if (!item.folder && !item.logo.IsEmpty())
		{
			_stprintf_s(szBuf, MAX_PATH - 1, _T("%s"), item.logo);
			log_button->SetNormalImage(szBuf);
		}
		else
		{
			CContainerUI* logo_container = static_cast<CContainerUI*>(paint_manager_.FindSubControlByName(pListElement, kLogoContainerControlName));
			if (logo_container != NULL)
				logo_container->SetVisible(false);
		}
        log_button->SetTag((UINT_PTR)pListElement);
        log_button->OnEvent += MakeDelegate(&OnLogoButtonEvent);
	}

	CDuiString html_text;
	if (node->data().has_child_)
	{
		if (node->data().child_visible_)
			html_text += level_expand_image_;
		else
			html_text += level_collapse_image_;

		_stprintf_s(szBuf, MAX_PATH - 1, _T("<x %d>"), level_text_start_pos_);
		html_text += szBuf;
	}

	if (item.folder)
	{
		html_text += node->data().text_;
	}
	else
	{
		_stprintf_s(szBuf, MAX_PATH - 1, _T("%s"), node->data().text_);
		html_text += szBuf;
	}

	CLabelUI* nick_name = static_cast<CLabelUI*>(paint_manager_.FindSubControlByName(pListElement, kNickNameControlName));
	if (nick_name != NULL)
	{
		if (item.folder)
			nick_name->SetFixedWidth(0);

		nick_name->SetShowHtml(true);
		nick_name->SetText(html_text);
	}

	//////////////////////////////////////////////////////////////////////////
	//IM2.0
	CLabelUI* l_time = static_cast<CLabelUI*>(paint_manager_.FindSubControlByName(pListElement, kTimeControlName));
	if (l_time != NULL)
	{
		CDuiString lastwordtime = _T("");
		long time = item.lastwordtime ; 
		CTime tempTime(time) ; 
		CTime curTime = CTime::GetCurrentTime() ; 

		// 昨天 
		if( ( curTime.GetYear() == tempTime.GetYear() && curTime.GetMonth() == tempTime.GetMonth() ) && ( curTime.GetDay() == tempTime.GetDay() + 1 ) )
		{
			l_time->SetText(_T("昨天")) ; 
		}
		else if( ( curTime.GetYear() == tempTime.GetYear() && curTime.GetMonth() == tempTime.GetMonth() ) && ( curTime.GetDay() == tempTime.GetDay() + 2 ) ) 
		{
			l_time->SetText(_T("前天")) ;
		}
		else if( ( curTime.GetYear() == tempTime.GetYear() && curTime.GetMonth() == tempTime.GetMonth() ) && ( curTime.GetDay() == tempTime.GetDay()) )
		{
			// 当天 
			CString strText = _T(" ") ;
			strText.Format("%d:%d" ,tempTime.GetHour(),tempTime.GetMinute()) ; 
			l_time->SetText(strText.GetBuffer()) ;
		}
		else 
		{
			CString strText = _T(" ") ;
			strText.Format("%d-%d" ,tempTime.GetMonth(),tempTime.GetDay()) ; 
			l_time->SetText(strText.GetBuffer()) ;
		}
		//lastwordtime.Format("%02d:%02d", item.lastwordtime/100, item.lastwordtime%100);
		//l_time->SetText(lastwordtime);
	}
	CLabelUI* l_lastword = static_cast<CLabelUI*>(paint_manager_.FindSubControlByName(pListElement, kLastWordControlName));
	if (l_lastword != NULL)
		l_lastword->SetText(item.Lastword);
	//////////////////////////////////////////////////////////////////////////

	if (!item.folder && !item.description.IsEmpty())
	{
		CLabelUI* description = static_cast<CLabelUI*>(paint_manager_.FindSubControlByName(pListElement, kDescriptionControlName));
		if (description != NULL)
		{
			_stprintf_s(szBuf, MAX_PATH - 1, _T("<x 8><c #808080>%s</c>"), item.description);
			description->SetShowHtml(true);
			description->SetText(szBuf);
		}
	}

	pListElement->SetFixedHeight(kGroupListItemNormalHeight);
	pListElement->SetTag((UINT_PTR)node);
	int index = 0;
	if (parent->has_children())
	{
		Node* prev = parent->get_last_child();
		index = prev->data().list_elment_->GetIndex() + 1;
	}
	else 
	{
		if (parent == root_node_)
			index = 0;
		else
			index = parent->data().list_elment_->GetIndex() + 1;
	}
	if (!CListUI::AddAt(pListElement, index))
	{
		delete pListElement;
		delete node;
		node = NULL;
	}

	parent->add_child(node);

	CString strID = item.id.GetData();
	allNodeInfo[strID] = node;
	return node;
}
Exemplo n.º 24
0
Node* CGroupsUI::AddNode(const GroupsListItemInfo& item, Node* parent)
{
	if (!parent)
		parent = root_node_;

	TCHAR szBuf[MAX_PATH] = {0};

    CListContainerElementUI* pListElement = NULL;
    if( !m_dlgBuilder.GetMarkup()->IsValid() ) {
        pListElement = static_cast<CListContainerElementUI*>(m_dlgBuilder.Create(_T("group_list_item.xml"), (UINT)0, NULL, &paint_manager_));
    }
    else {
        pListElement = static_cast<CListContainerElementUI*>(m_dlgBuilder.Create((UINT)0, &paint_manager_));
    }
    if (pListElement == NULL)
        return NULL;

	Node* node = new Node;

	node->data().level_ = parent->data().level_ + 1;
	if (item.folder)
		node->data().has_child_ = !item.empty;
	else
		node->data().has_child_ = false;

	node->data().folder_ = item.folder;

	node->data().child_visible_ = (node->data().level_ == 0);

	node->data().text_ = item.nick_name;
	node->data().list_elment_ = pListElement;

	if (!parent->data().child_visible_)
		pListElement->SetVisible(false);

	if (parent != root_node_ && !parent->data().list_elment_->IsVisible())
		pListElement->SetVisible(false);

	CRect rcPadding = text_padding_;
	for (int i = 0; i < node->data().level_; ++i)
	{
		rcPadding.left += level_text_start_pos_;		
	}
	pListElement->SetPadding(rcPadding);

	CButtonUI* log_button = static_cast<CButtonUI*>(paint_manager_.FindSubControlByName(pListElement, kLogoButtonControlName));
	if (log_button != NULL)
	{
		if (!item.folder && !item.logo.empty())
		{
#if defined(UNDER_WINCE)
			_stprintf(szBuf, _T("%s"), item.logo.c_str());
#else
			_stprintf_s(szBuf, MAX_PATH - 1, _T("%s"), item.logo.c_str());
#endif
			log_button->SetNormalImage(szBuf);
		}
		else
		{
			CContainerUI* logo_container = static_cast<CContainerUI*>(paint_manager_.FindSubControlByName(pListElement, kLogoContainerControlName));
			if (logo_container != NULL)
				logo_container->SetVisible(false);
		}
        log_button->SetTag((UINT_PTR)pListElement);
        log_button->OnEvent += MakeDelegate(&OnLogoButtonEvent);
	}

	tString html_text;
	if (node->data().has_child_)
	{
		if (node->data().child_visible_)
			html_text += level_expand_image_;
		else
			html_text += level_collapse_image_;

#if defined(UNDER_WINCE)
		_stprintf(szBuf, _T("<x %d>"), level_text_start_pos_);
#else
		_stprintf_s(szBuf, MAX_PATH - 1, _T("<x %d>"), level_text_start_pos_);
#endif
		html_text += szBuf;
	}

	if (item.folder)
	{
		html_text += node->data().text_;
	}
	else
	{
#if defined(UNDER_WINCE)
		_stprintf(szBuf, _T("%s"), item.nick_name.c_str());
#else
		_stprintf_s(szBuf, MAX_PATH - 1, _T("%s"), item.nick_name.c_str());
#endif
		html_text += szBuf;
	}

	CLabelUI* nick_name = static_cast<CLabelUI*>(paint_manager_.FindSubControlByName(pListElement, kNickNameControlName));
	if (nick_name != NULL)
	{
		if (item.folder)
			nick_name->SetFixedWidth(0);

		nick_name->SetShowHtml(true);
		nick_name->SetText(html_text.c_str());
	}

	if (!item.folder && !item.description.empty())
	{
		CLabelUI* description = static_cast<CLabelUI*>(paint_manager_.FindSubControlByName(pListElement, kDescriptionControlName));
		if (description != NULL)
		{
#if defined(UNDER_WINCE)
			_stprintf(szBuf, _T("<x 20><c #808080>%s</c>"), item.description.c_str());
#else
			_stprintf_s(szBuf, MAX_PATH - 1, _T("<x 20><c #808080>%s</c>"), item.description.c_str());
#endif
			description->SetShowHtml(true);
			description->SetText(szBuf);
		}
	}

	pListElement->SetFixedHeight(kGroupListItemNormalHeight);
	pListElement->SetTag((UINT_PTR)node);
	int index = 0;
	if (parent->has_children())
	{
		Node* prev = parent->get_last_child();
		index = prev->data().list_elment_->GetIndex() + 1;
	}
	else 
	{
		if (parent == root_node_)
			index = 0;
		else
			index = parent->data().list_elment_->GetIndex() + 1;
	}
	if (!CListUI::AddAt(pListElement, index))
	{
		delete pListElement;
		delete node;
		node = NULL;
	}

	parent->add_child(node);
	return node;
}
Exemplo n.º 25
0
void CVisitor::Paging()
{
	m_pList->RemoveAll();
	CEditUI* pName = static_cast<CEditUI*>(m_pManager->FindControl(_T("Visitor_SearchEdit")));
	std::string	strName = pName->GetText().GetStringA();
	std::string	y = "'";
	std::string	d = ",";
	std::string b = "%";
	std::string strCount = "select count(serial_ID) from (select * from visitor where name like "+y+b+strName+b+y+") CountTable";
	std::auto_ptr<sql::ResultSet> result = CLoginWnd::m_mySql.ExecuteQuery(strCount);
	if (result->next())
	{
		m_iPage = result->getInt("count(serial_ID)");
		m_iPage = (m_iPage/10)+1;
	}
	if (m_iCurrentPage<1)
	{
		m_iCurrentPage = 1;		
	}
	if (m_iCurrentPage>m_iPage)
	{
		m_iCurrentPage = m_iPage;
	}
	int PageSize = 10;
	int count = (m_iCurrentPage-1) * PageSize;
	char start[24];
	sprintf_s(start,sizeof(start),"%d",count);
	char data[24];
	sprintf_s(data,sizeof(data),"%d",PageSize);
	std::string strStart = start;
	std::string	strData = data;
	std::string strsql = "select * from (select * from visitor where name like "+y+b+strName+b+y+") table1 where serial_ID limit "+strStart+d+strData;
	std::auto_ptr<sql::ResultSet> res = CLoginWnd::m_mySql.ExecuteQuery(strsql);
	while(res->next())
	{
		CDialogBuilder builder;
		CListContainerElementUI* pListItem = NULL;
		pListItem = static_cast<CListContainerElementUI*>(builder.Create(_T("xmls/VisitorList_item.xml"),UINT(0),NULL,m_pManager,NULL));
		int index = m_pList->GetCount();
		pListItem->SetFixedHeight(60);
		m_pList->AddAt(pListItem,index);
		CLabelUI* pName = (CLabelUI*)m_pManager->FindSubControlByName(pListItem,_T("Visitorname"));
		CLabelUI* pGender = (CLabelUI*)m_pManager->FindSubControlByName(pListItem,_T("VisitorGender"));
		CLabelUI* pCard = (CLabelUI*)m_pManager->FindSubControlByName(pListItem,_T("VisitorCard"));
		CLabelUI* pIdentity = (CLabelUI*)m_pManager->FindSubControlByName(pListItem,_T("VisitorIdentity"));
		CLabelUI* pAddr = (CLabelUI*)m_pManager->FindSubControlByName(pListItem,_T("VisitorAddr"));
		CLabelUI* pCarLicence = (CLabelUI*)m_pManager->FindSubControlByName(pListItem,_T("VisitorCarLicence"));
		CLabelUI* pMobile = (CLabelUI*)m_pManager->FindSubControlByName(pListItem,_T("VisitorMobile"));
		CLabelUI* pReason = (CLabelUI*)m_pManager->FindSubControlByName(pListItem,_T("VisitReason"));
		CLabelUI* pQuantity = (CLabelUI*)m_pManager->FindSubControlByName(pListItem,_T("VisitorQuantity"));
		CLabelUI* pVisitTime = (CLabelUI*)m_pManager->FindSubControlByName(pListItem,_T("VisitTime"));
		CLabelUI* pLeaveTime = (CLabelUI*)m_pManager->FindSubControlByName(pListItem,_T("LeaveTime"));
		CLabelUI* pIsLeft = (CLabelUI*)m_pManager->FindSubControlByName(pListItem,_T("IsLeft"));
		CButtonUI* pBlack = static_cast<CButtonUI*>(m_pManager->FindSubControlByName(pListItem,_T("AddToBlackList")));
		pBlack->SetTag((UINT_PTR)pListItem);
		char name[100];
		WCHAR wname[200];
		strcpy_s(name,sizeof(name),res->getString("name").c_str());
		CCommonConvert::Char2WChar(name,sizeof(name),wname);
		pName->SetText(wname);
		CDuiString wgender;
		int gender = res->getInt("gender");
		if (gender == 2)
		{
			wgender = (_T("女"));
		}
		else
		{
			wgender = (_T("男"));
		}
		pGender->SetText(wgender);
		char card[100];
		WCHAR wcard[200];
		strcpy_s(card,sizeof(card),res->getString("card_num").c_str());
		CCommonConvert::Char2WChar(card,sizeof(card),wcard);
		pCard->SetText(wcard);
		char identity[100];
		WCHAR widentity[200];
		strcpy_s(identity,sizeof(identity),res->getString("identity_num").c_str());
		CCommonConvert::Char2WChar(identity,sizeof(identity),widentity);
		pIdentity->SetText(widentity);
		char addr[200];
		WCHAR waddr[400];
		strcpy_s(addr,sizeof(addr),res->getString("address").c_str());
		CCommonConvert::Char2WChar(addr,sizeof(addr),waddr);
		pAddr->SetText(waddr);
		char car[200];
		WCHAR wcar[400];
		strcpy_s(car,sizeof(car),res->getString("car_num").c_str());
		CCommonConvert::Char2WChar(car,sizeof(car),wcar);
		pCarLicence->SetText(wcar);
		char mobile[50];
		WCHAR wmobile[100];
		strcpy_s(mobile,sizeof(mobile),res->getString("phone_num").c_str());
		CCommonConvert::Char2WChar(mobile,sizeof(mobile),wmobile);
		pMobile->SetText(wmobile);
		char reason[200];
		WCHAR wreason[400];
		strcpy_s(reason,sizeof(reason),res->getString("visit_reason").c_str());
		CCommonConvert::Char2WChar(reason,sizeof(reason),wreason);
		pReason->SetText(wreason);
		int quantity = res->getInt("visit_num");
		CDuiString wquantity;
		wquantity.Format(_T("%d"),quantity);
		pQuantity->SetText(wquantity);
		char visit_time[50];
		WCHAR wvisit_time[100];
		strcpy_s(visit_time,sizeof(visit_time),res->getString("visit_time").c_str());
		CCommonConvert::Char2WChar(visit_time,sizeof(visit_time),wvisit_time);
		pVisitTime->SetText(wvisit_time);
		char leave_time[50];
		WCHAR wleave_time[100];
		strcpy_s(leave_time,sizeof(leave_time),res->getString("leave_time").c_str());
		CCommonConvert::Char2WChar(leave_time,sizeof(leave_time),wleave_time);
		pLeaveTime->SetText(wleave_time);
		int isleft = res->getInt("is_leave");
		CDuiString wisleft;
		if (isleft == 0)
		{
			wisleft = _T("否");
		}
		else
		{
			wisleft = _T("是");
		}
		pIsLeft->SetText(wisleft);
	}
	ShowStatus();
	SetPageBtn();
}