diff options
Diffstat (limited to 'fpicker/source/win32/filepicker/VistaFilePicker.cxx')
-rw-r--r-- | fpicker/source/win32/filepicker/VistaFilePicker.cxx | 724 |
1 files changed, 0 insertions, 724 deletions
diff --git a/fpicker/source/win32/filepicker/VistaFilePicker.cxx b/fpicker/source/win32/filepicker/VistaFilePicker.cxx deleted file mode 100644 index eb42f39a8b..0000000000 --- a/fpicker/source/win32/filepicker/VistaFilePicker.cxx +++ /dev/null @@ -1,724 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_fpicker.hxx" - -//------------------------------------------------------------------------ -// includes -//------------------------------------------------------------------------ - -#ifdef _MSC_VER -#pragma warning (disable:4917) -#endif - -#include "VistaFilePicker.hxx" - -// Without IFileDialog we can't do much -#ifdef __IFileDialog_INTERFACE_DEFINED__ - -#include "WinFileOpenImpl.hxx" -#include "../misc/WinImplHelper.hxx" -#include "shared.hxx" - -#include <com/sun/star/lang/DisposedException.hpp> -#include <com/sun/star/ui/dialogs/TemplateDescription.hpp> -#include <com/sun/star/ui/dialogs/XFilePickerNotifier.hpp> -#include <com/sun/star/ui/dialogs/XFilePickerListener.hpp> -#include <com/sun/star/ui/dialogs/ExecutableDialogResults.hpp> - -#include <cppuhelper/interfacecontainer.h> -#include <comphelper/configurationhelper.hxx> -#include <osl/diagnose.h> -#include <osl/mutex.hxx> -#include <osl/file.hxx> -#include <tchar.h> - -#ifdef _MSC_VER -#pragma warning (push, 1) -#endif -#include <shlobj.h> -#ifdef _MSC_VER -#pragma warning (pop) -#endif - -//------------------------------------------------------------------------ -// namespace directives -//------------------------------------------------------------------------ - -namespace css = ::com::sun::star; - -namespace fpicker{ -namespace win32{ -namespace vista{ - -//------------------------------------------------------------------------ -// defines -//------------------------------------------------------------------------ - -#define FILE_PICKER_DLL_NAME TEXT("fps.dll") - -//------------------------------------------------------------------------ -// helper functions -//------------------------------------------------------------------------ - -namespace -{ - // controling event notifications - const bool STARTUP_SUSPENDED = true; - const bool STARTUP_ALIVE = false; - - css::uno::Sequence< ::rtl::OUString > SAL_CALL VistaFilePicker_getSupportedServiceNames() - { - css::uno::Sequence< ::rtl::OUString > aRet(2); - aRet[0] = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.ui.dialogs.FilePicker")); - aRet[1] = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.ui.dialogs.SystemFilePicker")); - return aRet; - } -} - -//----------------------------------------------------------------------------------------- -#define ENABLE_LOGGING - -#define LOGFILE_VISTA "c:\\temp\\vistafiledialog.log" - -#ifdef ENABLE_LOGGING - - #define LOG_FILE(PARAM_MESSAGE) \ - { \ - FILE* pFile = fopen(LOGFILE_VISTA, "a"); \ - fprintf(pFile, PARAM_MESSAGE); \ - fclose(pFile); \ - } - - #define LOG_FILE_1_PARAM(PARAM_MESSAGE, PARAM_1) \ - { \ - FILE* pFile = fopen(LOGFILE_VISTA, "a"); \ - fprintf(pFile, PARAM_MESSAGE, PARAM_1); \ - fclose(pFile); \ - } - - #define LOG_FILE_2_PARAM(PARAM_MESSAGE, PARAM_1, PARAM_2) \ - { \ - FILE* pFile = fopen(LOGFILE_VISTA, "a"); \ - fprintf(pFile, PARAM_MESSAGE, PARAM_1, PARAM_2); \ - fclose(pFile); \ - } - -#else - - #define LOG_FILE(PARAM_MESSAGE) - #define LOG_FILE_1_PARAM(PARAM_MESSAGE, PARAM_1) - #define LOG_FILE_2_PARAM(PARAM_MESSAGE, PARAM_1, PARAM_2) - -#endif - -//----------------------------------------------------------------------------------------- -#define VISTAFILEDIALOG_CHECKED_COMCALL(PARAM_CODE, PARAM_LOGMESSAGE, PARAM_ERRORMESSAGE) \ - { \ - HRESULT aResult; \ - VISTAFILEDIALOG_CHECKED_COMCALL_WITH_RETURN(aResult, PARAM_CODE, PARAM_LOGMESSAGE, PARAM_ERRORMESSAGE) \ - } - -//----------------------------------------------------------------------------------------- -#define VISTAFILEDIALOG_CHECKED_COMCALL_WITH_RETURN(RETURN_HR, PARAM_CODE, PARAM_LOGMESSAGE, PARAM_ERRORMESSAGE) \ - { \ - LOG_FILE(PARAM_LOGMESSAGE) \ - RETURN_HR = PARAM_CODE; \ - if ( FAILED(RETURN_HR) ) \ - { \ - LOG_FILE_1_PARAM("will throw exception for checked COM call:\n%s", PARAM_ERRORMESSAGE) \ - throw css::uno::RuntimeException( \ - ::rtl::OUString::createFromAscii(PARAM_ERRORMESSAGE), \ - css::uno::Reference< css::ui::dialogs::XFilePicker >()); \ - } \ - } - - - -//----------------------------------------------------------------------------------------- -VistaFilePicker::VistaFilePicker(const css::uno::Reference< css::lang::XMultiServiceFactory >& xSMGR) - : TVistaFilePickerBase (m_aMutex ) - , m_xSMGR (xSMGR ) - , m_rDialog (new VistaFilePickerImpl()) - , m_aAsyncExecute (m_rDialog ) - , m_nFilePickerThreadId (0 ) - , m_bInitialized (false ) -{ -} - -//----------------------------------------------------------------------------------------- -VistaFilePicker::~VistaFilePicker() -{ -} - -//------------------------------------------------------------------------------------ -void SAL_CALL VistaFilePicker::addFilePickerListener(const css::uno::Reference< css::ui::dialogs::XFilePickerListener >& xListener) - throw(css::uno::RuntimeException) -{ - RequestRef rRequest(new Request()); - rRequest->setRequest (VistaFilePickerImpl::E_ADD_PICKER_LISTENER); - rRequest->setArgument(PROP_PICKER_LISTENER, xListener); - - m_aAsyncExecute.triggerRequestThreadAware(rRequest, AsyncRequests::NON_BLOCKED); -} - -//----------------------------------------------------------------------------------------- -void SAL_CALL VistaFilePicker::removeFilePickerListener(const css::uno::Reference< css::ui::dialogs::XFilePickerListener >& xListener ) - throw(css::uno::RuntimeException) -{ - RequestRef rRequest(new Request()); - rRequest->setRequest (VistaFilePickerImpl::E_REMOVE_PICKER_LISTENER); - rRequest->setArgument(PROP_PICKER_LISTENER, xListener); - - m_aAsyncExecute.triggerRequestThreadAware(rRequest, AsyncRequests::NON_BLOCKED); -} - -// ------------------------------------------------- -void SAL_CALL VistaFilePicker::disposing(const css::lang::EventObject& /*aEvent*/) - throw(css::uno::RuntimeException) -{ -} - -//------------------------------------------------------------------------------------ -void SAL_CALL VistaFilePicker::setMultiSelectionMode(::sal_Bool bMode) - throw(css::uno::RuntimeException) -{ - RequestRef rRequest(new Request()); - rRequest->setRequest (VistaFilePickerImpl::E_SET_MULTISELECTION_MODE); - rRequest->setArgument(PROP_MULTISELECTION_MODE, bMode); - - m_aAsyncExecute.triggerRequestThreadAware(rRequest, AsyncRequests::NON_BLOCKED); -} - -//----------------------------------------------------------------------------------------- -void SAL_CALL VistaFilePicker::setTitle(const ::rtl::OUString& sTitle) - throw(css::uno::RuntimeException) -{ - RequestRef rRequest(new Request()); - rRequest->setRequest (VistaFilePickerImpl::E_SET_TITLE); - rRequest->setArgument(PROP_TITLE, sTitle); - - m_aAsyncExecute.triggerRequestThreadAware(rRequest, AsyncRequests::NON_BLOCKED); -} - -//----------------------------------------------------------------------------------------- -void SAL_CALL VistaFilePicker::appendFilter(const ::rtl::OUString& sTitle , - const ::rtl::OUString& sFilter) - throw(css::lang::IllegalArgumentException, - css::uno::RuntimeException ) -{ - RequestRef rRequest(new Request()); - rRequest->setRequest (VistaFilePickerImpl::E_APPEND_FILTER); - rRequest->setArgument(PROP_FILTER_TITLE, sTitle ); - rRequest->setArgument(PROP_FILTER_VALUE, sFilter); - - m_aAsyncExecute.triggerRequestThreadAware(rRequest, AsyncRequests::NON_BLOCKED); -} - -//----------------------------------------------------------------------------------------- -void SAL_CALL VistaFilePicker::setCurrentFilter(const ::rtl::OUString& sTitle) - throw(css::lang::IllegalArgumentException, - css::uno::RuntimeException ) -{ - RequestRef rRequest(new Request()); - rRequest->setRequest (VistaFilePickerImpl::E_SET_CURRENT_FILTER); - rRequest->setArgument(PROP_FILTER_TITLE, sTitle); - - m_aAsyncExecute.triggerRequestThreadAware(rRequest, AsyncRequests::NON_BLOCKED); -} - -//----------------------------------------------------------------------------------------- -::rtl::OUString SAL_CALL VistaFilePicker::getCurrentFilter() - throw(css::uno::RuntimeException) -{ - RequestRef rRequest(new Request()); - rRequest->setRequest (VistaFilePickerImpl::E_GET_CURRENT_FILTER); - - m_aAsyncExecute.triggerRequestThreadAware(rRequest, AsyncRequests::BLOCKED); - - const ::rtl::OUString sTitle = rRequest->getArgumentOrDefault(PROP_FILTER_TITLE, ::rtl::OUString()); - return sTitle; -} - -//----------------------------------------------------------------------------------------- -void SAL_CALL VistaFilePicker::appendFilterGroup(const ::rtl::OUString& /*sGroupTitle*/, - const css::uno::Sequence< css::beans::StringPair >& rFilters ) - throw (css::lang::IllegalArgumentException, - css::uno::RuntimeException ) -{ - RequestRef rRequest(new Request()); - rRequest->setRequest (VistaFilePickerImpl::E_APPEND_FILTERGROUP); - rRequest->setArgument(PROP_FILTER_GROUP, rFilters); - - m_aAsyncExecute.triggerRequestThreadAware(rRequest, AsyncRequests::NON_BLOCKED); -} - -//----------------------------------------------------------------------------------------- -void SAL_CALL VistaFilePicker::setDefaultName(const ::rtl::OUString& sName ) - throw(css::uno::RuntimeException) -{ - RequestRef rRequest(new Request()); - rRequest->setRequest (VistaFilePickerImpl::E_SET_DEFAULT_NAME); - rRequest->setArgument(PROP_FILENAME, sName); - - m_aAsyncExecute.triggerRequestThreadAware(rRequest, AsyncRequests::NON_BLOCKED); -} - -//----------------------------------------------------------------------------------------- -void SAL_CALL VistaFilePicker::setDisplayDirectory(const ::rtl::OUString& sDirectory) - throw (css::lang::IllegalArgumentException, - css::uno::RuntimeException ) -{ - const ::rtl::OUString aPackage( RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Office.Common/")); - const ::rtl::OUString aRelPath( RTL_CONSTASCII_USTRINGPARAM("Path/Info")); - const ::rtl::OUString aKey( RTL_CONSTASCII_USTRINGPARAM("WorkPathChanged")); - - css::uno::Any aValue = ::comphelper::ConfigurationHelper::readDirectKey( - m_xSMGR, aPackage, aRelPath, aKey, ::comphelper::ConfigurationHelper::E_READONLY); - - bool bChanged(false); - if (( aValue >>= bChanged ) && bChanged ) - { - ::comphelper::ConfigurationHelper::writeDirectKey( - m_xSMGR, aPackage, aRelPath, aKey, css::uno::makeAny(false), ::comphelper::ConfigurationHelper::E_STANDARD); - } - - RequestRef rRequest(new Request()); - rRequest->setRequest (VistaFilePickerImpl::E_SET_DIRECTORY); - rRequest->setArgument(PROP_DIRECTORY, sDirectory); - rRequest->setArgument(PROP_FORCE, bChanged); - - m_aAsyncExecute.triggerRequestThreadAware(rRequest, AsyncRequests::NON_BLOCKED); -} - -//----------------------------------------------------------------------------------------- -::rtl::OUString SAL_CALL VistaFilePicker::getDisplayDirectory() - throw(css::uno::RuntimeException) -{ - RequestRef rRequest(new Request()); - rRequest->setRequest (VistaFilePickerImpl::E_GET_DIRECTORY); - m_aAsyncExecute.triggerRequestThreadAware(rRequest, AsyncRequests::NON_BLOCKED); - const ::rtl::OUString sDirectory = rRequest->getArgumentOrDefault(PROP_FILENAME, ::rtl::OUString()); - - return sDirectory; -} - -//----------------------------------------------------------------------------------------- -// @deprecated cant be supported any longer ... see IDL description for further details -css::uno::Sequence< ::rtl::OUString > SAL_CALL VistaFilePicker::getFiles() - throw(css::uno::RuntimeException) -{ - RequestRef rRequest(new Request()); - rRequest->setRequest (VistaFilePickerImpl::E_GET_SELECTED_FILES); - - m_aAsyncExecute.triggerRequestThreadAware(rRequest, AsyncRequests::BLOCKED); - - const css::uno::Sequence< ::rtl::OUString > lFiles = rRequest->getArgumentOrDefault(PROP_SELECTED_FILES, css::uno::Sequence< ::rtl::OUString >()); - m_lLastFiles = lFiles; - return lFiles; -} - -//----------------------------------------------------------------------------------------- -css::uno::Sequence< ::rtl::OUString > SAL_CALL VistaFilePicker::getSelectedFiles() - throw(css::uno::RuntimeException) -{ - RequestRef rRequest(new Request()); - rRequest->setRequest (VistaFilePickerImpl::E_GET_SELECTED_FILES); - - m_aAsyncExecute.triggerRequestThreadAware(rRequest, AsyncRequests::BLOCKED); - - const css::uno::Sequence< ::rtl::OUString > lFiles = rRequest->getArgumentOrDefault(PROP_SELECTED_FILES, css::uno::Sequence< ::rtl::OUString >()); - m_lLastFiles = lFiles; - return lFiles; -} - -//----------------------------------------------------------------------------------------- -::sal_Int16 SAL_CALL VistaFilePicker::execute() - throw(css::uno::RuntimeException) -{ - bool bInitialized(false); - { - osl::MutexGuard aGuard(m_aMutex); - bInitialized = m_bInitialized; - } - - if ( !bInitialized ) - { - sal_Int16 nTemplateDescription = css::ui::dialogs::TemplateDescription::FILEOPEN_SIMPLE; - css::uno::Sequence < css::uno::Any > aInitArguments(1); - aInitArguments[0] <<= nTemplateDescription; - initialize(aInitArguments); - } - - RequestRef rRequest(new Request()); - rRequest->setRequest (VistaFilePickerImpl::E_SHOW_DIALOG_MODAL); - - // if we want to show a modal window, the calling thread needs to process messages - m_aAsyncExecute.triggerRequestThreadAware(rRequest, AsyncRequests::PROCESS_MESSAGES); - - const ::sal_Bool bOK = rRequest->getArgumentOrDefault(PROP_DIALOG_SHOW_RESULT, (::sal_Bool)sal_False ); - m_lLastFiles = rRequest->getArgumentOrDefault(PROP_SELECTED_FILES , css::uno::Sequence< ::rtl::OUString >()); - - ::sal_Int16 nResult = css::ui::dialogs::ExecutableDialogResults::CANCEL; - if (bOK) - nResult = css::ui::dialogs::ExecutableDialogResults::OK; - return nResult; -} - -//------------------------------------------------------------------------------------ -// XFilePicker functions -//------------------------------------------------------------------------------------ - -void SAL_CALL VistaFilePicker::setValue( ::sal_Int16 nControlId , - ::sal_Int16 nControlAction, - const css::uno::Any& aValue ) - throw(css::uno::RuntimeException) -{ - RequestRef rRequest(new Request()); - rRequest->setRequest (VistaFilePickerImpl::E_SET_CONTROL_VALUE); - rRequest->setArgument(PROP_CONTROL_ID , nControlId ); - rRequest->setArgument(PROP_CONTROL_ACTION, nControlAction); - rRequest->setArgument(PROP_CONTROL_VALUE , aValue ); - - m_aAsyncExecute.triggerRequestThreadAware(rRequest, AsyncRequests::NON_BLOCKED); -} - -//----------------------------------------------------------------------------------------- -// -//----------------------------------------------------------------------------------------- - -css::uno::Any SAL_CALL VistaFilePicker::getValue(::sal_Int16 nControlId , - ::sal_Int16 nControlAction) - throw(css::uno::RuntimeException) -{ - RequestRef rRequest(new Request()); - rRequest->setRequest (VistaFilePickerImpl::E_GET_CONTROL_VALUE); - rRequest->setArgument(PROP_CONTROL_ID , nControlId ); - rRequest->setArgument(PROP_CONTROL_ACTION, nControlAction); - - m_aAsyncExecute.triggerRequestThreadAware(rRequest, AsyncRequests::BLOCKED); - const css::uno::Any aValue = rRequest->getArgumentOrDefault(PROP_CONTROL_VALUE, css::uno::Any()); - return aValue; -} - -//----------------------------------------------------------------------------------------- -// -//----------------------------------------------------------------------------------------- - -void SAL_CALL VistaFilePicker::enableControl(::sal_Int16 nControlId, - ::sal_Bool bEnable ) - throw(css::uno::RuntimeException) -{ - RequestRef rRequest(new Request()); - rRequest->setRequest (VistaFilePickerImpl::E_ENABLE_CONTROL); - rRequest->setArgument(PROP_CONTROL_ID , nControlId); - rRequest->setArgument(PROP_CONTROL_ENABLE, bEnable ); - - m_aAsyncExecute.triggerRequestThreadAware(rRequest, AsyncRequests::NON_BLOCKED); -} - -//----------------------------------------------------------------------------------------- -// -//----------------------------------------------------------------------------------------- - -void SAL_CALL VistaFilePicker::setLabel( ::sal_Int16 nControlId, - const ::rtl::OUString& sLabel ) - throw (css::uno::RuntimeException) -{ - RequestRef rRequest(new Request()); - rRequest->setRequest (VistaFilePickerImpl::E_SET_CONTROL_LABEL); - rRequest->setArgument(PROP_CONTROL_ID , nControlId); - rRequest->setArgument(PROP_CONTROL_LABEL, sLabel ); - - m_aAsyncExecute.triggerRequestThreadAware(rRequest, AsyncRequests::NON_BLOCKED); -} - -//----------------------------------------------------------------------------------------- -// -//----------------------------------------------------------------------------------------- - -::rtl::OUString SAL_CALL VistaFilePicker::getLabel(::sal_Int16 nControlId) - throw (css::uno::RuntimeException) -{ - RequestRef rRequest(new Request()); - rRequest->setRequest (VistaFilePickerImpl::E_GET_CONTROL_LABEL); - rRequest->setArgument(PROP_CONTROL_ID, nControlId); - - m_aAsyncExecute.triggerRequestThreadAware(rRequest, AsyncRequests::BLOCKED); - const ::rtl::OUString sLabel = rRequest->getArgumentOrDefault(PROP_CONTROL_LABEL, ::rtl::OUString()); - return sLabel; -} - -//------------------------------------------------------------------------------------ -// -//------------------------------------------------------------------------------------ - -css::uno::Sequence< ::sal_Int16 > SAL_CALL VistaFilePicker::getSupportedImageFormats() - throw (css::uno::RuntimeException) -{ - return css::uno::Sequence< sal_Int16 >(); -} - -//------------------------------------------------------------------------------------ -// -//------------------------------------------------------------------------------------ - -sal_Int32 SAL_CALL VistaFilePicker::getTargetColorDepth() - throw (css::uno::RuntimeException) -{ - return 0; -} - -//------------------------------------------------------------------------------------ -// -//------------------------------------------------------------------------------------ - -sal_Int32 SAL_CALL VistaFilePicker::getAvailableWidth() - throw (css::uno::RuntimeException) -{ - return 0; -} - -//------------------------------------------------------------------------------------ -// -//------------------------------------------------------------------------------------ - -sal_Int32 SAL_CALL VistaFilePicker::getAvailableHeight() - throw (css::uno::RuntimeException) -{ - return 0; -} - -//------------------------------------------------------------------------------------ -// -//------------------------------------------------------------------------------------ - -void SAL_CALL VistaFilePicker::setImage( sal_Int16 /*nImageFormat*/, - const css::uno::Any& /*aImage */) - throw (css::lang::IllegalArgumentException, - css::uno::RuntimeException ) -{ -} - -//------------------------------------------------------------------------------------ -// -//------------------------------------------------------------------------------------ - -sal_Bool SAL_CALL VistaFilePicker::setShowState(sal_Bool /*bShowState*/) - throw (css::uno::RuntimeException) -{ - return sal_False; -} - -//------------------------------------------------------------------------------------ -// -//------------------------------------------------------------------------------------ - -sal_Bool SAL_CALL VistaFilePicker::getShowState() - throw (css::uno::RuntimeException) -{ - return sal_False; -} - -//------------------------------------------------------------------------------------ -// -//------------------------------------------------------------------------------------ - -void SAL_CALL VistaFilePicker::initialize(const css::uno::Sequence< css::uno::Any >& lArguments) - throw(css::uno::Exception , - css::uno::RuntimeException) -{ - if (lArguments.getLength() < 1) - throw css::lang::IllegalArgumentException( - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "XInitialization::initialize() called without arguments." )), - static_cast< css::ui::dialogs::XFilePicker2* >( this ), - 1); - - sal_Int32 nTemplate = -1; - lArguments[0] >>= nTemplate; - - ::sal_Bool bFileOpenDialog = sal_True; - ::sal_Int32 nFeatures = 0; - - switch(nTemplate) - { - case css::ui::dialogs::TemplateDescription::FILEOPEN_SIMPLE : - { - bFileOpenDialog = sal_True; - } - break; - - case css::ui::dialogs::TemplateDescription::FILESAVE_SIMPLE : - { - bFileOpenDialog = sal_False; - } - break; - - case css::ui::dialogs::TemplateDescription::FILESAVE_AUTOEXTENSION_PASSWORD : - { - bFileOpenDialog = sal_False; - nFeatures |= FEATURE_AUTOEXTENSION; - nFeatures |= FEATURE_PASSWORD; - } - break; - - case css::ui::dialogs::TemplateDescription::FILESAVE_AUTOEXTENSION_PASSWORD_FILTEROPTIONS : - { - bFileOpenDialog = sal_False; - nFeatures |= FEATURE_AUTOEXTENSION; - nFeatures |= FEATURE_PASSWORD; - nFeatures |= FEATURE_FILTEROPTIONS; - } - break; - - case css::ui::dialogs::TemplateDescription::FILESAVE_AUTOEXTENSION_SELECTION : - { - bFileOpenDialog = sal_False; - nFeatures |= FEATURE_AUTOEXTENSION; - nFeatures |= FEATURE_SELECTION; - } - break; - - case css::ui::dialogs::TemplateDescription::FILESAVE_AUTOEXTENSION_TEMPLATE : - { - bFileOpenDialog = sal_False; - nFeatures |= FEATURE_AUTOEXTENSION; - nFeatures |= FEATURE_TEMPLATE; - } - break; - - case css::ui::dialogs::TemplateDescription::FILEOPEN_LINK_PREVIEW_IMAGE_TEMPLATE : - { - bFileOpenDialog = sal_True; - nFeatures |= FEATURE_LINK; - nFeatures |= FEATURE_PREVIEW; - nFeatures |= FEATURE_IMAGETEMPLATE; - } - break; - - case css::ui::dialogs::TemplateDescription::FILEOPEN_PLAY : - { - bFileOpenDialog = sal_True; - nFeatures |= FEATURE_PLAY; - } - break; - - case css::ui::dialogs::TemplateDescription::FILEOPEN_READONLY_VERSION : - { - bFileOpenDialog = sal_True; - nFeatures |= FEATURE_READONLY; - nFeatures |= FEATURE_VERSION; - } - break; - - case css::ui::dialogs::TemplateDescription::FILEOPEN_LINK_PREVIEW : - { - bFileOpenDialog = sal_True; - nFeatures |= FEATURE_LINK; - nFeatures |= FEATURE_PREVIEW; - } - break; - - case css::ui::dialogs::TemplateDescription::FILESAVE_AUTOEXTENSION : - { - bFileOpenDialog = sal_False; - nFeatures |= FEATURE_AUTOEXTENSION; - } - break; - } - - RequestRef rRequest(new Request()); - if (bFileOpenDialog) - rRequest->setRequest (VistaFilePickerImpl::E_CREATE_OPEN_DIALOG); - else - rRequest->setRequest (VistaFilePickerImpl::E_CREATE_SAVE_DIALOG); - rRequest->setArgument(PROP_FEATURES, nFeatures); - rRequest->setArgument(PROP_TEMPLATE_DESCR, nTemplate); - if ( ! m_aAsyncExecute.isRunning()) - m_aAsyncExecute.create(); - m_aAsyncExecute.triggerRequestThreadAware(rRequest, AsyncRequests::NON_BLOCKED); - - { - osl::MutexGuard aGuard(m_aMutex); - m_bInitialized = true; - } -} - -//------------------------------------------------------------------------------------ -// -//------------------------------------------------------------------------------------ - -void SAL_CALL VistaFilePicker::cancel() - throw(css::uno::RuntimeException) -{ -} - -// ------------------------------------------------- -// XServiceInfo -// ------------------------------------------------- - -::rtl::OUString SAL_CALL VistaFilePicker::getImplementationName() - throw(css::uno::RuntimeException) -{ - return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.fpicker.VistaFileDialog")); -} - -// ------------------------------------------------- -// XServiceInfo -// ------------------------------------------------- - -sal_Bool SAL_CALL VistaFilePicker::supportsService(const ::rtl::OUString& sServiceName) - throw(css::uno::RuntimeException ) -{ - css::uno::Sequence< ::rtl::OUString > lSupportedServicesNames = VistaFilePicker_getSupportedServiceNames(); - - for (sal_Int32 n = lSupportedServicesNames.getLength(); n--;) - if (lSupportedServicesNames[n].compareTo(sServiceName) == 0) - return sal_True; - - return sal_False; -} - -// ------------------------------------------------- -// XServiceInfo -// ------------------------------------------------- - -css::uno::Sequence< ::rtl::OUString > SAL_CALL VistaFilePicker::getSupportedServiceNames() - throw(css::uno::RuntimeException) -{ - return VistaFilePicker_getSupportedServiceNames(); -} - -} // namespace vista -} // namespace win32 -} // namespace fpicker - -#endif // __IFileDialog_INTERFACE_DEFINED__ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |