diff options
Diffstat (limited to 'src/plugins/platforms/windows/qwindowsdialoghelpers.cpp')
-rw-r--r-- | src/plugins/platforms/windows/qwindowsdialoghelpers.cpp | 292 |
1 files changed, 1 insertions, 291 deletions
diff --git a/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp b/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp index a237013c87..72be0d9f35 100644 --- a/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp +++ b/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp @@ -70,300 +70,10 @@ #include <algorithm> -#include "qtwindows_additional.h" +#include <QtCore/qt_windows.h> // #define USE_NATIVE_COLOR_DIALOG /* Testing purposes only */ -#ifdef Q_CC_MINGW /* Add missing declarations for MinGW */ - -#ifndef __IShellLibrary_FWD_DEFINED__ - -/* Constants obtained by running the below stream operator for - * CLSID, IID on the constants in the Windows SDK libraries. */ - -static const IID IID_IFileOpenDialog = {0xd57c7288, 0xd4ad, 0x4768, {0xbe, 0x02, 0x9d, 0x96, 0x95, 0x32, 0xd9, 0x60}}; -static const IID IID_IFileSaveDialog = {0x84bccd23, 0x5fde, 0x4cdb,{0xae, 0xa4, 0xaf, 0x64, 0xb8, 0x3d, 0x78, 0xab}}; -#ifdef __MINGW64_VERSION_MAJOR -static const IID q_IID_IShellItem = {0x43826d1e, 0xe718, 0x42ee, {0xbc, 0x55, 0xa1, 0xe2, 0x61, 0xc3, 0x7b, 0xfe}}; -#define IID_IShellItem q_IID_IShellItem -#else -static const IID IID_IShellItem = {0x43826d1e, 0xe718, 0x42ee, {0xbc, 0x55, 0xa1, 0xe2, 0x61, 0xc3, 0x7b, 0xfe}}; -static const IID IID_IShellItemArray = {0xb63ea76d, 0x1f85, 0x456f, {0xa1, 0x9c, 0x48, 0x15, 0x9e, 0xfa, 0x85, 0x8b}}; -# define LFF_FORCEFILESYSTEM 1 -#endif -static const IID IID_IFileDialogEvents = {0x973510db, 0x7d7f, 0x452b,{0x89, 0x75, 0x74, 0xa8, 0x58, 0x28, 0xd3, 0x54}}; -static const CLSID CLSID_FileOpenDialog = {0xdc1c5a9c, 0xe88a, 0x4dde, {0xa5, 0xa1, 0x60, 0xf8, 0x2a, 0x20, 0xae, 0xf7}}; -static const CLSID CLSID_FileSaveDialog = {0xc0b4e2f3, 0xba21, 0x4773,{0x8d, 0xba, 0x33, 0x5e, 0xc9, 0x46, 0xeb, 0x8b}}; - -typedef struct _COMDLG_FILTERSPEC -{ - LPCWSTR pszName; - LPCWSTR pszSpec; -} COMDLG_FILTERSPEC; - - -#define FOS_OVERWRITEPROMPT 0x2 -#define FOS_STRICTFILETYPES 0x4 -#define FOS_NOCHANGEDIR 0x8 -#define FOS_PICKFOLDERS 0x20 -#define FOS_FORCEFILESYSTEM 0x40 -#define FOS_ALLNONSTORAGEITEMS 0x80 -#define FOS_NOVALIDATE 0x100 -#define FOS_ALLOWMULTISELECT 0x200 -#define FOS_PATHMUSTEXIST 0x800 -#define FOS_FILEMUSTEXIST 0x1000 -#define FOS_CREATEPROMPT 0x2000 -#define FOS_SHAREAWARE 0x4000 -#define FOS_NOREADONLYRETURN 0x8000 -#define FOS_NOTESTFILECREATE 0x10000 -#define FOS_HIDEMRUPLACES 0x20000 -#define FOS_HIDEPINNEDPLACES 0x40000 -#define FOS_NODEREFERENCELINKS 0x100000 -#define FOS_DONTADDTORECENT 0x2000000 -#define FOS_FORCESHOWHIDDEN 0x10000000 -#define FOS_DEFAULTNOMINIMODE 0x20000000 -#define FOS_FORCEPREVIEWPANEON 0x40000000 - -#if __MINGW64_VERSION_MAJOR < 2 -typedef int GETPROPERTYSTOREFLAGS; -#define GPS_DEFAULT 0x00000000 -#define GPS_HANDLERPROPERTIESONLY 0x00000001 -#define GPS_READWRITE 0x00000002 -#define GPS_TEMPORARY 0x00000004 -#define GPS_FASTPROPERTIESONLY 0x00000008 -#define GPS_OPENSLOWITEM 0x00000010 -#define GPS_DELAYCREATION 0x00000020 -#define GPS_BESTEFFORT 0x00000040 -#define GPS_MASK_VALID 0x0000007F -#endif - -typedef int (QT_WIN_CALLBACK* BFFCALLBACK)(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData); -// message from browser -#define BFFM_INITIALIZED 1 -#define BFFM_SELCHANGED 2 -#define BFFM_ENABLEOK (WM_USER + 101) -// Browsing for directory. -#define BIF_NONEWFOLDERBUTTON 0x0200 -#define BIF_NOTRANSLATETARGETS 0x0400 -#define BIF_BROWSEFORCOMPUTER 0x1000 -#define BIF_BROWSEFORPRINTER 0x2000 -#define BIF_BROWSEINCLUDEFILES 0x4000 -#define BIF_SHAREABLE 0x8000 - -//the enums -typedef enum { - SIATTRIBFLAGS_AND = 0x1, - SIATTRIBFLAGS_OR = 0x2, - SIATTRIBFLAGS_APPCOMPAT = 0x3, - SIATTRIBFLAGS_MASK = 0x3 -} SIATTRIBFLAGS; -#ifndef __MINGW64_VERSION_MAJOR -typedef enum { - SIGDN_NORMALDISPLAY = 0x00000000, - SIGDN_PARENTRELATIVEPARSING = 0x80018001, - SIGDN_PARENTRELATIVEFORADDRESSBAR = 0x8001c001, - SIGDN_DESKTOPABSOLUTEPARSING = 0x80028000, - SIGDN_PARENTRELATIVEEDITING = 0x80031001, - SIGDN_DESKTOPABSOLUTEEDITING = 0x8004c000, - SIGDN_FILESYSPATH = 0x80058000, - SIGDN_URL = 0x80068000 -} SIGDN; -#endif -typedef enum { - FDAP_BOTTOM = 0x00000000, - FDAP_TOP = 0x00000001 -} FDAP; -typedef enum { - FDESVR_DEFAULT = 0x00000000, - FDESVR_ACCEPT = 0x00000001, - FDESVR_REFUSE = 0x00000002 -} FDE_SHAREVIOLATION_RESPONSE; -typedef FDE_SHAREVIOLATION_RESPONSE FDE_OVERWRITE_RESPONSE; - -//the structs -typedef struct { - LPCWSTR pszName; - LPCWSTR pszSpec; -} qt_COMDLG_FILTERSPEC; -typedef struct { - GUID fmtid; - DWORD pid; -} qt_PROPERTYKEY; - -typedef struct { - USHORT cb; - BYTE abID[1]; -} qt_SHITEMID, *qt_LPSHITEMID; -typedef struct { - qt_SHITEMID mkid; -} qt_ITEMIDLIST, *qt_LPITEMIDLIST; -typedef const qt_ITEMIDLIST *qt_LPCITEMIDLIST; -typedef struct { - HWND hwndOwner; - qt_LPCITEMIDLIST pidlRoot; - LPWSTR pszDisplayName; - LPCWSTR lpszTitle; - UINT ulFlags; - BFFCALLBACK lpfn; - LPARAM lParam; - int iImage; -} qt_BROWSEINFO; - -#endif // __IShellLibrary_FWD_DEFINED__ - -#ifndef __IFileDialogEvents_FWD_DEFINED__ -DECLARE_INTERFACE(IFileDialogEvents); -#endif - -#ifndef __IShellItem_INTERFACE_DEFINED__ -DECLARE_INTERFACE_(IShellItem, IUnknown) -{ - STDMETHOD(BindToHandler)(THIS_ IBindCtx *pbc, REFGUID bhid, REFIID riid, void **ppv) PURE; - STDMETHOD(GetParent)(THIS_ IShellItem **ppsi) PURE; - STDMETHOD(GetDisplayName)(THIS_ SIGDN sigdnName, LPWSTR *ppszName) PURE; - STDMETHOD(GetAttributes)(THIS_ ULONG sfgaoMask, ULONG *psfgaoAttribs) PURE; - STDMETHOD(Compare)(THIS_ IShellItem *psi, DWORD hint, int *piOrder) PURE; -}; -#endif - -#ifndef __IShellItemFilter_INTERFACE_DEFINED__ -DECLARE_INTERFACE_(IShellItemFilter, IUnknown) -{ - STDMETHOD(IncludeItem)(THIS_ IShellItem *psi) PURE; - STDMETHOD(GetEnumFlagsForItem)(THIS_ IShellItem *psi, DWORD *pgrfFlags) PURE; -}; -#endif - -#ifndef __IEnumShellItems_INTERFACE_DEFINED__ -DECLARE_INTERFACE_(IEnumShellItems, IUnknown) -{ - STDMETHOD(Next)(THIS_ ULONG celt, IShellItem **rgelt, ULONG *pceltFetched) PURE; - STDMETHOD(Skip)(THIS_ ULONG celt) PURE; - STDMETHOD(Reset)(THIS_) PURE; - STDMETHOD(Clone)(THIS_ IEnumShellItems **ppenum) PURE; -}; -#endif - -#ifndef __IShellItemArray_INTERFACE_DEFINED__ -DECLARE_INTERFACE_(IShellItemArray, IUnknown) -{ - STDMETHOD(BindToHandler)(THIS_ IBindCtx *pbc, REFGUID rbhid, REFIID riid, void **ppvOut) PURE; - STDMETHOD(GetPropertyStore)(THIS_ GETPROPERTYSTOREFLAGS flags, REFIID riid, void **ppv) PURE; - STDMETHOD(GetPropertyDescriptionList)(THIS_ const qt_PROPERTYKEY *keyType, REFIID riid, void **ppv) PURE; - STDMETHOD(GetAttributes)(THIS_ SIATTRIBFLAGS dwAttribFlags, ULONG sfgaoMask, ULONG *psfgaoAttribs) PURE; - STDMETHOD(GetCount)(THIS_ DWORD *pdwNumItems) PURE; - STDMETHOD(GetItemAt)(THIS_ DWORD dwIndex, IShellItem **ppsi) PURE; - STDMETHOD(EnumItems)(THIS_ IEnumShellItems **ppenumShellItems) PURE; -}; -#endif - -#ifndef __IShellLibrary_INTERFACE_DEFINED__ - -enum LIBRARYOPTIONFLAGS {}; -enum DEFAULTSAVEFOLDERTYPE { DSFT_DETECT = 1 }; -enum LIBRARYSAVEFLAGS {}; - -DECLARE_INTERFACE_(IShellLibrary, IUnknown) -{ - STDMETHOD(LoadLibraryFromItem)(THIS_ IShellItem *psiLibrary, DWORD grfMode) PURE; - STDMETHOD(LoadLibraryFromKnownFolder)(THIS_ const GUID &kfidLibrary, DWORD grfMode) PURE; - STDMETHOD(AddFolder)(THIS_ IShellItem *psiLocation) PURE; - STDMETHOD(RemoveFolder)(THIS_ IShellItem *psiLocation) PURE; - STDMETHOD(GetFolders)(THIS_ int lff, REFIID riid, void **ppv) PURE; - STDMETHOD(ResolveFolder)(THIS_ IShellItem *psiFolderToResolve, DWORD dwTimeout, REFIID riid, void **ppv) PURE; - STDMETHOD(GetDefaultSaveFolder)(THIS_ DEFAULTSAVEFOLDERTYPE dsft, REFIID riid, void **ppv) PURE; - STDMETHOD(SetDefaultSaveFolder)(THIS_ DEFAULTSAVEFOLDERTYPE dsft, IShellItem *psi) PURE; - STDMETHOD(GetOptions)(THIS_ LIBRARYOPTIONFLAGS *plofOptions) PURE; - STDMETHOD(SetOptions)(THIS_ LIBRARYOPTIONFLAGS lofMask, LIBRARYOPTIONFLAGS lofOptions) PURE; - STDMETHOD(GetFolderType)(THIS_ GUID *pftid) PURE; - STDMETHOD(SetFolderType)(THIS_ const GUID &ftid) PURE; - STDMETHOD(GetIcon)(THIS_ LPWSTR *ppszIcon) PURE; - STDMETHOD(SetIcon)(THIS_ LPCWSTR pszIcon) PURE; - STDMETHOD(Commit)(THIS_) PURE; - STDMETHOD(Save)(THIS_ IShellItem *psiFolderToSaveIn, LPCWSTR pszLibraryName, LIBRARYSAVEFLAGS lsf, IShellItem **ppsiSavedTo) PURE; - STDMETHOD(SaveInKnownFolder)(THIS_ const GUID &kfidToSaveIn, LPCWSTR pszLibraryName, LIBRARYSAVEFLAGS lsf,IShellItem **ppsiSavedTo) PURE; -}; -#endif - -#ifndef __IModalWindow_INTERFACE_DEFINED__ -DECLARE_INTERFACE_(IModalWindow, IUnknown) -{ - STDMETHOD(Show)(THIS_ HWND hwndParent) PURE; -}; -#endif - -#ifndef __IFileDialog_INTERFACE_DEFINED__ -DECLARE_INTERFACE_(IFileDialog, IModalWindow) -{ - STDMETHOD(SetFileTypes)(THIS_ UINT cFileTypes, const COMDLG_FILTERSPEC *rgFilterSpec) PURE; - STDMETHOD(SetFileTypeIndex)(THIS_ UINT iFileType) PURE; - STDMETHOD(GetFileTypeIndex)(THIS_ UINT *piFileType) PURE; - STDMETHOD(Advise)(THIS_ IFileDialogEvents *pfde, DWORD *pdwCookie) PURE; - STDMETHOD(Unadvise)(THIS_ DWORD dwCookie) PURE; - STDMETHOD(SetOptions)(THIS_ DWORD fos) PURE; - STDMETHOD(GetOptions)(THIS_ DWORD *pfos) PURE; - STDMETHOD(SetDefaultFolder)(THIS_ IShellItem *psi) PURE; - STDMETHOD(SetFolder)(THIS_ IShellItem *psi) PURE; - STDMETHOD(GetFolder)(THIS_ IShellItem **ppsi) PURE; - STDMETHOD(GetCurrentSelection)(THIS_ IShellItem **ppsi) PURE; - STDMETHOD(SetFileName)(THIS_ LPCWSTR pszName) PURE; - STDMETHOD(GetFileName)(THIS_ LPWSTR *pszName) PURE; - STDMETHOD(SetTitle)(THIS_ LPCWSTR pszTitle) PURE; - STDMETHOD(SetOkButtonLabel)(THIS_ LPCWSTR pszText) PURE; - STDMETHOD(SetFileNameLabel)(THIS_ LPCWSTR pszLabel) PURE; - STDMETHOD(GetResult)(THIS_ IShellItem **ppsi) PURE; - STDMETHOD(AddPlace)(THIS_ IShellItem *psi, FDAP fdap) PURE; - STDMETHOD(SetDefaultExtension)(THIS_ LPCWSTR pszDefaultExtension) PURE; - STDMETHOD(Close)(THIS_ HRESULT hr) PURE; - STDMETHOD(SetClientGuid)(THIS_ REFGUID guid) PURE; - STDMETHOD(ClearClientData)(THIS_) PURE; - STDMETHOD(SetFilter)(THIS_ IShellItemFilter *pFilter) PURE; -}; -#endif - -#ifndef __IFileDialogEvents_INTERFACE_DEFINED__ -DECLARE_INTERFACE_(IFileDialogEvents, IUnknown) -{ - STDMETHOD(OnFileOk)(THIS_ IFileDialog *pfd) PURE; - STDMETHOD(OnFolderChanging)(THIS_ IFileDialog *pfd, IShellItem *psiFolder) PURE; - STDMETHOD(OnFolderChange)(THIS_ IFileDialog *pfd) PURE; - STDMETHOD(OnSelectionChange)(THIS_ IFileDialog *pfd) PURE; - STDMETHOD(OnShareViolation)(THIS_ IFileDialog *pfd, IShellItem *psi, FDE_SHAREVIOLATION_RESPONSE *pResponse) PURE; - STDMETHOD(OnTypeChange)(THIS_ IFileDialog *pfd) PURE; - STDMETHOD(OnOverwrite)(THIS_ IFileDialog *pfd, IShellItem *psi, FDE_OVERWRITE_RESPONSE *pResponse) PURE; -}; -#endif - -#ifndef __IFileOpenDialog_INTERFACE_DEFINED__ -DECLARE_INTERFACE_(IFileOpenDialog, IFileDialog) -{ - STDMETHOD(GetResults)(THIS_ IShellItemArray **ppenum) PURE; - STDMETHOD(GetSelectedItems)(THIS_ IShellItemArray **ppsai) PURE; -}; -#endif - -#ifndef __IPropertyStore_FWD_DEFINED__ -typedef IUnknown IPropertyStore; -#endif - -#ifndef __IFileOperationProgressSink_FWD_DEFINED__ -typedef IUnknown IFileOperationProgressSink; -#endif - -#ifndef __IFileSaveDialog_INTERFACE_DEFINED__ -DECLARE_INTERFACE_(IFileSaveDialog, IFileDialog) -{ -public: - STDMETHOD(SetSaveAsItem)(THIS_ IShellItem *psi) PURE; - STDMETHOD(SetProperties)(THIS_ IPropertyStore *pStore) PURE; - STDMETHOD(SetCollectedProperties)(THIS_ IPropertyStore *pStore) PURE; - STDMETHOD(GetProperties)(THIS_ IPropertyStore **ppStore) PURE; - STDMETHOD(ApplyProperties)(THIS_ IShellItem *psi, IPropertyStore *pStore, HWND hwnd, IFileOperationProgressSink *pSink) PURE; -}; -#endif - -#endif // Q_CC_MINGW - QT_BEGIN_NAMESPACE #ifndef QT_NO_DEBUG_STREAM |