143 lines
7.3 KiB
C
143 lines
7.3 KiB
C
#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
|