示例#1
0
BOOL CXTPTabManager::DeleteItem(int nItem)
{
	if (nItem < 0 || nItem >= GetItemCount())
		return FALSE;

	CXTPTabManagerItem* pItem = m_arrItems[nItem];

	BOOL bSelected = (m_pSelected == pItem);

	if (m_pHighlighted == pItem)
		m_pHighlighted = NULL;

	m_arrItems.RemoveAt(nItem);

	pItem->OnRemoved();
	pItem->InternalRelease();

	if (bSelected)
	{
		SetCurSel(nItem);
	}


	OnItemsChanged();

	return TRUE;
}
示例#2
0
void CXTPTabManager::DeleteAllItems()
{
	for (int i = 0; i < m_arrItems.GetSize(); i++)
	{
		CXTPTabManagerItem* pItem = m_arrItems[i];
		pItem->OnRemoved();
		pItem->InternalRelease();
	}

	m_arrItems.RemoveAll();

	m_pHighlighted = m_pSelected = m_pPressed = NULL;

	OnItemsChanged();
}
CTSKTabManagerItem* CTSKTabManager::AddItem(int nItem, CTSKTabManagerItem *pItem)
{
	if (!pItem)
		pItem = new CTSKTabManagerItem();

	pItem->m_pTabManager = this;

	if (nItem < 0 || nItem > GetItemCount())
		nItem = GetItemCount();

	m_arrItems.InsertAt(nItem, pItem);

	OnItemsChanged();

	return pItem;
}
	//*************************************************************************
	// Method:		Add
	// Description: Creates a list view sub item and adds it to the collection
	//
	// Parameters:
	//	control - the control to use to create the sub item
	//
	// Return Value: the added item
	//*************************************************************************
	ContainerListViewSubItem *ContainerListViewSubItemCollection::Add(Control *control)
	{
		ContainerListViewSubItem *thisItem = new ContainerListViewSubItem(control);
		System::Threading::Monitor::Enter(List->SyncRoot);
		try
		{
			OnItemsChanged(new ItemsChangedEventArgs(List->Add(thisItem)));
		}
		catch(Exception *)
		{
		}
		__finally
		{
			System::Threading::Monitor::Exit(List->SyncRoot);
		}
		return thisItem;
	}
	//*************************************************************************
	// Method:		AddRange
	// Description: Adds a set of list view sub items to the collection
	//
	// Parameters:
	//	items - the set of items to add
	//
	// Return Value: None
	//*************************************************************************
	void ContainerListViewSubItemCollection::AddRange(ContainerListViewSubItem *items[])
	{
		System::Threading::Monitor::Enter(List->SyncRoot);
		try
		{
			for (int i = 0; i < items->Length; i++)
			{
				OnItemsChanged(new ItemsChangedEventArgs(List->Add(items->get_Item(i))));
			}
		}
		catch(Exception *)
		{
		}
		__finally
		{
			System::Threading::Monitor::Exit(List->SyncRoot);
		}
	}
示例#6
0
CXTPTabManagerItem* CXTPTabManager::AddItem(int nItem, CXTPTabManagerItem* pItem /*= NULL*/)
{
	if (!pItem)
		pItem = new CXTPTabManagerItem();

	pItem->m_pTabManager = this;

	if (nItem < 0 || nItem > GetItemCount())
		nItem = GetItemCount();

	m_arrItems.InsertAt(nItem, pItem);
	pItem->m_clrItem = xtpTabColorBlue + (GetPaintManager()->m_nItemColor++ % 8);

	if (m_bCloseItemButton != xtpTabNavigateButtonNone)
	{
		pItem->m_arrNavigateButtons.Add(new CNavigateButtonTabClose(pItem, m_bCloseItemButton));
	}

	OnItemsChanged();

	return pItem;
}
示例#7
0
void CXTPTabManager::MoveItem(CXTPTabManagerItem* pItem, int nIndex)
{
	ASSERT(pItem && pItem->GetTabManager() == this);

	if (!pItem || pItem->GetTabManager() != this)
		return;

	int nOldIndex = pItem->GetIndex();
	if (nOldIndex == nIndex)
		return;

	ASSERT(nOldIndex >= 0);
	ASSERT(nIndex >= 0 && nIndex < GetItemCount());

	if (nIndex < 0 || nIndex >= GetItemCount())
		nIndex = GetItemCount() - 1;

	m_arrItems.RemoveAt(nOldIndex);
	m_arrItems.InsertAt(nIndex, pItem);

	OnItemsChanged();
}
示例#8
0
void CXTPTabManager::ReOrder(HWND hWnd, CPoint pt, CXTPTabManagerItem* pItem)
{
	CXTPTabManagerItem* pSelected = m_pSelected;
	m_pSelected = pItem;

	if (GetPaintManager()->m_bHotTracking)
		m_pHighlighted = pItem;

	Reposition();

	CArray<CRect, CRect&> arrRects;

	for (int j = 0; j < GetItemCount(); j++)
	{
		CRect rc = GetItem(j)->GetRect();
		arrRects.Add(rc);
	}

	int nIndex = pItem->GetIndex();

	::SetCapture(hWnd);

	while (::GetCapture() == hWnd)
	{
		MSG msg;
		VERIFY(::GetMessage(&msg, NULL, 0, 0));

		if (::GetCapture() != hWnd)
		{
			DispatchMessage (&msg);
			break;
		}
		switch (msg.message)
		{
			case WM_MOUSEMOVE:
				{
					pt = CPoint((short signed)LOWORD(msg.lParam), (short signed)HIWORD(msg.lParam));

					for (int i = 0; i < arrRects.GetSize(); i++)
					{
						if (i != pItem->GetIndex() && arrRects[i].PtInRect(pt))
						{

							while (i != pItem->GetIndex())
							{
								int j = i < pItem->GetIndex() ? pItem->GetIndex() - 1 : pItem->GetIndex() + 1;

								CXTPTabManagerItem* p1 = pItem;
								CXTPTabManagerItem* p2 = m_arrItems[pItem->GetIndex()] = m_arrItems[j];
								m_arrItems[j] = p1;

								OnItemsChanged();

								OnSwitchItem(p1, p2);
							}
							break;
						}
					}
				}

				break;

			case WM_KEYDOWN:
				if (msg.wParam != VK_ESCAPE)
					break;
			case WM_CANCELMODE:
			case WM_LBUTTONUP:
			case WM_RBUTTONDOWN:
				goto ExitLoop;

			default:
				DispatchMessage (&msg);
				break;
		}
	}

ExitLoop:
	ReleaseCapture();
	PerformMouseMove(hWnd, pt);

	m_pSelected = pSelected;
	OnItemClick(pItem);

	if (nIndex != pItem->GetIndex())
	{
		OnItemOrderChanged(pItem, nIndex, pItem->GetIndex());
	}
}
	//*************************************************************************
	// Method:		Add
	// Description: Adds a list view sub item to the collection
	//
	// Parameters:
	//	item - the item to add
	//
	// Return Value: the index the item was added at
	//*************************************************************************
	int ContainerListViewSubItemCollection::Add(ContainerListViewSubItem *item)
	{
		int index = List->Add(item);
		OnItemsChanged(new ItemsChangedEventArgs(index));
		return index;
	}
示例#10
0
void ItemsControl::OnNotifyCollectionChanged(suic::ObjectPtr sender, suic::NotifyCollectionChangedArg& e)
{
    OnItemsChanged(e);
}