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; }
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); } }
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; }
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(); }
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; }
void ItemsControl::OnNotifyCollectionChanged(suic::ObjectPtr sender, suic::NotifyCollectionChangedArg& e) { OnItemsChanged(e); }