|
|
#ifndef _MULPRSHT_H
#define _MULPRSHT_H
#include "idlcomm.h" // for HIDA
#include "ids.h"
// we recycle this string from the printer stringtable in shell32.rc
#define IDS_UNKNOWNERROR IDS_PRTPROP_UNKNOWNERROR
#define IDT_SIZE 1
// file attribute state
typedef struct { DWORD fReadOnly; // each dword is one of BST_CHECKED, BST_UNCHECKED, or BST_INDETERMINATE
DWORD fHidden; DWORD fArchive; DWORD fIndex; DWORD fCompress; DWORD fEncrypt; DWORD fRecordingEnabled; } ATTRIBUTESTATE;
typedef struct _FILEPROPSHEETPAGE FILEPROPSHEETPAGE;
// FOLDERCONTENTSINFO includes members which are referenced across UI Thread and Size Thread.
typedef struct { LONG _cRef; BOOL fIsSizeThreadAlive; HWND hDlg; BOOL bContinue; // tell thread to stop or mark as done
ULONGLONG cbSize; // total size of all files in folder
ULONGLONG cbActualSize; // total size on disk, taking into account compression and cluster slop
DWORD dwClusterSize; // the size of a cluster
int cFiles; // # files in folder
int cFolders; // # folders in folder
TCHAR szPath[MAX_PATH]; WIN32_FIND_DATA fd; // for thread stack savings
HIDA hida; BOOL fMultipleFiles; // are there multiple files?
BOOL fIsCompressionAvailable; // is comrpession supported on the volume?
ULARGE_INTEGER ulTotalNumberOfBytes; // total # of bytes to apply attributes to (for progress dlg)
} FOLDERCONTENTSINFO;
typedef struct _FILEPROPSHEETPAGE { PROPSHEETPAGE psp; BOOL fMountedDrive; // Are we dealing with a mounted drive or not?
BOOL fIsLink; // Is this a .lnk file?
//the following fields are used by both the structures
HWND hDlg; TCHAR szPath[MAX_PATH]; // full path to the file (single file case)
LPITEMIDLIST pidl; // pidl for the item == NULL if not initialized
TCHAR szLinkTarget[MAX_PATH]; // full path of link target (if the file is a .lnk)
ATTRIBUTESTATE asInitial; // initial file attribute state
ATTRIBUTESTATE asCurrent; // current file attribute state
BOOL fIsEncryptionAvailable; // is encryption supported on the volume?
BOOL fIsIndexAvailable; // is conten indexing supported in the filesystem?
//This is used only by the single file dialog proc
LPVOID pAssocStore; // pointer to the Association Store, we use it to query type info
IProgressDialog* pProgressDlg; // pointer to the IProgressDialog object
ULARGE_INTEGER ulNumberOfBytesDone; // # of bytes that we have already applied attribs to (for progress dlg)
FOLDERCONTENTSINFO* pfci; // the background size thread fills this structure with size info
WIN32_FIND_DATA fd; // info about the file we are currently applying attribs to
HWND hwndTip; // window handle for location tooltip
HDPA hdpaBadFiles; // this dpa holds the names of the files that we dont want to apply attribs to
TCHAR szInitialName[MAX_PATH]; // the original "short" name we display in the edit box
BOOL fWMInitFinshed; // are we finished processing the WM_INITDIALOG message (needed for rename)
BOOL fRecursive; // should we recurse into subdirs when applying attributes?
BOOL fIsDirectory; // is this file a directory (in multiple files case: are any of the files a directory?)
BOOL fIsExe; // if this is an .exe, we ask if they want to support user logon
BOOL fRename; // has the user renamed the file/folder?
BOOL fIgnoreAllErrors; // has the user hit "ignore all" to the error message?
BOOL fShowExtension; // are we showing the real extension for this file in the name editbox?
BOOL fFolderShortcut;
int cItemsDone; // Number of items we have already applied attribs to (for progress dlg)
BOOL fDisableRename; // Should the name edit box be disabled?
//The following is used only by the mounted drv dialog proc
int iDrive; // Drive id of the mounted drive if there is one
TCHAR szFileSys[48]; // file system name.
BOOL fCanRename; // is the name a valid name for renaming?
// Folder shortcut specific stuff.
LPITEMIDLIST pidlTarget; BOOL fValidateEdit; } FILEPROPSHEETPAGE;
typedef struct { PROPSHEETPAGE psp;
HWND hDlg;
//szDrive will contain the mountpoint (e.g. c:\ or c:\folder\folder2\)
TCHAR szDrive[MAX_PATH]; int iDrive;
_int64 qwTot; _int64 qwFree;
DWORD dwPieShadowHgt;
ULARGE_INTEGER ulTotalNumberOfBytes; // total # of bytes to apply attributes to (for progress dlg)
ATTRIBUTESTATE asInitial; // initial attribute state
ATTRIBUTESTATE asCurrent; // current attribute state
BOOL fIsCompressionAvailable; // is file-based compression available on this volume (NTFS?)
BOOL fIsIndexAvailable; // is content indexing available on this volume?
BOOL fRecursive; // should we recurse into subdirs when applying attributes?
BOOL fMountedDrive; // is the proppage invoked from mounted point proppage
} DRIVEPROPSHEETPAGE;
typedef struct { LPCTSTR pszPath; DWORD dwLastError; } ATTRIBUTEERROR;
STDAPI_(BOOL) ApplyFileAttributes(LPCTSTR pszPath, FILEPROPSHEETPAGE* pfpsp, HWND hWndParent, BOOL* pbSomethingChanged); STDAPI_(BOOL) ApplySingleFileAttributes(FILEPROPSHEETPAGE* pfpsp); STDAPI_(BOOL_PTR) CALLBACK RecursivePromptDlgProc(HWND hDlgRecurse, UINT uMessage, WPARAM wParam, LPARAM lParam); STDAPI_(void) SetDateTimeText(HWND hdlg, int id, const FILETIME *pftUTC); STDAPI_(void)SetDateTimeTextEx(HWND hdlg, int id, const FILETIME *pftUTC, DWORD dwFlags); STDAPI_(DWORD) GetVolumeFlags(LPCTSTR pszPath, OUT OPTIONAL LPTSTR pszFileSys, int cchFileSys); STDAPI_(void) SetInitialFileAttribs(FILEPROPSHEETPAGE* pfpsp, DWORD dwFlags, DWORD dwMask); BOOL_PTR CALLBACK AdvancedFileAttribsDlgProc(HWND hDlgAttribs, UINT uMessage, WPARAM wParam, LPARAM lParam); STDAPI_(void) SetDlgItemTextWithToolTip(HWND hDlg, UINT id, LPCTSTR pszText, HWND *phwndTT);
STDAPI_(FOLDERCONTENTSINFO*) Create_FolderContentsInfo(); STDAPI_(LONG) AddRef_FolderContentsInfo(FOLDERCONTENTSINFO *pfci); STDAPI_(LONG) Release_FolderContentsInfo(FOLDERCONTENTSINFO *pfci); STDAPI InitCommonPrsht(FILEPROPSHEETPAGE *pfpsp);
STDAPI FolderSize(LPCTSTR pszDir, FOLDERCONTENTSINFO * pfci);
#endif // _MULPRSHT_H
|