diff options
Diffstat (limited to 'include/sfx2/sfxbasemodel.hxx')
-rw-r--r-- | include/sfx2/sfxbasemodel.hxx | 1554 |
1 files changed, 1554 insertions, 0 deletions
diff --git a/include/sfx2/sfxbasemodel.hxx b/include/sfx2/sfxbasemodel.hxx new file mode 100644 index 000000000000..524c86b0b99d --- /dev/null +++ b/include/sfx2/sfxbasemodel.hxx @@ -0,0 +1,1554 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#ifndef _SFX_SFXBASEMODEL_HXX_ +#define _SFX_SFXBASEMODEL_HXX_ + +#include "sal/config.h" +#include "sfx2/dllapi.h" +#include "sal/types.h" +#include <com/sun/star/lang/XTypeProvider.hpp> +#include <com/sun/star/frame/XModule.hpp> +#include <com/sun/star/frame/XTitle.hpp> +#include <com/sun/star/frame/XTitleChangeBroadcaster.hpp> +#include <com/sun/star/frame/XUntitledNumbers.hpp> +#include <com/sun/star/container/XChild.hpp> +#include <com/sun/star/container/XNameContainer.hpp> +#include <com/sun/star/container/XNameReplace.hpp> +#include <com/sun/star/frame/XController2.hpp> +#include <com/sun/star/document/XCmisDocument.hpp> +#include <com/sun/star/document/XDocumentPropertiesSupplier.hpp> +#include <com/sun/star/document/XDocumentRecovery.hpp> +#include <com/sun/star/document/XUndoManagerSupplier.hpp> +#include <com/sun/star/rdf/XDocumentMetadataAccess.hpp> +#include <com/sun/star/document/XEventBroadcaster.hpp> +#include <com/sun/star/document/XDocumentEventBroadcaster.hpp> +#include <com/sun/star/document/XEventListener.hpp> +#include <com/sun/star/document/XEventsSupplier.hpp> +#include <com/sun/star/document/XEmbeddedScripts.hpp> +#include <com/sun/star/document/EventObject.hpp> +#include <com/sun/star/document/XDocumentSubStorageSupplier.hpp> +#include <com/sun/star/document/XStorageBasedDocument.hpp> +#include <com/sun/star/document/XScriptInvocationContext.hpp> +#include <com/sun/star/lang/XEventListener.hpp> +#include <com/sun/star/lang/NotInitializedException.hpp> +#include <com/sun/star/lang/DisposedException.hpp> +#include <com/sun/star/frame/XModel2.hpp> +#include <com/sun/star/frame/DoubleInitializationException.hpp> +#include <com/sun/star/util/XModifiable2.hpp> +#include <com/sun/star/util/XModifyListener.hpp> +#include <com/sun/star/util/XCloseable.hpp> +#include <com/sun/star/util/XCloseBroadcaster.hpp> +#include <com/sun/star/util/XCloseListener.hpp> +#include <com/sun/star/util/CloseVetoException.hpp> +#include <com/sun/star/view/XPrintable.hpp> +#include <com/sun/star/view/XPrintJobBroadcaster.hpp> +#include <com/sun/star/frame/XStorable.hpp> +#include <com/sun/star/frame/XStorable2.hpp> +#include <com/sun/star/frame/XLoadable.hpp> +#include <com/sun/star/beans/PropertyValue.hpp> +#include <com/sun/star/lang/EventObject.hpp> +#include <com/sun/star/datatransfer/XTransferable.hpp> +#include <com/sun/star/script/provider/XScriptProviderSupplier.hpp> +#include <com/sun/star/ui/XUIConfigurationManager2.hpp> +#include <com/sun/star/ui/XUIConfigurationManagerSupplier.hpp> +#include <com/sun/star/embed/XVisualObject.hpp> +#include <com/sun/star/uno/Sequence.hxx> +#include <com/sun/star/uno/Reference.hxx> +#include <com/sun/star/uno/Any.hxx> +#include <cppuhelper/weak.hxx> +#include <cppuhelper/basemutex.hxx> +#include <cppuhelper/typeprovider.hxx> +#include <com/sun/star/script/XStarBasicAccess.hpp> +#include <osl/mutex.hxx> +#include <vcl/svapp.hxx> + +#include <com/sun/star/document/XViewDataSupplier.hpp> +#include <com/sun/star/lang/XUnoTunnel.hpp> +#include <com/sun/star/task/XInteractionHandler.hpp> + +#ifndef INCLUDED_COMPHELPER_IMPLBASE_VAR_HXX_32 +#define INCLUDED_COMPHELPER_IMPLBASE_VAR_HXX_32 +#define COMPHELPER_IMPLBASE_INTERFACE_NUMBER 32 +#include <comphelper/implbase_var.hxx> +#endif + +#include <svl/lstner.hxx> + +class SfxMedium; +class SfxPrinter; +class SfxViewShell; +class SfxObjectShell ; +class SfxEventHint; +class SfxViewFrame; +struct IMPL_SfxBaseModel_DataContainer ; // impl. struct to hold member of class SfxBaseModel + +namespace sfx { namespace intern { + class ViewCreationGuard; +} } +//________________________________________________________________________________________________________ +// class declarations +//________________________________________________________________________________________________________ + +/**_______________________________________________________________________________________________________ + @short - + + @descr - + + @implements XChild + XComponent + document::XDocumentPropertiesSupplier + rdf::XDocumentMetadataAccess + XEventListener + XModel + XModifiable2 + XPrintable + XStorable2 + document::XEventBroadcaster + document::XEventsSupplier + document::XEmbeddedScripts + document::XScriptInvocationContext + XCloseable + XCloseBroadcaster + + @base cppu::BaseMutex + SfxListener +*/ + +typedef ::comphelper::WeakImplHelper32 < css::container::XChild + , css::document::XDocumentPropertiesSupplier + , css::document::XCmisDocument + , css::rdf::XDocumentMetadataAccess + , css::document::XDocumentRecovery + , css::document::XUndoManagerSupplier + , css::document::XEventBroadcaster + , css::document::XDocumentEventBroadcaster + , css::lang::XEventListener + , css::document::XEventsSupplier + , css::document::XEmbeddedScripts + , css::document::XScriptInvocationContext + , css::frame::XModel2 + , css::util::XModifiable2 + , css::view::XPrintable + , css::view::XPrintJobBroadcaster + , css::frame::XStorable2 + , css::frame::XLoadable + , css::script::XStarBasicAccess + , css::document::XViewDataSupplier + , css::util::XCloseable // => css::util::XCloseBroadcaster + , css::datatransfer::XTransferable + , css::document::XDocumentSubStorageSupplier + , css::document::XStorageBasedDocument + , css::script::provider::XScriptProviderSupplier + , css::ui::XUIConfigurationManagerSupplier + , css::embed::XVisualObject + , css::lang::XUnoTunnel + , css::frame::XModule + , css::frame::XTitle + , css::frame::XTitleChangeBroadcaster + , css::frame::XUntitledNumbers + > SfxBaseModel_Base; + +class SFX2_DLLPUBLIC SfxBaseModel : protected ::cppu::BaseMutex + , public SfxBaseModel_Base + , public SfxListener +{ + +//________________________________________________________________________________________________________ +// public methods +//________________________________________________________________________________________________________ + +public: + + //____________________________________________________________________________________________________ + // constructor/destructor + //____________________________________________________________________________________________________ + + /**___________________________________________________________________________________________________ + @short - + @descr - + + @seealso - + + @param - + + @return - + + @onerror - + */ + + SfxBaseModel( SfxObjectShell *pObjektShell = NULL ) ; + + /**___________________________________________________________________________________________________ + @short - + @descr - + + @seealso - + + @param - + + @return - + + @onerror - + */ + + virtual ~SfxBaseModel() ; + + //____________________________________________________________________________________________________ + // XInterface + //____________________________________________________________________________________________________ + + /**___________________________________________________________________________________________________ + @short give answer, if interface is supported + @descr The interfaces are searched by type. + + @seealso XInterface + + @param "rType" is the type of searched interface. + + @return Any information about found interface + + @onerror A RuntimeException is thrown. + */ + + virtual css::uno::Any SAL_CALL queryInterface( const css::uno::Type& rType ) throw( css::uno::RuntimeException ) ; + + /**___________________________________________________________________________________________________ + @short increment refcount + @descr - + + @seealso XInterface + @seealso release() + + @param - + + @return - + + @onerror A RuntimeException is thrown. + */ + + virtual void SAL_CALL acquire() throw() ; + + /**___________________________________________________________________________________________________ + @short decrement refcount + @descr - + + @seealso XInterface + @seealso acquire() + + @param - + + @return - + + @onerror A RuntimeException is thrown. + */ + + virtual void SAL_CALL release() throw() ; + + //____________________________________________________________________________________________________ + // XTypeProvider + //____________________________________________________________________________________________________ + + /**___________________________________________________________________________________________________ + @short get information about supported interfaces + @descr - + + @seealso XTypeProvider + + @param - + + @return Sequence of types of all supported interfaces + + @onerror A RuntimeException is thrown. + */ + + virtual css::uno::Sequence< css::uno::Type > SAL_CALL getTypes() throw( css::uno::RuntimeException ) ; + + /**___________________________________________________________________________________________________ + @short get implementation id + @descr This ID is neccessary for UNO-caching. If there no ID, cache is disabled. + Another way, cache is enabled. + + @seealso XTypeProvider + + @param - + + @return ID as Sequence of byte + + @onerror A RuntimeException is thrown. + */ + + virtual css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw( css::uno::RuntimeException ) ; + + + //____________________________________________________________________________________________________ + // XStarBasicAccess + //____________________________________________________________________________________________________ + + /**___________________________________________________________________________________________________ + @seealso XStarBasicAccess + */ + virtual css::uno::Reference< css::container::XNameContainer > SAL_CALL getLibraryContainer() throw( css::uno::RuntimeException ); + + /**___________________________________________________________________________________________________ + @seealso XStarBasicAccess + */ + virtual void SAL_CALL createLibrary( const OUString& LibName, const OUString& Password, + const OUString& ExternalSourceURL, const OUString& LinkTargetURL ) + throw(css::container::ElementExistException, css::uno::RuntimeException); + + /**___________________________________________________________________________________________________ + @seealso XStarBasicAccess + */ + virtual void SAL_CALL addModule( const OUString& LibraryName, const OUString& ModuleName, + const OUString& Language, const OUString& Source ) + throw( css::container::NoSuchElementException, css::uno::RuntimeException); + + /**___________________________________________________________________________________________________ + @seealso XStarBasicAccess + */ + virtual void SAL_CALL addDialog( const OUString& LibraryName, const OUString& DialogName, + const css::uno::Sequence< sal_Int8 >& Data ) + throw(css::container::NoSuchElementException, css::uno::RuntimeException); + + + //____________________________________________________________________________________________________ + // XChild + //____________________________________________________________________________________________________ + + /**___________________________________________________________________________________________________ + @short - + @descr - + + @seealso - + + @param - + + @return - + + @onerror - + */ + + virtual css::uno::Reference< css::uno::XInterface > SAL_CALL getParent() throw( css::uno::RuntimeException ) ; + + /**___________________________________________________________________________________________________ + @short - + @descr - + + @seealso - + + @param - + + @return - + + @onerror - + */ + + virtual void SAL_CALL setParent( const css::uno::Reference< css::uno::XInterface >& xParent ) throw(css::lang::NoSupportException, + css::uno::RuntimeException); + + //____________________________________________________________________________________________________ + // XComponent + //____________________________________________________________________________________________________ + + /**___________________________________________________________________________________________________ + @short - + @descr - + + @seealso - + + @param - + + @return - + + @onerror - + */ + + virtual void SAL_CALL dispose() throw (css::uno::RuntimeException); + + /**___________________________________________________________________________________________________ + @short - + @descr - + + @seealso - + + @param - + + @return - + + @onerror - + */ + + virtual void SAL_CALL addEventListener(const css::uno::Reference< css::lang::XEventListener >& aListener) throw (css::uno::RuntimeException); + + /**___________________________________________________________________________________________________ + @short - + @descr - + + @seealso - + + @param - + + @return - + + @onerror - + */ + + virtual void SAL_CALL removeEventListener(const css::uno::Reference< css::lang::XEventListener >& aListener ) throw (css::uno::RuntimeException); + + // XDocumentPropertiesSupplier + virtual css::uno::Reference< css::document::XDocumentProperties > + SAL_CALL getDocumentProperties() + throw (css::uno::RuntimeException); + + //____________________________________________________________________________________________________ + // XEventListener + //____________________________________________________________________________________________________ + + /**___________________________________________________________________________________________________ + @short - + @descr - + + @seealso - + + @param - + + @return - + + @onerror - + */ + + virtual void SAL_CALL disposing( const css::lang::EventObject& aEvent ) throw (css::uno::RuntimeException); + + //____________________________________________________________________________________________________ + // XModel + //____________________________________________________________________________________________________ + + /**___________________________________________________________________________________________________ + @short - + @descr - + + @seealso - + + @param - + + @return - + + @onerror - + */ + + virtual sal_Bool SAL_CALL attachResource(const OUString& sURL, + const css::uno::Sequence< css::beans::PropertyValue >& aArgs) + throw (css::uno::RuntimeException); + + /**___________________________________________________________________________________________________ + @short - + @descr - + + @seealso - + + @param - + + @return - + + @onerror - + */ + + virtual OUString SAL_CALL getURL() throw (css::uno::RuntimeException); + + /**___________________________________________________________________________________________________ + @short - + @descr - + + @seealso - + + @param - + + @return - + + @onerror - + */ + + virtual css::uno::Sequence< css::beans::PropertyValue > SAL_CALL getArgs() throw (css::uno::RuntimeException); + + /**___________________________________________________________________________________________________ + @short - + @descr - + + @seealso - + + @param - + + @return - + + @onerror - + */ + + virtual void SAL_CALL connectController( const css::uno::Reference< css::frame::XController >& xController ) throw (css::uno::RuntimeException); + + /**___________________________________________________________________________________________________ + @short - + @descr - + + @seealso - + + @param - + + @return - + + @onerror - + */ + + virtual void SAL_CALL disconnectController( const css::uno::Reference< css::frame::XController >& xController ) throw (css::uno::RuntimeException); + + /**___________________________________________________________________________________________________ + @short - + @descr - + + @seealso - + + @param - + + @return - + + @onerror - + */ + + virtual void SAL_CALL lockControllers() throw (css::uno::RuntimeException); + + /**___________________________________________________________________________________________________ + @short - + @descr - + + @seealso - + + @param - + + @return - + + @onerror - + */ + + virtual void SAL_CALL unlockControllers() throw (css::uno::RuntimeException); + + /**___________________________________________________________________________________________________ + @short - + @descr - + + @seealso - + + @param - + + @return - + + @onerror - + */ + + virtual sal_Bool SAL_CALL hasControllersLocked() throw (css::uno::RuntimeException); + + /**___________________________________________________________________________________________________ + @short - + @descr - + + @seealso - + + @param - + + @return - + + @onerror - + */ + + virtual css::uno::Reference< css::frame::XController > SAL_CALL getCurrentController() throw (css::uno::RuntimeException); + + /**___________________________________________________________________________________________________ + @short - + @descr - + + @seealso - + + @param - + + @return - + + @onerror - + */ + + virtual void SAL_CALL setCurrentController( const css::uno::Reference< css::frame::XController >& xController ) + throw (css::container::NoSuchElementException, css::uno::RuntimeException); + + /**___________________________________________________________________________________________________ + @short - + @descr - + + @seealso - + + @param - + + @return - + + @onerror - + */ + + virtual css::uno::Reference< css::uno::XInterface > SAL_CALL getCurrentSelection() throw (css::uno::RuntimeException); + + //____________________________________________________________________________________________________ + // XModel2 + //____________________________________________________________________________________________________ + virtual css::uno::Reference< css::container::XEnumeration > SAL_CALL getControllers() + throw (css::uno::RuntimeException); + + virtual css::uno::Sequence< OUString > SAL_CALL getAvailableViewControllerNames() + throw (css::uno::RuntimeException); + + virtual css::uno::Reference< css::frame::XController2 > SAL_CALL createDefaultViewController(const css::uno::Reference< css::frame::XFrame >& Frame ) + throw (css::uno::RuntimeException , + css::lang::IllegalArgumentException, + css::uno::Exception ); + + virtual css::uno::Reference< css::frame::XController2 > SAL_CALL createViewController(const OUString& ViewName , + const css::uno::Sequence< css::beans::PropertyValue >& Arguments , + const css::uno::Reference< css::frame::XFrame >& Frame ) + throw (css::uno::RuntimeException , + css::lang::IllegalArgumentException, + css::uno::Exception ); + + //____________________________________________________________________________________________________ + // XModifiable2 + //____________________________________________________________________________________________________ + + virtual ::sal_Bool SAL_CALL disableSetModified( ) throw (css::uno::RuntimeException); + virtual ::sal_Bool SAL_CALL enableSetModified( ) throw (css::uno::RuntimeException); + virtual ::sal_Bool SAL_CALL isSetModifiedEnabled( ) throw (css::uno::RuntimeException); + + /**___________________________________________________________________________________________________ + @short - + @descr - + + @seealso - + + @param - + + @return - + + @onerror - + */ + + virtual sal_Bool SAL_CALL isModified() throw (css::uno::RuntimeException); + + /**___________________________________________________________________________________________________ + @short - + @descr - + + @seealso - + + @param - + + @return - + + @onerror - + */ + + virtual void SAL_CALL setModified( sal_Bool bModified ) + throw (css::beans::PropertyVetoException, css::uno::RuntimeException); + + /**___________________________________________________________________________________________________ + @short - + @descr - + + @seealso - + + @param - + + @return - + + @onerror - + */ + + virtual void SAL_CALL addModifyListener( const css::uno::Reference< css::util::XModifyListener >& xListener ) throw( css::uno::RuntimeException ) ; + + /**___________________________________________________________________________________________________ + @short - + @descr - + + @seealso - + + @param - + + @return - + + @onerror - + */ + + virtual void SAL_CALL removeModifyListener(const css::uno::Reference< css::util::XModifyListener > & xListener) throw( css::uno::RuntimeException ) ; + + //____________________________________________________________________________________________________ + // XCloseable + //____________________________________________________________________________________________________ + + virtual void SAL_CALL close( sal_Bool bDeliverOwnership ) throw (css::util::CloseVetoException, css::uno::RuntimeException); + + //____________________________________________________________________________________________________ + // XCloseBroadcaster + //____________________________________________________________________________________________________ + + virtual void SAL_CALL addCloseListener( const css::uno::Reference< css::util::XCloseListener >& xListener ) throw (css::uno::RuntimeException); + virtual void SAL_CALL removeCloseListener( const css::uno::Reference< css::util::XCloseListener >& xListener ) throw (css::uno::RuntimeException); + + //____________________________________________________________________________________________________ + // XPrintJobBroadcaster + //____________________________________________________________________________________________________ + + virtual void SAL_CALL addPrintJobListener( const css::uno::Reference< css::view::XPrintJobListener >& xListener ) throw (css::uno::RuntimeException); + virtual void SAL_CALL removePrintJobListener( const css::uno::Reference< css::view::XPrintJobListener >& xListener ) throw (css::uno::RuntimeException); + + //____________________________________________________________________________________________________ + // XPrintable + //____________________________________________________________________________________________________ + + /**___________________________________________________________________________________________________ + @short - + @descr - + + @seealso - + + @param - + + @return - + + @onerror - + */ + + virtual css::uno::Sequence< css::beans::PropertyValue > SAL_CALL getPrinter() throw (css::uno::RuntimeException); + + /**___________________________________________________________________________________________________ + @short - + @descr - + + @seealso - + + @param - + + @return - + + @onerror - + */ + + virtual void SAL_CALL setPrinter( const css::uno::Sequence< css::beans::PropertyValue >& seqPrinter ) + throw (css::lang::IllegalArgumentException, css::uno::RuntimeException); + /**___________________________________________________________________________________________________ + @short - + @descr - + + @seealso - + + @param - + + @return - + + @onerror - + */ + + virtual void SAL_CALL print( const css::uno::Sequence< css::beans::PropertyValue >& seqOptions ) + throw (css::lang::IllegalArgumentException, css::uno::RuntimeException); + + //____________________________________________________________________________________________________ + // XStorable2 + //____________________________________________________________________________________________________ + + virtual void SAL_CALL storeSelf( const css::uno::Sequence< css::beans::PropertyValue >& seqArguments ) + throw (css::lang::IllegalArgumentException, css::io::IOException, css::uno::RuntimeException); + + //____________________________________________________________________________________________________ + // XStorable + //____________________________________________________________________________________________________ + + /**___________________________________________________________________________________________________ + @short - + @descr - + + @seealso - + + @param - + + @return - + + @onerror - + */ + + virtual sal_Bool SAL_CALL hasLocation() throw (css::uno::RuntimeException); + + /**___________________________________________________________________________________________________ + @short - + @descr - + + @seealso - + + @param - + + @return - + + @onerror - + */ + + virtual OUString SAL_CALL getLocation() throw (css::uno::RuntimeException); + + /**___________________________________________________________________________________________________ + @short - + @descr - + + @seealso - + + @param - + + @return - + + @onerror - + */ + + virtual sal_Bool SAL_CALL isReadonly() throw (css::uno::RuntimeException); + + /**___________________________________________________________________________________________________ + @short - + @descr - + + @seealso - + + @param - + + @return - + + @onerror - + */ + + virtual void SAL_CALL store() throw (css::io::IOException, css::uno::RuntimeException); + + /**___________________________________________________________________________________________________ + @short - + @descr - + + @seealso - + + @param - + + @return - + + @onerror - + */ + + virtual void SAL_CALL storeAsURL( const OUString& sURL, + const css::uno::Sequence< css::beans::PropertyValue >& seqArguments ) + throw (css::io::IOException, css::uno::RuntimeException) ; + + /**___________________________________________________________________________________________________ + @short - + @descr - + + @seealso - + + @param - + + @return - + + @onerror - + */ + + virtual void SAL_CALL storeToURL( const OUString& sURL, + const css::uno::Sequence< css::beans::PropertyValue >& seqArguments ) + throw (css::io::IOException, css::uno::RuntimeException); + + + + //____________________________________________________________________________________________________ + // XLoadable + //____________________________________________________________________________________________________ + + /**___________________________________________________________________________________________________ + @short - + @descr - + + @seealso - + + @param - + + @return - + + @onerror - + */ + + virtual void SAL_CALL initNew() + throw (css::frame::DoubleInitializationException, + css::io::IOException, + css::uno::RuntimeException, + css::uno::Exception); + + /**___________________________________________________________________________________________________ + @short - + @descr - + + @seealso - + + @param - + + @return - + + @onerror - + */ + + virtual void SAL_CALL load( const css::uno::Sequence< css::beans::PropertyValue >& seqArguments ) + throw (css::frame::DoubleInitializationException, + css::io::IOException, + css::uno::RuntimeException, + css::uno::Exception); + + //____________________________________________________________________________________________________ + // XDocumentSubStorageSupplier + //____________________________________________________________________________________________________ + + virtual css::uno::Reference< css::embed::XStorage > SAL_CALL getDocumentSubStorage( const OUString& aStorageName, sal_Int32 nMode ) + throw ( css::uno::RuntimeException ); + + virtual css::uno::Sequence< OUString > SAL_CALL getDocumentSubStoragesNames() + throw ( css::io::IOException, css::uno::RuntimeException ); + + //____________________________________________________________________________________________________ + // XStorageBasedDocument + //____________________________________________________________________________________________________ + + virtual void SAL_CALL loadFromStorage( const css::uno::Reference< css::embed::XStorage >& xStorage, + const css::uno::Sequence< css::beans::PropertyValue >& aMediaDescriptor ) + throw ( css::lang::IllegalArgumentException, + com::sun::star::frame::DoubleInitializationException, + css::io::IOException, + css::uno::Exception, + css::uno::RuntimeException ); + + virtual void SAL_CALL storeToStorage( const css::uno::Reference< css::embed::XStorage >& xStorage, + const css::uno::Sequence< css::beans::PropertyValue >& aMediaDescriptor ) + throw ( css::lang::IllegalArgumentException, + css::io::IOException, + css::uno::Exception, + css::uno::RuntimeException ); + + virtual void SAL_CALL switchToStorage( const css::uno::Reference< css::embed::XStorage >& xStorage ) + throw ( css::lang::IllegalArgumentException, + css::io::IOException, + css::uno::Exception, + css::uno::RuntimeException ); + + virtual css::uno::Reference< css::embed::XStorage > SAL_CALL getDocumentStorage() + throw ( css::io::IOException, + css::uno::Exception, + css::uno::RuntimeException ); + + virtual void SAL_CALL addStorageChangeListener( + const css::uno::Reference< css::document::XStorageChangeListener >& xListener ) + throw ( css::uno::RuntimeException ); + + virtual void SAL_CALL removeStorageChangeListener( + const css::uno::Reference< css::document::XStorageChangeListener >& xListener ) + throw ( css::uno::RuntimeException ); + + //____________________________________________________________________________________________________ + // XVisualObject + //____________________________________________________________________________________________________ + + virtual void SAL_CALL setVisualAreaSize( sal_Int64 nAspect, const css::awt::Size& aSize ) + throw ( css::lang::IllegalArgumentException, + css::embed::WrongStateException, + css::uno::Exception, + css::uno::RuntimeException ); + + virtual css::awt::Size SAL_CALL getVisualAreaSize( sal_Int64 nAspect ) + throw ( css::lang::IllegalArgumentException, + css::embed::WrongStateException, + css::uno::Exception, + css::uno::RuntimeException ); + + virtual css::embed::VisualRepresentation SAL_CALL getPreferredVisualRepresentation( ::sal_Int64 nAspect ) + throw ( css::lang::IllegalArgumentException, + css::embed::WrongStateException, + css::uno::Exception, + css::uno::RuntimeException ); + + virtual sal_Int32 SAL_CALL getMapUnit( sal_Int64 nAspect ) + throw ( css::uno::Exception, + css::uno::RuntimeException ); + + //____________________________________________________________________________________________________ + // XScriptProviderSupplier + //____________________________________________________________________________________________________ + + virtual css::uno::Reference< css::script::provider::XScriptProvider > SAL_CALL getScriptProvider() throw ( css::uno::RuntimeException ); + + //____________________________________________________________________________________________________ + // XUIConfigurationManagerSupplier + //____________________________________________________________________________________________________ + virtual css::uno::Reference< css::ui::XUIConfigurationManager > SAL_CALL getUIConfigurationManager() throw ( css::uno::RuntimeException ); + + //____________________________________________________________________________________________________ + // XTransferable + //____________________________________________________________________________________________________ + + /**___________________________________________________________________________________________________ + @short - + @descr - + + @seealso - + + @param - + + @return - + + @onerror - + */ + + virtual css::uno::Any SAL_CALL getTransferData( const css::datatransfer::DataFlavor& aFlavor ) + throw (css::datatransfer::UnsupportedFlavorException, + css::io::IOException, + css::uno::RuntimeException); + + /**___________________________________________________________________________________________________ + @short - + @descr - + + @seealso - + + @param - + + @return - + + @onerror - + */ + + + virtual css::uno::Sequence< css::datatransfer::DataFlavor > SAL_CALL getTransferDataFlavors() + throw (css::uno::RuntimeException); + + /**___________________________________________________________________________________________________ + @short - + @descr - + + @seealso - + + @param - + + @return - + + @onerror - + */ + + virtual sal_Bool SAL_CALL isDataFlavorSupported( const css::datatransfer::DataFlavor& aFlavor ) + throw (css::uno::RuntimeException); + + + //____________________________________________________________________________________________________ + // XEventsSupplier + //____________________________________________________________________________________________________ + + /**___________________________________________________________________________________________________ + @short - + @descr - offers a list of event handlers which are be bound to events of + this object. + @seealso - + + @param - + + @return - an <type>Events</type> object. + + @onerror - + */ + + virtual css::uno::Reference< css::container::XNameReplace > SAL_CALL getEvents() throw( css::uno::RuntimeException ); + + + //____________________________________________________________________________________________________ + // XEmbeddedScripts + //____________________________________________________________________________________________________ + + virtual css::uno::Reference< css::script::XStorageBasedLibraryContainer > SAL_CALL getBasicLibraries() throw (css::uno::RuntimeException); + virtual css::uno::Reference< css::script::XStorageBasedLibraryContainer > SAL_CALL getDialogLibraries() throw (css::uno::RuntimeException); + virtual ::sal_Bool SAL_CALL getAllowMacroExecution() throw (css::uno::RuntimeException); + + //____________________________________________________________________________________________________ + // XScriptInvocationContext + //____________________________________________________________________________________________________ + + virtual css::uno::Reference< css::document::XEmbeddedScripts > SAL_CALL getScriptContainer() throw (css::uno::RuntimeException); + + //____________________________________________________________________________________________________ + // XEventBroadcaster + //____________________________________________________________________________________________________ + + /**___________________________________________________________________________________________________ + @short - + @descr - registers the given <type>XEventListener</type>. + + @seealso - + + @param - + + @return - + + @onerror - + */ + + virtual void SAL_CALL addEventListener( const css::uno::Reference< css::document::XEventListener >& xListener ) throw( css::uno::RuntimeException ); + + /**___________________________________________________________________________________________________ + @short - + @descr - unregisters the given <type>XEventListener</type>. + + @seealso - + + @param - + + @return - + + @onerror - + */ + + virtual void SAL_CALL removeEventListener( const css::uno::Reference< css::document::XEventListener >& xListener ) throw( css::uno::RuntimeException ); + + //____________________________________________________________________________________________________ + // XDocumentEventBroadcaster + //____________________________________________________________________________________________________ + + virtual void SAL_CALL addDocumentEventListener( const css::uno::Reference< css::document::XDocumentEventListener >& _Listener ) throw (css::uno::RuntimeException); + virtual void SAL_CALL removeDocumentEventListener( const css::uno::Reference< css::document::XDocumentEventListener >& _Listener ) throw (css::uno::RuntimeException); + virtual void SAL_CALL notifyDocumentEvent( const OUString& _EventName, const css::uno::Reference< css::frame::XController2 >& _ViewController, const css::uno::Any& _Supplement ) throw (css::lang::IllegalArgumentException, css::lang::NoSupportException, css::uno::RuntimeException); + + //____________________________________________________________________________________________________ + // XUnoTunnel + //____________________________________________________________________________________________________ + + virtual sal_Int64 SAL_CALL getSomething( const css::uno::Sequence< sal_Int8 >& aIdentifier ) throw(css::uno::RuntimeException); + + // css.frame.XModule + virtual void SAL_CALL setIdentifier(const OUString& sIdentifier) + throw (css::uno::RuntimeException); + + // css.frame.XModule + virtual OUString SAL_CALL getIdentifier() + throw (css::uno::RuntimeException); + + // css.frame.XTitle + virtual OUString SAL_CALL getTitle() + throw (css::uno::RuntimeException); + + // css.frame.XTitle + virtual void SAL_CALL setTitle( const OUString& sTitle ) + throw (css::uno::RuntimeException); + + // css.frame.XTitleChangeBroadcaster + virtual void SAL_CALL addTitleChangeListener( const css::uno::Reference< css::frame::XTitleChangeListener >& xListener ) + throw (css::uno::RuntimeException); + + // css.frame.XTitleChangeBroadcaster + virtual void SAL_CALL removeTitleChangeListener( const css::uno::Reference< css::frame::XTitleChangeListener >& xListener ) + throw (css::uno::RuntimeException); + + // css.frame.XUntitledNumbers + virtual ::sal_Int32 SAL_CALL leaseNumber( const css::uno::Reference< css::uno::XInterface >& xComponent ) + throw (css::lang::IllegalArgumentException, + css::uno::RuntimeException ); + + // css.frame.XUntitledNumbers + virtual void SAL_CALL releaseNumber( ::sal_Int32 nNumber ) + throw (css::lang::IllegalArgumentException, + css::uno::RuntimeException ); + + // css.frame.XUntitledNumbers + virtual void SAL_CALL releaseNumberForComponent( const css::uno::Reference< css::uno::XInterface >& xComponent ) + throw (css::lang::IllegalArgumentException, + css::uno::RuntimeException ); + + // css.frame.XUntitledNumbers + virtual OUString SAL_CALL getUntitledPrefix() + throw (css::uno::RuntimeException); + + // css.document.XDocumentRecovery + virtual ::sal_Bool SAL_CALL wasModifiedSinceLastSave() + throw ( css::uno::RuntimeException ); + virtual void SAL_CALL storeToRecoveryFile( const OUString& i_TargetLocation, const css::uno::Sequence< css::beans::PropertyValue >& i_MediaDescriptor ) + throw ( css::uno::RuntimeException, + css::io::IOException, + css::lang::WrappedTargetException ); + virtual void SAL_CALL recoverFromFile( const OUString& i_SourceLocation, const OUString& i_SalvagedFile, const css::uno::Sequence< css::beans::PropertyValue >& i_MediaDescriptor ) + throw ( css::uno::RuntimeException, + css::io::IOException, + css::lang::WrappedTargetException ); + + // css.document.XUndoManagerSupplier + virtual css::uno::Reference< css::document::XUndoManager > SAL_CALL getUndoManager( ) throw (css::uno::RuntimeException); + + //____________________________________________________________________________________________________ + + // css::rdf::XNode: + virtual OUString SAL_CALL getStringValue() + throw (css::uno::RuntimeException); + + // css::rdf::XURI: + virtual OUString SAL_CALL getNamespace() + throw (css::uno::RuntimeException); + virtual OUString SAL_CALL getLocalName() + throw (css::uno::RuntimeException); + + // css::rdf::XRepositorySupplier: + virtual css::uno::Reference< + css::rdf::XRepository > SAL_CALL getRDFRepository() + throw (css::uno::RuntimeException); + + // css::rdf::XDocumentMetadataAccess: + virtual css::uno::Reference< + css::rdf::XMetadatable > SAL_CALL + getElementByMetadataReference( + const css::beans::StringPair & i_rReference) + throw (css::uno::RuntimeException); + virtual css::uno::Reference< + css::rdf::XMetadatable > SAL_CALL + getElementByURI(const css::uno::Reference< + css::rdf::XURI > & i_xURI) + throw (css::uno::RuntimeException, + css::lang::IllegalArgumentException); + virtual css::uno::Sequence< css::uno::Reference< + css::rdf::XURI > > SAL_CALL getMetadataGraphsWithType( + const css::uno::Reference< + css::rdf::XURI > & i_xType) + throw (css::uno::RuntimeException, + css::lang::IllegalArgumentException); + virtual css::uno::Reference< + css::rdf::XURI> SAL_CALL + addMetadataFile(const OUString & i_rFileName, + const css::uno::Sequence< + css::uno::Reference< css::rdf::XURI > + > & i_rTypes) + throw (css::uno::RuntimeException, + css::lang::IllegalArgumentException, + css::container::ElementExistException); + virtual css::uno::Reference< + css::rdf::XURI> SAL_CALL + importMetadataFile(::sal_Int16 i_Format, + const css::uno::Reference< + css::io::XInputStream > & i_xInStream, + const OUString & i_rFileName, + const css::uno::Reference< + css::rdf::XURI > & i_xBaseURI, + const css::uno::Sequence< + css::uno::Reference< css::rdf::XURI > + > & i_rTypes) + throw (css::uno::RuntimeException, + css::lang::IllegalArgumentException, + css::datatransfer::UnsupportedFlavorException, + css::container::ElementExistException, + css::rdf::ParseException, + css::io::IOException); + virtual void SAL_CALL removeMetadataFile( + const css::uno::Reference< + css::rdf::XURI > & i_xGraphName) + throw (css::uno::RuntimeException, + css::lang::IllegalArgumentException, + css::container::NoSuchElementException); + virtual void SAL_CALL addContentOrStylesFile( + const OUString & i_rFileName) + throw (css::uno::RuntimeException, + css::lang::IllegalArgumentException, + css::container::ElementExistException); + virtual void SAL_CALL removeContentOrStylesFile( + const OUString & i_rFileName) + throw (css::uno::RuntimeException, + css::lang::IllegalArgumentException, + css::container::NoSuchElementException); + + virtual void SAL_CALL loadMetadataFromStorage( + const css::uno::Reference< + css::embed::XStorage > & i_xStorage, + const css::uno::Reference< + css::rdf::XURI > & i_xBaseURI, + const css::uno::Reference< + css::task::XInteractionHandler> & i_xHandler) + throw (css::uno::RuntimeException, + css::lang::IllegalArgumentException, + css::lang::WrappedTargetException); + virtual void SAL_CALL storeMetadataToStorage( + const css::uno::Reference< + css::embed::XStorage > & i_xStorage) + throw (css::uno::RuntimeException, + css::lang::IllegalArgumentException, + css::lang::WrappedTargetException); + virtual void SAL_CALL loadMetadataFromMedium( + const css::uno::Sequence< + css::beans::PropertyValue > & i_rMedium) + throw (css::uno::RuntimeException, + css::lang::IllegalArgumentException, + css::lang::WrappedTargetException); + virtual void SAL_CALL storeMetadataToMedium( + const css::uno::Sequence< + css::beans::PropertyValue > & i_rMedium) + throw (css::uno::RuntimeException, + css::lang::IllegalArgumentException, + css::lang::WrappedTargetException); + + // XCmisDocument + + virtual css::uno::Sequence< css::beans::PropertyValue > + SAL_CALL getCmisPropertiesValues() + throw (css::uno::RuntimeException); + virtual void SAL_CALL setCmisPropertiesValues( + const css::uno::Sequence< + css::beans::PropertyValue >& _cmispropertiesvalues ) + throw (css::uno::RuntimeException); + virtual css::uno::Sequence< css::beans::PropertyValue > + SAL_CALL getCmisPropertiesDisplayNames() + throw (css::uno::RuntimeException); + virtual void SAL_CALL setCmisPropertiesDisplayNames( + const css::uno::Sequence< + css::beans::PropertyValue >& _cmispropertiesdisplaynames ) + throw (css::uno::RuntimeException); + + virtual void SAL_CALL checkOut( ) throw ( css::uno::RuntimeException ); + virtual void SAL_CALL cancelCheckOut( ) throw ( css::uno::RuntimeException ); + virtual void SAL_CALL checkIn( sal_Bool bIsMajor, const OUString & rMessage ) + throw ( css::uno::RuntimeException ); + + virtual sal_Bool SAL_CALL isVersionable( ) throw ( css::uno::RuntimeException ); + virtual sal_Bool SAL_CALL canCheckOut( ) throw ( css::uno::RuntimeException ); + virtual sal_Bool SAL_CALL canCancelCheckOut( ) throw ( css::uno::RuntimeException ); + virtual sal_Bool SAL_CALL canCheckIn( ) throw ( css::uno::RuntimeException ); + + sal_Bool getBoolPropertyValue( const OUString& rName ) throw ( css::uno::RuntimeException ); + + //____________________________________________________________________________________________________ + // SfxListener + //____________________________________________________________________________________________________ + + /**___________________________________________________________________________________________________ + @short - + @descr - + + @seealso - + + @param - + + @return - + + @onerror - + */ + + void Notify( SfxBroadcaster& aBC , + const SfxHint& aHint ) ; + + //____________________________________________________________________________________________________ + // public IMPL? + //____________________________________________________________________________________________________ + + /**___________________________________________________________________________________________________ + @short - + @descr - + + @seealso - + + @param - + + @return - + + @onerror - + */ + + void changing() ; + + /**___________________________________________________________________________________________________ + @short - + @descr - + + @seealso - + + @param - + + @return - + + @onerror - + */ + + SfxObjectShell* GetObjectShell() const ; + + SAL_DLLPRIVATE sal_Bool impl_isDisposed() const ; + sal_Bool IsInitialized() const; + sal_Bool IsDisposed() const { return impl_isDisposed(); } + void MethodEntryCheck( const bool i_mustBeInitialized ) const; + ::osl::Mutex& getMutex() const { return m_aMutex; } + + css::uno::Reference < css::container::XIndexAccess > SAL_CALL getViewData() throw (css::uno::RuntimeException); + void SAL_CALL setViewData( const css::uno::Reference < css::container::XIndexAccess >& aData ) throw (css::uno::RuntimeException); + + /** calls all XEventListeners */ + void notifyEvent( const css::document::EventObject& aEvent ) const; + + /** returns true if someone added a XEventListener to this XEventBroadcaster */ + sal_Bool hasEventListeners() const; + +protected: + + /* returns a unique id for the model that is valid as long as the document + is loaded. The id is not saved across document close/reload. */ + OUString getRuntimeUID() const; + + /* returns true if the document signatures are valid, otherwise false */ + sal_Bool hasValidSignatures() const; + +//________________________________________________________________________________________________________ +// private methods +//________________________________________________________________________________________________________ + +private: + + /**___________________________________________________________________________________________________ + @short - + @descr - + + @seealso - + + @param - + + @return - + + @onerror - + */ + + css::uno::Reference< css::ui::XUIConfigurationManager2 > getUIConfigurationManager2() throw ( css::uno::RuntimeException ); + bool impl_getPrintHelper(); + SAL_DLLPRIVATE void ListenForStorage_Impl( const css::uno::Reference< css::embed::XStorage >& xStorage ); + SAL_DLLPRIVATE OUString GetMediumFilterName_Impl(); + + SAL_DLLPRIVATE void impl_store( const OUString& sURL, + const css::uno::Sequence< css::beans::PropertyValue >& seqArguments , + sal_Bool bSaveTo ) ; + + SAL_DLLPRIVATE void postEvent_Impl( const OUString& aName, const css::uno::Reference< css::frame::XController2 >& xController = css::uno::Reference< css::frame::XController2 >() ); + + SAL_DLLPRIVATE String getEventName_Impl( long nID ); + SAL_DLLPRIVATE bool QuerySaveSizeExceededModules( const com::sun::star::uno::Reference< com::sun::star::task::XInteractionHandler >& xHandler ); + + SAL_DLLPRIVATE css::uno::Reference< css::frame::XTitle > impl_getTitleHelper (); + SAL_DLLPRIVATE css::uno::Reference< css::frame::XUntitledNumbers > impl_getUntitledHelper (); + + SAL_DLLPRIVATE SfxViewFrame* FindOrCreateViewFrame_Impl( + const css::uno::Reference< css::frame::XFrame >& i_rFrame, + ::sfx::intern::ViewCreationGuard& i_rGuard + ) const; + + SAL_DLLPRIVATE void NotifyModifyListeners_Impl() const; + + SAL_DLLPRIVATE void loadCmisProperties(); + + SAL_DLLPRIVATE void handleLoadError( sal_uInt32 nError, SfxMedium* pMedium ); + +//________________________________________________________________________________________________________ +// private variables and methods +//________________________________________________________________________________________________________ + +private: + + IMPL_SfxBaseModel_DataContainer* m_pData ; + // cannot be held in m_pData, since it needs to be accessed in non-threadsafe context + const bool m_bSupportEmbeddedScripts; + const bool m_bSupportDocRecovery; + +} ; // class SfxBaseModel + +/** base class for sub components of an SfxBaseModel, which share their ref count and lifetime with the SfxBaseModel +*/ +class SFX2_DLLPUBLIC SfxModelSubComponent +{ +public: + /** checks whether the instance is alive, i.e. properly initialized, and not yet disposed + */ + void MethodEntryCheck() + { + m_rModel.MethodEntryCheck( true ); + } + + // called when the SfxBaseModel which the component is superordinate of is being disposed + virtual void disposing(); + +protected: + SfxModelSubComponent( SfxBaseModel& i_model ) + :m_rModel( i_model ) + { + } + virtual ~SfxModelSubComponent(); + + // helpers for implementing XInterface - delegates ref counting to the SfxBaseModel + void acquire() { m_rModel.acquire(); } + void release() { m_rModel.release(); } + + bool isDisposed() const { return m_rModel.IsDisposed(); } + +protected: + const SfxBaseModel& getBaseModel() const { return m_rModel; } + SfxBaseModel& getBaseModel() { return m_rModel; } + + ::osl::Mutex& getMutex() { return m_rModel.getMutex(); } + +private: + SfxBaseModel& m_rModel; +}; + +class SFX2_DLLPUBLIC SfxModelGuard +{ +public: + enum AllowedModelState + { + // not yet initialized + E_INITIALIZING, + // fully alive, i.e. initialized, and not yet disposed + E_FULLY_ALIVE + }; + + SfxModelGuard( SfxBaseModel& i_rModel, const AllowedModelState i_eState = E_FULLY_ALIVE ) + : m_aGuard() + { + i_rModel.MethodEntryCheck( i_eState != E_INITIALIZING ); + } + SfxModelGuard( SfxModelSubComponent& i_rSubComponent ) + :m_aGuard() + { + i_rSubComponent.MethodEntryCheck(); + } + ~SfxModelGuard() + { + } + + void reset() + { + m_aGuard.reset(); + } + + void clear() + { + m_aGuard.clear(); + } + +private: + SolarMutexResettableGuard m_aGuard; +}; + +#endif // _SFX_SFXBASEMODEL_HXX_ + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |