summaryrefslogtreecommitdiff
path: root/include/sfx2/lnkbase.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'include/sfx2/lnkbase.hxx')
-rw-r--r--include/sfx2/lnkbase.hxx176
1 files changed, 176 insertions, 0 deletions
diff --git a/include/sfx2/lnkbase.hxx b/include/sfx2/lnkbase.hxx
new file mode 100644
index 000000000000..ebd76db400d0
--- /dev/null
+++ b/include/sfx2/lnkbase.hxx
@@ -0,0 +1,176 @@
+/* -*- 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 _LNKBASE_HXX
+#define _LNKBASE_HXX
+
+#include <com/sun/star/io/XInputStream.hpp>
+#include "sal/config.h"
+#include "sfx2/dllapi.h"
+#include <sot/exchange.hxx>
+#include <tools/ref.hxx>
+#include <sfx2/linksrc.hxx>
+
+namespace com { namespace sun { namespace star { namespace uno
+{
+ class Any;
+}}}}
+
+namespace sfx2
+{
+
+struct ImplBaseLinkData;
+class LinkManager;
+class SvLinkSource;
+class FileDialogHelper;
+
+#ifndef OBJECT_DDE_EXTERN
+#define OBJECT_INTERN 0x00
+//#define OBJECT_SO_EXTERN 0x01
+#define OBJECT_DDE_EXTERN 0x02
+#endif
+
+#define OBJECT_CLIENT_SO 0x80 // a Link
+#define OBJECT_CLIENT_DDE 0x81
+//#define OBJECT_CLIENT_OLE 0x82 // a Ole-Link
+//#define OBJECT_CLIENT_OLE_CACHE 0x83 // a Ole-Link with SvEmbeddedObject
+#define OBJECT_CLIENT_FILE 0x90
+#define OBJECT_CLIENT_GRF 0x91
+#define OBJECT_CLIENT_OLE 0x92 // embedded link
+
+enum sfxlink {
+ // Ole2 compatibel and persistent
+ LINKUPDATE_ALWAYS = 1,
+ LINKUPDATE_ONCALL = 3,
+
+ LINKUPDATE_END // dummy!
+};
+
+struct BaseLink_Impl;
+
+class SFX2_DLLPUBLIC SvBaseLink : public SvRefBase
+{
+private:
+ friend class LinkManager;
+ friend class SvLinkSource;
+
+ SvLinkSourceRef xObj;
+ String aLinkName;
+ BaseLink_Impl* pImpl;
+ sal_uInt16 nObjType;
+ sal_Bool bVisible : 1;
+ sal_Bool bSynchron : 1;
+ sal_Bool bUseCache : 1; // for Graphics Links!
+ sal_Bool bWasLastEditOK : 1;
+
+ DECL_LINK( EndEditHdl, String* );
+
+ bool ExecuteEdit( const String& _rNewName );
+
+protected:
+ void SetObjType( sal_uInt16 );
+
+ // Set LinkSourceName without action
+ void SetName( const String & rLn );
+
+ ImplBaseLinkData* pImplData;
+
+ sal_Bool m_bIsReadOnly;
+ com::sun::star::uno::Reference<com::sun::star::io::XInputStream>
+ m_xInputStreamToLoadFrom;
+
+ SvBaseLink();
+ SvBaseLink( sal_uInt16 nLinkType, sal_uIntPtr nContentType = FORMAT_STRING );
+ virtual ~SvBaseLink();
+
+ void _GetRealObject( sal_Bool bConnect = sal_True );
+
+ SvLinkSource* GetRealObject()
+ {
+ if( !xObj.Is() )
+ _GetRealObject();
+ return xObj;
+ }
+
+public:
+ TYPEINFO();
+
+ virtual void Closed();
+ SvBaseLink( const String& rNm, sal_uInt16 nObjectType,
+ SvLinkSource* );
+
+ sal_uInt16 GetObjType() const { return nObjType; }
+
+ void SetObj( SvLinkSource * pObj );
+ SvLinkSource* GetObj() const { return xObj; }
+
+ void SetLinkSourceName( const String & rName );
+ String GetLinkSourceName() const;
+
+ enum UpdateResult {
+ SUCCESS = 0,
+ ERROR_GENERAL = 1
+ };
+
+ virtual UpdateResult DataChanged(
+ const String & rMimeType, const ::com::sun::star::uno::Any & rValue );
+
+ void SetUpdateMode( sal_uInt16 );
+ sal_uInt16 GetUpdateMode() const;
+ sal_uIntPtr GetContentType() const;
+ sal_Bool SetContentType( sal_uIntPtr nType );
+
+ LinkManager* GetLinkManager();
+ const LinkManager* GetLinkManager() const;
+ void SetLinkManager( LinkManager* _pMgr );
+
+ sal_Bool Update();
+ void Disconnect();
+
+ // Link impl: DECL_LINK( MyEndDialogHdl, SvBaseLink* ); <= param is this
+ virtual void Edit( Window*, const Link& rEndEditHdl );
+
+ // should the link appear in the dialog? (to the left in the link in the...)
+ sal_Bool IsVisible() const { return bVisible; }
+ void SetVisible( sal_Bool bFlag ) { bVisible = bFlag; }
+ // should the Link be loaded synchronous or asynchronous?
+ sal_Bool IsSynchron() const { return bSynchron; }
+ void SetSynchron( sal_Bool bFlag ) { bSynchron = bFlag; }
+
+ sal_Bool IsUseCache() const { return bUseCache; }
+ void SetUseCache( sal_Bool bFlag ) { bUseCache = bFlag; }
+
+ void setStreamToLoadFrom(
+ const com::sun::star::uno::Reference<com::sun::star::io::XInputStream>& xInputStream,
+ sal_Bool bIsReadOnly )
+ { m_xInputStreamToLoadFrom = xInputStream;
+ m_bIsReadOnly = bIsReadOnly; }
+ // #i88291#
+ void clearStreamToLoadFrom();
+
+ inline sal_Bool WasLastEditOK() const { return bWasLastEditOK; }
+ FileDialogHelper & GetInsertFileDialog(const String& rFactory) const;
+};
+
+SV_DECL_IMPL_REF(SvBaseLink);
+
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */