xref: /trunk/main/svx/inc/svx/galmisc.hxx (revision 3334a7e6)
1*3334a7e6SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*3334a7e6SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*3334a7e6SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*3334a7e6SAndrew Rist  * distributed with this work for additional information
6*3334a7e6SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*3334a7e6SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*3334a7e6SAndrew Rist  * "License"); you may not use this file except in compliance
9*3334a7e6SAndrew Rist  * with the License.  You may obtain a copy of the License at
10*3334a7e6SAndrew Rist  *
11*3334a7e6SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*3334a7e6SAndrew Rist  *
13*3334a7e6SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*3334a7e6SAndrew Rist  * software distributed under the License is distributed on an
15*3334a7e6SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*3334a7e6SAndrew Rist  * KIND, either express or implied.  See the License for the
17*3334a7e6SAndrew Rist  * specific language governing permissions and limitations
18*3334a7e6SAndrew Rist  * under the License.
19*3334a7e6SAndrew Rist  *
20*3334a7e6SAndrew Rist  *************************************************************/
21*3334a7e6SAndrew Rist 
22*3334a7e6SAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir #ifndef _SVX_GALMISC_HXX_
25cdf0e10cSrcweir #define _SVX_GALMISC_HXX_
26cdf0e10cSrcweir 
27cdf0e10cSrcweir #include <sot/storage.hxx>
28cdf0e10cSrcweir #include <tools/urlobj.hxx>
29cdf0e10cSrcweir #include <svtools/imap.hxx>
30cdf0e10cSrcweir #include <svl/hint.hxx>
31cdf0e10cSrcweir #include <svtools/transfer.hxx>
32cdf0e10cSrcweir #include <svx/svdobj.hxx>
33cdf0e10cSrcweir #include <com/sun/star/uno/Reference.h>
34cdf0e10cSrcweir #include <com/sun/star/awt/XProgressMonitor.hpp>
35cdf0e10cSrcweir #include "svx/svxdllapi.h"
36cdf0e10cSrcweir #include <tools/date.hxx>
37cdf0e10cSrcweir #include <tools/time.hxx>
38cdf0e10cSrcweir 
39cdf0e10cSrcweir // ------------
40cdf0e10cSrcweir // - Forwards -
41cdf0e10cSrcweir // ------------
42cdf0e10cSrcweir 
43cdf0e10cSrcweir class GalleryTheme;
44cdf0e10cSrcweir 
45cdf0e10cSrcweir // ----------------
46cdf0e10cSrcweir // - ExchangeData -
47cdf0e10cSrcweir // ----------------
48cdf0e10cSrcweir 
49cdf0e10cSrcweir struct ExchangeData
50cdf0e10cSrcweir {
51cdf0e10cSrcweir 	GalleryTheme*	pTheme;
52cdf0e10cSrcweir 	String			aEditedTitle;
53cdf0e10cSrcweir 	Date			aThemeChangeDate;
54cdf0e10cSrcweir 	Time			aThemeChangeTime;
55cdf0e10cSrcweir };
56cdf0e10cSrcweir 
57cdf0e10cSrcweir enum SgaObjKind
58cdf0e10cSrcweir {
59cdf0e10cSrcweir 	SGA_OBJ_NONE = 0,	// Abstraktes Objekt
60cdf0e10cSrcweir 	SGA_OBJ_BMP	= 1,	// Bitmap-Objekt
61cdf0e10cSrcweir 	SGA_OBJ_SOUND =	2,	// Sound-Objekt
62cdf0e10cSrcweir 	SGA_OBJ_VIDEO =	3, 	// Video-Objekt
63cdf0e10cSrcweir 	SGA_OBJ_ANIM = 4,	// Animations-Objekt
64cdf0e10cSrcweir 	SGA_OBJ_SVDRAW = 5,	// Svdraw-Objekt
65cdf0e10cSrcweir 	SGA_OBJ_INET = 6	// Grafik aus dem Internet
66cdf0e10cSrcweir };
67cdf0e10cSrcweir 
68cdf0e10cSrcweir // -----------
69cdf0e10cSrcweir // - Defines -
70cdf0e10cSrcweir // -----------
71cdf0e10cSrcweir 
72cdf0e10cSrcweir #define IV_IMAPINFO			    (sal_uInt32('S')*0x00000001+sal_uInt32('D')*0x00000100+sal_uInt32('U')*0x00010000+sal_uInt32('D')*0x01000000)
73cdf0e10cSrcweir #define	ID_IMAPINFO			    2
74cdf0e10cSrcweir 
75cdf0e10cSrcweir #define USERDATA_HDL()		    (LINK(this,SgaUserDataFactory,MakeUserData))
76cdf0e10cSrcweir 
77cdf0e10cSrcweir #define GAL_RESID( nId )	    ResId( nId, *GetGalleryResMgr() )
78cdf0e10cSrcweir #define STREAMBUF_SIZE		    16384L
79cdf0e10cSrcweir 
80cdf0e10cSrcweir #define	SGA_IMPORT_NONE		    0x0000
81cdf0e10cSrcweir #define	SGA_IMPORT_FILE		    0x0001
82cdf0e10cSrcweir #define	SGA_IMPORT_INET		    0x0002
83cdf0e10cSrcweir 
84cdf0e10cSrcweir #define GALLERY_PROGRESS_RANGE  10000
85cdf0e10cSrcweir 
86cdf0e10cSrcweir #define GALLERY_FG_COLOR        Application::GetSettings().GetStyleSettings().GetWindowTextColor()
87cdf0e10cSrcweir #define GALLERY_BG_COLOR        Application::GetSettings().GetStyleSettings().GetWindowColor()
88cdf0e10cSrcweir #define GALLERY_DLG_COLOR       Application::GetSettings().GetStyleSettings().GetDialogColor()
89cdf0e10cSrcweir 
90cdf0e10cSrcweir // -------------
91cdf0e10cSrcweir // - Functions -
92cdf0e10cSrcweir // -------------
93cdf0e10cSrcweir 
94cdf0e10cSrcweir class ResMgr;
95cdf0e10cSrcweir class String;
96cdf0e10cSrcweir class SvStream;
97cdf0e10cSrcweir class Graphic;
98cdf0e10cSrcweir class FmFormModel;
99cdf0e10cSrcweir class ImageMap;
100cdf0e10cSrcweir class Gallery;
101cdf0e10cSrcweir 
102cdf0e10cSrcweir SVX_DLLPUBLIC ResMgr*			GetGalleryResMgr();
103cdf0e10cSrcweir sal_uInt16			GalleryGraphicImport( const INetURLObject& rURL, Graphic& rGraphic, String& rFilterName, sal_Bool bShowProgress = sal_False );
104cdf0e10cSrcweir sal_Bool			GallerySvDrawImport( SvStream& rIStm, SdrModel& rModel );
105cdf0e10cSrcweir sal_Bool			CreateIMapGraphic( const FmFormModel& rModel, Graphic& rGraphic, ImageMap& rImageMap );
106cdf0e10cSrcweir SVX_DLLPUBLIC String			GetReducedString( const INetURLObject& rURL, sal_uIntPtr nMaxLen );
107cdf0e10cSrcweir String			GetSvDrawStreamNameFromURL( const INetURLObject& rSvDrawObjURL );
108cdf0e10cSrcweir 
109cdf0e10cSrcweir sal_Bool			FileExists( const INetURLObject& rURL );
110cdf0e10cSrcweir sal_Bool			CreateDir(  const INetURLObject& rURL );
111cdf0e10cSrcweir sal_Bool			CopyFile(  const INetURLObject& rSrcURL, const INetURLObject& rDstURL );
112cdf0e10cSrcweir sal_Bool			KillFile( const INetURLObject& rURL );
113cdf0e10cSrcweir BitmapEx		GalleryResGetBitmapEx( sal_uInt32 nId );
114cdf0e10cSrcweir 
115cdf0e10cSrcweir 
116cdf0e10cSrcweir // ---------------
117cdf0e10cSrcweir // - SgaIMapInfo -
118cdf0e10cSrcweir // ---------------
119cdf0e10cSrcweir 
120cdf0e10cSrcweir class SgaIMapInfo : public SdrObjUserData, public SfxListener
121cdf0e10cSrcweir {
122cdf0e10cSrcweir 	ImageMap				aImageMap;
123cdf0e10cSrcweir 
124cdf0e10cSrcweir public:
SgaIMapInfo()125cdf0e10cSrcweir 							SgaIMapInfo() : SdrObjUserData( IV_IMAPINFO, ID_IMAPINFO, 0 ) {};
126cdf0e10cSrcweir 
SgaIMapInfo(const ImageMap & rImageMap)127cdf0e10cSrcweir 							SgaIMapInfo( const ImageMap& rImageMap) :
128cdf0e10cSrcweir 								SdrObjUserData( IV_IMAPINFO, ID_IMAPINFO, 0 ),
129cdf0e10cSrcweir 								aImageMap( rImageMap ) {};
130cdf0e10cSrcweir 
~SgaIMapInfo()131cdf0e10cSrcweir 	virtual 				~SgaIMapInfo() {};
132cdf0e10cSrcweir 
Clone(SdrObject *) const133cdf0e10cSrcweir 	virtual SdrObjUserData* Clone( SdrObject* ) const
134cdf0e10cSrcweir 							{
135cdf0e10cSrcweir 								SgaIMapInfo* pInfo = new SgaIMapInfo;
136cdf0e10cSrcweir 								pInfo->aImageMap = aImageMap;
137cdf0e10cSrcweir 								return pInfo;
138cdf0e10cSrcweir 							}
139cdf0e10cSrcweir 
GetImageMap() const140cdf0e10cSrcweir 	const ImageMap&			GetImageMap() const { return aImageMap; }
141cdf0e10cSrcweir };
142cdf0e10cSrcweir 
143cdf0e10cSrcweir // ----------------------
144cdf0e10cSrcweir // - SgaUserDataFactory -
145cdf0e10cSrcweir // ----------------------
146cdf0e10cSrcweir 
147cdf0e10cSrcweir class SgaUserDataFactory
148cdf0e10cSrcweir {
149cdf0e10cSrcweir public:
SgaUserDataFactory()150cdf0e10cSrcweir 		SgaUserDataFactory() { SdrObjFactory::InsertMakeUserDataHdl( USERDATA_HDL() ); }
~SgaUserDataFactory()151cdf0e10cSrcweir 		~SgaUserDataFactory() { SdrObjFactory::RemoveMakeUserDataHdl( USERDATA_HDL() ); }
152cdf0e10cSrcweir 
153cdf0e10cSrcweir 		DECL_LINK( MakeUserData, SdrObjFactory* );
154cdf0e10cSrcweir };
155cdf0e10cSrcweir 
156cdf0e10cSrcweir // -------------------
157cdf0e10cSrcweir // - GalleryProgress -
158cdf0e10cSrcweir // -------------------
159cdf0e10cSrcweir 
160cdf0e10cSrcweir class GraphicFilter;
161cdf0e10cSrcweir 
162cdf0e10cSrcweir class SVX_DLLPUBLIC GalleryProgress
163cdf0e10cSrcweir {
164cdf0e10cSrcweir 	::com::sun::star::uno::Reference< ::com::sun::star::awt::XProgressBar >	mxProgressBar;
165cdf0e10cSrcweir 	GraphicFilter*															mpFilter;
166cdf0e10cSrcweir 
167cdf0e10cSrcweir 	public:
168cdf0e10cSrcweir 
169cdf0e10cSrcweir 									GalleryProgress( GraphicFilter* pFilter = NULL );
170cdf0e10cSrcweir 									~GalleryProgress();
171cdf0e10cSrcweir 
172cdf0e10cSrcweir 	void							Update( sal_uIntPtr nVal, sal_uIntPtr nMaxVal );
173cdf0e10cSrcweir };
174cdf0e10cSrcweir 
175cdf0e10cSrcweir // -----------------------
176cdf0e10cSrcweir // - GalleryTransferable -
177cdf0e10cSrcweir // -----------------------
178cdf0e10cSrcweir 
179cdf0e10cSrcweir class Gallery;
180cdf0e10cSrcweir class GalleryTheme;
181cdf0e10cSrcweir class GraphicObject;
182cdf0e10cSrcweir 
183cdf0e10cSrcweir class GalleryTransferable : public TransferableHelper
184cdf0e10cSrcweir {
185cdf0e10cSrcweir friend class GalleryTheme;
186cdf0e10cSrcweir using TransferableHelper::CopyToClipboard;
187cdf0e10cSrcweir 
188cdf0e10cSrcweir private:
189cdf0e10cSrcweir 
190cdf0e10cSrcweir 	GalleryTheme*					mpTheme;
191cdf0e10cSrcweir 	SgaObjKind						meObjectKind;
192cdf0e10cSrcweir 	sal_uInt32						mnObjectPos;
193cdf0e10cSrcweir     SotStorageStreamRef             mxModelStream;
194cdf0e10cSrcweir 	GraphicObject*					mpGraphicObject;
195cdf0e10cSrcweir 	ImageMap*						mpImageMap;
196cdf0e10cSrcweir 	INetURLObject*					mpURL;
197cdf0e10cSrcweir 
198cdf0e10cSrcweir protected:
199cdf0e10cSrcweir 
200cdf0e10cSrcweir 									GalleryTransferable( GalleryTheme* pTheme, sal_uIntPtr nObjectPos, bool bLazy );
201cdf0e10cSrcweir 									~GalleryTransferable();
202cdf0e10cSrcweir 
203cdf0e10cSrcweir 	void							InitData( bool bLazy );
204cdf0e10cSrcweir 
205cdf0e10cSrcweir 	// TransferableHelper
206cdf0e10cSrcweir 	virtual void					AddSupportedFormats();
207cdf0e10cSrcweir 	virtual sal_Bool				GetData( const ::com::sun::star::datatransfer::DataFlavor& rFlavor );
208cdf0e10cSrcweir 	virtual sal_Bool				WriteObject( SotStorageStreamRef& rxOStm, void* pUserObject, sal_uInt32 nUserObjectId, const ::com::sun::star::datatransfer::DataFlavor& rFlavor );
209cdf0e10cSrcweir 	virtual void					DragFinished( sal_Int8 nDropAction );
210cdf0e10cSrcweir 	virtual void					ObjectReleased();
211cdf0e10cSrcweir 
212cdf0e10cSrcweir 	void							CopyToClipboard( Window* pWindow );
213cdf0e10cSrcweir 	void							StartDrag( Window* pWindow, sal_Int8 nDragSourceActions,
214cdf0e10cSrcweir 											   sal_Int32 nDragPointer = DND_POINTER_NONE,
215cdf0e10cSrcweir 											   sal_Int32 nDragImage = DND_IMAGE_NONE );
216cdf0e10cSrcweir };
217cdf0e10cSrcweir 
218cdf0e10cSrcweir // ---------------
219cdf0e10cSrcweir // - GalleryHint -
220cdf0e10cSrcweir // ---------------
221cdf0e10cSrcweir 
222cdf0e10cSrcweir #define GALLERY_HINT_NONE				0x00000000
223cdf0e10cSrcweir #define GALLERY_HINT_CLOSE_THEME		0x00000001
224cdf0e10cSrcweir #define GALLERY_HINT_THEME_REMOVED		0x00000002
225cdf0e10cSrcweir #define GALLERY_HINT_THEME_RENAMED		0x00000004
226cdf0e10cSrcweir #define GALLERY_HINT_THEME_CREATED		0x00000008
227cdf0e10cSrcweir #define GALLERY_HINT_THEME_UPDATEVIEW	0x00000010
228cdf0e10cSrcweir #define GALLERY_HINT_CLOSE_OBJECT		0x00000020
229cdf0e10cSrcweir #define GALLERY_HINT_OBJECT_REMOVED		0x00000040
230cdf0e10cSrcweir 
231cdf0e10cSrcweir // -----------------------------------------------------------------------------
232cdf0e10cSrcweir 
233cdf0e10cSrcweir class GalleryHint : public SfxHint
234cdf0e10cSrcweir {
235cdf0e10cSrcweir private:
236cdf0e10cSrcweir 
237cdf0e10cSrcweir 	sal_uIntPtr			mnType;
238cdf0e10cSrcweir 	String			maThemeName;
239cdf0e10cSrcweir 	String			maStringData;
240cdf0e10cSrcweir 	sal_uIntPtr			mnData1;
241cdf0e10cSrcweir 	sal_uIntPtr			mnData2;
242cdf0e10cSrcweir 
243cdf0e10cSrcweir public:
244cdf0e10cSrcweir 
GalleryHint(sal_uIntPtr nType,const String & rThemeName,sal_uIntPtr nData1=0UL,sal_uIntPtr nData2=0UL)245cdf0e10cSrcweir 					GalleryHint( sal_uIntPtr nType, const String& rThemeName, sal_uIntPtr nData1 = 0UL, sal_uIntPtr nData2 = 0UL ) :
246cdf0e10cSrcweir 						mnType( nType ), maThemeName( rThemeName ), mnData1( nData1 ), mnData2( nData2 ) {}
247cdf0e10cSrcweir 
GalleryHint(sal_uIntPtr nType,const String & rThemeName,const String & rStringData,sal_uIntPtr nData1=0UL,sal_uIntPtr nData2=0UL)248cdf0e10cSrcweir 					GalleryHint( sal_uIntPtr nType, const String& rThemeName, const String& rStringData, sal_uIntPtr nData1 = 0UL, sal_uIntPtr nData2 = 0UL ) :
249cdf0e10cSrcweir 						mnType( nType ), maThemeName( rThemeName ), maStringData( rStringData ), mnData1( nData1 ), mnData2( nData2 ) {}
250cdf0e10cSrcweir 
GetType() const251cdf0e10cSrcweir 	sal_uIntPtr			GetType() const { return mnType; }
GetThemeName() const252cdf0e10cSrcweir 	const String&	GetThemeName() const { return maThemeName; }
GetStringData() const253cdf0e10cSrcweir 	const String&	GetStringData() const { return maStringData; }
GetData1() const254cdf0e10cSrcweir 	sal_uIntPtr			GetData1() const { return mnData1; }
GetData2() const255cdf0e10cSrcweir 	sal_uIntPtr			GetData2() const { return mnData2; }
256cdf0e10cSrcweir };
257cdf0e10cSrcweir 
258cdf0e10cSrcweir 	#endif
259