1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 #ifndef _SFX_FRMDESCRHXX 24 #define _SFX_FRMDESCRHXX 25 26 #include "sal/config.h" 27 #include "sfx2/dllapi.h" 28 29 #include <sfx2/sfxsids.hrc> 30 #include <svl/poolitem.hxx> 31 #include <tools/urlobj.hxx> 32 #include <tools/string.hxx> 33 #include <svl/svarray.hxx> 34 #include <tools/gen.hxx> 35 36 class SvStream; 37 struct SfxFrameDescriptor_Impl; 38 class SvStrings; 39 class SfxFrameDescriptor; 40 class Wallpaper; 41 typedef SfxFrameDescriptor* SfxFrameDescriptorPtr; 42 SV_DECL_PTRARR(SfxFramesArr, SfxFrameDescriptorPtr, 4, 2) 43 44 //=========================================================================== 45 // Die SfxFrame...descriptoren bauen eine rekursive Struktur auf, die 46 // s"amtliche zur Anzeige des Frame-Dokuments erforderlichen Daten umfa\st. 47 // "Uber einen SfxFrameSetDescriptor hat man Zugriff auf die gesamte darunter 48 // liegende Struktur. 49 // Aufgrund der besonderen Eigenschaften des SfxFrames-Dokuments ist ein 50 // SfxFramesSetDescriptor nicht nur der Inhalt dieses Dokuments, sondern 51 // beschreibt auch die View darauf. 52 // Das FrameSet wird aus Zeilen aufgebaut, die wiederum die eigentlichen 53 // Fenster enthalten. Eine Zeile kann horizontal oder vertikal ausgerichtet 54 // sein, woraus sich auch das Alignment des FrameSets ergibt. 55 //=========================================================================== 56 57 enum ScrollingMode 58 { 59 ScrollingYes, 60 ScrollingNo, 61 ScrollingAuto 62 }; 63 64 enum SizeSelector 65 { 66 SIZE_ABS, 67 SIZE_PERCENT, 68 SIZE_REL 69 }; 70 71 #define BORDER_SET 2 72 #define BORDER_YES 1 73 #define BORDER_NO 0 74 #define SPACING_NOT_SET -1L 75 #define SIZE_NOT_SET -1L 76 77 class SfxItemSet; 78 struct SfxFrameProperties; 79 80 class SFX2_DLLPUBLIC SfxFrameDescriptor 81 { 82 INetURLObject aURL; 83 INetURLObject aActualURL; 84 String aName; 85 Size aMargin; 86 long nWidth; 87 ScrollingMode eScroll; 88 SizeSelector eSizeSelector; 89 sal_uInt16 nHasBorder; 90 sal_uInt16 nItemId; 91 sal_Bool bResizeHorizontal; 92 sal_Bool bResizeVertical; 93 sal_Bool bHasUI; 94 sal_Bool bReadOnly; 95 SfxFrameDescriptor_Impl* pImp; 96 SvStrings* pScripts; 97 SvStrings* pComments; 98 99 public: 100 SfxFrameDescriptor(); 101 ~SfxFrameDescriptor(); 102 103 // Eigenschaften 104 void TakeProperties( const SfxFrameProperties& rProp ); 105 106 // FileName/URL 107 SfxItemSet* GetArgs(); GetURL() const108 const INetURLObject& GetURL() const 109 { return aURL; } 110 void SetURL( const INetURLObject& rURL ); 111 void SetURL( const String& rURL ); GetActualURL() const112 const INetURLObject& GetActualURL() const 113 { return aActualURL; } 114 void SetActualURL( const INetURLObject& rURL ); 115 void SetActualURL( const String& rURL ); 116 sal_Bool CheckContent() const; 117 sal_Bool CompareOriginal( SfxFrameDescriptor& rSet ) const; 118 void UnifyContent( sal_Bool ); SetReadOnly(sal_Bool bSet)119 void SetReadOnly( sal_Bool bSet ) { bReadOnly = bSet;} IsReadOnly() const120 sal_Bool IsReadOnly( ) const { return bReadOnly;} 121 void SetEditable( sal_Bool bSet ); 122 sal_Bool IsEditable() const; 123 124 // Size SetWidth(long n)125 void SetWidth( long n ) 126 { nWidth = n; } SetWidthPercent(long n)127 void SetWidthPercent( long n ) 128 { nWidth = n; eSizeSelector = SIZE_PERCENT; } SetWidthRel(long n)129 void SetWidthRel( long n ) 130 { nWidth = n; eSizeSelector = SIZE_REL; } SetWidthAbs(long n)131 void SetWidthAbs( long n ) 132 { nWidth = n; eSizeSelector = SIZE_ABS; } GetWidth() const133 long GetWidth() const 134 { return nWidth; } GetSizeSelector() const135 SizeSelector GetSizeSelector() const 136 { return eSizeSelector; } IsResizable() const137 sal_Bool IsResizable() const 138 { return bResizeHorizontal && bResizeVertical; } SetResizable(sal_Bool bRes)139 void SetResizable( sal_Bool bRes ) 140 { bResizeHorizontal = bResizeVertical = bRes; } 141 142 // FrameName GetName() const143 const String& GetName() const 144 { return aName; } SetName(const String & rName)145 void SetName( const String& rName ) 146 { aName = rName; } 147 148 // Margin, Scrolling GetMargin() const149 const Size& GetMargin() const 150 { return aMargin; } SetMargin(const Size & rMargin)151 void SetMargin( const Size& rMargin ) 152 { aMargin = rMargin; } GetScrollingMode() const153 ScrollingMode GetScrollingMode() const 154 { return eScroll; } SetScrollingMode(ScrollingMode eMode)155 void SetScrollingMode( ScrollingMode eMode ) 156 { eScroll = eMode; } 157 158 // FrameBorder 159 void SetWallpaper( const Wallpaper& rWallpaper ); 160 const Wallpaper* GetWallpaper() const; 161 sal_Bool HasFrameBorder() const; 162 IsFrameBorderOn() const163 sal_Bool IsFrameBorderOn() const 164 { return ( nHasBorder & BORDER_YES ) != 0; } 165 SetFrameBorder(sal_Bool bBorder)166 void SetFrameBorder( sal_Bool bBorder ) 167 { 168 nHasBorder = bBorder ? 169 BORDER_YES | BORDER_SET : 170 BORDER_NO | BORDER_SET; 171 } IsFrameBorderSet() const172 sal_Bool IsFrameBorderSet() const 173 { return (nHasBorder & BORDER_SET) != 0; } ResetBorder()174 void ResetBorder() 175 { nHasBorder = 0; } 176 HasUI() const177 sal_Bool HasUI() const 178 { return bHasUI; } SetHasUI(sal_Bool bOn)179 void SetHasUI( sal_Bool bOn ) 180 { bHasUI = bOn; } 181 182 // Attribute f"ur das Splitwindow GetItemId() const183 sal_uInt16 GetItemId() const 184 { return nItemId; } SetItemId(sal_uInt16 nId)185 void SetItemId( sal_uInt16 nId ) 186 { nItemId = nId; } 187 sal_uInt16 GetWinBits() const; 188 long GetSize() const; 189 sal_uInt16 GetItemPos() const; 190 191 // Kopie z.B. f"ur die Views 192 SfxFrameDescriptor* Clone( sal_Bool bWithIds = sal_True ) const; 193 }; 194 195 // Kein Bock, einen operator= zu implementieren... 196 struct SfxFrameProperties 197 { 198 String aURL; 199 String aName; 200 long lMarginWidth; 201 long lMarginHeight; 202 long lSize; 203 long lSetSize; 204 long lFrameSpacing; 205 long lInheritedFrameSpacing; 206 ScrollingMode eScroll; 207 SizeSelector eSizeSelector; 208 SizeSelector eSetSizeSelector; 209 sal_Bool bHasBorder; 210 sal_Bool bBorderSet; 211 sal_Bool bResizable; 212 sal_Bool bSetResizable; 213 sal_Bool bIsRootSet; 214 sal_Bool bIsInColSet; 215 sal_Bool bHasBorderInherited; 216 SfxFrameDescriptor* pFrame; 217 218 private: SfxFramePropertiesSfxFrameProperties219 SfxFrameProperties( SfxFrameProperties& ) {} 220 public: SfxFramePropertiesSfxFrameProperties221 SfxFrameProperties() 222 : lMarginWidth( SIZE_NOT_SET ), 223 lMarginHeight( SIZE_NOT_SET ), 224 lSize( 1L ), 225 lSetSize( 1L ), 226 lFrameSpacing( SPACING_NOT_SET ), 227 lInheritedFrameSpacing( SPACING_NOT_SET ), 228 eScroll( ScrollingAuto ), 229 eSizeSelector( SIZE_REL ), 230 eSetSizeSelector( SIZE_REL ), 231 bHasBorder( sal_True ), 232 bBorderSet( sal_True ), 233 bResizable( sal_True ), 234 bSetResizable( sal_True ), 235 bIsRootSet( sal_False ), 236 bIsInColSet( sal_False ), 237 bHasBorderInherited( sal_True ), 238 pFrame( 0 ) {} 239 240 SfxFrameProperties( const SfxFrameDescriptor *pD ); ~SfxFramePropertiesSfxFrameProperties241 ~SfxFrameProperties() { delete pFrame; } 242 243 int operator ==( const SfxFrameProperties& ) const; 244 SfxFrameProperties& operator =( const SfxFrameProperties &rProp ); 245 }; 246 247 class SfxFrameDescriptorItem : public SfxPoolItem 248 { 249 SfxFrameProperties aProperties; 250 public: 251 TYPEINFO(); 252 SfxFrameDescriptorItem(const SfxFrameDescriptor * pD,const sal_uInt16 nId=SID_FRAMEDESCRIPTOR)253 SfxFrameDescriptorItem ( const SfxFrameDescriptor *pD, const sal_uInt16 nId = SID_FRAMEDESCRIPTOR ) 254 : SfxPoolItem( nId ) 255 , aProperties( pD ) 256 {} 257 SfxFrameDescriptorItem(const sal_uInt16 nId=SID_FRAMEDESCRIPTOR)258 SfxFrameDescriptorItem ( const sal_uInt16 nId = SID_FRAMEDESCRIPTOR ) 259 : SfxPoolItem( nId ) 260 {} 261 SfxFrameDescriptorItem(const SfxFrameDescriptorItem & rCpy)262 SfxFrameDescriptorItem( const SfxFrameDescriptorItem& rCpy ) 263 : SfxPoolItem( rCpy ) 264 { 265 aProperties = rCpy.aProperties; 266 } 267 268 virtual ~SfxFrameDescriptorItem(); 269 270 virtual int operator ==( const SfxPoolItem& ) const; 271 SfxFrameDescriptorItem& operator =( const SfxFrameDescriptorItem & ); 272 273 virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres, 274 SfxMapUnit eCoreMetric, 275 SfxMapUnit ePresMetric, 276 UniString &rText, const IntlWrapper * = 0 ) const; 277 278 virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const; 279 //virtual SfxPoolItem* Create(SvStream &, sal_uInt16) const; 280 //virtual SvStream& Store(SvStream &, sal_uInt16 nItemVersion ) const; 281 //virtual sal_uInt16 GetVersion( sal_uInt16 nFileFormatVersion ) const; 282 GetProperties() const283 const SfxFrameProperties& GetProperties() const 284 { return aProperties; } SetProperties(const SfxFrameProperties & rProp)285 void SetProperties( const SfxFrameProperties& rProp ) 286 { aProperties = rProp; } 287 }; 288 289 #endif // #ifndef _SFX_FRMDESCRHXX 290 291