Пример #1
0
VOID XmlMenuParseChild(CDUIMenuBuilder* pThis, CDUIXml& xml, CRefPtr<IDUIControl>  pParentControl)
{
	IDUIApp* pDUIApp = DUIGetAppInstance();
	if(pDUIApp == NULL) return;
	
	IDUIControlFactory* pControlFactory = pDUIApp->GetControlFactory();
	if(pControlFactory == NULL) return;
	
	CDUIString strControlName, strAttriName, strAttriValue;
	CRefPtr<IDUIControl> pControl;
	INT nIndex(0);
	while(xml.FindChildElem())
	{
		xml.IntoElem();
		
		strControlName = xml.GetTagName();
		pControl = pControlFactory->NewControl(strControlName);
		if(pControl.IsNull() && pThis->GetCallBack() != NULL)
		{
			pControl = pThis->GetCallBack()->OnBuilderNewControl(strControlName);
		}
		DUI_ASSERT(!pControl.IsNull());
		
		if(!pControl.IsNull())
		{
			DUI_ASSERT(pControl->GetInterface(IMenu) != NULL 
				|| pControl->GetInterface(IMenuItem) != NULL);

			nIndex = 0;
			do 
			{
				strAttriName = xml.GetAttribName(nIndex++);
				if(strAttriName.size() <= 0) break;
				
				strAttriValue = xml.GetAttrib(strAttriName);
				pControl->SetAttribute(strAttriName, strAttriValue);
				
			} while(TRUE);
			
			if(pThis->GetCallBack() != NULL)
			{
				pThis->GetCallBack()->OnAddChildControl(pParentControl, pControl);
			}
			else
			{
				DefAddChildControl(pParentControl, pControl);
			}
			
			
			XmlMenuParseChild(pThis, xml, pControl);
		}
		
		xml.OutOfElem();
	}
}
Пример #2
0
BOOL CDUIListBox::BeforeAddControl(CRefPtr<IDUIControl> pItem)
{
	if(!theBase::BeforeAddControl(pItem)) return FALSE;
	IDUIListItem* pListItem = (IDUIListItem*)pItem->GetInterface(IListItem);
	DUI_ASSERT(pListItem != NULL);
	if(pListItem == NULL) return FALSE;

	return TRUE;
}
Пример #3
0
DUI_BGN_NAMESPCE

BOOL DefAddChildControl(CRefPtr<IDUIControl> pParent, CRefPtr<IDUIControl> pChild)
{
	IDUIComboBox* pComboBox = (IDUIComboBox*)pParent->GetInterface(IComboBox);
	if(pComboBox != NULL)
	{
		pComboBox->AddListItem(pChild);
	}
	else
	{
		pParent->AddControl(pChild);
	}
	
	return TRUE;
}
Пример #4
0
CRefPtr<IDUIMenu> XmlControlParse(CDUIMenuBuilder* pThis, CDUIXml& xml)
{
	IDUIApp* pDUIApp = DUIGetAppInstance();
	if(pDUIApp == NULL) return NULL;
	
	IDUIControlFactory* pControlFactory = pDUIApp->GetControlFactory();
	if(pControlFactory == NULL) return NULL;
	
	if(!xml.FindElem(_T("menu")))
	{
		DUI_ASSERT(FALSE);
		return NULL;
	}
	CRefPtr<IDUIControl> pRootControl = pControlFactory->NewControl(_T("menu"));
	DUI_ASSERT(!pRootControl.IsNull());
	if(pRootControl.IsNull()) return NULL;

	//parse menu attribute
	CDUIString strAttriName, strAttriValue;
	INT nIndex(0);
	do 
	{
		strAttriName = xml.GetAttribName(nIndex++);
		if(strAttriName.size() <= 0) break;
		
		strAttriValue = xml.GetAttrib(strAttriName);
		pRootControl->SetAttribute(strAttriName, strAttriValue);
		
	} while(TRUE);

	XmlMenuParseChild(pThis, xml, pRootControl);

	if(pThis->GetCallBack() != NULL)
	{
		pThis->GetCallBack()->OnBuilderControlCreated(pRootControl);
	}


	IDUIMenu* pMenuRet =  (IDUIMenu*)pRootControl->GetInterface(IMenu);
	DUI_ASSERT(pMenuRet != NULL);

	return pMenuRet;
}
Пример #5
0
VOID CDUITreeViewImpl::OnCreate()
{
	if(m_pVertSB.IsNull())
	{
		CRefPtr<IDUIControl> pNewControl = GetControlFactory()->NewControl(DUI_VERT_SCROLLBAR);
		if(!pNewControl.IsNull())
		{
			m_pVertSB = (IDUIScrollBar*)pNewControl->GetInterface(IScrollBar);
		}
	}
	
	if(!m_pVertSB.IsNull())
	{
		DUI_ASSERT(m_pControlMgr != NULL);
		m_pVertSB->AttachWindow(m_pControlMgr);
		m_pVertSB->SetScrollOwner(this);
	}
	
	//CheckInitGroupStatus();
}