1*cdf0e10cSrcweir /************************************************************************* 2*cdf0e10cSrcweir * 3*cdf0e10cSrcweir * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4*cdf0e10cSrcweir * 5*cdf0e10cSrcweir * Copyright 2000, 2010 Oracle and/or its affiliates. 6*cdf0e10cSrcweir * 7*cdf0e10cSrcweir * OpenOffice.org - a multi-platform office productivity suite 8*cdf0e10cSrcweir * 9*cdf0e10cSrcweir * This file is part of OpenOffice.org. 10*cdf0e10cSrcweir * 11*cdf0e10cSrcweir * OpenOffice.org is free software: you can redistribute it and/or modify 12*cdf0e10cSrcweir * it under the terms of the GNU Lesser General Public License version 3 13*cdf0e10cSrcweir * only, as published by the Free Software Foundation. 14*cdf0e10cSrcweir * 15*cdf0e10cSrcweir * OpenOffice.org is distributed in the hope that it will be useful, 16*cdf0e10cSrcweir * but WITHOUT ANY WARRANTY; without even the implied warranty of 17*cdf0e10cSrcweir * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18*cdf0e10cSrcweir * GNU Lesser General Public License version 3 for more details 19*cdf0e10cSrcweir * (a copy is included in the LICENSE file that accompanied this code). 20*cdf0e10cSrcweir * 21*cdf0e10cSrcweir * You should have received a copy of the GNU Lesser General Public License 22*cdf0e10cSrcweir * version 3 along with OpenOffice.org. If not, see 23*cdf0e10cSrcweir * <http://www.openoffice.org/license.html> 24*cdf0e10cSrcweir * for a copy of the LGPLv3 License. 25*cdf0e10cSrcweir * 26*cdf0e10cSrcweir ************************************************************************/ 27*cdf0e10cSrcweir 28*cdf0e10cSrcweir #ifndef FPICKER_WIN32_VISTA_FILEPICKERIMPL_HXX 29*cdf0e10cSrcweir #define FPICKER_WIN32_VISTA_FILEPICKERIMPL_HXX 30*cdf0e10cSrcweir 31*cdf0e10cSrcweir //----------------------------------------------------------------------------- 32*cdf0e10cSrcweir // includes 33*cdf0e10cSrcweir //----------------------------------------------------------------------------- 34*cdf0e10cSrcweir 35*cdf0e10cSrcweir #if defined(_MSC_VER) && (_MSC_VER >= 1400) 36*cdf0e10cSrcweir #pragma warning( disable : 4917 ) 37*cdf0e10cSrcweir #endif 38*cdf0e10cSrcweir 39*cdf0e10cSrcweir #include "platform_vista.h" 40*cdf0e10cSrcweir #include "asyncrequests.hxx" 41*cdf0e10cSrcweir #include "comptr.hxx" 42*cdf0e10cSrcweir #include "vistatypes.h" 43*cdf0e10cSrcweir #include "FilterContainer.hxx" 44*cdf0e10cSrcweir #include "VistaFilePickerEventHandler.hxx" 45*cdf0e10cSrcweir #include "IVistaFilePickerInternalNotify.hxx" 46*cdf0e10cSrcweir #include "..\misc\resourceprovider.hxx" 47*cdf0e10cSrcweir 48*cdf0e10cSrcweir #include <com/sun/star/uno/Sequence.hxx> 49*cdf0e10cSrcweir 50*cdf0e10cSrcweir #include <comphelper/sequenceashashmap.hxx> 51*cdf0e10cSrcweir #include <cppuhelper/interfacecontainer.h> 52*cdf0e10cSrcweir #include <cppuhelper/basemutex.hxx> 53*cdf0e10cSrcweir #include <osl/thread.hxx> 54*cdf0e10cSrcweir #include <osl/conditn.hxx> 55*cdf0e10cSrcweir #include <rtl/ustring.hxx> 56*cdf0e10cSrcweir 57*cdf0e10cSrcweir #if defined _MSC_VER 58*cdf0e10cSrcweir #pragma warning(push, 1) 59*cdf0e10cSrcweir #endif 60*cdf0e10cSrcweir #include <shobjidl.h> 61*cdf0e10cSrcweir #if defined _MSC_VER 62*cdf0e10cSrcweir #pragma warning(pop) 63*cdf0e10cSrcweir #endif 64*cdf0e10cSrcweir 65*cdf0e10cSrcweir //----------------------------------------------------------------------------- 66*cdf0e10cSrcweir // namespace 67*cdf0e10cSrcweir //----------------------------------------------------------------------------- 68*cdf0e10cSrcweir 69*cdf0e10cSrcweir #ifdef css 70*cdf0e10cSrcweir #error "Clash on using CSS as namespace define." 71*cdf0e10cSrcweir #else 72*cdf0e10cSrcweir #define css ::com::sun::star 73*cdf0e10cSrcweir #endif 74*cdf0e10cSrcweir 75*cdf0e10cSrcweir namespace fpicker{ 76*cdf0e10cSrcweir namespace win32{ 77*cdf0e10cSrcweir namespace vista{ 78*cdf0e10cSrcweir 79*cdf0e10cSrcweir //----------------------------------------------------------------------------- 80*cdf0e10cSrcweir // types, const etcpp 81*cdf0e10cSrcweir //----------------------------------------------------------------------------- 82*cdf0e10cSrcweir 83*cdf0e10cSrcweir static const ::sal_Int32 FEATURE_AUTOEXTENSION = 1; 84*cdf0e10cSrcweir static const ::sal_Int32 FEATURE_PASSWORD = 2; 85*cdf0e10cSrcweir static const ::sal_Int32 FEATURE_FILTEROPTIONS = 4; 86*cdf0e10cSrcweir static const ::sal_Int32 FEATURE_SELECTION = 8; 87*cdf0e10cSrcweir static const ::sal_Int32 FEATURE_TEMPLATE = 16; 88*cdf0e10cSrcweir static const ::sal_Int32 FEATURE_LINK = 32; 89*cdf0e10cSrcweir static const ::sal_Int32 FEATURE_PREVIEW = 64; 90*cdf0e10cSrcweir static const ::sal_Int32 FEATURE_IMAGETEMPLATE = 128; 91*cdf0e10cSrcweir static const ::sal_Int32 FEATURE_PLAY = 256; 92*cdf0e10cSrcweir static const ::sal_Int32 FEATURE_READONLY = 512; 93*cdf0e10cSrcweir static const ::sal_Int32 FEATURE_VERSION = 1024; 94*cdf0e10cSrcweir 95*cdf0e10cSrcweir static const ::rtl::OUString PROP_PICKER_LISTENER = ::rtl::OUString::createFromAscii("picker_listener" ); // [XFilePickerListenert] 96*cdf0e10cSrcweir static const ::rtl::OUString PROP_DIALOG_SHOW_RESULT = ::rtl::OUString::createFromAscii("dialog_show_result" ); // [sal_Bool] true=OK, false=CANCEL 97*cdf0e10cSrcweir static const ::rtl::OUString PROP_SELECTED_FILES = ::rtl::OUString::createFromAscii("selected_files" ); // [seq< OUString >] contains all user selected files (can be empty!) 98*cdf0e10cSrcweir static const ::rtl::OUString PROP_MULTISELECTION_MODE = ::rtl::OUString::createFromAscii("multiselection_mode"); // [sal_Bool] true=ON, false=OFF 99*cdf0e10cSrcweir static const ::rtl::OUString PROP_TITLE = ::rtl::OUString::createFromAscii("title" ); // [OUString] 100*cdf0e10cSrcweir static const ::rtl::OUString PROP_FILENAME = ::rtl::OUString::createFromAscii("filename" ); // [OUString] 101*cdf0e10cSrcweir static const ::rtl::OUString PROP_DIRECTORY = ::rtl::OUString::createFromAscii("directory" ); // [OUString] 102*cdf0e10cSrcweir static const ::rtl::OUString PROP_FEATURES = ::rtl::OUString::createFromAscii("features" ); // [sal_Int32] 103*cdf0e10cSrcweir static const ::rtl::OUString PROP_TEMPLATE_DESCR = ::rtl::OUString::createFromAscii("templatedescription"); // [sal_Int32] 104*cdf0e10cSrcweir static const ::rtl::OUString PROP_FILTER_TITLE = ::rtl::OUString::createFromAscii("filter_title" ); // [OUString] 105*cdf0e10cSrcweir static const ::rtl::OUString PROP_FILTER_VALUE = ::rtl::OUString::createFromAscii("filter_value" ); // [OUString] 106*cdf0e10cSrcweir static const ::rtl::OUString PROP_FORCE = ::rtl::OUString::createFromAscii("force" ); // [sal_Bool] 107*cdf0e10cSrcweir static const ::rtl::OUString PROP_FILTER_GROUP = ::rtl::OUString::createFromAscii("filter_group" ); // [seq< css:beans::StringPair >] contains a group of filters 108*cdf0e10cSrcweir 109*cdf0e10cSrcweir static const ::rtl::OUString PROP_CONTROL_ID = ::rtl::OUString::createFromAscii("control_id" ); // [sal_Int16] 110*cdf0e10cSrcweir static const ::rtl::OUString PROP_CONTROL_ACTION = ::rtl::OUString::createFromAscii("control_action" ); // [sal_Int16] 111*cdf0e10cSrcweir static const ::rtl::OUString PROP_CONTROL_VALUE = ::rtl::OUString::createFromAscii("control_value" ); // [Any] 112*cdf0e10cSrcweir static const ::rtl::OUString PROP_CONTROL_LABEL = ::rtl::OUString::createFromAscii("control_label" ); // [OUString] 113*cdf0e10cSrcweir static const ::rtl::OUString PROP_CONTROL_ENABLE = ::rtl::OUString::createFromAscii("control_enable" ); // [sal_Bool] true=ON, false=OFF 114*cdf0e10cSrcweir static const ::rtl::OUString STRING_SEPARATOR = ::rtl::OUString::createFromAscii("------------------------------------------" ); 115*cdf0e10cSrcweir 116*cdf0e10cSrcweir //----------------------------------------------------------------------------- 117*cdf0e10cSrcweir /** native implementation of the file picker on Vista and upcoming windows versions. 118*cdf0e10cSrcweir * This dialog uses COM internaly. Further it marshall every request so it will 119*cdf0e10cSrcweir * be executed within it's own STA thread ! 120*cdf0e10cSrcweir */ 121*cdf0e10cSrcweir //----------------------------------------------------------------------------- 122*cdf0e10cSrcweir class VistaFilePickerImpl : private ::cppu::BaseMutex 123*cdf0e10cSrcweir , public RequestHandler 124*cdf0e10cSrcweir , public IVistaFilePickerInternalNotify 125*cdf0e10cSrcweir { 126*cdf0e10cSrcweir public: 127*cdf0e10cSrcweir 128*cdf0e10cSrcweir //--------------------------------------------------------------------- 129*cdf0e10cSrcweir /** used for marshalling requests. 130*cdf0e10cSrcweir * Will be used to map requests to the right implementations. 131*cdf0e10cSrcweir */ 132*cdf0e10cSrcweir enum ERequest 133*cdf0e10cSrcweir { 134*cdf0e10cSrcweir E_NO_REQUEST, 135*cdf0e10cSrcweir E_ADD_PICKER_LISTENER, 136*cdf0e10cSrcweir E_REMOVE_PICKER_LISTENER, 137*cdf0e10cSrcweir E_APPEND_FILTER, 138*cdf0e10cSrcweir E_SET_CURRENT_FILTER, 139*cdf0e10cSrcweir E_GET_CURRENT_FILTER, 140*cdf0e10cSrcweir E_CREATE_OPEN_DIALOG, 141*cdf0e10cSrcweir E_CREATE_SAVE_DIALOG, 142*cdf0e10cSrcweir E_SET_MULTISELECTION_MODE, 143*cdf0e10cSrcweir E_SET_TITLE, 144*cdf0e10cSrcweir E_SET_FILENAME, 145*cdf0e10cSrcweir E_GET_DIRECTORY, 146*cdf0e10cSrcweir E_SET_DIRECTORY, 147*cdf0e10cSrcweir E_SET_DEFAULT_NAME, 148*cdf0e10cSrcweir E_GET_SELECTED_FILES, 149*cdf0e10cSrcweir E_SHOW_DIALOG_MODAL, 150*cdf0e10cSrcweir E_SET_CONTROL_VALUE, 151*cdf0e10cSrcweir E_GET_CONTROL_VALUE, 152*cdf0e10cSrcweir E_SET_CONTROL_LABEL, 153*cdf0e10cSrcweir E_GET_CONTROL_LABEL, 154*cdf0e10cSrcweir E_ENABLE_CONTROL, 155*cdf0e10cSrcweir E_APPEND_FILTERGROUP 156*cdf0e10cSrcweir }; 157*cdf0e10cSrcweir 158*cdf0e10cSrcweir public: 159*cdf0e10cSrcweir 160*cdf0e10cSrcweir //--------------------------------------------------------------------- 161*cdf0e10cSrcweir // ctor/dtor - nothing special 162*cdf0e10cSrcweir //--------------------------------------------------------------------- 163*cdf0e10cSrcweir VistaFilePickerImpl(); 164*cdf0e10cSrcweir virtual ~VistaFilePickerImpl(); 165*cdf0e10cSrcweir 166*cdf0e10cSrcweir //--------------------------------------------------------------------- 167*cdf0e10cSrcweir // RequestHandler 168*cdf0e10cSrcweir //--------------------------------------------------------------------- 169*cdf0e10cSrcweir 170*cdf0e10cSrcweir virtual void before(); 171*cdf0e10cSrcweir virtual void doRequest(const RequestRef& rRequest); 172*cdf0e10cSrcweir virtual void after(); 173*cdf0e10cSrcweir 174*cdf0e10cSrcweir //--------------------------------------------------------------------- 175*cdf0e10cSrcweir // IVistaFilePickerInternalNotify 176*cdf0e10cSrcweir //--------------------------------------------------------------------- 177*cdf0e10cSrcweir virtual void onAutoExtensionChanged (bool bChecked); 178*cdf0e10cSrcweir virtual bool onFileTypeChanged( UINT nTypeIndex ); 179*cdf0e10cSrcweir 180*cdf0e10cSrcweir private: 181*cdf0e10cSrcweir 182*cdf0e10cSrcweir //--------------------------------------------------------------------- 183*cdf0e10cSrcweir /// implementation of request E_ADD_FILEPICKER_LISTENER 184*cdf0e10cSrcweir void impl_sta_addFilePickerListener(const RequestRef& rRequest); 185*cdf0e10cSrcweir 186*cdf0e10cSrcweir //--------------------------------------------------------------------- 187*cdf0e10cSrcweir /// implementation of request E_REMOVE_FILEPICKER_LISTENER 188*cdf0e10cSrcweir void impl_sta_removeFilePickerListener(const RequestRef& rRequest); 189*cdf0e10cSrcweir 190*cdf0e10cSrcweir //--------------------------------------------------------------------- 191*cdf0e10cSrcweir /// implementation of request E_APPEND_FILTER 192*cdf0e10cSrcweir void impl_sta_appendFilter(const RequestRef& rRequest); 193*cdf0e10cSrcweir 194*cdf0e10cSrcweir //--------------------------------------------------------------------- 195*cdf0e10cSrcweir /// implementation of request E_APPEND_FILTERGROUP 196*cdf0e10cSrcweir void impl_sta_appendFilterGroup(const RequestRef& rRequest); 197*cdf0e10cSrcweir 198*cdf0e10cSrcweir //--------------------------------------------------------------------- 199*cdf0e10cSrcweir /// implementation of request E_SET_CURRENT_FILTER 200*cdf0e10cSrcweir void impl_sta_setCurrentFilter(const RequestRef& rRequest); 201*cdf0e10cSrcweir 202*cdf0e10cSrcweir //--------------------------------------------------------------------- 203*cdf0e10cSrcweir /// implementation of request E_GET_CURRENT_FILTER 204*cdf0e10cSrcweir void impl_sta_getCurrentFilter(const RequestRef& rRequest); 205*cdf0e10cSrcweir 206*cdf0e10cSrcweir //--------------------------------------------------------------------- 207*cdf0e10cSrcweir /// implementation of request E_CREATE_OPEN_DIALOG 208*cdf0e10cSrcweir void impl_sta_CreateOpenDialog(const RequestRef& rRequest); 209*cdf0e10cSrcweir 210*cdf0e10cSrcweir //--------------------------------------------------------------------- 211*cdf0e10cSrcweir /// implementation of request E_CREATE_SAVE_DIALOG 212*cdf0e10cSrcweir void impl_sta_CreateSaveDialog(const RequestRef& rRequest); 213*cdf0e10cSrcweir 214*cdf0e10cSrcweir //--------------------------------------------------------------------- 215*cdf0e10cSrcweir /// implementation of request E_SET_MULTISELECTION_MODE 216*cdf0e10cSrcweir void impl_sta_SetMultiSelectionMode(const RequestRef& rRequest); 217*cdf0e10cSrcweir 218*cdf0e10cSrcweir //--------------------------------------------------------------------- 219*cdf0e10cSrcweir /// implementation of request E_SET_TITLE 220*cdf0e10cSrcweir void impl_sta_SetTitle(const RequestRef& rRequest); 221*cdf0e10cSrcweir 222*cdf0e10cSrcweir //--------------------------------------------------------------------- 223*cdf0e10cSrcweir /// implementation of request E_SET_FILENAME 224*cdf0e10cSrcweir void impl_sta_SetFileName(const RequestRef& rRequest); 225*cdf0e10cSrcweir 226*cdf0e10cSrcweir //--------------------------------------------------------------------- 227*cdf0e10cSrcweir /// implementation of request E_SET_DIRECTORY 228*cdf0e10cSrcweir void impl_sta_SetDirectory(const RequestRef& rRequest); 229*cdf0e10cSrcweir 230*cdf0e10cSrcweir //--------------------------------------------------------------------- 231*cdf0e10cSrcweir /// implementation of request E_GET_DIRECTORY 232*cdf0e10cSrcweir void impl_sta_GetDirectory(const RequestRef& rRequest); 233*cdf0e10cSrcweir 234*cdf0e10cSrcweir //--------------------------------------------------------------------- 235*cdf0e10cSrcweir /// implementation of request E_SET_DEFAULT_NAME 236*cdf0e10cSrcweir void impl_sta_SetDefaultName(const RequestRef& rRequest); 237*cdf0e10cSrcweir 238*cdf0e10cSrcweir //--------------------------------------------------------------------- 239*cdf0e10cSrcweir /// implementation of request E_GET_SELECTED_FILES 240*cdf0e10cSrcweir void impl_sta_getSelectedFiles(const RequestRef& rRequest); 241*cdf0e10cSrcweir 242*cdf0e10cSrcweir //--------------------------------------------------------------------- 243*cdf0e10cSrcweir /// implementation of request E_SHOW_DIALOG_MODAL 244*cdf0e10cSrcweir void impl_sta_ShowDialogModal(const RequestRef& rRequest); 245*cdf0e10cSrcweir 246*cdf0e10cSrcweir //--------------------------------------------------------------------- 247*cdf0e10cSrcweir /// implementation of request E_SET_CONTROL_VALUE 248*cdf0e10cSrcweir void impl_sta_SetControlValue(const RequestRef& rRequest); 249*cdf0e10cSrcweir 250*cdf0e10cSrcweir //--------------------------------------------------------------------- 251*cdf0e10cSrcweir /// implementation of request E_GET_CONTROL_VALUE 252*cdf0e10cSrcweir void impl_sta_GetControlValue(const RequestRef& rRequest); 253*cdf0e10cSrcweir 254*cdf0e10cSrcweir //--------------------------------------------------------------------- 255*cdf0e10cSrcweir /// implementation of request E_SET_CONTROL_LABEL 256*cdf0e10cSrcweir void impl_sta_SetControlLabel(const RequestRef& rRequest); 257*cdf0e10cSrcweir 258*cdf0e10cSrcweir //--------------------------------------------------------------------- 259*cdf0e10cSrcweir /// implementation of request E_GET_CONTROL_LABEL 260*cdf0e10cSrcweir void impl_sta_GetControlLabel(const RequestRef& rRequest); 261*cdf0e10cSrcweir 262*cdf0e10cSrcweir //--------------------------------------------------------------------- 263*cdf0e10cSrcweir /// implementation of request E_ENABLE_CONTROL 264*cdf0e10cSrcweir void impl_sta_EnableControl(const RequestRef& rRequest); 265*cdf0e10cSrcweir 266*cdf0e10cSrcweir //--------------------------------------------------------------------- 267*cdf0e10cSrcweir /** create all needed (optional!) UI controls adressed by the field nFeatures. 268*cdf0e10cSrcweir * The given number nFeatures is used as a flag field. Use const values FEATURE_XXX 269*cdf0e10cSrcweir * to adress it. 270*cdf0e10cSrcweir * 271*cdf0e10cSrcweir * Internal new controls will be added to the dialog. Every control can be accessed 272*cdf0e10cSrcweir * by it's own control id. Those control ID must be one of the const set 273*cdf0e10cSrcweir * css::ui::dialogs::ExtendedFilePickerElementIds. 274*cdf0e10cSrcweir * 275*cdf0e10cSrcweir * @see setControlValue() 276*cdf0e10cSrcweir * @see getControlValue() 277*cdf0e10cSrcweir * @see setControlLabel() 278*cdf0e10cSrcweir * @see getControlLabel() 279*cdf0e10cSrcweir * @see enableControl() 280*cdf0e10cSrcweir * 281*cdf0e10cSrcweir * @param nFeatures 282*cdf0e10cSrcweir * flag field(!) knows all features wich must be enabled. 283*cdf0e10cSrcweir */ 284*cdf0e10cSrcweir void impl_sta_enableFeatures(::sal_Int32 nFeatures, ::sal_Int32 nTemplate); 285*cdf0e10cSrcweir 286*cdf0e10cSrcweir //--------------------------------------------------------------------- 287*cdf0e10cSrcweir /** returns an interface, which can be used to customize the internaly used 288*cdf0e10cSrcweir * COM dialog. 289*cdf0e10cSrcweir * 290*cdf0e10cSrcweir * Because we use two member (open/save dialog) internaly, this method 291*cdf0e10cSrcweir * ask the current active one for it's customization interface. 292*cdf0e10cSrcweir * 293*cdf0e10cSrcweir * @return the customization interface for the current used dialog. 294*cdf0e10cSrcweir * Must not be null. 295*cdf0e10cSrcweir */ 296*cdf0e10cSrcweir TFileDialogCustomize impl_getCustomizeInterface(); 297*cdf0e10cSrcweir TFileDialog impl_getBaseDialogInterface(); 298*cdf0e10cSrcweir 299*cdf0e10cSrcweir //--------------------------------------------------------------------- 300*cdf0e10cSrcweir /// fill filter list of internal used dialog. 301*cdf0e10cSrcweir void impl_sta_setFiltersOnDialog(); 302*cdf0e10cSrcweir 303*cdf0e10cSrcweir void impl_SetDefaultExtension( const rtl::OUString& currentFilter ); 304*cdf0e10cSrcweir 305*cdf0e10cSrcweir private: 306*cdf0e10cSrcweir 307*cdf0e10cSrcweir //--------------------------------------------------------------------- 308*cdf0e10cSrcweir /// COM object representing a file open dialog 309*cdf0e10cSrcweir TFileOpenDialog m_iDialogOpen; 310*cdf0e10cSrcweir 311*cdf0e10cSrcweir //--------------------------------------------------------------------- 312*cdf0e10cSrcweir /// COM object representing a file save dialog 313*cdf0e10cSrcweir TFileSaveDialog m_iDialogSave; 314*cdf0e10cSrcweir 315*cdf0e10cSrcweir //--------------------------------------------------------------------- 316*cdf0e10cSrcweir /// knows the return state of the last COM call 317*cdf0e10cSrcweir HRESULT m_hLastResult; 318*cdf0e10cSrcweir 319*cdf0e10cSrcweir //--------------------------------------------------------------------- 320*cdf0e10cSrcweir /// @todo document me 321*cdf0e10cSrcweir CFilterContainer m_lFilters; 322*cdf0e10cSrcweir 323*cdf0e10cSrcweir //--------------------------------------------------------------------- 324*cdf0e10cSrcweir /** cache last selected list of files 325*cdf0e10cSrcweir * Because those list must be retrieved directly after closing the dialog 326*cdf0e10cSrcweir * (and only in case it was finished successfully) we cache it internaly. 327*cdf0e10cSrcweir * Because the outside provided UNO API decouple showing the dialog 328*cdf0e10cSrcweir * and asking for results .-) 329*cdf0e10cSrcweir */ 330*cdf0e10cSrcweir css::uno::Sequence< ::rtl::OUString > m_lLastFiles; 331*cdf0e10cSrcweir 332*cdf0e10cSrcweir //--------------------------------------------------------------------- 333*cdf0e10cSrcweir /** help us to handle dialog events and provide them to interested office 334*cdf0e10cSrcweir * listener. 335*cdf0e10cSrcweir */ 336*cdf0e10cSrcweir TFileDialogEvents m_iEventHandler; 337*cdf0e10cSrcweir 338*cdf0e10cSrcweir //--------------------------------------------------------------------- 339*cdf0e10cSrcweir /// @todo document me 340*cdf0e10cSrcweir ::sal_Bool m_bInExecute; 341*cdf0e10cSrcweir 342*cdf0e10cSrcweir ::sal_Bool m_bWasExecuted; 343*cdf0e10cSrcweir 344*cdf0e10cSrcweir // handle to parent window 345*cdf0e10cSrcweir HWND m_hParentWindow; 346*cdf0e10cSrcweir 347*cdf0e10cSrcweir // 348*cdf0e10cSrcweir ::rtl::OUString m_sDirectory; 349*cdf0e10cSrcweir 350*cdf0e10cSrcweir // 351*cdf0e10cSrcweir ::rtl::OUString m_sFilename; 352*cdf0e10cSrcweir 353*cdf0e10cSrcweir // Resource provider 354*cdf0e10cSrcweir CResourceProvider m_ResProvider; 355*cdf0e10cSrcweir }; 356*cdf0e10cSrcweir 357*cdf0e10cSrcweir } // namespace vista 358*cdf0e10cSrcweir } // namespace win32 359*cdf0e10cSrcweir } // namespace fpicker 360*cdf0e10cSrcweir 361*cdf0e10cSrcweir #undef css 362*cdf0e10cSrcweir 363*cdf0e10cSrcweir #endif // FPICKER_WIN32_VISTA_FILEPICKERIMPL_HXX 364