HTREEITEM CFileAndFolder::InsertFileItem(const CString& sFile, const CString& sPath, HTREEITEM hParent) { //Retreive the icon indexes for the specified file/folder int nIconIndex = GetIconIndex(sPath); int nSelIconIndex = GetSelIconIndex(sPath); if (nIconIndex == -1 || nSelIconIndex == -1) { TRACE(_T("Failed in call to SHGetFileInfo for %s, GetLastError:%d\n"), sPath, ::GetLastError()); return NULL; } //Add the actual item CString sTemp(sFile); TV_INSERTSTRUCT tvis; ZeroMemory(&tvis, sizeof(TV_INSERTSTRUCT)); tvis.hParent = hParent; tvis.hInsertAfter = TVI_LAST; tvis.item.mask = TVIF_CHILDREN | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_TEXT; tvis.item.pszText = sTemp.GetBuffer(sTemp.GetLength()); tvis.item.cchTextMax = sTemp.GetLength(); tvis.item.iImage = nIconIndex; tvis.item.iSelectedImage = nSelIconIndex; tvis.item.cChildren = HasGotSubEntries(sPath); HTREEITEM hItem = m_Tree.InsertItem(&tvis); sTemp.ReleaseBuffer(); return hItem; }
HTREEITEM FolderTree::InsertFileItem(HTREEITEM hParent, FolderTreeItemInfo *pItem, bool bShared, int nIcon, int nSelIcon, bool bCheckForChildren) { tstring sLabel; //Correct the label if need be if(IsDrive(pItem->m_sFQPath) && m_bShowDriveLabels) sLabel = GetDriveLabel(pItem->m_sFQPath); else sLabel = GetCorrectedLabel(pItem); //Add the actual item TV_INSERTSTRUCT tvis; memzero(&tvis, sizeof(TV_INSERTSTRUCT)); tvis.hParent = hParent; tvis.hInsertAfter = TVI_LAST; tvis.item.mask = TVIF_CHILDREN | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_TEXT | TVIF_PARAM; tvis.item.iImage = nIcon; tvis.item.iSelectedImage = nSelIcon; tvis.item.lParam = (LPARAM) pItem; tvis.item.pszText = (LPWSTR)sLabel.c_str(); if (bCheckForChildren) tvis.item.cChildren = HasGotSubEntries(pItem->m_sFQPath); else tvis.item.cChildren = true; if(bShared) { tvis.item.mask |= TVIF_STATE; tvis.item.stateMask |= TVIS_OVERLAYMASK; tvis.item.state |= INDEXTOOVERLAYMASK(1); //1 is the index for the shared overlay image } HTREEITEM hItem = InsertItem(&tvis); bool bChecked = false; if (!pItem->m_sFQPath.empty()) { string path = Text::fromT(pItem->m_sFQPath); if( path[ path.length() -1 ] != PATH_SEPARATOR ) path += PATH_SEPARATOR; bChecked = sp->shareFolder(path); SetChecked(hItem, bChecked); } if(!bChecked) SetHasSharedChildren(hItem); return hItem; }