summaryrefslogtreecommitdiff
path: root/svx/inc/galtheme.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'svx/inc/galtheme.hxx')
-rw-r--r--svx/inc/galtheme.hxx231
1 files changed, 231 insertions, 0 deletions
diff --git a/svx/inc/galtheme.hxx b/svx/inc/galtheme.hxx
new file mode 100644
index 000000000000..aa77bba25d26
--- /dev/null
+++ b/svx/inc/galtheme.hxx
@@ -0,0 +1,231 @@
+/*************************************************************************
+ *
+ * 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 _SVX_GALTHEME_HXX_
+#define _SVX_GALTHEME_HXX_
+
+#include "svx/svxdllapi.h"
+
+#define ENABLE_BYTESTRING_STREAM_OPERATORS
+
+#include <tools/debug.hxx>
+#include <tools/urlobj.hxx>
+#include <vcl/salctype.hxx>
+#include <svl/brdcst.hxx>
+#include <svl/lstner.hxx>
+#include <svtools/transfer.hxx>
+#include <sot/storage.hxx>
+#include <svx/svdmodel.hxx>
+//#include <svx/galobj.hxx>
+#include <svx/galmisc.hxx>
+//#include <svx/gallery1.hxx>
+
+// -----------------
+// - GalleryObject -
+// -----------------
+// --------------
+// - SgaObjKind -
+// --------------
+
+struct GalleryObject
+{
+ INetURLObject aURL;
+ sal_uInt32 nOffset;
+ SgaObjKind eObjKind;
+ BOOL bDummy;
+};
+
+DECLARE_LIST( GalleryObjectList, GalleryObject* )
+
+class GalleryThemeEntry;
+class SgaObject;
+class FmFormModel;
+class ListBox;
+
+// -----------------
+// - GalDragParams -
+// -----------------
+
+struct GalDragParams
+{
+ Region aDragRegion;
+ ULONG nDragObjPos;
+ String aThemeName;
+ String aFileName;
+ SgaObjKind eObjKind;
+};
+
+// ----------------
+// - GalleryTheme -
+// ----------------
+
+class Gallery;
+class GalleryProgress;
+namespace unogallery
+{
+ class GalleryTheme;
+ class GalleryItem;
+}
+
+class GalleryTheme : public SfxBroadcaster
+{
+ friend class Gallery;
+ friend class GalleryThemeCacheEntry;
+ friend class ::unogallery::GalleryTheme;
+ friend class ::unogallery::GalleryItem;
+
+private:
+
+ GalleryObjectList aObjectList;
+ String aImportName;
+ String m_aDestDir;
+ SotStorageRef aSvDrawStorageRef;
+ Gallery* pParent;
+ GalleryThemeEntry* pThm;
+ ULONG mnThemeLockCount;
+ ULONG mnBroadcasterLockCount;
+ ULONG nDragPos;
+ BOOL bDragging;
+ BOOL bAbortActualize;
+
+ void ImplCreateSvDrawStorage();
+ SVX_DLLPUBLIC SgaObject* ImplReadSgaObject( GalleryObject* pEntry );
+ BOOL ImplWriteSgaObject( const SgaObject& rObj, ULONG nPos, GalleryObject* pExistentEntry );
+ void ImplRead();
+ void ImplWrite();
+ const GalleryObject* ImplGetGalleryObject( ULONG nPos ) const { return aObjectList.GetObject( nPos ); }
+ SVX_DLLPUBLIC const GalleryObject* ImplGetGalleryObject( const INetURLObject& rURL );
+ ULONG ImplGetGalleryObjectPos( const GalleryObject* pObj ) const { return aObjectList.GetPos( pObj ); }
+ INetURLObject ImplGetURL( const GalleryObject* pObject ) const;
+ INetURLObject ImplCreateUniqueURL( SgaObjKind eObjKind, ULONG nFormat = CVT_UNKNOWN );
+ void ImplSetModified( BOOL bModified );
+ void ImplBroadcast( ULONG nUpdatePos );
+
+ GalleryTheme();
+ GalleryTheme( Gallery* pGallery, GalleryThemeEntry* pThemeEntry );
+ ~GalleryTheme();
+
+public:
+
+ static GalleryThemeEntry* CreateThemeEntry( const INetURLObject& rURL, BOOL bReadOnly );
+
+ ULONG GetObjectCount() const { return aObjectList.Count(); }
+
+ SVX_DLLPUBLIC SgaObject* AcquireObject( ULONG nPos );
+ SVX_DLLPUBLIC void ReleaseObject( SgaObject* pObj );
+
+ SVX_DLLPUBLIC BOOL InsertObject( const SgaObject& rObj, ULONG nPos = LIST_APPEND );
+ SVX_DLLPUBLIC BOOL RemoveObject( ULONG nPos );
+ BOOL ChangeObjectPos( ULONG nOldPos, ULONG nNewPos );
+
+ SVX_DLLPUBLIC const String& GetName() const;
+ const String& GetRealName() const;
+ const String& GetImportName() const { return aImportName; }
+ void SetImportName(const String& rImportName) { aImportName = rImportName; }
+
+ const String& GetDestDir() const { return m_aDestDir; }
+ void SetDestDir(const String& rDestDir) { m_aDestDir = rDestDir; }
+
+ const INetURLObject& GetThmURL() const;
+ SVX_DLLPUBLIC const INetURLObject& GetSdgURL() const;
+ const INetURLObject& GetSdvURL() const;
+
+ SVX_DLLPUBLIC UINT32 GetId() const;
+ void SetId( UINT32 nNewId, BOOL bResetThemeName );
+
+ void SetDragging( BOOL bSet ) { bDragging = bSet; }
+ BOOL IsDragging() const { return bDragging; }
+
+ void LockTheme() { ++mnThemeLockCount; }
+ BOOL UnlockTheme();
+
+ void LockBroadcaster() { mnBroadcasterLockCount++; }
+ SVX_DLLPUBLIC void UnlockBroadcaster( ULONG nUpdatePos = 0 );
+ BOOL IsBroadcasterLocked() const { return mnBroadcasterLockCount > 0; }
+
+ void SetDragPos( ULONG nPos ) { nDragPos = nPos; }
+ ULONG GetDragPos() const { return nDragPos; }
+
+ BOOL IsThemeNameFromResource() const;
+
+ SVX_DLLPUBLIC BOOL IsImported() const;
+ SVX_DLLPUBLIC BOOL IsReadOnly() const;
+ SVX_DLLPUBLIC BOOL IsDefault() const;
+ BOOL IsModified() const;
+
+ SVX_DLLPUBLIC void Actualize( const Link& rActualizeLink, GalleryProgress* pProgress = NULL );
+ void AbortActualize() { bAbortActualize = TRUE; }
+
+ Gallery* GetParent() const { return pParent; }
+ SotStorageRef GetSvDrawStorage() const { return aSvDrawStorageRef; }
+
+public:
+
+ SgaObjKind GetObjectKind( ULONG nPos ) const
+ {
+ DBG_ASSERT( nPos < GetObjectCount(), "Position out of range" );
+ return ImplGetGalleryObject( nPos )->eObjKind;
+ }
+
+
+ const INetURLObject& GetObjectURL( ULONG nPos ) const
+ {
+ DBG_ASSERT( nPos < GetObjectCount(), "Position out of range" );
+ return ImplGetGalleryObject( nPos )->aURL;
+ }
+
+ BOOL GetThumb( ULONG nPos, Bitmap& rBmp, BOOL bProgress = FALSE );
+
+ SVX_DLLPUBLIC BOOL GetGraphic( ULONG nPos, Graphic& rGraphic, BOOL bProgress = FALSE );
+ SVX_DLLPUBLIC BOOL InsertGraphic( const Graphic& rGraphic, ULONG nInsertPos = LIST_APPEND );
+
+ SVX_DLLPUBLIC BOOL GetModel( ULONG nPos, SdrModel& rModel, BOOL bProgress = FALSE );
+ SVX_DLLPUBLIC BOOL InsertModel( const FmFormModel& rModel, ULONG nInsertPos = LIST_APPEND );
+
+ BOOL GetModelStream( ULONG nPos, SotStorageStreamRef& rModelStreamRef, BOOL bProgress = FALSE );
+ BOOL InsertModelStream( const SotStorageStreamRef& rModelStream, ULONG nInsertPos = LIST_APPEND );
+
+ BOOL GetURL( ULONG nPos, INetURLObject& rURL, BOOL bProgress = FALSE );
+ SVX_DLLPUBLIC BOOL InsertURL( const INetURLObject& rURL, ULONG nInsertPos = LIST_APPEND );
+ BOOL InsertFileOrDirURL( const INetURLObject& rFileOrDirURL, ULONG nInsertPos = LIST_APPEND );
+
+ BOOL InsertTransferable( const ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::XTransferable >& rxTransferable, ULONG nInsertPos );
+
+ void CopyToClipboard( Window* pWindow, ULONG nPos );
+ void StartDrag( Window* pWindow, ULONG nPos );
+
+public:
+
+ SvStream& WriteData( SvStream& rOut ) const;
+ SvStream& ReadData( SvStream& rIn );
+ static SVX_DLLPUBLIC void InsertAllThemes( ListBox& rListBox );
+};
+
+SvStream& operator<<( SvStream& rOut, const GalleryTheme& rTheme );
+SvStream& operator>>( SvStream& rIn, GalleryTheme& rTheme );
+
+#endif