LibreOffice Module fpicker (master) 1
Public Types | Public Member Functions | Public Attributes | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
fpicker::win32::vista::VistaFilePickerImpl Class Reference

native implementation of the file picker on Vista and upcoming windows versions. More...

#include <VistaFilePickerImpl.hxx>

Inheritance diagram for fpicker::win32::vista::VistaFilePickerImpl:
[legend]
Collaboration diagram for fpicker::win32::vista::VistaFilePickerImpl:
[legend]

Public Types

enum  ERequest {
  E_NO_REQUEST ,
  E_ADD_PICKER_LISTENER ,
  E_REMOVE_PICKER_LISTENER ,
  E_APPEND_FILTER ,
  E_SET_CURRENT_FILTER ,
  E_GET_CURRENT_FILTER ,
  E_CREATE_OPEN_DIALOG ,
  E_CREATE_SAVE_DIALOG ,
  E_CREATE_FOLDER_PICKER ,
  E_SET_MULTISELECTION_MODE ,
  E_SET_TITLE ,
  E_SET_FILENAME ,
  E_GET_DIRECTORY ,
  E_SET_DIRECTORY ,
  E_SET_DEFAULT_NAME ,
  E_GET_SELECTED_FILES ,
  E_SHOW_DIALOG_MODAL ,
  E_SET_CONTROL_VALUE ,
  E_GET_CONTROL_VALUE ,
  E_SET_CONTROL_LABEL ,
  E_GET_CONTROL_LABEL ,
  E_ENABLE_CONTROL ,
  E_APPEND_FILTERGROUP
}
 used for marshalling requests. More...
 

Public Member Functions

 VistaFilePickerImpl ()
 
virtual ~VistaFilePickerImpl ()
 
void doRequest (Request &rRequest)
 
virtual void onAutoExtensionChanged (bool bChecked) override
 
virtual bool onFileTypeChanged (UINT nTypeIndex) override
 
virtual void onDirectoryChanged () override
 
virtual void onAutoExtensionChanged (bool bChecked)=0
 
virtual bool onFileTypeChanged (UINT nTypeIndex)=0
 
virtual void onDirectoryChanged ()=0
 

Public Attributes

css::uno::Sequence< OUString > m_lItems
 

Private Member Functions

OUString GetDirectory ()
 
void impl_sta_addFilePickerListener (Request &rRequest)
 implementation of request E_ADD_FILEPICKER_LISTENER More...
 
void impl_sta_removeFilePickerListener (Request &rRequest)
 implementation of request E_REMOVE_FILEPICKER_LISTENER More...
 
void impl_sta_appendFilter (Request &rRequest)
 implementation of request E_APPEND_FILTER More...
 
void impl_sta_appendFilterGroup (Request &rRequest)
 implementation of request E_APPEND_FILTERGROUP More...
 
void impl_sta_setCurrentFilter (Request &rRequest)
 implementation of request E_SET_CURRENT_FILTER More...
 
void impl_sta_getCurrentFilter (Request &rRequest)
 implementation of request E_GET_CURRENT_FILTER More...
 
void impl_sta_CreateOpenDialog (Request &rRequest)
 implementation of request E_CREATE_OPEN_DIALOG More...
 
void impl_sta_CreateSaveDialog (Request &rRequest)
 implementation of request E_CREATE_SAVE_DIALOG More...
 
void impl_sta_CreateFolderPicker (Request &rRequest)
 implementation of request E_CREATE_FOLDER_PICKER More...
 
void impl_sta_SetMultiSelectionMode (Request &rRequest)
 implementation of request E_SET_MULTISELECTION_MODE More...
 
void impl_sta_SetTitle (Request &rRequest)
 implementation of request E_SET_TITLE More...
 
void impl_sta_SetFileName (Request &rRequest)
 implementation of request E_SET_FILENAME More...
 
void impl_sta_SetDirectory (Request &rRequest)
 implementation of request E_SET_DIRECTORY More...
 
void impl_sta_GetDirectory (Request &rRequest)
 implementation of request E_GET_DIRECTORY More...
 
void impl_sta_SetDefaultName (Request &rRequest)
 implementation of request E_SET_DEFAULT_NAME More...
 
void impl_sta_getSelectedFiles (Request &rRequest)
 implementation of request E_GET_SELECTED_FILES More...
 
void impl_sta_ShowDialogModal (Request &rRequest)
 implementation of request E_SHOW_DIALOG_MODAL More...
 
void impl_sta_SetControlValue (Request &rRequest)
 implementation of request E_SET_CONTROL_VALUE More...
 
void impl_sta_GetControlValue (Request &rRequest)
 implementation of request E_GET_CONTROL_VALUE More...
 
void impl_sta_SetControlLabel (Request &rRequest)
 implementation of request E_SET_CONTROL_LABEL More...
 
void impl_sta_EnableControl (Request &rRequest)
 implementation of request E_ENABLE_CONTROL More...
 
void impl_sta_enableFeatures (::sal_Int32 nFeatures, ::sal_Int32 nTemplate)
 create all needed (optional!) UI controls addressed by the field nFeatures. More...
 
TFileDialogCustomize impl_getCustomizeInterface ()
 returns an interface, which can be used to customize the internally used COM dialog. More...
 
TFileDialog impl_getBaseDialogInterface ()
 
void impl_sta_setFiltersOnDialog ()
 fill filter list of internal used dialog. More...
 
void impl_SetDefaultExtension (const OUString &currentFilter)
 
template<class TDialogImplClass >
void impl_sta_CreateDialog ()
 
void impl_sta_InitDialog (Request &rRequest, DWORD nOrFlags)
 

Static Private Member Functions

static void impl_sta_GetControlLabel (Request &rRequest)
 implementation of request E_GET_CONTROL_LABEL More...
 

Private Attributes

std::shared_ptr< TDialogImplBasem_pDialog
 object representing a file dialog More...
 
CFilterContainer m_lFilters
 
TFileDialogEvents m_iEventHandler
 help us to handle dialog events and provide them to interested office listener. More...
 
bool m_bInExecute
 
bool m_bWasExecuted
 
HWND m_hParentWindow
 
OUString m_sDirectory
 
OUString m_sFilename
 

Additional Inherited Members

- Protected Member Functions inherited from fpicker::win32::vista::IVistaFilePickerInternalNotify
 ~IVistaFilePickerInternalNotify ()
 

Detailed Description

native implementation of the file picker on Vista and upcoming windows versions.

This dialog uses COM internally. Further it marshall every request so it will be executed on the main thread which is an STA thread !

Definition at line 88 of file VistaFilePickerImpl.hxx.

Member Enumeration Documentation

◆ ERequest

used for marshalling requests.

Will be used to map requests to the right implementations.

Enumerator
E_NO_REQUEST 
E_ADD_PICKER_LISTENER 
E_REMOVE_PICKER_LISTENER 
E_APPEND_FILTER 
E_SET_CURRENT_FILTER 
E_GET_CURRENT_FILTER 
E_CREATE_OPEN_DIALOG 
E_CREATE_SAVE_DIALOG 
E_CREATE_FOLDER_PICKER 
E_SET_MULTISELECTION_MODE 
E_SET_TITLE 
E_SET_FILENAME 
E_GET_DIRECTORY 
E_SET_DIRECTORY 
E_SET_DEFAULT_NAME 
E_GET_SELECTED_FILES 
E_SHOW_DIALOG_MODAL 
E_SET_CONTROL_VALUE 
E_GET_CONTROL_VALUE 
E_SET_CONTROL_LABEL 
E_GET_CONTROL_LABEL 
E_ENABLE_CONTROL 
E_APPEND_FILTERGROUP 

Definition at line 97 of file VistaFilePickerImpl.hxx.

Constructor & Destructor Documentation

◆ VistaFilePickerImpl()

fpicker::win32::vista::VistaFilePickerImpl::VistaFilePickerImpl ( )

Definition at line 236 of file VistaFilePickerImpl.cxx.

◆ ~VistaFilePickerImpl()

fpicker::win32::vista::VistaFilePickerImpl::~VistaFilePickerImpl ( )
virtual

Definition at line 248 of file VistaFilePickerImpl.cxx.

Member Function Documentation

◆ doRequest()

void fpicker::win32::vista::VistaFilePickerImpl::doRequest ( Request rRequest)

Definition at line 253 of file VistaFilePickerImpl.cxx.

References E_ADD_PICKER_LISTENER, E_APPEND_FILTER, E_APPEND_FILTERGROUP, E_CREATE_FOLDER_PICKER, E_CREATE_OPEN_DIALOG, E_CREATE_SAVE_DIALOG, E_ENABLE_CONTROL, E_GET_CONTROL_LABEL, E_GET_CONTROL_VALUE, E_GET_CURRENT_FILTER, E_GET_DIRECTORY, E_GET_SELECTED_FILES, E_REMOVE_PICKER_LISTENER, E_SET_CONTROL_LABEL, E_SET_CONTROL_VALUE, E_SET_CURRENT_FILTER, E_SET_DEFAULT_NAME, E_SET_DIRECTORY, E_SET_FILENAME, E_SET_MULTISELECTION_MODE, E_SET_TITLE, E_SHOW_DIALOG_MODAL, fpicker::win32::vista::Request::getRequest(), impl_sta_addFilePickerListener(), impl_sta_appendFilter(), impl_sta_appendFilterGroup(), impl_sta_CreateFolderPicker(), impl_sta_CreateOpenDialog(), impl_sta_CreateSaveDialog(), impl_sta_EnableControl(), impl_sta_GetControlLabel(), impl_sta_GetControlValue(), impl_sta_getCurrentFilter(), impl_sta_GetDirectory(), impl_sta_getSelectedFiles(), impl_sta_removeFilePickerListener(), impl_sta_SetControlLabel(), impl_sta_SetControlValue(), impl_sta_setCurrentFilter(), impl_sta_SetDefaultName(), impl_sta_SetDirectory(), impl_sta_SetFileName(), impl_sta_SetMultiSelectionMode(), impl_sta_SetTitle(), and impl_sta_ShowDialogModal().

Referenced by fpicker::win32::vista::VistaFilePicker::addFilePickerListener(), fpicker::win32::vista::VistaFilePicker::appendFilter(), fpicker::win32::vista::VistaFilePicker::appendFilterGroup(), fpicker::win32::vista::VistaFilePicker::enableControl(), fpicker::win32::vista::VistaFilePicker::ensureInit(), fpicker::win32::vista::VistaFilePicker::execute(), fpicker::win32::vista::VistaFilePicker::getCurrentFilter(), fpicker::win32::vista::VistaFilePicker::getDisplayDirectory(), fpicker::win32::vista::VistaFilePicker::getLabel(), fpicker::win32::vista::VistaFilePicker::getSelectedFiles(), fpicker::win32::vista::VistaFilePicker::getValue(), fpicker::win32::vista::VistaFilePicker::initialize(), fpicker::win32::vista::VistaFilePicker::removeFilePickerListener(), fpicker::win32::vista::VistaFilePicker::setCurrentFilter(), fpicker::win32::vista::VistaFilePicker::setDefaultName(), fpicker::win32::vista::VistaFilePicker::setDisplayDirectory(), fpicker::win32::vista::VistaFilePicker::setLabel(), fpicker::win32::vista::VistaFilePicker::setMultiSelectionMode(), fpicker::win32::vista::VistaFilePicker::setTitle(), and fpicker::win32::vista::VistaFilePicker::setValue().

◆ GetDirectory()

OUString fpicker::win32::vista::VistaFilePickerImpl::GetDirectory ( )
private

◆ impl_getBaseDialogInterface()

TFileDialog fpicker::win32::vista::VistaFilePickerImpl::impl_getBaseDialogInterface ( )
private

◆ impl_getCustomizeInterface()

TFileDialogCustomize fpicker::win32::vista::VistaFilePickerImpl::impl_getCustomizeInterface ( )
private

returns an interface, which can be used to customize the internally used COM dialog.

Because we use two member (open/save dialog) internally, this method ask the current active one for its customization interface.

Returns
the customization interface for the current used dialog. Must not be null.

Definition at line 985 of file VistaFilePickerImpl.cxx.

References m_pDialog.

Referenced by impl_sta_EnableControl(), impl_sta_enableFeatures(), impl_sta_GetControlValue(), impl_sta_SetControlLabel(), impl_sta_SetControlValue(), impl_sta_SetDefaultName(), impl_sta_setFiltersOnDialog(), and impl_sta_ShowDialogModal().

◆ impl_SetDefaultExtension()

void fpicker::win32::vista::VistaFilePickerImpl::impl_SetDefaultExtension ( const OUString &  currentFilter)
private

◆ impl_sta_addFilePickerListener()

void fpicker::win32::vista::VistaFilePickerImpl::impl_sta_addFilePickerListener ( Request rRequest)
private

◆ impl_sta_appendFilter()

void fpicker::win32::vista::VistaFilePickerImpl::impl_sta_appendFilter ( Request rRequest)
private

◆ impl_sta_appendFilterGroup()

void fpicker::win32::vista::VistaFilePickerImpl::impl_sta_appendFilterGroup ( Request rRequest)
private

◆ impl_sta_CreateDialog()

template<class TDialogImplClass >
void fpicker::win32::vista::VistaFilePickerImpl::impl_sta_CreateDialog
private

Definition at line 447 of file VistaFilePickerImpl.cxx.

References m_pDialog.

◆ impl_sta_CreateFolderPicker()

void fpicker::win32::vista::VistaFilePickerImpl::impl_sta_CreateFolderPicker ( Request rRequest)
private

implementation of request E_CREATE_FOLDER_PICKER

Definition at line 512 of file VistaFilePickerImpl.cxx.

References impl_sta_InitDialog().

Referenced by doRequest().

◆ impl_sta_CreateOpenDialog()

void fpicker::win32::vista::VistaFilePickerImpl::impl_sta_CreateOpenDialog ( Request rRequest)
private

implementation of request E_CREATE_OPEN_DIALOG

Definition at line 498 of file VistaFilePickerImpl.cxx.

References impl_sta_InitDialog().

Referenced by doRequest().

◆ impl_sta_CreateSaveDialog()

void fpicker::win32::vista::VistaFilePickerImpl::impl_sta_CreateSaveDialog ( Request rRequest)
private

implementation of request E_CREATE_SAVE_DIALOG

Definition at line 505 of file VistaFilePickerImpl.cxx.

References impl_sta_InitDialog().

Referenced by doRequest().

◆ impl_sta_EnableControl()

void fpicker::win32::vista::VistaFilePickerImpl::impl_sta_EnableControl ( Request rRequest)
private

◆ impl_sta_enableFeatures()

void fpicker::win32::vista::VistaFilePickerImpl::impl_sta_enableFeatures ( ::sal_Int32  nFeatures,
::sal_Int32  nTemplate 
)
private

create all needed (optional!) UI controls addressed by the field nFeatures.

The given number nFeatures is used as a flag field. Use const values FEATURE_XXX to address it.

Internal new controls will be added to the dialog. Every control can be accessed by its own control id. Those control ID must be one of the const set css::ui::dialogs::ExtendedFilePickerElementIds.

See also
setControlValue()
getControlValue()
setControlLabel()
getControlLabel()
enableControl()
Parameters
nFeaturesflag field(!) knows all features which must be enabled.

Definition at line 534 of file VistaFilePickerImpl.cxx.

References fpicker::win32::vista::CLIENTID_FILEDIALOG_OPTIONS, fpicker::win32::vista::CLIENTID_FILEDIALOG_SIMPLE, fpicker::win32::vista::CLIENTID_FILEOPEN_LINK, fpicker::win32::vista::CLIENTID_FILEOPEN_LINK_ANCHOR, fpicker::win32::vista::CLIENTID_FILEOPEN_LINK_TEMPLATE, fpicker::win32::vista::CLIENTID_FILEOPEN_PLAY, fpicker::win32::vista::CLIENTID_FILESAVE_PASSWORD, fpicker::win32::vista::CLIENTID_FILESAVE_SELECTION, fpicker::win32::vista::CLIENTID_FILESAVE_TEMPLATE, fpicker::win32::vista::FEATURE_AUTOEXTENSION, fpicker::win32::vista::FEATURE_FILTEROPTIONS, fpicker::win32::vista::FEATURE_GPGPASSWORD, fpicker::win32::vista::FEATURE_IMAGEANCHOR, fpicker::win32::vista::FEATURE_IMAGETEMPLATE, fpicker::win32::vista::FEATURE_LINK, fpicker::win32::vista::FEATURE_PASSWORD, fpicker::win32::vista::FEATURE_PLAY, fpicker::win32::vista::FEATURE_READONLY, fpicker::win32::vista::FEATURE_SELECTION, fpicker::win32::vista::FEATURE_TEMPLATE, fpicker::win32::vista::FEATURE_VERSION, FpsResId(), fpicker::win32::vista::GROUP_CHECKBOXES, fpicker::win32::vista::GROUP_IMAGEANCHOR, fpicker::win32::vista::GROUP_IMAGETEMPLATE, fpicker::win32::vista::GROUP_TEMPLATE, fpicker::win32::vista::GROUP_VERSION, impl_getBaseDialogInterface(), impl_getCustomizeInterface(), nControlId, and fpicker::win32::vista::setLabelToControl().

Referenced by impl_sta_InitDialog().

◆ impl_sta_GetControlLabel()

void fpicker::win32::vista::VistaFilePickerImpl::impl_sta_GetControlLabel ( Request rRequest)
staticprivate

implementation of request E_GET_CONTROL_LABEL

Definition at line 1145 of file VistaFilePickerImpl.cxx.

Referenced by doRequest().

◆ impl_sta_GetControlValue()

void fpicker::win32::vista::VistaFilePickerImpl::impl_sta_GetControlValue ( Request rRequest)
private

◆ impl_sta_getCurrentFilter()

void fpicker::win32::vista::VistaFilePickerImpl::impl_sta_getCurrentFilter ( Request rRequest)
private

◆ impl_sta_GetDirectory()

void fpicker::win32::vista::VistaFilePickerImpl::impl_sta_GetDirectory ( Request rRequest)
private

implementation of request E_GET_DIRECTORY

Definition at line 766 of file VistaFilePickerImpl.cxx.

References GetDirectory(), m_sDirectory, fpicker::win32::vista::PROP_DIRECTORY(), and fpicker::win32::vista::Request::setArgument().

Referenced by doRequest().

◆ impl_sta_getSelectedFiles()

void fpicker::win32::vista::VistaFilePickerImpl::impl_sta_getSelectedFiles ( Request rRequest)
private

◆ impl_sta_InitDialog()

void fpicker::win32::vista::VistaFilePickerImpl::impl_sta_InitDialog ( Request rRequest,
DWORD  nOrFlags 
)
private

◆ impl_sta_removeFilePickerListener()

void fpicker::win32::vista::VistaFilePickerImpl::impl_sta_removeFilePickerListener ( Request rRequest)
private

◆ impl_sta_SetControlLabel()

void fpicker::win32::vista::VistaFilePickerImpl::impl_sta_SetControlLabel ( Request rRequest)
private

◆ impl_sta_SetControlValue()

void fpicker::win32::vista::VistaFilePickerImpl::impl_sta_SetControlValue ( Request rRequest)
private

◆ impl_sta_setCurrentFilter()

void fpicker::win32::vista::VistaFilePickerImpl::impl_sta_setCurrentFilter ( Request rRequest)
private

◆ impl_sta_SetDefaultName()

void fpicker::win32::vista::VistaFilePickerImpl::impl_sta_SetDefaultName ( Request rRequest)
private

◆ impl_sta_SetDirectory()

void fpicker::win32::vista::VistaFilePickerImpl::impl_sta_SetDirectory ( Request rRequest)
private

◆ impl_sta_SetFileName()

void fpicker::win32::vista::VistaFilePickerImpl::impl_sta_SetFileName ( Request rRequest)
private

implementation of request E_SET_FILENAME

Definition at line 717 of file VistaFilePickerImpl.cxx.

References fpicker::win32::vista::Request::getArgumentOrDefault(), impl_getBaseDialogInterface(), and fpicker::win32::vista::PROP_FILENAME().

Referenced by doRequest().

◆ impl_sta_setFiltersOnDialog()

void fpicker::win32::vista::VistaFilePickerImpl::impl_sta_setFiltersOnDialog ( )
private

◆ impl_sta_SetMultiSelectionMode()

void fpicker::win32::vista::VistaFilePickerImpl::impl_sta_SetMultiSelectionMode ( Request rRequest)
private

implementation of request E_SET_MULTISELECTION_MODE

Definition at line 685 of file VistaFilePickerImpl.cxx.

References fpicker::win32::vista::Request::getArgumentOrDefault(), impl_getBaseDialogInterface(), and fpicker::win32::vista::PROP_MULTISELECTION_MODE().

Referenced by doRequest().

◆ impl_sta_SetTitle()

void fpicker::win32::vista::VistaFilePickerImpl::impl_sta_SetTitle ( Request rRequest)
private

implementation of request E_SET_TITLE

Definition at line 705 of file VistaFilePickerImpl.cxx.

References fpicker::win32::vista::Request::getArgumentOrDefault(), impl_getBaseDialogInterface(), and fpicker::win32::vista::PROP_TITLE().

Referenced by doRequest().

◆ impl_sta_ShowDialogModal()

void fpicker::win32::vista::VistaFilePickerImpl::impl_sta_ShowDialogModal ( Request rRequest)
private

◆ onAutoExtensionChanged()

void fpicker::win32::vista::VistaFilePickerImpl::onAutoExtensionChanged ( bool  bChecked)
overridevirtual

◆ onDirectoryChanged()

void fpicker::win32::vista::VistaFilePickerImpl::onDirectoryChanged ( )
overridevirtual

◆ onFileTypeChanged()

bool fpicker::win32::vista::VistaFilePickerImpl::onFileTypeChanged ( UINT  nTypeIndex)
overridevirtual

Member Data Documentation

◆ m_bInExecute

bool fpicker::win32::vista::VistaFilePickerImpl::m_bInExecute
private

◆ m_bWasExecuted

bool fpicker::win32::vista::VistaFilePickerImpl::m_bWasExecuted
private

Definition at line 294 of file VistaFilePickerImpl.hxx.

Referenced by impl_sta_GetControlValue(), and impl_sta_ShowDialogModal().

◆ m_hParentWindow

HWND fpicker::win32::vista::VistaFilePickerImpl::m_hParentWindow
private

Definition at line 297 of file VistaFilePickerImpl.hxx.

Referenced by impl_sta_InitDialog(), and impl_sta_ShowDialogModal().

◆ m_iEventHandler

TFileDialogEvents fpicker::win32::vista::VistaFilePickerImpl::m_iEventHandler
private

help us to handle dialog events and provide them to interested office listener.

Definition at line 288 of file VistaFilePickerImpl.hxx.

Referenced by impl_sta_addFilePickerListener(), impl_sta_InitDialog(), impl_sta_removeFilePickerListener(), and impl_sta_ShowDialogModal().

◆ m_lFilters

CFilterContainer fpicker::win32::vista::VistaFilePickerImpl::m_lFilters
private

◆ m_lItems

css::uno::Sequence< OUString > fpicker::win32::vista::VistaFilePickerImpl::m_lItems

Definition at line 93 of file VistaFilePickerImpl.hxx.

Referenced by impl_sta_GetControlValue(), and impl_sta_SetControlValue().

◆ m_pDialog

std::shared_ptr<TDialogImplBase> fpicker::win32::vista::VistaFilePickerImpl::m_pDialog
private

object representing a file dialog

Definition at line 278 of file VistaFilePickerImpl.hxx.

Referenced by impl_getBaseDialogInterface(), impl_getCustomizeInterface(), impl_sta_CreateDialog(), and impl_sta_getSelectedFiles().

◆ m_sDirectory

OUString fpicker::win32::vista::VistaFilePickerImpl::m_sDirectory
private

◆ m_sFilename

OUString fpicker::win32::vista::VistaFilePickerImpl::m_sFilename
private

Definition at line 303 of file VistaFilePickerImpl.hxx.

Referenced by impl_sta_SetDefaultName(), and impl_sta_ShowDialogModal().


The documentation for this class was generated from the following files: