diff options
Diffstat (limited to 'include/sfx2/objsh.hxx')
-rw-r--r-- | include/sfx2/objsh.hxx | 824 |
1 files changed, 824 insertions, 0 deletions
diff --git a/include/sfx2/objsh.hxx b/include/sfx2/objsh.hxx new file mode 100644 index 000000000000..4c366a56710f --- /dev/null +++ b/include/sfx2/objsh.hxx @@ -0,0 +1,824 @@ +/* -*- 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_OBJSH_HXX +#define _SFX_OBJSH_HXX + +#include <config_features.h> + +#include "sal/config.h" + +#include "tools/solar.h" +#include "sfx2/dllapi.h" +#include "sal/types.h" +#include <com/sun/star/frame/XFrame.hpp> +#include <com/sun/star/uno/Reference.h> +#include <com/sun/star/uno/Sequence.hxx> +#include <com/sun/star/script/XLibraryContainer.hpp> +#include <com/sun/star/script/provider/XScriptProviderSupplier.hpp> +#include <com/sun/star/embed/XStorage.hpp> +#include <com/sun/star/beans/PropertyValue.hpp> +#include <com/sun/star/security/DocumentSignatureInformation.hpp> +#include <com/sun/star/security/XDocumentDigitalSignatures.hpp> +#include <com/sun/star/task/XInteractionHandler.hpp> +#include <com/sun/star/beans/XPropertySet.hpp> +#include <boost/shared_ptr.hpp> + +//________________________________________________________________________________________________________________ +// include something else +//________________________________________________________________________________________________________________ + +#include <vcl/timer.hxx> +#include <svl/poolitem.hxx> +#include <vcl/bitmap.hxx> +#include <sot/storage.hxx> +#include <rsc/rscsfx.hxx> + +#include <sfx2/XmlIdRegistry.hxx> +#include <sfx2/shell.hxx> +#include <comphelper/embeddedobjectcontainer.hxx> +#include <com/sun/star/frame/XModel.hpp> + +class SbxValue; +class SvxMacro; +class SbxArray; +class BasicManager; +class SfxMedium; +class SfxObjectFactory; +class SfxDocumentInfoDialog; +class SfxStyleSheetBasePool; +class INote; +class SfxStyleSheetPool; +class SfxFrame; +class SbMethod; +class StarBASIC; +class Printer; +class SvKeyValueIterator; +class SfxBaseModel; +class SfxModule; +class SvData; +class SfxProgress; +class GDIMetaFile; +class Bitmap; +class INetURLObject; +class IndexBitSet; +class JobSetup; +class Size; +class Point; + +// From embobj.hxx +#define ASPECT_CONTENT 1 +#define ASPECT_THUMBNAIL 2 /* 120 * 120, 6 Colors DIB in MetaFile */ +#define ASPECT_ICON 4 +#define ASPECT_DOCPRINT 8 +#define ASPECT_ALL (ASPECT_CONTENT | ASPECT_THUMBNAIL | ASPECT_ICON | ASPECT_DOCPRINT) + +// from pseudo.hxx; must be the same as in OLE2 +#define SVOBJ_MISCSTATUS_SERVERRESIZE 1 +#define SVOBJ_MISCSTATUS_NOTREPLACE 4 +#define SVOBJ_MISCSTATUS_CANTLINKINSIDE 16 +#define SVOBJ_MISCSTATUS_LINK 64 +#define SVOBJ_MISCSTATUS_INSIDEOUT 128 +#define SVOBJ_MISCSTATUS_ACTIVATEWHENVISIBLE 256 +#define SVOBJ_MISCSTATUS_NOTRESIZEABLE 512 +#define SVOBJ_MISCSTATUS_ALWAYSACTIVATE 1024 +#define SVOBJ_MISCSTATUS_RESIZEONPRINTERCHANGE 2048 +#define SVOBJ_MISCSTATUS_SPECIALOBJECT 4096 + + +namespace sfx2 +{ + class SvLinkSource; +} + +namespace com { namespace sun { namespace star { namespace datatransfer { class XTransferable; } } } } + +namespace com { namespace sun { namespace star { + namespace document { + class XDocumentProperties; + } + namespace lang { + class XComponent; + } +} } } + +typedef sal_uInt32 SfxObjectShellFlags; +#define SFXOBJECTSHELL_HASOPENDOC 0x01L +#define SFXOBJECTSHELL_DONTREPLACE 0x02L +#define SFXOBJECTSHELL_HASMENU 0x04L +#define SFXOBJECTSHELL_DONTLOADFILTERS 0x08L +#define SFXOBJECTSHELL_DONTCLOSE 0x10L +#define SFXOBJECTSHELL_NODOCINFO 0x20L +#define SFXOBJECTSHELL_STD_NORMAL ( SFXOBJECTSHELL_HASOPENDOC ) +#define SFXOBJECTSHELL_STD_SPECIAL ( SFXOBJECTSHELL_DONTLOADFILTERS ) +#define SFXOBJECTSHELL_UNDEFINED 0xf000000 + +//-------------------------------------------------------------------- + +#define SFX_TITLE_TITLE 0 +#define SFX_TITLE_FILENAME 1 +#define SFX_TITLE_FULLNAME 2 +#define SFX_TITLE_APINAME 3 +#define SFX_TITLE_DETECT 4 +#define SFX_TITLE_CAPTION 5 +#define SFX_TITLE_PICKLIST 6 +#define SFX_TITLE_HISTORY 7 +#define SFX_TITLE_MAXLEN 10 // this gives the limits on length + +#define SFX_LOADED_MAINDOCUMENT 1 +#define SFX_LOADED_IMAGES 2 +#define SFX_LOADED_ALL 3 + +//-------------------------------------------------------------------- + +#define HIDDENINFORMATION_RECORDEDCHANGES 0x0001 +#define HIDDENINFORMATION_NOTES 0x0002 +#define HIDDENINFORMATION_DOCUMENTVERSIONS 0x0004 + +enum HiddenWarningFact +{ + WhenSaving = 0, + WhenPrinting, + WhenSigning, + WhenCreatingPDF +}; + +//-------------------------------------------------------------------- + +enum SfxObjectCreateMode +{ + SFX_CREATE_MODE_EMBEDDED, + SFX_CREATE_MODE_STANDARD, + SFX_CREATE_MODE_PREVIEW, + SFX_CREATE_MODE_ORGANIZER, + SFX_CREATE_MODE_PLUGIN, + SFX_CREATE_MODE_INTERNAL +}; + +/*==================================================================== + +The class SfxObjectShell is the base class for SFx-objects, ie documents +and parts of documents that can be integrated as separate objects +into foreign objects. + +----------------------------------------------------------------------*/ + +class SfxToolBoxConfig; +struct TransferableObjectDescriptor; + +class SFX2_DLLPUBLIC SfxObjectShell : + public SfxShell, virtual public SotObject, + public ::comphelper::IEmbeddedHelper, public ::sfx2::IXmlIdRegistrySupplier +{ +friend struct ModifyBlocker_Impl; +friend class SfxObjectShellLock; + +private: + struct SfxObjectShell_Impl* pImp; // internal data + + SfxMedium * pMedium; // Description of the file for example + // storage that contains the object + SfxStyleSheetBasePool* pStyleSheetPool; // StyleSheets + SfxObjectCreateMode eCreateMode; // Purpose of the object + sal_Bool bHasName :1, // sal_True := existing object, + // sal_False := new object + bIsTmp :1; // temporary Storage + +private: + SAL_DLLPRIVATE void UpdateTime_Impl(const ::com::sun::star::uno::Reference< + ::com::sun::star::document::XDocumentProperties> & i_xDocProps); + + SAL_DLLPRIVATE sal_Bool SaveTo_Impl(SfxMedium &rMedium, const SfxItemSet* pSet ); + +protected: + SfxObjectShell(SfxObjectCreateMode); + SfxObjectShell( const sal_uInt64 i_nCreationFlags ); // see sfxmodelfactory.hxx + virtual ~SfxObjectShell(); + + virtual void ModifyChanged(); + virtual sal_Bool Close(); + + /** declares the document to have capabilities to contain basic/dialog libraries + */ + void SetHasNoBasic(); + + /// template method, called by FlushDocInfo; this implementation is empty + virtual void DoFlushDocInfo(); + + // helper method + void AddToRecentlyUsedList(); + +public: + TYPEINFO(); + SFX_DECL_INTERFACE(SFX_INTERFACE_SFXDOCSH) + + static const com::sun::star::uno::Sequence<sal_Int8>& getUnoTunnelId(); + /* Stampit disable/enable cancel button for print jobs + default = true = enable! */ + void Stamp_SetPrintCancelState(sal_Bool bState); + sal_Bool Stamp_GetPrintCancelState() const; + + using SotObject::GetInterface; + + // Document-Shell Iterator + static SfxObjectShell* GetFirst( const TypeId* pType = 0, + sal_Bool bOnlyVisible = sal_True ); + static SfxObjectShell* GetNext( const SfxObjectShell& rPrev, + const TypeId* pType = 0, + sal_Bool bOnlyVisible = sal_True ); + static SfxObjectShell* Current(); + static ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > + GetCurrentComponent(); + static void SetCurrentComponent( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxComponent ); + + virtual void Invalidate(sal_uInt16 nId = 0); + + SfxObjectShellFlags GetFlags( ) const ; + + SfxModule* GetModule() const; + + virtual SfxObjectFactory& GetFactory() const=0; + SfxMedium * GetMedium() const { return pMedium; } + void ForgetMedium() { pMedium = 0; } + ::com::sun::star::uno::Reference< + ::com::sun::star::document::XDocumentProperties > getDocProperties(); + void UpdateDocInfoForSave( ); + void FlushDocInfo(); + sal_Bool HasName() const { return bHasName; } + virtual String GetAPIName() const; + void SetReadOnly(); + sal_Bool IsReadOnly() const; + sal_Bool IsReadOnlyMedium() const; + bool IsOriginallyReadOnlyMedium() const; + void SetReadOnlyUI( sal_Bool bReadOnly = sal_True ); + sal_Bool IsReadOnlyUI() const; + void SetNoName(); + sal_Bool IsInModalMode() const; + sal_Bool IsInPrepareClose() const; + virtual sal_Bool AcceptStateUpdate() const; + sal_Bool IsHelpDocument() const; + +#if HAVE_FEATURE_MULTIUSER_ENVIRONMENT + sal_Bool IsDocShared() const; + OUString GetSharedFileURL() const; + sal_Bool SwitchToShared( sal_Bool bShared, sal_Bool bSave ); + SAL_DLLPRIVATE void FreeSharedFile(); + SAL_DLLPRIVATE void FreeSharedFile( const OUString& aTempFileURL ); + SAL_DLLPRIVATE void DoNotCleanShareControlFile(); + void SetSharedXMLFlag( sal_Bool bFlag ) const; + sal_Bool HasSharedXMLFlagSet() const; +#else + sal_Bool IsDocShared() const + { return sal_False; }; + OUString GetSharedFileURL() const + { return OUString(); }; +#endif + + SAL_DLLPRIVATE void SetModalMode_Impl(sal_Bool bModal=sal_True); + SAL_DLLPRIVATE void SetMacroMode_Impl(sal_Bool bModal=sal_True); + + void ResetError(); + sal_uInt32 GetError() const; + sal_uInt32 GetErrorCode() const; + void SetError( sal_uInt32 rErr, const OUString& aLogMessage ); + + void AddLog( const OUString& aMessage ); + void StoreLog(); + + /** + * Initialize bare minimum just enough for unit test runs. + * + * @return true if the initialization is successful, false otherwise. + */ + bool DoInitUnitTest(); + sal_Bool DoInitNew( SfxMedium* pMedium=0 ); + sal_Bool DoLoad( SfxMedium* pMedium ); + bool DoLoadExternal( SfxMedium* pMed ); + sal_Bool DoSave(); + sal_Bool DoSaveAs( SfxMedium &rNewStor ); + sal_Bool DoSaveObjectAs( SfxMedium &rNewStor, sal_Bool bCommit ); + + // TODO/LATER: currently only overloaded in Calc, should be made non-virtual + virtual sal_Bool DoSaveCompleted( SfxMedium* pNewStor=0 ); + + virtual sal_Bool LoadOwnFormat( SfxMedium& pMedium ); + virtual sal_Bool SaveAsOwnFormat( SfxMedium& pMedium ); + virtual sal_Bool ConvertFrom( SfxMedium &rMedium ); + virtual sal_Bool ConvertTo( SfxMedium &rMedium ); + virtual sal_Bool InitNew( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xStorage ); + virtual sal_Bool Load( SfxMedium &rMedium ); + virtual sal_Bool LoadFrom( SfxMedium& rMedium ); + virtual sal_Bool Save(); + virtual sal_Bool SaveAs( SfxMedium &rMedium ); + virtual sal_Bool SaveCompleted( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xStorage ); + virtual sal_Bool SwitchPersistance( + const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xStorage ); + virtual void UpdateLinks(); + virtual bool LoadExternal( SfxMedium& rMedium ); + /** + * Called when the Options dialog is dismissed with the OK button, to + * handle potentially conflicting option settings. + */ + virtual void CheckConfigOptions(); + sal_Bool IsConfigOptionsChecked() const; + void SetConfigOptionsChecked( sal_Bool bChecked ); + + // called for a few slots like SID_SAVE[AS]DOC, SID_PRINTDOC[DIRECT], derived classes may abort the action + virtual sal_Bool QuerySlotExecutable( sal_uInt16 nSlotId ); + + sal_Bool SaveChildren(sal_Bool bObjectsOnly=sal_False); + sal_Bool SaveAsChildren( SfxMedium &rMedium ); + sal_Bool SwitchChildrenPersistance( + const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xStorage, + sal_Bool bForceNonModified = sal_False ); + sal_Bool SaveCompletedChildren( sal_Bool bSuccess ); + + virtual sal_Bool ImportFrom( SfxMedium &rMedium, bool bInsert ); + sal_Bool ExportTo( SfxMedium &rMedium ); + + // xmlsec05, check with SFX team + sal_uInt16 GetDocumentSignatureState(); + void SignDocumentContent(); + sal_uInt16 GetScriptingSignatureState(); + void SignScriptingContent(); + + virtual SfxDocumentInfoDialog* CreateDocumentInfoDialog( + Window *pParent, const SfxItemSet& ); + + ErrCode CallBasic( const String& rMacro, const String& rBasicName, + SbxArray* pArgs = 0, SbxValue* pRet = 0 ); + + ErrCode CallXScript( + const String& rScriptURL, + const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aParams, + ::com::sun::star::uno::Any& aRet, + ::com::sun::star::uno::Sequence< sal_Int16 >& aOutParamIndex, + ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aOutParam, + bool bRaiseError = true, + const ::com::sun::star::uno::Any* aCaller = 0 ); + + static ErrCode CallXScript( + const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxScriptContext, + const OUString& rScriptURL, + const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aParams, + ::com::sun::star::uno::Any& aRet, + ::com::sun::star::uno::Sequence< sal_Int16 >& aOutParamIndex, + ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aOutParam, + bool bRaiseError = true, + const ::com::sun::star::uno::Any* aCaller = 0 + ); + + /** adjusts the internal macro mode, according to the current security settings + + Finally, the macro mode is either NEVER_EXECUTE or ALWAYS_EXECUTE_NO_WARN. + + @return + whether macros from this document should be executed + */ + bool AdjustMacroMode( const String& rScriptType, bool _bSuppressUI = false ); + + SvKeyValueIterator* GetHeaderAttributes(); + void ClearHeaderAttributesForSourceViewHack(); + void SetHeaderAttributesForSourceViewHack(); + + sal_Bool IsTemplate() const; + + sal_Bool IsQueryLoadTemplate() const; + sal_Bool IsUseUserData() const; + sal_Bool IsLoadReadonly() const; + sal_Bool IsSaveVersionOnClose() const; + void SetQueryLoadTemplate( sal_Bool b ); + void SetUseUserData( sal_Bool bNew ); + void SetLoadReadonly( sal_Bool _bReadonly ); + void SetSaveVersionOnClose( sal_Bool bSet ); + void ResetFromTemplate( const String& rTemplateName, const String& rFileName ); + + // TODO/LATER: the following two methods should be replaced by Get/SetModifPasswordInfo in future + sal_uInt32 GetModifyPasswordHash() const; + sal_Bool SetModifyPasswordHash( sal_uInt32 nHash ); + + ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > GetModifyPasswordInfo() const; + sal_Bool SetModifyPasswordInfo( const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& aInfo ); + + static sal_uInt32 HandleFilter( SfxMedium* pMedium, SfxObjectShell* pDoc ); + + virtual void ViewAssigned(); + virtual sal_uInt16 PrepareClose( sal_Bool bUI = sal_True, sal_Bool bForBrowsing = sal_False ); + virtual sal_Bool IsInformationLost(); + virtual sal_uInt16 GetHiddenInformationState( sal_uInt16 nStates ); + sal_Int16 QueryHiddenInformation( HiddenWarningFact eFact, Window* pParent ); + virtual sal_Bool HasSecurityOptOpenReadOnly() const; + sal_Bool IsSecurityOptOpenReadOnly() const; + void SetSecurityOptOpenReadOnly( sal_Bool bOpenReadOnly = sal_True ); + + virtual Size GetFirstPageSize(); + virtual sal_Bool DoClose(); + virtual void PrepareReload(); + virtual ::boost::shared_ptr<GDIMetaFile> GetPreviewMetaFile( sal_Bool bFullContent = sal_False ) const; + virtual void CancelTransfers(); + + sal_Bool GenerateAndStoreThumbnail( + sal_Bool bEncrypted, + sal_Bool bSigned, + sal_Bool bIsTemplate, + const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xStor ); + + sal_Bool WriteThumbnail( + sal_Bool bEncrypted, + sal_Bool bSigned, + sal_Bool bIsTemplate, + const ::com::sun::star::uno::Reference< ::com::sun::star::io::XStream >& xStream ); + + // Transfer IFace + void AbortImport(); + sal_Bool IsAbortingImport() const; + sal_Bool IsReloading() const; + void FinishedLoading( sal_uInt16 nWhich = SFX_LOADED_ALL ); + void TemplateDisconnectionAfterLoad(); + sal_Bool IsLoading() const; + sal_Bool IsLoadingFinished() const; + void SetAutoLoad( const INetURLObject&, sal_uInt32 nTime, sal_Bool bReload = sal_True ); + sal_Bool IsAutoLoadLocked() const; + void NotifyReloadAvailable(); + + // Misc + sal_Bool IsPreview() const; + SfxObjectCreateMode GetCreateMode() const { return eCreateMode; } + SfxProgress* GetProgress() const; + void SetWaitCursor( sal_Bool bSet ) const; + + // Naming Interface + void SetTitle( const String& rTitle ); + String GetTitle( sal_uInt16 nMaxLen = 0 ) const; + void InvalidateName(); // Re-set to unnamed + + // DDE-Interface + virtual long DdeExecute( const String& rCmd ); + virtual long DdeGetData( const String& rItem, + const String& rMimeType, + ::com::sun::star::uno::Any & rValue ); + virtual long DdeSetData( const String& rItem, + const String& rMimeType, + const ::com::sun::star::uno::Any & rValue ); + virtual ::sfx2::SvLinkSource* DdeCreateLinkSource( const String& rItem ); + virtual void ReconnectDdeLink(SfxObjectShell& rServer); + + static void ReconnectDdeLinks(SfxObjectShell& rServer); + + // Contents + virtual SfxStyleSheetBasePool* GetStyleSheetPool(); + void SetStyleSheetPool(SfxStyleSheetBasePool *pBasePool ) { + pStyleSheetPool = pBasePool; } + + // Determine the position of the "Automatic" filter in the stylist + void SetAutoStyleFilterIndex(sal_uInt16 nSet); + sal_uInt16 GetAutoStyleFilterIndex(); + virtual sal_Bool HasBasic() const; + BasicManager* GetBasicManager() const; + com::sun::star::uno::Reference< com::sun::star::script::XLibraryContainer > + GetBasicContainer(); + com::sun::star::uno::Reference< com::sun::star::script::XLibraryContainer > + GetDialogContainer(); + StarBASIC* GetBasic() const; + + // Interface Document content, Organizer +#define INDEX_IGNORE USHRT_MAX + +#define CONTENT_STYLE 0 +#define CONTENT_CONFIG 1 +#define CONTENT_MACRO 2 +#define DEF_CONTENT_COUNT 1 + + + virtual void SetOrganizerSearchMask( + SfxStyleSheetBasePool* ) const; + + virtual sal_Bool CanHaveChildren( + sal_uInt16 nIdx1, + sal_uInt16 nIdx2 = INDEX_IGNORE + ); + + virtual void GetContent( String &, + Bitmap &rClosedBitmap, + Bitmap &rOpenedBitmap, + sal_Bool &bCanDelete, + sal_uInt16 nPos, + sal_uInt16 nIdx1 + ); + + virtual Bitmap GetStyleFamilyBitmap(SfxStyleFamily eFamily); + + virtual sal_Bool Insert( SfxObjectShell &rSource, + sal_uInt16 nSourceIdx1, + sal_uInt16 nSourceIdx2, + sal_uInt16 nSourceIdx3, + sal_uInt16 &nIdx1, + sal_uInt16 &nIdx2, + sal_uInt16 &nIdx3, + sal_uInt16 &rIdxDeleted); + + virtual sal_Bool Remove( sal_uInt16 nIdx1, + sal_uInt16 nIdx2 = INDEX_IGNORE, + sal_uInt16 nIdx3 = INDEX_IGNORE); + + virtual void LoadStyles( SfxObjectShell &rSource ); + void ReadNote( INote * ); + void UpdateNote( INote * ); + + // Documents, for which to format the view size + + virtual SfxObjectShell* GetObjectShell(); + + virtual SfxFrame* GetSmartSelf( SfxFrame* pSelf, SfxMedium& rMedium ); + + ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > + GetModel() const; + // Only temporarily for the applications! + void SetBaseModel( SfxBaseModel* pModel ); + ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > GetBaseModel() const; + // Only temporarily for the applications! + + virtual ::com::sun::star::uno::Sequence< OUString > GetEventNames(); + + Window* GetDialogParent( SfxMedium* pMedium=0 ); + static SfxObjectShell* CreateObject( const String& rServiceName, SfxObjectCreateMode = SFX_CREATE_MODE_STANDARD ); + static SfxObjectShell* CreateObjectByFactoryName( const String& rURL, SfxObjectCreateMode = SFX_CREATE_MODE_STANDARD ); + static ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent > + CreateAndLoadComponent( const SfxItemSet& rSet, SfxFrame* pFrame = NULL ); + static SfxObjectShell* GetShellFromComponent( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >& xComp ); + static String GetServiceNameFromFactory( const String& rFact ); + sal_Bool IsInPlaceActive(); + sal_Bool IsUIActive(); + virtual void InPlaceActivate( sal_Bool ); + virtual void UIActivate( sal_Bool ); + + static sal_Bool CopyStoragesOfUnknownMediaType( + const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xSource, + const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xTarget ); + + // ==== The functions from SvPersist + void EnableSetModified( sal_Bool bEnable = sal_True ); + sal_Bool IsEnableSetModified() const; + virtual void SetModified( sal_Bool bModified = sal_True ); + sal_Bool IsModified(); + + /** + * @param bChart true if the file is a chart doc and FillClass should not be called + */ + void SetupStorage( + const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xStorage, + sal_Int32 nVersion, sal_Bool bTemplate, bool bChart = false ) const; + + ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage > GetStorage(); + + SvGlobalName GetClassName() const; + + // comphelper::IEmbeddedHelper + virtual ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler > getInteractionHandler() const; + virtual com::sun::star::uno::Reference < com::sun::star::embed::XStorage > getStorage() const + { + return const_cast<SfxObjectShell*>(this)->GetStorage(); + } + virtual comphelper::EmbeddedObjectContainer& getEmbeddedObjectContainer() const + { + return GetEmbeddedObjectContainer(); + } + bool isEnableSetModified() const + { + return IsEnableSetModified(); + } + comphelper::EmbeddedObjectContainer& GetEmbeddedObjectContainer() const; + void ClearEmbeddedObjects(); + + // ==== The functions from SvEmbeddedObject + virtual Printer * GetDocumentPrinter(); + virtual OutputDevice* GetDocumentRefDev(); + virtual void OnDocumentPrinterChanged( Printer * pNewPrinter ); + virtual Rectangle GetVisArea( sal_uInt16 nAspect ) const; + virtual void SetVisArea( const Rectangle & rVisArea ); + const Rectangle & GetVisArea() const; + void SetVisAreaSize( const Size & rVisSize ); + virtual sal_uIntPtr GetMiscStatus() const; + + MapUnit GetMapUnit() const; + void SetMapUnit( MapUnit nMUnit ); + + void FillTransferableObjectDescriptor( TransferableObjectDescriptor& rDesc ) const; + void DoDraw( OutputDevice *, const Point & rObjPos, + const Size & rSize, + const JobSetup & rSetup, + sal_uInt16 nAspect = ASPECT_CONTENT ); + virtual void Draw( OutputDevice *, const JobSetup & rSetup, + sal_uInt16 nAspect = ASPECT_CONTENT ) = 0; + + + virtual void FillClass( SvGlobalName * pClassName, + sal_uInt32 * pFormat, + OUString * pAppName, + OUString * pFullTypeName, + OUString * pShortTypeName, + sal_Int32 nVersion, + sal_Bool bTemplate = sal_False) const = 0; + + // change recording and respective passwword protection for Writer and Calc + // slots available for Writer: FN_REDLINE_ON, FN_REDLINE_ON + // slots used for Calc: FID_CHG_RECORD, SID_CHG_PROTECT + virtual bool IsChangeRecording() const; + virtual bool HasChangeRecordProtection() const; + virtual void SetChangeRecording( bool bActivate ); + virtual bool SetProtectionPassword( const String &rPassword ); + virtual bool GetProtectionHash( /*out*/ ::com::sun::star::uno::Sequence< sal_Int8 > &rPasswordHash ); + + // ================================= + + SAL_DLLPRIVATE ::boost::shared_ptr<GDIMetaFile> CreatePreviewMetaFile_Impl( sal_Bool bFullContent ) const; + + SAL_DLLPRIVATE sal_Bool IsOwnStorageFormat_Impl(const SfxMedium &) const; + + SAL_DLLPRIVATE sal_Bool IsPackageStorageFormat_Impl(const SfxMedium &) const; + + SAL_DLLPRIVATE sal_Bool ConnectTmpStorage_Impl( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xStorage, SfxMedium* pMedium ); + SAL_DLLPRIVATE sal_Bool DisconnectStorage_Impl( SfxMedium& rSrcMedium, SfxMedium& rTargetMedium ); + + SAL_DLLPRIVATE sal_Bool PutURLContentsToVersionStream_Impl( + OUString aURL, + const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xDocStorage, + OUString aStreamName ); + + SAL_DLLPRIVATE OUString CreateTempCopyOfStorage_Impl( + const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xStorage ); + + SAL_DLLPRIVATE void InitOwnModel_Impl(); + SAL_DLLPRIVATE void BreakMacroSign_Impl( sal_Bool bBreakMacroSing ); + SAL_DLLPRIVATE void CheckSecurityOnLoading_Impl(); + SAL_DLLPRIVATE void CheckForBrokenDocSignatures_Impl( const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler >& xHandler ); + SAL_DLLPRIVATE sal_uInt16 ImplCheckSignaturesInformation( + const ::com::sun::star::uno::Sequence< ::com::sun::star::security::DocumentSignatureInformation >& aInfos ); + SAL_DLLPRIVATE void CheckEncryption_Impl( const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler >& xHandler ); + SAL_DLLPRIVATE void SetModifyPasswordEntered( sal_Bool bEntered = sal_True ); + SAL_DLLPRIVATE sal_Bool IsModifyPasswordEntered(); + + SAL_DLLPRIVATE void InitBasicManager_Impl(); + SAL_DLLPRIVATE SfxObjectShell_Impl* Get_Impl() { return pImp; } + + SAL_DLLPRIVATE static sal_Bool UseInteractionToHandleError( + const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler >& xHandler, + sal_uInt32 nError ); + SAL_DLLPRIVATE const SfxObjectShell_Impl* Get_Impl() const { return pImp; } + + SAL_DLLPRIVATE void SetCreateMode_Impl( SfxObjectCreateMode nMode ); + + SAL_DLLPRIVATE void DoDraw_Impl( OutputDevice* pDev, + const Point & rViewPos, + const Fraction & rScaleX, + const Fraction & rScaleY, + const JobSetup & rSetup, + sal_uInt16 nAspect ); + + // Shell Interface + SAL_DLLPRIVATE void ExecFile_Impl(SfxRequest &); + SAL_DLLPRIVATE void GetState_Impl(SfxItemSet&); + SAL_DLLPRIVATE void PrintExec_Impl(SfxRequest &); + SAL_DLLPRIVATE void PrintState_Impl(SfxItemSet&); + SAL_DLLPRIVATE void ExecProps_Impl(SfxRequest &); + SAL_DLLPRIVATE void StateProps_Impl(SfxItemSet &); + SAL_DLLPRIVATE void ExecView_Impl(SfxRequest &); + SAL_DLLPRIVATE void StateView_Impl(SfxItemSet &); + + // Load/Save public internals + SAL_DLLPRIVATE sal_Bool ImportFromGeneratedStream_Impl( + const ::com::sun::star::uno::Reference< ::com::sun::star::io::XStream >& xStream, + const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& aMediaDescr ); + SAL_DLLPRIVATE void PositionView_Impl(); + SAL_DLLPRIVATE void UpdateFromTemplate_Impl(); + SAL_DLLPRIVATE sal_Bool CanReload_Impl(); + SAL_DLLPRIVATE void SetNamedVisibility_Impl(); + SAL_DLLPRIVATE sal_Bool DoSave_Impl( const SfxItemSet* pSet=0 ); + SAL_DLLPRIVATE sal_Bool Save_Impl( const SfxItemSet* pSet=0 ); + SAL_DLLPRIVATE sal_Bool PreDoSaveAs_Impl(const String &rFileName, const String &rFiltName, SfxItemSet *); + SAL_DLLPRIVATE sal_Bool APISaveAs_Impl ( const String& aFileName, SfxItemSet* aParams ); + SAL_DLLPRIVATE sal_Bool CommonSaveAs_Impl ( const INetURLObject& aURL, const String& aFilterName, SfxItemSet* aParams ); + SAL_DLLPRIVATE sal_Bool GeneralInit_Impl( + const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xStorage, + sal_Bool bTypeMustBeSetAlready ); + SAL_DLLPRIVATE void PrepareSecondTryLoad_Impl(); + SAL_DLLPRIVATE void SetInitialized_Impl( const bool i_fromInitNew ); + + // public-internals + SAL_DLLPRIVATE IndexBitSet& GetNoSet_Impl(); + SAL_DLLPRIVATE void SetProgress_Impl( SfxProgress *pProgress ); + SAL_DLLPRIVATE void PostActivateEvent_Impl( SfxViewFrame* ); + SAL_DLLPRIVATE void SetActivateEvent_Impl(sal_uInt16 ); + SAL_DLLPRIVATE SfxObjectShell* GetParentShellByModel_Impl(); + + // configuration items + SAL_DLLPRIVATE SfxToolBoxConfig* GetToolBoxConfig_Impl(); + SAL_DLLPRIVATE sal_uInt16 ImplGetSignatureState( sal_Bool bScriptingContent = sal_False ); + + SAL_DLLPRIVATE ::com::sun::star::uno::Sequence< ::com::sun::star::security::DocumentSignatureInformation > + ImplAnalyzeSignature( + sal_Bool bScriptingContent, + const ::com::sun::star::uno::Reference< ::com::sun::star::security::XDocumentDigitalSignatures >& xSigner + = ::com::sun::star::uno::Reference< ::com::sun::star::security::XDocumentDigitalSignatures >() ); + + SAL_DLLPRIVATE void ImplSign( sal_Bool bScriptingContent = sal_False ); + SAL_DLLPRIVATE sal_Bool QuerySaveSizeExceededModules_Impl( const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler >& xHandler ); + + SAL_DLLPRIVATE void CheckOut( ); + SAL_DLLPRIVATE void CancelCheckOut( ); + SAL_DLLPRIVATE void CheckIn( ); +}; + +#define SFX_GLOBAL_CLASSID \ + 0x9eaba5c3, 0xb232, 0x4309, \ + 0x84, 0x5f, 0x5f, 0x15, 0xea, 0x50, 0xd0, 0x74 + + struct ModifyBlocker_Impl + { + SfxObjectShell* pPersist; + sal_Bool bWasEnabled; + ModifyBlocker_Impl( SfxObjectShell* pPersistP ) : pPersist( pPersistP ) + { + bWasEnabled = pPersistP->IsEnableSetModified(); + if ( bWasEnabled ) + pPersistP->EnableSetModified( sal_False ); + } + ~ModifyBlocker_Impl() + { + if ( bWasEnabled ) + pPersist->EnableSetModified( bWasEnabled ); + } + }; + + +//-------------------------------------------------------------------- +#ifndef SFX_DECL_OBJECTSHELL_DEFINED +#define SFX_DECL_OBJECTSHELL_DEFINED +SV_DECL_REF(SfxObjectShell) +#endif +SV_DECL_LOCK(SfxObjectShell) +SV_IMPL_LOCK(SfxObjectShell) +SV_IMPL_REF(SfxObjectShell) + +//-------------------------------------------------------------------- +class AutoReloadTimer_Impl : public Timer +{ + String aUrl; + SfxObjectShell* pObjSh; + +public: + AutoReloadTimer_Impl( const String& rURL, sal_uInt32 nTime, + SfxObjectShell* pSh ); + virtual void Timeout(); +}; + +//------------------------------------------------------------------------- + +class SFX2_DLLPUBLIC SfxObjectShellItem: public SfxPoolItem +{ + SfxObjectShell* pObjSh; + +public: + TYPEINFO(); + SfxObjectShellItem() : + SfxPoolItem( 0 ), + pObjSh( 0 ) + {} + SfxObjectShellItem( SfxObjectShell *pObjShell ): + SfxPoolItem( 0 ), + pObjSh( pObjShell ) + {} + SfxObjectShellItem( sal_uInt16 nWhichId, + SfxObjectShell *pObjShell ): + SfxPoolItem( nWhichId ), + pObjSh( pObjShell ) + {} + + virtual int operator==( const SfxPoolItem& ) const; + virtual String GetValueText() const; + virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const; + virtual bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt8 nMemberId = 0 ) const; + virtual bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt8 nMemberId = 0 ); + SfxObjectShell* GetObjectShell() const + { return pObjSh; } + +}; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |