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