summaryrefslogtreecommitdiff
path: root/sfx2/inc/sfx2/docfile.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'sfx2/inc/sfx2/docfile.hxx')
-rw-r--r--sfx2/inc/sfx2/docfile.hxx339
1 files changed, 339 insertions, 0 deletions
diff --git a/sfx2/inc/sfx2/docfile.hxx b/sfx2/inc/sfx2/docfile.hxx
new file mode 100644
index 000000000000..0cb57e7a414d
--- /dev/null
+++ b/sfx2/inc/sfx2/docfile.hxx
@@ -0,0 +1,339 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SFXDOCFILE_HXX
+#define _SFXDOCFILE_HXX
+
+#include <com/sun/star/io/XSeekable.hpp>
+#include "sal/config.h"
+#include "sfx2/dllapi.h"
+#include "sal/types.h"
+#include <com/sun/star/util/RevisionTag.hpp>
+#include <com/sun/star/util/DateTime.hpp>
+#include <com/sun/star/io/XOutputStream.hpp>
+#include <com/sun/star/io/XInputStream.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/ucb/XContent.hpp>
+#include <com/sun/star/ucb/XCommandEnvironment.hpp>
+#include <com/sun/star/task/XInteractionHandler.hpp>
+#include <com/sun/star/embed/XStorage.hpp>
+#include <com/sun/star/beans/PropertyValue.hpp>
+#include <tools/stream.hxx>
+#include <tools/string.hxx>
+#include <tools/list.hxx>
+#include <svl/lstner.hxx>
+
+#include <tools/globname.hxx>
+#include <cppuhelper/weak.hxx>
+#include <ucbhelper/content.hxx>
+
+class SvKeyValueIterator;
+class SfxObjectFactory;
+class SfxFilter;
+class SfxMedium_Impl;
+class INetURLObject;
+class SfxObjectShell;
+class SfxFrame;
+class Timer;
+class SfxItemSet;
+class DateTime;
+class SvStringsDtor;
+
+#define S2BS(s) ByteString( s, RTL_TEXTENCODING_MS_1252 )
+
+//____________________________________________________________________________________________________________________________________
+// defines for namespaces
+//____________________________________________________________________________________________________________________________________
+
+#define OUSTRING ::rtl::OUString
+#define XMULTISERVICEFACTORY ::com::sun::star::lang::XMultiServiceFactory
+#define XSERVICEINFO ::com::sun::star::lang::XServiceInfo
+#define OWEAKOBJECT ::cppu::OWeakObject
+#define REFERENCE ::com::sun::star::uno::Reference
+#define XINTERFACE ::com::sun::star::uno::XInterface
+#define SEQUENCE ::com::sun::star::uno::Sequence
+#define EXCEPTION ::com::sun::star::uno::Exception
+#define RUNTIMEEXCEPTION ::com::sun::star::uno::RuntimeException
+#define ANY ::com::sun::star::uno::Any
+
+class SFX2_DLLPUBLIC SfxMedium : public SvRefBase
+{
+ sal_uInt32 eError;
+ sal_Bool bDirect:1,
+ bRoot:1,
+ bSetFilter:1,
+ bTriedStorage;
+ StreamMode nStorOpenMode;
+ INetURLObject* pURLObj;
+ String aName;
+ SvGlobalName aFilterClass;
+ SvStream* pInStream;
+ SvStream* pOutStream;
+//REMOVE SvStorageRef aStorage;
+ const SfxFilter* pFilter;
+ SfxItemSet* pSet;
+ SfxMedium_Impl* pImp;
+ String aLogicName;
+ String aLongName;
+ sal_Bool bRemote;
+
+ sal_Bool m_bIsReadOnly;
+ com::sun::star::uno::Reference<com::sun::star::io::XInputStream>
+ m_xInputStreamToLoadFrom;
+
+#if _SOLAR__PRIVATE
+ SAL_DLLPRIVATE void SetIsRemote_Impl();
+ SAL_DLLPRIVATE void CloseInStream_Impl();
+ SAL_DLLPRIVATE sal_Bool CloseOutStream_Impl();
+ SAL_DLLPRIVATE void CloseStreams_Impl();
+ DECL_DLLPRIVATE_STATIC_LINK( SfxMedium, UCBHdl_Impl, sal_uInt32 * );
+
+ SAL_DLLPRIVATE void SetPasswordToStorage_Impl();
+#endif
+
+public:
+
+ SvCompatWeakHdl* GetHdl();
+
+ SfxMedium();
+ SfxMedium( const String &rName,
+ StreamMode nOpenMode,
+ sal_Bool bDirect=FALSE,
+ const SfxFilter *pFilter = 0,
+ SfxItemSet *pSet = 0 );
+
+ SfxMedium( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xStorage,
+ const String& rBaseURL,
+ const SfxItemSet* pSet=0,
+ sal_Bool bRoot = sal_False );
+
+ SfxMedium( const SfxMedium &rMedium, sal_Bool bCreateTemporary = sal_False );
+ SfxMedium( const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& aArgs );
+
+ ~SfxMedium();
+
+ void UseInteractionHandler( BOOL );
+ ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler >
+ GetInteractionHandler();
+
+ void setStreamToLoadFrom(const com::sun::star::uno::Reference<com::sun::star::io::XInputStream>& xInputStream,sal_Bool bIsReadOnly )
+ { m_xInputStreamToLoadFrom = xInputStream; m_bIsReadOnly = bIsReadOnly; }
+
+ void SetLoadTargetFrame(SfxFrame* pFrame );
+ SfxFrame* GetLoadTargetFrame() const;
+
+ void SetReferer( const String& rRefer );
+ const String& GetReferer( ) const;
+ sal_Bool Exists( sal_Bool bForceSession = sal_True );
+ void SetFilter(const SfxFilter *pFlt, sal_Bool bResetOrig = sal_False);
+ const SfxFilter * GetFilter() const { return pFilter; }
+ const SfxFilter * GetOrigFilter( sal_Bool bNotCurrent = sal_False ) const;
+ const String& GetOrigURL() const;
+
+ SfxItemSet * GetItemSet() const;
+ void SetItemSet(SfxItemSet *pSet);
+ void Close();
+ void CloseAndRelease();
+ void ReOpen();
+ void CompleteReOpen();
+ const String& GetName() const {return aLogicName;}
+#if defined SINIX && defined GCC && defined C272
+ const INetURLObject& GetURLObject();
+#else
+ const INetURLObject& GetURLObject() const;
+#endif
+
+ void CheckFileDate( const ::com::sun::star::util::DateTime& aInitDate );
+ sal_Bool DocNeedsFileDateCheck();
+ ::com::sun::star::util::DateTime GetInitFileDate( sal_Bool bIgnoreOldValue );
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XContent > GetContent() const;
+ const String& GetPhysicalName() const;
+ void SetTemporary( sal_Bool bTemp );
+ sal_Bool IsTemporary() const;
+ sal_Bool IsRemote();
+ sal_Bool IsOpen() const; // { return aStorage.Is() || pInStream; }
+ void StartDownload();
+ void DownLoad( const Link& aLink = Link());
+ void SetDoneLink( const Link& rLink );
+ Link GetDoneLink( ) const;
+ void SetDataAvailableLink( const Link& rLink );
+ Link GetDataAvailableLink( ) const;
+
+ sal_uInt32 GetMIMEAndRedirect( String& );
+ sal_uInt32 GetErrorCode() const;
+ sal_uInt32 GetError() const
+ { return ERRCODE_TOERROR(GetErrorCode()); }
+ sal_uInt32 GetLastStorageCreationState();
+
+ void SetError( sal_uInt32 nError, const ::rtl::OUString& aLogMessage );
+
+ void AddLog( const ::rtl::OUString& aMessage );
+
+ void CloseInStream();
+ sal_Bool CloseOutStream();
+
+ sal_Bool IsRoot() const { return bRoot; }
+ void CloseStorage();
+
+ StreamMode GetOpenMode() const { return nStorOpenMode; }
+ void SetOpenMode( StreamMode nStorOpen, sal_Bool bDirect, sal_Bool bDontClose = sal_False );
+ sal_Bool IsDirect() const { return bDirect? sal_True: sal_False; }
+
+ SvStream* GetInStream();
+ SvStream* GetOutStream();
+
+ sal_Bool Commit();
+ sal_Bool IsStorage();
+
+ sal_Int8 ShowLockedDocumentDialog( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aData, sal_Bool bIsLoading, sal_Bool bOwnLock );
+ sal_Bool LockOrigFileOnDemand( sal_Bool bLoading, sal_Bool bNoUI );
+ void UnlockFile( sal_Bool bReleaseLockStream );
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage > GetStorage( sal_Bool bCreateTempIfNo = sal_True );
+ ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage > GetOutputStorage();
+ void ResetError();
+ sal_Bool UsesCache() const;
+ void SetUsesCache( sal_Bool );
+ sal_Bool IsExpired() const;
+ void SetName( const String& rName, sal_Bool bSetOrigURL = sal_False );
+ sal_Bool IsAllowedForExternalBrowser() const;
+ long GetFileVersion() const;
+
+ const com::sun::star::uno::Sequence < com::sun::star::util::RevisionTag >&
+ GetVersionList( bool _bNoReload = false );
+ sal_Bool IsReadOnly();
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > GetInputStream();
+
+ void CreateTempFile( sal_Bool bReplace = sal_True );
+ void CreateTempFileNoCopy();
+ ::rtl::OUString SwitchDocumentToTempFile();
+ sal_Bool SwitchDocumentToFile( ::rtl::OUString aURL );
+
+ ::rtl::OUString GetCharset();
+ void SetCharset( ::rtl::OUString );
+ ::rtl::OUString GetBaseURL( bool bForSaving=false );
+
+#if _SOLAR__PRIVATE
+ SAL_DLLPRIVATE BOOL HasStorage_Impl() const;
+
+ SAL_DLLPRIVATE void StorageBackup_Impl();
+ SAL_DLLPRIVATE ::rtl::OUString GetBackup_Impl();
+
+ SAL_DLLPRIVATE ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage > GetZipStorageToSign_Impl( sal_Bool bReadOnly = sal_True );
+ SAL_DLLPRIVATE void CloseZipStorage_Impl();
+
+ // the storage that will be returned by the medium on GetStorage request
+ SAL_DLLPRIVATE void SetStorage_Impl( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xNewStorage );
+
+ SAL_DLLPRIVATE ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > GetInputStream_Impl();
+ SAL_DLLPRIVATE void CloseAndReleaseStreams_Impl();
+ SAL_DLLPRIVATE void RefreshName_Impl();
+ SAL_DLLPRIVATE sal_uInt16 AddVersion_Impl( com::sun::star::util::RevisionTag& rVersion );
+ SAL_DLLPRIVATE sal_Bool TransferVersionList_Impl( SfxMedium& rMedium );
+ SAL_DLLPRIVATE sal_Bool SaveVersionList_Impl( sal_Bool bUseXML );
+ SAL_DLLPRIVATE sal_Bool RemoveVersion_Impl( const ::rtl::OUString& rVersion );
+
+ SAL_DLLPRIVATE void SetExpired_Impl( const DateTime& rDateTime );
+ SAL_DLLPRIVATE SvKeyValueIterator* GetHeaderAttributes_Impl();
+ SAL_DLLPRIVATE const String& GetPreRedirectedURL() const;
+ SAL_DLLPRIVATE void SetOrigFilter_Impl( const SfxFilter* pFilter );
+
+ // Diese Protokolle liefern MIME Typen
+ SAL_DLLPRIVATE sal_Bool SupportsMIME_Impl() const;
+
+ SAL_DLLPRIVATE void Init_Impl();
+ SAL_DLLPRIVATE void ForceSynchronStream_Impl( sal_Bool bSynchron );
+
+ SAL_DLLPRIVATE void GetLockingStream_Impl();
+ SAL_DLLPRIVATE void GetMedium_Impl();
+ SAL_DLLPRIVATE sal_Bool TryDirectTransfer( const ::rtl::OUString& aURL, SfxItemSet& aTargetSet );
+ SAL_DLLPRIVATE void Transfer_Impl();
+ SAL_DLLPRIVATE void CreateFileStream();
+ SAL_DLLPRIVATE void SetUpdatePickList(sal_Bool);
+ SAL_DLLPRIVATE sal_Bool IsUpdatePickList() const;
+
+//REMOVE void SetStorage_Impl( SvStorage* pStor );
+ SAL_DLLPRIVATE void SetLongName(const String &rName)
+ { aLongName = rName; }
+ SAL_DLLPRIVATE const String & GetLongName() const { return aLongName; }
+ SAL_DLLPRIVATE ErrCode CheckOpenMode_Impl( sal_Bool bSilent, sal_Bool bAllowRO = sal_True );
+ SAL_DLLPRIVATE sal_Bool IsDownloadDone_Impl();
+ SAL_DLLPRIVATE sal_Bool IsPreview_Impl();
+ SAL_DLLPRIVATE void ClearBackup_Impl();
+ SAL_DLLPRIVATE void Done_Impl( ErrCode );
+ SAL_DLLPRIVATE void DataAvailable_Impl();
+ SAL_DLLPRIVATE void Cancel_Impl();
+ SAL_DLLPRIVATE void SetPhysicalName_Impl(const String& rName);
+ SAL_DLLPRIVATE void CanDisposeStorage_Impl( sal_Bool bDisposeStorage );
+ SAL_DLLPRIVATE sal_Bool WillDisposeStorageOnClose_Impl();
+
+ SAL_DLLPRIVATE void DoBackup_Impl();
+ SAL_DLLPRIVATE void DoInternalBackup_Impl( const ::ucbhelper::Content& aOriginalContent );
+ SAL_DLLPRIVATE void DoInternalBackup_Impl( const ::ucbhelper::Content& aOriginalContent,
+ const String& aPrefix,
+ const String& aExtension,
+ const String& aDestDir );
+
+ SAL_DLLPRIVATE sal_Bool UseBackupToRestore_Impl( ::ucbhelper::Content& aOriginalContent,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XCommandEnvironment >& xComEnv );
+
+ SAL_DLLPRIVATE sal_Bool StorageCommit_Impl();
+
+ SAL_DLLPRIVATE sal_Bool TransactedTransferForFS_Impl( const INetURLObject& aSource,
+ const INetURLObject& aDest,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XCommandEnvironment >& xComEnv );
+
+ SAL_DLLPRIVATE sal_Bool SignContents_Impl( sal_Bool bScriptingContent, const ::rtl::OUString& aODFVersion, sal_Bool bHasValidDocumentSignature );
+
+ // the following two methods must be used and make sence only during saving currently
+ // TODO/LATER: in future the signature state should be controlled by the medium not by the document
+ // in this case the methods will be used generally, and might need to be renamed
+ SAL_DLLPRIVATE sal_uInt16 GetCachedSignatureState_Impl();
+ SAL_DLLPRIVATE void SetCachedSignatureState_Impl( sal_uInt16 nState );
+#endif
+
+ static com::sun::star::uno::Sequence < com::sun::star::util::RevisionTag > GetVersionList(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xStorage );
+ static ::rtl::OUString CreateTempCopyWithExt( const ::rtl::OUString& aURL );
+ static sal_Bool CallApproveHandler( const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler >& xHandler, ::com::sun::star::uno::Any aRequest, sal_Bool bAllowAbort );
+
+ static sal_Bool SetWritableForUserOnly( const ::rtl::OUString& aURL );
+ static sal_uInt32 CreatePasswordToModifyHash( const ::rtl::OUString& aPasswd, sal_Bool bWriter );
+};
+
+SV_DECL_IMPL_REF( SfxMedium )
+SV_DECL_COMPAT_WEAK( SfxMedium )
+
+#ifndef SFXMEDIUM_LIST
+#define SFXMEDIUM_LIST
+DECLARE_LIST( SfxMediumList, SfxMedium* )
+#endif
+
+#endif
+