コード例 #1
0
void HierarchyTreeWidget::GetChildItems(const QTreeWidgetItem* parent, TREEITEMS &items)
{
	for(int i = 0; i < parent->childCount(); i++)
	{
		QTreeWidgetItem* item = parent->child(i);

		QVariant data = item->data(ITEM_ID);
		items[data.toInt()] = item;
		
		if (item->childCount())
			GetChildItems(item, items);
	}
}
コード例 #2
0
HierarchyTreeWidget::TREEITEMS HierarchyTreeWidget::GetAllItems()
{
	TREEITEMS items;
	
	for (int i = 0; i < ui->treeWidget->topLevelItemCount(); i++)
	{
		QTreeWidgetItem* item = ui->treeWidget->topLevelItem(i);
		if (!item)
			continue;
		
		QVariant data = item->data(ITEM_ID);
		items[data.toInt()] = item;
		
		if (item->childCount())
			GetChildItems(item, items);
	}
	
	return items;
}
コード例 #3
0
LRESULT CMyTreeView::OnNotifyReflect(WPARAM, LPARAM lParam)
{
    LPNMHDR  lpnmh = (LPNMHDR) lParam;

    switch (lpnmh->code) {
    case NM_RCLICK: {
        CPoint ptScreen;
        ::GetCursorPos(&ptScreen);
        DoContextMenu(ptScreen);
    }
    break;

    case TVN_GETDISPINFO: {
        LPNMTVDISPINFO lpdi = (LPNMTVDISPINFO)lParam;
        TreeItemData* pItem = (TreeItemData*)lpdi->item.lParam;

        //do we need to supply the text?
        if (lpdi->item.mask & TVIF_TEXT) {
            SHFILEINFO sfi = {0};

            //get the display name of the item
            if (pItem->GetFullCpidl().SHGetFileInfo(0, sfi, SHGFI_PIDL | SHGFI_DISPLAYNAME))
                ::lstrcpyn(lpdi->item.pszText, sfi.szDisplayName, lpdi->item.cchTextMax - 1);
        }

        //do we need to supply the unselected image?
        if (lpdi->item.mask & TVIF_IMAGE) {
            SHFILEINFO sfi = {0};

            //get the unselected image for this item
            if (pItem->GetFullCpidl().SHGetFileInfo(0, sfi, SHGFI_PIDL | SHGFI_SYSICONINDEX | SHGFI_SMALLICON | SHGFI_LINKOVERLAY))
                lpdi->item.iImage = sfi.iIcon;
        }

        //do we need to supply the selected image?
        if (lpdi->item.mask & TVIF_SELECTEDIMAGE) {
            SHFILEINFO sfi = {0};

            //get the selected image for this item
            if (pItem->GetFullCpidl().SHGetFileInfo(0, sfi, SHGFI_PIDL | SHGFI_SYSICONINDEX | SHGFI_SMALLICON | SHGFI_OPENICON))
                lpdi->item.iSelectedImage = sfi.iIcon;
        }
    }
    break;

    case TVN_ITEMEXPANDING: {
        LPNMTREEVIEW pnmtv = (LPNMTREEVIEW)lParam;

        switch (pnmtv->action) {
        case TVE_EXPAND: {
            UINT ExpandedOnce = pnmtv->itemNew.state & TVIS_EXPANDEDONCE;

            if (!ExpandedOnce)
                GetChildItems(pnmtv->itemNew.hItem);
        }
        break;
        }
    }
    break;

    case TVN_SELCHANGED: {
        LPNMTREEVIEW pnmtv = (LPNMTREEVIEW)lParam;
        TreeItemData* pItem = (TreeItemData*)pnmtv->itemNew.lParam;
        CMyListView* LeftView = GetExplorerApp().GetMainFrame().GetListView();
        LeftView->DisplayFolder(pItem->GetParentFolder(), pItem->GetFullCpidl(), pItem->GetRelCpidl());
    }
    break;
    } // switch(lpnmh->code)

    return 0;
}