diff options
author | Tor Lillqvist <tlillqvist@novell.com> | 2010-08-25 22:28:03 +0200 |
---|---|---|
committer | Jan Holesovsky <kendy@suse.cz> | 2010-08-26 13:08:23 +0200 |
commit | 7b7494785bd8e13a80150869cfe31ab744967cd2 (patch) | |
tree | f4e4cc5185c441310b0629a644a86fcc506ee62f /fpicker | |
parent | 6c3eff7ee952ad4da79082b52a2eaf288a6a262b (diff) |
novell-win32-odma.diff: ODMA dialog implementation.
i#6885, i#32741
Diffstat (limited to 'fpicker')
-rw-r--r-- | fpicker/prj/build.lst | 1 | ||||
-rw-r--r-- | fpicker/source/generic/fpicker.cxx | 28 | ||||
-rw-r--r-- | fpicker/source/generic/makefile.mk | 1 | ||||
-rw-r--r-- | fpicker/source/odma/ODMAFilePicker.cxx | 532 | ||||
-rw-r--r-- | fpicker/source/odma/ODMAFilePicker.hxx | 213 | ||||
-rw-r--r-- | fpicker/source/odma/ODMAFolderPicker.cxx | 182 | ||||
-rw-r--r-- | fpicker/source/odma/ODMAFolderPicker.hxx | 100 | ||||
-rw-r--r-- | fpicker/source/odma/exports.map | 8 | ||||
-rw-r--r-- | fpicker/source/odma/fps_odma.cxx | 78 | ||||
-rw-r--r-- | fpicker/source/odma/makefile.mk | 72 |
10 files changed, 1211 insertions, 4 deletions
diff --git a/fpicker/prj/build.lst b/fpicker/prj/build.lst index 47b7c7c6933f..04872c535437 100644 --- a/fpicker/prj/build.lst +++ b/fpicker/prj/build.lst @@ -2,6 +2,7 @@ fp fpicker : l10n rdbmaker svtools NULL fp fpicker\inc nmake - all fp_inc NULL fp fpicker\source\generic nmake - all fp_generic fp_inc NULL fp fpicker\source\office nmake - all fp_office fp_inc NULL +fp fpicker\source\odma nmake - w fp_odma NULL fp fpicker\source\unx\gnome nmake - u fp_gnome_filepicker fp_inc NULL fp fpicker\source\unx\kde4 nmake - u fp_kde4_filepicker fp_inc NULL fp fpicker\source\unx\kde_unx nmake - u fp_unx_common fp_inc NULL diff --git a/fpicker/source/generic/fpicker.cxx b/fpicker/source/generic/fpicker.cxx index 4589b3319163..bcbfb2b2d70b 100644 --- a/fpicker/source/generic/fpicker.cxx +++ b/fpicker/source/generic/fpicker.cxx @@ -34,6 +34,13 @@ #include "cppuhelper/implementationentry.hxx" #endif #include "com/sun/star/lang/XMultiComponentFactory.hpp" + +#ifdef WNT +#include <tools/prewin.h> +#include <tools/postwin.h> +#include <odma_lib.hxx> +#endif + #include "svtools/miscopt.hxx" #include "svl/pickerhistoryaccess.hxx" @@ -52,6 +59,7 @@ using rtl::OUString; */ static OUString FilePicker_getSystemPickerServiceName() { +#ifdef UNX OUString aDesktopEnvironment (Application::GetDesktopEnvironment()); if (aDesktopEnvironment.equalsIgnoreAsciiCaseAscii ("gnome")) return OUString (RTL_CONSTASCII_USTRINGPARAM ("com.sun.star.ui.dialogs.GtkFilePicker")); @@ -61,8 +69,14 @@ static OUString FilePicker_getSystemPickerServiceName() return OUString (RTL_CONSTASCII_USTRINGPARAM ("com.sun.star.ui.dialogs.KDE4FilePicker")); else if (aDesktopEnvironment.equalsIgnoreAsciiCaseAscii ("macosx")) return OUString (RTL_CONSTASCII_USTRINGPARAM ("com.sun.star.ui.dialogs.AquaFilePicker")); - else - return OUString (RTL_CONSTASCII_USTRINGPARAM ("com.sun.star.ui.dialogs.SystemFilePicker")); +#endif +#ifdef WNT + if (SvtMiscOptions().TryODMADialog() && ::odma::DMSsAvailable()) { + return OUString (RTL_CONSTASCII_USTRINGPARAM ("com.sun.star.ui.dialogs.ODMAFilePicker")); + } + return OUString (RTL_CONSTASCII_USTRINGPARAM ("com.sun.star.ui.dialogs.Win32FilePicker")); +#endif + return OUString (RTL_CONSTASCII_USTRINGPARAM ("com.sun.star.ui.dialogs.SystemFilePicker")); } static Reference< css::uno::XInterface > FilePicker_createInstance ( @@ -123,14 +137,20 @@ static Sequence< OUString > FilePicker_getSupportedServiceNames() static OUString FolderPicker_getSystemPickerServiceName() { OUString aDesktopEnvironment (Application::GetDesktopEnvironment()); +#ifdef UNX if (aDesktopEnvironment.equalsIgnoreAsciiCaseAscii ("gnome")) return OUString (RTL_CONSTASCII_USTRINGPARAM ("com.sun.star.ui.dialogs.GtkFolderPicker")); else if (aDesktopEnvironment.equalsIgnoreAsciiCaseAscii ("kde")) return OUString (RTL_CONSTASCII_USTRINGPARAM ("com.sun.star.ui.dialogs.KDEFolderPicker")); else if (aDesktopEnvironment.equalsIgnoreAsciiCaseAscii ("macosx")) return OUString (RTL_CONSTASCII_USTRINGPARAM ("com.sun.star.ui.dialogs.AquaFolderPicker")); - else - return OUString (RTL_CONSTASCII_USTRINGPARAM ("com.sun.star.ui.dialogs.SystemFolderPicker")); +#endif +#ifdef WNT + if (SvtMiscOptions().TryODMADialog() && ::odma::DMSsAvailable()) { + return OUString (RTL_CONSTASCII_USTRINGPARAM ("com.sun.star.ui.dialogs.ODMAFolderPicker")); + } +#endif + return OUString (RTL_CONSTASCII_USTRINGPARAM ("com.sun.star.ui.dialogs.SystemFolderPicker")); } static Reference< css::uno::XInterface > FolderPicker_createInstance ( diff --git a/fpicker/source/generic/makefile.mk b/fpicker/source/generic/makefile.mk index bfbfb65f3da6..f426bd7ad7d1 100644 --- a/fpicker/source/generic/makefile.mk +++ b/fpicker/source/generic/makefile.mk @@ -46,6 +46,7 @@ SHL1TARGET= $(TARGET) SHL1IMPLIB= i$(TARGET) SHL1OBJS= $(SLOFILES) SHL1STDLIBS=\ + $(ODMA_LIB_LIB) \ $(VCLLIB) \ $(SVLLIB) \ $(SVTOOLLIB) \ diff --git a/fpicker/source/odma/ODMAFilePicker.cxx b/fpicker/source/odma/ODMAFilePicker.cxx new file mode 100644 index 000000000000..09eb01b7372d --- /dev/null +++ b/fpicker/source/odma/ODMAFilePicker.cxx @@ -0,0 +1,532 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * Copyright 2010 Novell, Inc. + * + * 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" + +#include "ODMAFilePicker.hxx" + +#include <tools/debug.hxx> + +#include <com/sun/star/beans/PropertyValue.hpp> +#include <com/sun/star/beans/StringPair.hpp> +#include <com/sun/star/ui/dialogs/FilePreviewImageFormats.hpp> +#include <com/sun/star/ui/dialogs/ExecutableDialogResults.hpp> +#include <com/sun/star/ui/dialogs/TemplateDescription.hpp> +#include <com/sun/star/ucb/XCommandEnvironment.hpp> +#include <com/sun/star/uno/Any.hxx> +#include <com/sun/star/uno/Sequence.hxx> + +#include <comphelper/sequence.hxx> +#include <cppuhelper/typeprovider.hxx> +#include <ucbhelper/content.hxx> +#include <unotools/ucbhelper.hxx> + +#ifndef ODMA_LIB_HXX +#include <tools/prewin.h> +#include <tools/postwin.h> +#include <odma_lib.hxx> +#endif + +// using ---------------------------------------------------------------- + +using namespace ::com::sun::star::beans; +using namespace ::com::sun::star::lang; +using namespace ::com::sun::star::ui::dialogs; +using namespace ::com::sun::star::ucb; +using namespace ::com::sun::star::uno; +using namespace ::com::sun::star::util; +using namespace ::utl; + +//------------------------------------------------------------------------------------ +// class ODMAFilePicker +//------------------------------------------------------------------------------------ +ODMAFilePicker::ODMAFilePicker( const Reference < XMultiServiceFactory >& xFactory ) : + cppu::WeakComponentImplHelper9< + XFilterManager, + XFilterGroupManager, + XFilePickerControlAccess, + XFilePickerNotifier, + XFilePreview, + XInitialization, + XCancellable, + XEventListener, + XServiceInfo>( m_rbHelperMtx ), + m_bMultiSelectionMode( sal_False ), + m_aDefaultName( ), + m_aFiles( ), + m_nDialogKind( OPEN ) +{ + m_bUseDMS = ::odma::DMSsAvailable(); + m_xSystemFilePicker = xFactory->createInstance( + ::rtl::OUString::createFromAscii( "com.sun.star.ui.dialogs.Win32FilePicker" ) ); +} + +// XExecutableDialog functions + +void SAL_CALL ODMAFilePicker::setTitle( const ::rtl::OUString& aTitle ) + throw (RuntimeException) +{ + Reference< XExecutableDialog > xExecutableDialog( m_xSystemFilePicker, UNO_QUERY ); + xExecutableDialog->setTitle( aTitle); +} + +sal_Int16 SAL_CALL ODMAFilePicker::execute( ) + throw (RuntimeException) +{ + ODMSTATUS status; + ODMHANDLE handle; + WORD count = 0; + DWORD flags; + + status = NODMRegisterApp( &handle, ODM_API_VERSION, "sodma", (DWORD) GetActiveWindow( ), NULL ); + if (status == ODM_SUCCESS) + { + if (m_nDialogKind == OPEN) + { + const int MAXDOCS = 10; + char docids[ODM_DOCID_MAX*MAXDOCS+1]; + WORD docidslen = sizeof( docids ); + + flags = 0; + if (m_bMultiSelectionMode) + count = MAXDOCS; + else + count = 1; + status = NODMSelectDocEx( handle, docids, &docidslen, &count, &flags, NULL ); + if (status == ODM_SUCCESS) + { + // GroupWise doesn't set docidslen or count, so + // calculate number of document IDs manually + char *p = docids; + count = 0; + while (*p) { + count++; + p += strlen( p ) + 1; + } + } + else if (status == ODM_E_NOSUPPORT) + { + status = NODMSelectDoc( handle, docids, &flags ); + if (status == ODM_SUCCESS) + count = 1; + } + NODMUnRegisterApp( handle ); + if (status == ODM_SUCCESS) + { + rtl::OUString *strings = new rtl::OUString[count]; + int i; + char *p = docids; + + for (i = 0; i < count; i++) { + // Insane API... the first element is a full URI, the rest + // are just the "basenames" in the same "directory". + if (i == 0) + strings[0] = rtl::OUString::createFromAscii( "vnd.sun.star.odma:/" ) + rtl::OUString::createFromAscii( p ); + else + strings[i] = rtl::OUString::createFromAscii( p ); + p += strlen( p ); + } + + m_aFiles = Sequence< rtl::OUString >( strings, count ); + delete[] strings; + return ExecutableDialogResults::OK; + } + } + else /* m_nDialogKind == SAVE */ + { + char newdocid[ODM_DOCID_MAX+1]; + + if (m_aDefaultName.getLength() == 0 || + !m_aDefaultName.matchIgnoreAsciiCaseAsciiL( "::ODMA\\", 7, 0 )) + { + char tempdocid[ODM_DOCID_MAX+1]; + + status = NODMNewDoc( handle, tempdocid, ODM_SILENT, NULL, NULL ); + if (status == ODM_SUCCESS) + status = NODMSaveAs( handle, tempdocid, newdocid, NULL, NULL, NULL ); + } + else + { + rtl::OString sDefaultName = rtl::OUStringToOString( m_aDefaultName, RTL_TEXTENCODING_ASCII_US ); + status = NODMSaveAs( handle, + const_cast<sal_Char*>( sDefaultName.getStr() ), + newdocid, NULL, NULL, NULL ); + } + + NODMUnRegisterApp( handle ); + if (status == ODM_SUCCESS) + { + rtl::OUString s( rtl::OUString::createFromAscii( "vnd.sun.star.odma:/" ) + + rtl::OUString::createFromAscii( newdocid ) ); + // Create a Content for the odma URL so that + // odma::ContentProvider will learn about the DOCID we + // just created. + ucbhelper::Content content( s, Reference< XCommandEnvironment >() ); + m_aFiles = Sequence< rtl::OUString >( &s, 1 ); + return ExecutableDialogResults::OK; + } + } + } + if (status == ODM_E_APPSELECT) + { + m_bUseDMS = sal_False; + + Reference< XExecutableDialog > xExecutableDialog( m_xSystemFilePicker, UNO_QUERY ); + return xExecutableDialog->execute(); + } + + // Fallback + return ExecutableDialogResults::CANCEL; +} + +// XFilePicker functions + +void SAL_CALL ODMAFilePicker::setMultiSelectionMode( sal_Bool bMode ) + throw( RuntimeException ) +{ + m_bMultiSelectionMode = bMode; + + Reference< XFilePicker > xFilePicker( m_xSystemFilePicker, UNO_QUERY ); + xFilePicker->setMultiSelectionMode( bMode ); +} + +void SAL_CALL ODMAFilePicker::setDefaultName( const rtl::OUString& aName ) + throw( RuntimeException ) +{ + // When editing a document from DMS, and doing Save As, this is + // called twice, first with the complete DOCID, the second time + // with the "extension" removed. Of course, this is bogus, as + // DOCIDs should be treated as opaque strings, they don't have + // "extensions". + + // In the GroupWise case a DOCID is like + // ::ODMA\GRPWISE\FOO1.BAR.FOO-Bla_bla:12345.12 where the final + // dot separates the version number, not an "extension". + // + // So ignore the second call. + // + // The second call without "extension" is done if the + // XFilePickerControlAccess is set to have auto-extension turned + // on. (See sfx2/source/dialog/filedlghelper.cxx: + // FileDialogHelper_Impl::implInitializeFileName().) Thus we could + // alternatively make sure that a getValue call to get + // ExtendedFilePickerElementIds::CHECKBOX_AUTOEXTENSION returns + // false. But that might be hard as we don't know in advance + // whether the user will click the "use application dialog" + // button. If so, we indeed do use auto-extensions. + // + // Yes, this is ugly, relying on knowing details on how this + // function will be called. + + if ( m_aDefaultName.getLength() == 0 ) + m_aDefaultName = aName; + + Reference< XFilePicker > xFilePicker( m_xSystemFilePicker, UNO_QUERY ); + xFilePicker->setDefaultName( aName ); +} + +void SAL_CALL ODMAFilePicker::setDisplayDirectory( const rtl::OUString& aDirectory ) + throw( IllegalArgumentException, RuntimeException ) +{ + m_aDisplayDirectory = aDirectory; + + Reference< XFilePicker > xFilePicker( m_xSystemFilePicker, UNO_QUERY ); + xFilePicker->setDisplayDirectory( aDirectory ); +} + +rtl::OUString SAL_CALL ODMAFilePicker::getDisplayDirectory( ) + throw( RuntimeException ) +{ + if (m_bUseDMS) + return m_aDisplayDirectory; + + Reference< XFilePicker > xFilePicker( m_xSystemFilePicker, UNO_QUERY ); + return xFilePicker->getDisplayDirectory(); +} + +Sequence< rtl::OUString > SAL_CALL ODMAFilePicker::getFiles( ) + throw( RuntimeException ) +{ + if (m_bUseDMS) + return m_aFiles; + + Reference< XFilePicker > xFilePicker( m_xSystemFilePicker, UNO_QUERY ); + return xFilePicker->getFiles(); +} + +// XFilePickerControlAccess functions + +void SAL_CALL ODMAFilePicker::setValue( sal_Int16 nElementID, + sal_Int16 nControlAction, + const Any& rValue ) + throw( RuntimeException ) +{ + Reference< XFilePickerControlAccess > xFilePickerControlAccess( m_xSystemFilePicker, UNO_QUERY ); + xFilePickerControlAccess->setValue( nElementID, nControlAction, rValue ); +} + +Any SAL_CALL ODMAFilePicker::getValue( sal_Int16 nElementID, sal_Int16 nControlAction ) + throw( RuntimeException ) +{ + Reference< XFilePickerControlAccess > xFilePickerControlAccess( m_xSystemFilePicker, UNO_QUERY ); + return xFilePickerControlAccess->getValue( nElementID, nControlAction ); +} + +void SAL_CALL ODMAFilePicker::setLabel( sal_Int16 nLabelID, const rtl::OUString& rValue ) + throw ( RuntimeException ) +{ + Reference< XFilePickerControlAccess > xFilePickerControlAccess( m_xSystemFilePicker, UNO_QUERY ); + xFilePickerControlAccess->setLabel( nLabelID, rValue ); +} + +rtl::OUString SAL_CALL ODMAFilePicker::getLabel( sal_Int16 nLabelID ) + throw ( RuntimeException ) +{ + Reference< XFilePickerControlAccess > xFilePickerControlAccess( m_xSystemFilePicker, UNO_QUERY ); + return xFilePickerControlAccess->getLabel( nLabelID ); +} + +void SAL_CALL ODMAFilePicker::enableControl( sal_Int16 nElementID, sal_Bool bEnable ) + throw( RuntimeException ) +{ + Reference< XFilePickerControlAccess > xFilePickerControlAccess( m_xSystemFilePicker, UNO_QUERY ); + xFilePickerControlAccess->enableControl( nElementID, bEnable ); +} + +// XFilePickerNotifier functions + +void SAL_CALL ODMAFilePicker::addFilePickerListener( const Reference< XFilePickerListener >& xListener ) + throw ( RuntimeException ) +{ + Reference< XFilePickerNotifier > xFilePickerNotifier( m_xSystemFilePicker, UNO_QUERY ); + xFilePickerNotifier->addFilePickerListener( xListener ); +} + +void SAL_CALL ODMAFilePicker::removeFilePickerListener( const Reference< XFilePickerListener >& xListener ) + throw ( RuntimeException ) +{ + Reference< XFilePickerNotifier > xFilePickerNotifier( m_xSystemFilePicker, UNO_QUERY ); + xFilePickerNotifier->removeFilePickerListener( xListener ); +} + +// XFilePreview functions + +Sequence< sal_Int16 > SAL_CALL ODMAFilePicker::getSupportedImageFormats( ) + throw ( RuntimeException ) +{ + Reference< XFilePreview > xFilePreview( m_xSystemFilePicker, UNO_QUERY ); + return xFilePreview->getSupportedImageFormats(); +} + +sal_Int32 SAL_CALL ODMAFilePicker::getTargetColorDepth( ) + throw ( RuntimeException ) +{ + Reference< XFilePreview > xFilePreview( m_xSystemFilePicker, UNO_QUERY ); + return xFilePreview->getTargetColorDepth(); +} + +sal_Int32 SAL_CALL ODMAFilePicker::getAvailableWidth( ) + throw ( RuntimeException ) +{ + Reference< XFilePreview > xFilePreview( m_xSystemFilePicker, UNO_QUERY ); + return xFilePreview->getAvailableWidth(); +} + +sal_Int32 SAL_CALL ODMAFilePicker::getAvailableHeight( ) + throw ( RuntimeException ) +{ + Reference< XFilePreview > xFilePreview( m_xSystemFilePicker, UNO_QUERY ); + return xFilePreview->getAvailableHeight(); +} + +void SAL_CALL ODMAFilePicker::setImage( sal_Int16 aImageFormat, const Any& rImage ) + throw ( IllegalArgumentException, RuntimeException ) +{ + Reference< XFilePreview > xFilePreview( m_xSystemFilePicker, UNO_QUERY ); + xFilePreview->setImage( aImageFormat, rImage); +} + +sal_Bool SAL_CALL ODMAFilePicker::setShowState( sal_Bool bShowState ) + throw ( RuntimeException ) +{ + Reference< XFilePreview > xFilePreview( m_xSystemFilePicker, UNO_QUERY ); + return xFilePreview->setShowState( bShowState); +} + +sal_Bool SAL_CALL ODMAFilePicker::getShowState( ) + throw ( RuntimeException ) +{ + Reference< XFilePreview > xFilePreview( m_xSystemFilePicker, UNO_QUERY ); + return xFilePreview->getShowState(); +} + +// XFilterGroupManager functions + +void SAL_CALL ODMAFilePicker::appendFilterGroup( const ::rtl::OUString& sGroupTitle, + const Sequence< StringPair >& aFilters ) + throw ( IllegalArgumentException, RuntimeException ) +{ + Reference< XFilterGroupManager > xFilterGroupManager( m_xSystemFilePicker, UNO_QUERY ); + xFilterGroupManager->appendFilterGroup( sGroupTitle, aFilters ); +} + +// XFilterManager functions + +void SAL_CALL ODMAFilePicker::appendFilter( const rtl::OUString& aTitle, + const rtl::OUString& aFilter ) + throw( IllegalArgumentException, RuntimeException ) +{ + Reference< XFilterManager > xFilterManager( m_xSystemFilePicker, UNO_QUERY ); + xFilterManager->appendFilter( aTitle, aFilter ); +} + +void SAL_CALL ODMAFilePicker::setCurrentFilter( const rtl::OUString& aTitle ) + throw( IllegalArgumentException, RuntimeException ) +{ + Reference< XFilterManager > xFilterManager( m_xSystemFilePicker, UNO_QUERY ); + xFilterManager->setCurrentFilter( aTitle ); +} + +rtl::OUString SAL_CALL ODMAFilePicker::getCurrentFilter( ) + throw( RuntimeException ) +{ + Reference< XFilterManager > xFilterManager( m_xSystemFilePicker, UNO_QUERY ); + return xFilterManager->getCurrentFilter(); +} + +// XInitialization functions + +void SAL_CALL ODMAFilePicker::initialize( const Sequence< Any >& aArguments ) + throw ( Exception, RuntimeException ) +{ + if (aArguments.getLength( ) > 0) + { + Any aAny = aArguments[0]; + + if ( (aAny.getValueType() == ::getCppuType((sal_Int16*)0)) || + (aAny.getValueType() == ::getCppuType((sal_Int8*)0)) ) + { + sal_Int16 nTemplateId = -1; + aAny >>= nTemplateId; + + switch (nTemplateId) { + case TemplateDescription::FILEOPEN_SIMPLE: + case TemplateDescription::FILEOPEN_LINK_PREVIEW_IMAGE_TEMPLATE: + case TemplateDescription::FILEOPEN_PLAY: + case TemplateDescription::FILEOPEN_READONLY_VERSION: + case TemplateDescription::FILEOPEN_LINK_PREVIEW: + m_nDialogKind = OPEN; + break; + default: + m_nDialogKind = SAVE; + } + } + } + + Reference< XInitialization > xInitialization( m_xSystemFilePicker, UNO_QUERY ); + xInitialization->initialize( aArguments ); +} + +// XCancellable functions + +void SAL_CALL ODMAFilePicker::cancel( ) + throw( ::com::sun::star::uno::RuntimeException ) +{ + Reference< XCancellable > xCancellable( m_xSystemFilePicker, UNO_QUERY ); + xCancellable->cancel(); +} + +// XEventListener functions + +void SAL_CALL ODMAFilePicker::disposing( const ::com::sun::star::lang::EventObject& aEvent ) + throw( RuntimeException ) +{ + Reference< XEventListener > xEventListener( m_xSystemFilePicker, UNO_QUERY ); + xEventListener->disposing( aEvent ); +} + +// XServiceInfo functions + +rtl::OUString SAL_CALL ODMAFilePicker::getImplementationName( ) + throw( RuntimeException ) +{ + return impl_getStaticImplementationName(); +} + +sal_Bool SAL_CALL ODMAFilePicker::supportsService( const rtl::OUString& sServiceName ) + throw( RuntimeException ) +{ + Sequence< rtl::OUString > seqServiceNames = getSupportedServiceNames(); + const rtl::OUString* pArray = seqServiceNames.getConstArray(); + for ( sal_Int32 i = 0; i < seqServiceNames.getLength(); i++ ) + { + if ( sServiceName == pArray[i] ) + { + return sal_True ; + } + } + return sal_False ; +} + +Sequence< rtl::OUString > SAL_CALL ODMAFilePicker::getSupportedServiceNames( ) + throw( RuntimeException ) +{ + return impl_getStaticSupportedServiceNames(); +} + +Sequence< rtl::OUString > ODMAFilePicker::impl_getStaticSupportedServiceNames( ) +{ + Sequence< rtl::OUString > seqServiceNames( 2 ); + rtl::OUString* pArray = seqServiceNames.getArray(); + pArray[0] = rtl::OUString::createFromAscii( "com.sun.star.ui.dialogs.ODMAFilePicker" ); + + // Super-ugly, but check the function sal_Bool + // lcl_isSystemFilePicker( const Reference< XFilePicker >& ) in + // sfx2/source/dialog/filedlghelper.cxx + + // Lovely undocumented coupling right across abstraction layers, + // isn't it? If we don't claim to implement this "service" (which + // is not defined in any IDL file, btw), we get hangs. + + pArray[1] = rtl::OUString::createFromAscii( "com.sun.star.ui.dialogs.SystemFilePicker" ); + return seqServiceNames ; +} + +rtl::OUString ODMAFilePicker::impl_getStaticImplementationName( ) +{ + return rtl::OUString::createFromAscii( "com.sun.star.svtools.ODMAFilePicker" ); +} + +Reference< XInterface > SAL_CALL ODMAFilePicker::impl_createInstance( + const Reference< XComponentContext >& rxContext) + throw( Exception ) +{ + Reference< XMultiServiceFactory > xServiceManager (rxContext->getServiceManager(), UNO_QUERY_THROW); + return Reference< XInterface >( *new ODMAFilePicker( xServiceManager ) ); +} diff --git a/fpicker/source/odma/ODMAFilePicker.hxx b/fpicker/source/odma/ODMAFilePicker.hxx new file mode 100644 index 000000000000..42c644b0aeed --- /dev/null +++ b/fpicker/source/odma/ODMAFilePicker.hxx @@ -0,0 +1,213 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * Copyright 2010 Novell, Inc. + * + * 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. + * + ************************************************************************/ + +#ifndef INCLUDED_ODMA_FILEPICKER_HXX +#define INCLUDED_ODMA_FILEPICKER_HXX + +#include <cppuhelper/compbase9.hxx> + +#include <com/sun/star/ui/dialogs/XFilePickerControlAccess.hpp> +#include <com/sun/star/ui/dialogs/XFilePickerNotifier.hpp> +#include <com/sun/star/ui/dialogs/XFilePreview.hpp> +#include <com/sun/star/ui/dialogs/XFilterManager.hpp> +#include <com/sun/star/ui/dialogs/XFilterGroupManager.hpp> +#include <com/sun/star/ui/dialogs/XFilePickerListener.hpp> +#include <com/sun/star/util/XCancellable.hpp> +#include <com/sun/star/lang/XServiceInfo.hpp> +#include <com/sun/star/uno/XComponentContext.hpp> +#include <com/sun/star/lang/XInitialization.hpp> + +// class ODMAFilePicker --------------------------------------------------- + +class ODMAFilePicker : + public cppu::WeakComponentImplHelper9< + ::com::sun::star::ui::dialogs::XFilterManager, + ::com::sun::star::ui::dialogs::XFilterGroupManager, + ::com::sun::star::ui::dialogs::XFilePickerControlAccess, + ::com::sun::star::ui::dialogs::XFilePickerNotifier, + ::com::sun::star::ui::dialogs::XFilePreview, + ::com::sun::star::lang::XInitialization, + ::com::sun::star::util::XCancellable, + ::com::sun::star::lang::XEventListener, + ::com::sun::star::lang::XServiceInfo > +{ +private: + sal_Bool m_bUseDMS; + sal_Bool m_bMultiSelectionMode; + rtl::OUString m_aDefaultName; + rtl::OUString m_aDisplayDirectory; + ::com::sun::star::uno::Sequence< rtl::OUString > m_aFiles; + enum { OPEN, SAVE } m_nDialogKind; + + ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > m_xSystemFilePicker; + +protected: + ::osl::Mutex m_rbHelperMtx; + +public: + + ODMAFilePicker( const ::com::sun::star::uno::Reference < ::com::sun::star::lang::XMultiServiceFactory >& xFactory ); + + // XFilterManager functions + + virtual void SAL_CALL appendFilter( const ::rtl::OUString& aTitle, + const ::rtl::OUString& aFilter ) + throw( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException ); + + virtual void SAL_CALL setCurrentFilter( const ::rtl::OUString& aTitle ) + throw( ::com::sun::star::lang::IllegalArgumentException, + ::com::sun::star::uno::RuntimeException ); + + virtual ::rtl::OUString SAL_CALL getCurrentFilter( ) + throw( ::com::sun::star::uno::RuntimeException ); + + // XFilterGroupManager functions + + virtual void SAL_CALL appendFilterGroup( const ::rtl::OUString& sGroupTitle, + const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::StringPair >& aFilters ) + throw (::com::sun::star::lang::IllegalArgumentException, + ::com::sun::star::uno::RuntimeException ); + + // XFilePickerControlAccess functions + + virtual void SAL_CALL setValue( sal_Int16 nControlID, + sal_Int16 nControlAction, + const ::com::sun::star::uno::Any& aValue ) + throw( ::com::sun::star::uno::RuntimeException ); + + virtual ::com::sun::star::uno::Any SAL_CALL getValue( sal_Int16 nControlID, + sal_Int16 nControlAction ) + throw( ::com::sun::star::uno::RuntimeException ); + + virtual void SAL_CALL setLabel( sal_Int16 nControlID, + const ::rtl::OUString& aValue ) + throw ( ::com::sun::star::uno::RuntimeException ); + + virtual ::rtl::OUString SAL_CALL getLabel( sal_Int16 nControlID ) + throw ( ::com::sun::star::uno::RuntimeException ); + + virtual void SAL_CALL enableControl( sal_Int16 nControlID, + sal_Bool bEnable ) + throw( ::com::sun::star::uno::RuntimeException ); + + // XFilePicker functions + + virtual void SAL_CALL setMultiSelectionMode( sal_Bool bMode ) + throw( ::com::sun::star::uno::RuntimeException ); + + virtual void SAL_CALL setDefaultName( const ::rtl::OUString& aName ) + throw( ::com::sun::star::uno::RuntimeException ); + + virtual void SAL_CALL setDisplayDirectory( const ::rtl::OUString& aDirectory ) + throw( ::com::sun::star::lang::IllegalArgumentException, + ::com::sun::star::uno::RuntimeException ); + + virtual ::rtl::OUString SAL_CALL getDisplayDirectory( ) + throw( ::com::sun::star::uno::RuntimeException ); + + virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getFiles( ) + throw( ::com::sun::star::uno::RuntimeException ); + + // XExecutableDialog functions + + virtual void SAL_CALL setTitle( const ::rtl::OUString& aTitle ) + throw (::com::sun::star::uno::RuntimeException); + + virtual sal_Int16 SAL_CALL execute( ) + throw (::com::sun::star::uno::RuntimeException); + + // XFilePickerNotifier functions + + virtual void SAL_CALL addFilePickerListener( const ::com::sun::star::uno::Reference< ::com::sun::star::ui::dialogs::XFilePickerListener >& xListener ) + throw ( ::com::sun::star::uno::RuntimeException ); + + virtual void SAL_CALL removeFilePickerListener( const ::com::sun::star::uno::Reference< ::com::sun::star::ui::dialogs::XFilePickerListener >& xListener ) + throw ( ::com::sun::star::uno::RuntimeException ); + + // XFilePreview functions + + virtual ::com::sun::star::uno::Sequence< sal_Int16 > SAL_CALL getSupportedImageFormats( ) + throw ( ::com::sun::star::uno::RuntimeException ); + + virtual sal_Int32 SAL_CALL getTargetColorDepth( ) + throw ( ::com::sun::star::uno::RuntimeException ); + + virtual sal_Int32 SAL_CALL getAvailableWidth( ) + throw ( ::com::sun::star::uno::RuntimeException ); + + virtual sal_Int32 SAL_CALL getAvailableHeight( ) + throw ( ::com::sun::star::uno::RuntimeException ); + + virtual void SAL_CALL setImage( sal_Int16 aImageFormat, + const ::com::sun::star::uno::Any& aImage ) + throw ( ::com::sun::star::lang::IllegalArgumentException, + ::com::sun::star::uno::RuntimeException ); + + virtual sal_Bool SAL_CALL setShowState( sal_Bool bShowState ) + throw ( ::com::sun::star::uno::RuntimeException ); + + virtual sal_Bool SAL_CALL getShowState( ) + throw ( ::com::sun::star::uno::RuntimeException ); + + // XInitialization functions + + virtual void SAL_CALL initialize( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aArguments ) + throw ( ::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException ); + + // XCancellable functions + + virtual void SAL_CALL cancel( ) + throw( ::com::sun::star::uno::RuntimeException ); + + // XEventListener functions + + using cppu::WeakComponentImplHelperBase::disposing; + virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& aEvent ) + throw( ::com::sun::star::uno::RuntimeException ); + + // XServiceInfo functions + + virtual ::rtl::OUString SAL_CALL getImplementationName( ) + throw( ::com::sun::star::uno::RuntimeException ); + + virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& sServiceName ) + throw( ::com::sun::star::uno::RuntimeException ); + + virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) + throw( ::com::sun::star::uno::RuntimeException ); + + /* Helper for XServiceInfo */ + static ::com::sun::star::uno::Sequence< ::rtl::OUString > impl_getStaticSupportedServiceNames( ); + static ::rtl::OUString impl_getStaticImplementationName( ); + + /* Helper for registry */ + static ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL impl_createInstance ( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& rxContext ) + throw( ::com::sun::star::uno::Exception ); +}; + +#endif // INCLUDED_ODMA_FILEPICKER_HXX diff --git a/fpicker/source/odma/ODMAFolderPicker.cxx b/fpicker/source/odma/ODMAFolderPicker.cxx new file mode 100644 index 000000000000..d8304a27b6dc --- /dev/null +++ b/fpicker/source/odma/ODMAFolderPicker.cxx @@ -0,0 +1,182 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * Copyright 2010 Novell, Inc. + * + * 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" + +#include "ODMAFolderPicker.hxx" + +#define _SVSTDARR_STRINGSDTOR +#include "svl/svstdarr.hxx" + +#include <com/sun/star/container/XContentEnumerationAccess.hpp> +#include <com/sun/star/container/XSet.hpp> +#include <com/sun/star/uno/Any.hxx> +#include <cppuhelper/factory.hxx> +#include <com/sun/star/beans/XPropertySet.hpp> +#include <unotools/pathoptions.hxx> + +#ifndef ODMA_LIB_HXX +#include <tools/prewin.h> +#include <odma_lib.hxx> +#include <tools/postwin.h> +#endif + +// using ---------------------------------------------------------------- + +using namespace ::com::sun::star::beans; +using namespace ::com::sun::star::container; +using namespace ::com::sun::star::lang; +using namespace ::com::sun::star::uno; + +//------------------------------------------------------------------------------------ +// class ODMAFolderPicker +//------------------------------------------------------------------------------------ + +//------------------------------------------------------------------------------------ +ODMAFolderPicker::ODMAFolderPicker( const Reference < XMultiServiceFactory >& xFactory ) : + cppu::WeakComponentImplHelper2< + XFolderPicker, + XServiceInfo>( m_rbHelperMtx ), + m_bUseDMS( sal_False ) +{ + m_xInterface = xFactory->createInstance( + ::rtl::OUString::createFromAscii( "com.sun.star.ui.dialogs.SystemFolderPicker" ) ); +} + +// XExecutableDialog functions + +void SAL_CALL ODMAFolderPicker::setTitle( const ::rtl::OUString& _rTitle ) throw (RuntimeException) +{ + if (m_bUseDMS) + return; + + Reference< XExecutableDialog > xExecutableDialog( m_xInterface, UNO_QUERY ); + xExecutableDialog->setTitle( _rTitle); +} + +sal_Int16 SAL_CALL ODMAFolderPicker::execute( ) + throw (RuntimeException) +{ + if (m_bUseDMS) + throw new RuntimeException( ); + + Reference< XExecutableDialog > xExecutableDialog( m_xInterface, UNO_QUERY ); + return xExecutableDialog->execute(); +} + +// XFolderPicker functions + +void SAL_CALL ODMAFolderPicker::setDisplayDirectory( const ::rtl::OUString& aDirectory ) + throw( IllegalArgumentException, RuntimeException ) +{ + if (m_bUseDMS) + return; + + Reference< XFolderPicker > xFolderPicker( m_xInterface, UNO_QUERY ); + xFolderPicker->setDisplayDirectory( aDirectory ); +} + +::rtl::OUString SAL_CALL ODMAFolderPicker::getDisplayDirectory( ) + throw( RuntimeException ) +{ + if (m_bUseDMS) + return rtl::OUString(); + + Reference< XFolderPicker > xFolderPicker( m_xInterface, UNO_QUERY ); + return xFolderPicker->getDisplayDirectory(); +} + +::rtl::OUString SAL_CALL ODMAFolderPicker::getDirectory( ) + throw( RuntimeException ) +{ + if (m_bUseDMS) + return rtl::OUString(); + + Reference< XFolderPicker > xFolderPicker( m_xInterface, UNO_QUERY ); + return xFolderPicker->getDirectory(); +} + +void SAL_CALL ODMAFolderPicker::setDescription( const ::rtl::OUString& aDescription ) + throw( RuntimeException ) +{ + if (m_bUseDMS) + return; + + Reference< XFolderPicker > xFolderPicker( m_xInterface, UNO_QUERY ); + xFolderPicker->setDescription( aDescription ); +} + +// XServiceInfo + +::rtl::OUString SAL_CALL ODMAFolderPicker::getImplementationName( ) + throw( RuntimeException ) +{ + return impl_getStaticImplementationName(); +} + +sal_Bool SAL_CALL ODMAFolderPicker::supportsService( const ::rtl::OUString& sServiceName ) + throw( RuntimeException ) +{ + Sequence< ::rtl::OUString > seqServiceNames = getSupportedServiceNames(); + const ::rtl::OUString* pArray = seqServiceNames.getConstArray(); + for ( sal_Int32 i = 0; i < seqServiceNames.getLength(); i++ ) + { + if ( sServiceName == pArray[i] ) + { + return sal_True ; + } + } + return sal_False ; +} + +Sequence< ::rtl::OUString > SAL_CALL ODMAFolderPicker::getSupportedServiceNames() + throw( RuntimeException ) +{ + return impl_getStaticSupportedServiceNames(); +} + +Sequence< ::rtl::OUString > ODMAFolderPicker::impl_getStaticSupportedServiceNames( ) +{ + Sequence< ::rtl::OUString > seqServiceNames( 1 ); + ::rtl::OUString* pArray = seqServiceNames.getArray(); + pArray[0] = ::rtl::OUString::createFromAscii( "com.sun.star.ui.dialogs.ODMAFolderPicker" ); + return seqServiceNames ; +} + +::rtl::OUString ODMAFolderPicker::impl_getStaticImplementationName( ) +{ + return ::rtl::OUString::createFromAscii( "com.sun.star.svtools.ODMAFolderPicker" ); +} + +Reference< XInterface > SAL_CALL ODMAFolderPicker::impl_createInstance( const Reference< XComponentContext >& rxContext ) + throw( Exception ) +{ + Reference< XMultiServiceFactory > xServiceManager (rxContext->getServiceManager(), UNO_QUERY_THROW); + return Reference< XInterface >( *new ODMAFolderPicker( xServiceManager ) ); +} diff --git a/fpicker/source/odma/ODMAFolderPicker.hxx b/fpicker/source/odma/ODMAFolderPicker.hxx new file mode 100644 index 000000000000..87db25ddb9a1 --- /dev/null +++ b/fpicker/source/odma/ODMAFolderPicker.hxx @@ -0,0 +1,100 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * Copyright 2010 Novell, Inc. + * + * 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. + * + ************************************************************************/ + +#ifndef INCLUDED_ODMA_FOLDERPICKER_HXX +#define INCLUDED_ODMA_FOLDERPICKER_HXX + +#include <cppuhelper/compbase2.hxx> + +#include <com/sun/star/ui/dialogs/XFolderPicker.hpp> +#include <com/sun/star/lang/XServiceInfo.hpp> +#include <com/sun/star/lang/XSingleServiceFactory.hpp> +#include <com/sun/star/lang/DisposedException.hpp> +#include <com/sun/star/uno/XComponentContext.hpp> + +// class ODMAFolderPicker --------------------------------------------------- + +class ODMAFolderPicker : + public cppu::WeakComponentImplHelper2< + ::com::sun::star::ui::dialogs::XFolderPicker, + ::com::sun::star::lang::XServiceInfo > +{ +private: + sal_Bool m_bUseDMS; + +protected: + ::osl::Mutex m_rbHelperMtx; + + ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > m_xInterface; + +public: + ODMAFolderPicker( const ::com::sun::star::uno::Reference < ::com::sun::star::lang::XMultiServiceFactory >& xFactory ); + + // XFolderPicker functions + + virtual void SAL_CALL setDisplayDirectory( const ::rtl::OUString& aDirectory ) + throw( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException ); + + virtual ::rtl::OUString SAL_CALL getDisplayDirectory( ) + throw( ::com::sun::star::uno::RuntimeException ); + + virtual ::rtl::OUString SAL_CALL getDirectory( ) + throw( ::com::sun::star::uno::RuntimeException ); + + virtual void SAL_CALL setDescription( const ::rtl::OUString& aDescription ) + throw ( ::com::sun::star::uno::RuntimeException ); + + // XExecutableDialog functions + + virtual void SAL_CALL setTitle( const ::rtl::OUString& _rTitle ) + throw (::com::sun::star::uno::RuntimeException); + + virtual sal_Int16 SAL_CALL execute( ) + throw (::com::sun::star::uno::RuntimeException); + + // XServiceInfo functions + + virtual ::rtl::OUString SAL_CALL getImplementationName( ) + throw( ::com::sun::star::uno::RuntimeException ); + + virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& sServiceName ) + throw( ::com::sun::star::uno::RuntimeException ); + + virtual com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) + throw( ::com::sun::star::uno::RuntimeException ); + + /* Helper for XServiceInfo */ + static com::sun::star::uno::Sequence< ::rtl::OUString > impl_getStaticSupportedServiceNames( ); + static ::rtl::OUString impl_getStaticImplementationName( ); + + /* Helper for registry */ + static ::com::sun::star::uno::Reference< com::sun::star::uno::XInterface > SAL_CALL impl_createInstance ( const ::com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >& rxContext ) + throw( com::sun::star::uno::Exception ); +}; + +#endif // INCLUDED_ODMA_FOLDERPICKER_HXX diff --git a/fpicker/source/odma/exports.map b/fpicker/source/odma/exports.map new file mode 100644 index 000000000000..f4ed78b9e970 --- /dev/null +++ b/fpicker/source/odma/exports.map @@ -0,0 +1,8 @@ +UDK_3_0_0 { + global: + component_getImplementationEnvironment; + component_writeInfo; + component_getFactory; + local: + *; +}; diff --git a/fpicker/source/odma/fps_odma.cxx b/fpicker/source/odma/fps_odma.cxx new file mode 100644 index 000000000000..fefdcf07d3b0 --- /dev/null +++ b/fpicker/source/odma/fps_odma.cxx @@ -0,0 +1,78 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * Copyright 2010 Novell, Inc. + * + * 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" + +#include "sal/types.h" + +#include "cppuhelper/implementationentry.hxx" + +#include "ODMAFilePicker.hxx" +#include "ODMAFolderPicker.hxx" + +static cppu::ImplementationEntry g_entries[] = +{ + { + ODMAFilePicker::impl_createInstance, + ODMAFilePicker::impl_getStaticImplementationName, + ODMAFilePicker::impl_getStaticSupportedServiceNames, + cppu::createSingleComponentFactory, 0, 0 + }, + { + ODMAFolderPicker::impl_createInstance, + ODMAFolderPicker::impl_getStaticImplementationName, + ODMAFolderPicker::impl_getStaticSupportedServiceNames, + cppu::createSingleComponentFactory, 0, 0 + }, + { 0, 0, 0, 0, 0, 0 } +}; + +extern "C" +{ +SAL_DLLPUBLIC_EXPORT void SAL_CALL component_getImplementationEnvironment ( + const sal_Char ** ppEnvTypeName, uno_Environment ** /* ppEnv */) +{ + *ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME; +} + +SAL_DLLPUBLIC_EXPORT sal_Bool SAL_CALL component_writeInfo ( + void * pServiceManager, void * pRegistryKey) +{ + return cppu::component_writeInfoHelper ( + pServiceManager, pRegistryKey, g_entries); +} + +SAL_DLLPUBLIC_EXPORT void * SAL_CALL component_getFactory ( + const sal_Char * pImplementationName, void * pServiceManager, void * pRegistryKey) +{ + return cppu::component_getFactoryHelper ( + pImplementationName, pServiceManager, pRegistryKey, g_entries); +} + +} // extern "C" diff --git a/fpicker/source/odma/makefile.mk b/fpicker/source/odma/makefile.mk new file mode 100644 index 000000000000..3cc62d6f94c4 --- /dev/null +++ b/fpicker/source/odma/makefile.mk @@ -0,0 +1,72 @@ +#************************************************************************* +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# Copyright 2000, 2010 Oracle and/or its affiliates. +# Copyright 2010 Novell, Inc. +# +# 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. +# +#************************************************************************* + +PRJ=..$/.. + +PRJNAME=fpicker +TARGET=fps_odma +LIBTARGET=NO +ENABLE_EXCEPTIONS=TRUE +GEN_HID=TRUE + +# --- Settings ----------------------------------------------------- + +.INCLUDE : settings.mk +DLLPRE= + +# --- Files -------------------------------------------------------- + +SLOFILES=\ + $(SLO)$/ODMAFilePicker.obj \ + $(SLO)$/ODMAFolderPicker.obj \ + $(SLO)$/fps_odma.obj + +SHL1TARGET= $(TARGET).uno +SHL1IMPLIB= i$(TARGET) +SHL1OBJS= $(SLOFILES) +SHL1STDLIBS=\ + $(ODMA_LIB_LIB) \ + $(SVTOOLLIB) \ + $(TKLIB) \ + $(VCLLIB) \ + $(SVLLIB) \ + $(UNOTOOLSLIB) \ + $(TOOLSLIB) \ + $(UCBHELPERLIB) \ + $(COMPHELPERLIB) \ + $(CPPUHELPERLIB) \ + $(CPPULIB) \ + $(SALLIB) + +SHL1VERSIONMAP=exports.map +SHL1DEF= $(MISC)$/$(SHL1TARGET).def +DEF1NAME= $(SHL1TARGET) + +# --- Targets ------------------------------------------------------ + +.INCLUDE : target.mk |