27#include <com/sun/star/awt/XWindow.hpp>
28#include <com/sun/star/lang/DisposedException.hpp>
29#include <com/sun/star/ui/dialogs/TemplateDescription.hpp>
30#include <com/sun/star/ui/dialogs/XFilePickerNotifier.hpp>
31#include <com/sun/star/ui/dialogs/XFilePickerListener.hpp>
32#include <com/sun/star/ui/dialogs/ExecutableDialogResults.hpp>
37#include <osl/file.hxx>
38#include <officecfg/Office/Common.hxx>
48 , m_bInitialized (false )
49 , m_bFolderPicker (bFolderPicker )
102 const OUString& sFilter)
133 const css::uno::Sequence< css::beans::StringPair >& rFilters )
182 if (lFiles.getLength() > 1)
213 initialize( { css::uno::Any(css::ui::dialogs::TemplateDescription::FILEOPEN_SIMPLE) });
231 ::sal_Int16 nResult = css::ui::dialogs::ExecutableDialogResults::CANCEL;
233 nResult = css::ui::dialogs::ExecutableDialogResults::OK;
240 ::sal_Int16 nControlAction,
241 const css::uno::Any& aValue )
253 ::sal_Int16 nControlAction)
276 const OUString& sLabel )
299 return css::uno::Sequence< sal_Int16 >();
318 const css::uno::Any& )
334 if (lArguments.getLength() < 1)
335 throw css::lang::IllegalArgumentException(
336 "XInitialization::initialize() called without arguments.",
337 static_cast< css::ui::dialogs::XFilePicker2*
>(
this ),
340 sal_Int32 nTemplate = -1;
341 lArguments[0] >>= nTemplate;
343 bool bFileOpenDialog =
true;
344 ::sal_Int32 nFeatures = 0;
348 case css::ui::dialogs::TemplateDescription::FILEOPEN_SIMPLE :
350 bFileOpenDialog =
true;
354 case css::ui::dialogs::TemplateDescription::FILESAVE_SIMPLE :
356 bFileOpenDialog =
false;
360 case css::ui::dialogs::TemplateDescription::FILESAVE_AUTOEXTENSION_PASSWORD :
362 bFileOpenDialog =
false;
369 case css::ui::dialogs::TemplateDescription::FILESAVE_AUTOEXTENSION_PASSWORD_FILTEROPTIONS :
371 bFileOpenDialog =
false;
379 case css::ui::dialogs::TemplateDescription::FILESAVE_AUTOEXTENSION_SELECTION :
381 bFileOpenDialog =
false;
387 case css::ui::dialogs::TemplateDescription::FILESAVE_AUTOEXTENSION_TEMPLATE :
389 bFileOpenDialog =
false;
395 case css::ui::dialogs::TemplateDescription::FILEOPEN_LINK_PREVIEW_IMAGE_TEMPLATE :
397 bFileOpenDialog =
true;
404 case css::ui::dialogs::TemplateDescription::FILEOPEN_LINK_PREVIEW_IMAGE_ANCHOR :
406 bFileOpenDialog =
true;
413 case css::ui::dialogs::TemplateDescription::FILEOPEN_PLAY :
415 bFileOpenDialog =
true;
420 case css::ui::dialogs::TemplateDescription::FILEOPEN_LINK_PLAY :
422 bFileOpenDialog =
true;
428 case css::ui::dialogs::TemplateDescription::FILEOPEN_READONLY_VERSION :
430 bFileOpenDialog =
true;
436 case css::ui::dialogs::TemplateDescription::FILEOPEN_LINK_PREVIEW :
438 bFileOpenDialog =
true;
444 case css::ui::dialogs::TemplateDescription::FILESAVE_AUTOEXTENSION :
446 bFileOpenDialog =
false;
451 case css::ui::dialogs::TemplateDescription::FILEOPEN_PREVIEW :
453 bFileOpenDialog =
true;
458 css::uno::Reference<css::awt::XWindow> xParentWindow;
459 if(lArguments.getLength() > 1)
461 lArguments[1] >>= xParentWindow;
475 if(xParentWindow.is())
490 assert(aFileSeq.getLength() <= 1);
491 return aFileSeq.getLength() ? aFileSeq[0] : OUString();
504 return "com.sun.star.ui.dialogs.Win32FolderPicker";
506 return "com.sun.star.ui.dialogs.Win32FilePicker";
517 "com.sun.star.ui.dialogs.FilePicker",
518 "com.sun.star.ui.dialogs.SystemFilePicker",
519 "com.sun.star.ui.dialogs.SystemFolderPicker" };
526extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
528 css::uno::XComponentContext* , css::uno::Sequence<css::uno::Any>
const&)
530 return cppu::acquire(new ::fpicker::win32::vista::VistaFilePicker(
false));
533extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
535 css::uno::XComponentContext* , css::uno::Sequence<css::uno::Any>
const&)
537 return cppu::acquire(new ::fpicker::win32::vista::VistaFilePicker(
true));
SAL_DLLPUBLIC_EXPORT css::uno::XInterface * fpicker_win32_FolderPicker_get_implementation(css::uno::XComponentContext *, css::uno::Sequence< css::uno::Any > const &)
SAL_DLLPUBLIC_EXPORT css::uno::XInterface * fpicker_win32_FilePicker_get_implementation(css::uno::XComponentContext *, css::uno::Sequence< css::uno::Any > const &)
constexpr OUStringLiteral sServiceName
void setArgument(const OUString &sName, const TArgumentType &aValue)
void setRequest(::sal_Int32 nRequest)
css::uno::Any getValue(OUString const &key) const
TArgumentType getArgumentOrDefault(const OUString &sName, const TArgumentType &aDefault)
@ E_SET_MULTISELECTION_MODE
@ E_REMOVE_PICKER_LISTENER
void doRequest(Request &rRequest)
virtual void SAL_CALL setValue(sal_Int16 nControlId, sal_Int16 nControlAction, const css::uno::Any &aValue) override
css::uno::Sequence< OUString > m_lLastFiles
virtual void SAL_CALL setMultiSelectionMode(sal_Bool bMode) override
virtual void SAL_CALL removeFilePickerListener(const css::uno::Reference< css::ui::dialogs::XFilePickerListener > &xListener) override
virtual css::uno::Sequence< OUString > SAL_CALL getFiles() override
virtual void SAL_CALL appendFilter(const OUString &sTitle, const OUString &sFilter) override
virtual OUString SAL_CALL getDirectory() override
virtual sal_Int16 SAL_CALL execute() override
virtual sal_Bool SAL_CALL getShowState() override
virtual void SAL_CALL cancel() override
VistaFilePicker(bool bFolderPicker)
virtual sal_Int32 SAL_CALL getAvailableWidth() override
const bool m_bFolderPicker
virtual sal_Bool SAL_CALL setShowState(sal_Bool bShowState) override
virtual sal_Int32 SAL_CALL getAvailableHeight() override
virtual void disposing(const css::lang::EventObject &aEvent)
virtual void SAL_CALL setDefaultName(const OUString &sName) override
virtual void SAL_CALL setDisplayDirectory(const OUString &sDirectory) override
VistaFilePickerImpl m_rDialog
virtual void SAL_CALL initialize(const css::uno::Sequence< css::uno::Any > &lArguments) override
virtual OUString SAL_CALL getImplementationName() override
virtual void SAL_CALL setDescription(const OUString &aDescription) override
virtual void SAL_CALL enableControl(sal_Int16 nControlId, sal_Bool bEnable) override
virtual void SAL_CALL setImage(sal_Int16 nImageFormat, const css::uno::Any &aImage) override
virtual OUString SAL_CALL getCurrentFilter() override
virtual void SAL_CALL setTitle(const OUString &sTitle) override
virtual void SAL_CALL setCurrentFilter(const OUString &sTitle) override
virtual void SAL_CALL addFilePickerListener(const css::uno::Reference< css::ui::dialogs::XFilePickerListener > &xListener) override
virtual ~VistaFilePicker() override
virtual sal_Int32 SAL_CALL getTargetColorDepth() override
virtual void SAL_CALL setLabel(sal_Int16 nControlId, const OUString &sLabel) override
virtual void SAL_CALL appendFilterGroup(const OUString &sGroupTitle, const css::uno::Sequence< css::beans::StringPair > &lFilters) override
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
virtual OUString SAL_CALL getLabel(sal_Int16 nControlId) override
virtual css::uno::Sequence< sal_Int16 > SAL_CALL getSupportedImageFormats() override
virtual OUString SAL_CALL getDisplayDirectory() override
virtual css::uno::Sequence< OUString > SAL_CALL getSelectedFiles() override
virtual sal_Bool SAL_CALL supportsService(const OUString &ServiceName) override
virtual css::uno::Any SAL_CALL getValue(sal_Int16 nControlId, sal_Int16 nControlAction) override
bool CPPUHELPER_DLLPUBLIC supportsService(css::lang::XServiceInfo *implementation, rtl::OUString const &name)
::cppu::WeakComponentImplHelper< css::ui::dialogs::XFilePicker3, css::ui::dialogs::XFilePickerControlAccess, css::ui::dialogs::XFilePreview, css::ui::dialogs::XFolderPicker2, css::lang::XInitialization, css::lang::XServiceInfo > TVistaFilePickerBase
const OUStringLiteral PROP_PICKER_LISTENER
const ::sal_Int32 FEATURE_READONLY
constexpr OUStringLiteral PROP_FILTER_GROUP(u"filter-group")
const ::sal_Int32 FEATURE_PREVIEW
constexpr OUStringLiteral PROP_CONTROL_VALUE(u"control_value")
constexpr OUStringLiteral PROP_FILTER_TITLE(u"filter_title")
const ::sal_Int32 FEATURE_VERSION
constexpr OUStringLiteral PROP_FILTER_VALUE(u"filter_value")
const ::sal_Int32 FEATURE_SELECTION
const ::sal_Int32 FEATURE_TEMPLATE
constexpr OUStringLiteral PROP_FEATURES(u"features")
constexpr OUStringLiteral PROP_TITLE(u"title")
const ::sal_Int32 FEATURE_FILTEROPTIONS
constexpr OUStringLiteral PROP_CONTROL_LABEL(u"control_label")
const ::sal_Int32 FEATURE_PLAY
constexpr OUStringLiteral PROP_PARENT_WINDOW(u"ParentWindow")
const ::sal_Int32 FEATURE_LINK
constexpr OUStringLiteral PROP_SELECTED_FILES(u"selected_files")
constexpr OUStringLiteral PROP_FILENAME(u"filename")
const ::sal_Int32 FEATURE_IMAGETEMPLATE
const ::sal_Int32 FEATURE_AUTOEXTENSION
constexpr OUStringLiteral PROP_TEMPLATE_DESCR(u"templatedescription")
constexpr OUStringLiteral PROP_DIALOG_SHOW_RESULT(u"dialog_show_result")
const ::sal_Int32 FEATURE_PASSWORD
const ::sal_Int32 FEATURE_IMAGEANCHOR
constexpr OUStringLiteral PROP_CONTROL_ACTION(u"control_action")
const OUStringLiteral PROP_CONTROL_ID
constexpr OUStringLiteral PROP_MULTISELECTION_MODE(u"multiselection_mode")
const ::sal_Int32 FEATURE_GPGPASSWORD
constexpr OUStringLiteral PROP_DIRECTORY(u"directory")
constexpr OUStringLiteral PROP_CONTROL_ENABLE(u"control_enable")