Drive_t ( const wchar_t * szPath, const wchar_t * szName, int iId, bool bShowSpace = true, bool bShowIcon = true ) : m_iId ( iId ) , m_bShowSpace ( bShowSpace ) { Reset (); ULARGE_INTEGER uFree, uTotal; wcscpy ( m_szPath, szPath ); wcscpy ( m_szName, szName + ( szName [0] == L'\\' ? 1 : 0 ) ); int iNameLen = wcslen ( m_szName ); if ( m_szName [iNameLen - 1] == L'\\' ) m_szName [iNameLen - 1] = L'\0'; if ( bShowIcon ) m_iIcon = GetSmallFileIcon ( m_szPath ); if ( bShowSpace ) { wchar_t szBuf1 [FILESIZE_BUFFER_SIZE]; wchar_t szBuf2 [FILESIZE_BUFFER_SIZE]; GetDiskFreeSpaceEx ( m_szPath, &uFree, &uTotal, NULL ); FileSizeToString ( uFree, szBuf1, true ); FileSizeToString ( uTotal, szBuf2, true ); wsprintf ( m_szSpace, Txt ( T_DLG_DRIVE_FREE ), szBuf1, szBuf2 ); } }
void InitCommonPage ( HWND hDlg ) { DlgTxt ( hDlg, IDC_LOCATION_STATIC, T_DLG_LOCATION ); DlgTxt ( hDlg, IDC_SIZE_STATIC, T_DLG_SIZE ); DlgTxt ( hDlg, IDC_CONTAINS_STATIC, T_DLG_CONTAINS ); InitIcon ( hDlg ); if ( m_tList.OneFile () ) { const WIN32_FIND_DATA & tData = m_tList.m_dFiles [0]->m_tData; SHFILEINFO tShFileInfo; SHGetFileInfo ( m_tList.m_sRootDir + tData.cFileName, tData.dwFileAttributes, &tShFileInfo, sizeof (SHFILEINFO), SHGFI_TYPENAME ); SetDlgItemText ( hDlg, IDC_TYPE, tShFileInfo.szTypeName ); SetDlgItemText ( hDlg, IDC_FILENAME_STATIC, tData.cFileName ); SetDlgItemText ( hDlg, IDC_LOCATION, m_tList.m_sRootDir + tData.cFileName ); } else { wchar_t szBuf [128]; wsprintf ( szBuf, Txt ( T_DLG_FILESFOLDERS ), m_nFiles, m_nFolders ); SetDlgItemText ( hDlg, IDC_TYPE, Txt ( T_DLG_MULTIFILES ) ); SetDlgItemText ( hDlg, IDC_FILENAME_STATIC, szBuf ); SetDlgItemText ( hDlg, IDC_LOCATION, m_tList.m_sRootDir ); } SendMessage ( GetDlgItem ( hDlg, IDC_FILENAME_STATIC ), WM_SETFONT, (WPARAM)g_tResources.m_hBoldSystemFont, TRUE ); const WIN32_FIND_DATA & tData = m_tList.m_dFiles [0]->m_tData; wchar_t szSize [FILESIZE_BUFFER_SIZE*2 + 64]; wchar_t szSize1 [FILESIZE_BUFFER_SIZE]; wchar_t szSize2 [FILESIZE_BUFFER_SIZE]; if ( tData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ) { wsprintf ( szSize, Txt ( T_DLG_SIZE_DETAILED ), FileSizeToString ( m_uSize, szSize1, true ), FileSizeToStringByte ( m_uSize, szSize2 ) ); SetDlgItemText ( hDlg, IDC_FILE_SIZE, szSize ); wsprintf ( szSize, Txt ( T_DLG_FILESFOLDERS ), m_nFiles, m_nFolders - 1 ); SetDlgItemText ( hDlg, IDC_CONTAINS, szSize ); } else { ShowWindow ( GetDlgItem ( hDlg, IDC_CONTAINS_STATIC ), SW_HIDE ); ShowWindow ( GetDlgItem ( hDlg, IDC_CONTAINS ), SW_HIDE ); wsprintf ( szSize, Txt ( T_DLG_SIZE_DETAILED ), FileSizeToString ( m_uSize, szSize1, true ), FileSizeToStringByte ( m_uSize, szSize2 ) ); SetDlgItemText ( hDlg, IDC_FILE_SIZE, szSize ); } }
void Init ( HWND hDlg ) { DlgTxt ( hDlg, IDC_USED_SPACE_STATIC, T_DLG_USED_SPACE ); DlgTxt ( hDlg, IDC_TOTAL_SPACE_STATIC, T_DLG_TOTAL_SPACE ); DlgTxt ( hDlg, IDC_FREE_SPACE_STATIC, T_DLG_FREE_SPACE ); DlgTxt ( hDlg, IDC_CONTAINS_STATIC, T_DLG_CONTAINS ); InitFullscreenDlg ( hDlg, IDM_OK, SHCMBF_HIDESIPBUTTON ); HWND hFilename = GetDlgItem ( hDlg, IDC_FILENAME ); SendMessage ( hFilename, WM_SETFONT, (WPARAM)g_tResources.m_hBoldSystemFont, TRUE ); const WIN32_FIND_DATA & tData = m_tList.m_dFiles [0]->m_tData; SHFILEINFO tShFileInfo; SHGetFileInfo ( m_tList.m_sRootDir + tData.cFileName, tData.dwFileAttributes, &tShFileInfo, sizeof (SHFILEINFO), SHGFI_TYPENAME ); SetDlgItemText ( hDlg, IDC_TYPE, tShFileInfo.szTypeName ); AlignFileName ( hFilename, tData.cFileName ); InitFileIcon ( hDlg, m_tList ); wchar_t szSize [FILESIZE_BUFFER_SIZE*2 + 128]; wchar_t szSize1 [FILESIZE_BUFFER_SIZE]; wchar_t szSize2 [FILESIZE_BUFFER_SIZE]; wsprintf ( szSize, Txt ( T_DLG_SIZE_DETAILED ), FileSizeToString ( m_uSize, szSize1, true ), FileSizeToStringByte ( m_uSize, szSize2 ) ); SetDlgItemText ( hDlg, IDC_FILE_SIZE, szSize ); wsprintf ( szSize, Txt ( T_DLG_FILESFOLDERS ), m_nFiles, m_nFolders - 1 ); SetDlgItemText ( hDlg, IDC_CONTAINS, szSize ); ULARGE_INTEGER uTotal; ULARGE_INTEGER uFree; uTotal.QuadPart = uFree.QuadPart = 0; GetDiskFreeSpaceEx ( m_tList.m_sRootDir + tData.cFileName, &uFree, &uTotal, NULL ); wsprintf ( szSize, Txt ( T_DLG_SIZE_DETAILED ), FileSizeToString ( uTotal, szSize1, true ), FileSizeToStringByte ( uTotal, szSize2 ) ); SetDlgItemText ( hDlg, IDC_TOTAL_SPACE, szSize ); wsprintf ( szSize, Txt ( T_DLG_SIZE_DETAILED ), FileSizeToString ( uFree, szSize1, true ), FileSizeToStringByte ( uFree, szSize2 ) ); SetDlgItemText ( hDlg, IDC_FREE_SPACE, szSize ); }
// Fill all information about a directory or a file. FOREACH(WString, file, files) { Ptr<list::ListViewItem> item=new list::ListViewItem; WString fullPath=path+L"\\"+file; // Get large icon. item->largeImage=GetFileIcon(fullPath, SHGFI_LARGEICON | SHGFI_ICON); // Get small icon. item->smallImage=GetFileIcon(fullPath, SHGFI_SMALLICON | SHGFI_ICON); // Get display name item->text=GetFileDisplayName(fullPath); // Get type name item->subItems.Add(GetFileTypeName(fullPath)); // Get last write time item->subItems.Add(FileTimeToString(GetFileLastWriteTime(fullPath))); // Get file size item->subItems.Add(FileSizeToString(GetFileSize(fullPath))); listView->GetItems().Add(item); }
static void SetCopyText ( HWND hText ) { Assert ( g_pList ); int nFiles = g_pList->m_dFiles.Length (); Assert ( nFiles ); if ( nFiles > 1 ) { wchar_t szSize [FILESIZE_BUFFER_SIZE]; FileSizeToString ( g_pList->m_uSize, szSize, true ); wsprintf ( g_szDest, Txt ( T_DLG_COPY_FILES ), nFiles, szSize ); } else { const FileInfo_t * pInfo = g_pList->m_dFiles [0]; Assert ( pInfo ); wcscpy ( g_szDest, pInfo->m_tData.cFileName ); } AlignFileName ( hText, g_szDest ); }