xref: /AOO41X/main/sw/source/ui/inc/content.hxx (revision 54628ca40d27d15cc98fe861da7fff7e60c2f7d6)
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 _CONTENT_HXX
24 #define _CONTENT_HXX
25 #include <limits.h>     // USHRT_MAX
26 #include "swcont.hxx"
27 
28 #ifndef _MENU_HXX //autogen
29 #include <vcl/menu.hxx>
30 #endif
31 
32 class SwWrtShell;
33 class SwContentArr;
34 class SwContentType;
35 class SwFmtFld;
36 class SwTxtINetFmt;
37 class SwTOXBase;
38 class SwRedline;
39 
40 //----------------------------------------------------------------------------
41 //  Hilfsklassen
42 //----------------------------------------------------------------------------
43 
44 class SwPopup : public PopupMenu
45 {
46     sal_uInt16          nCurId;
47     virtual void    Select(){nCurId = GetCurItemId();}
48 
49 public:
50     SwPopup() :
51         PopupMenu(),
52         nCurId(USHRT_MAX){}
53 
54     sal_uInt16          GetCurId() const { return nCurId; }
55 
56 };
57 
58 //----------------------------------------------------------------------------
59 
60 class SwOutlineContent : public SwContent
61 {
62     sal_uInt16  nOutlinePos;
63     sal_uInt8   nOutlineLevel;
64     sal_Bool    bIsMoveable;
65     public:
66         SwOutlineContent(   const SwContentType* pCnt,
67                             const String& rName,
68                             sal_uInt16 nArrPos,
69                             sal_uInt8 nLevel,
70                             sal_Bool bMove,
71                             long nYPos) :
72             SwContent(pCnt, rName, nYPos),
73             nOutlinePos(nArrPos), nOutlineLevel(nLevel), bIsMoveable(bMove) {}
74 
75     sal_uInt16  GetPos(){return nOutlinePos;}
76     sal_uInt8   GetOutlineLevel(){return nOutlineLevel;}
77     sal_Bool    IsMoveable(){return bIsMoveable;};
78 };
79 
80 //----------------------------------------------------------------------------
81 class SwRegionContent : public SwContent
82 {
83 
84     sal_uInt8   nRegionLevel;
85 
86     public:
87         SwRegionContent(    const SwContentType* pCnt,
88                             const String& rName,
89                             sal_uInt8 nLevel,
90                             long nYPos) :
91             SwContent(pCnt, rName, nYPos),
92                         nRegionLevel(nLevel){}
93     sal_uInt8   GetRegionLevel() const {return nRegionLevel;}
94 };
95 //----------------------------------------------------------------------------
96 
97 class SwURLFieldContent : public SwContent
98 {
99     String sURL;
100     const SwTxtINetFmt* pINetAttr;
101 
102 public:
103     SwURLFieldContent(  const SwContentType* pCnt,
104                             const String& rName,
105                             const String& rURL,
106                             const SwTxtINetFmt* pAttr,
107                             long nYPos )
108         : SwContent( pCnt, rName, nYPos ), sURL( rURL ), pINetAttr( pAttr )
109     {}
110 
111     virtual sal_Bool    IsProtect() const;
112     const String&   GetURL()                { return sURL; }
113     const SwTxtINetFmt* GetINetAttr()       { return pINetAttr; }
114 };
115 
116 //----------------------------------------------------------------------------
117 class SwPostItContent : public SwContent
118 {
119     const SwFmtFld*     pFld;
120     SwRedline*          pRedline;
121     bool                mbPostIt;
122 public:
123     SwPostItContent( const SwContentType* pCnt,
124                             const String& rName,
125                             const SwFmtFld* pField,
126                             long nYPos )
127         : SwContent( pCnt, rName, nYPos ), pFld( pField ),mbPostIt(true)
128     {}
129     SwPostItContent( const SwContentType* pCnt,
130                             const String& rName,
131                             SwRedline* pRed,
132                             long nYPos )
133         : SwContent( pCnt, rName, nYPos ), pRedline( pRed ),mbPostIt(false)
134     {}
135 
136     const SwFmtFld* GetPostIt()     { return pFld; }
137     SwRedline* GetRedline() { return pRedline; }
138     virtual sal_Bool    IsProtect()     const;
139     bool            IsPostIt()      {return mbPostIt; }
140 };
141 
142 //----------------------------------------------------------------------------
143 
144 class SwGraphicContent : public SwContent
145 {
146     String      sLink;
147 public:
148     SwGraphicContent(const SwContentType* pCnt, const String& rName, const String& rLink, long nYPos)
149         : SwContent( pCnt, rName, nYPos ), sLink( rLink )
150         {}
151     virtual ~SwGraphicContent();
152 
153     const String&   GetLink() const {return sLink;}
154 };
155 
156 //----------------------------------------------------------------------------
157 class SwTOXBaseContent : public SwContent
158 {
159     const SwTOXBase* pBase;
160 public:
161     SwTOXBaseContent(const SwContentType* pCnt, const String& rName, long nYPos, const SwTOXBase& rBase)
162         : SwContent( pCnt, rName, nYPos ), pBase(&rBase)
163         {}
164     virtual ~SwTOXBaseContent();
165 
166     const SwTOXBase* GetTOXBase() const {return pBase;}
167 };
168 /*
169     class ContentType enthaelt Informationen zu einer Inhaltsform
170     Das MemberArray wird nur gefuellt, wenn der Inhalt mit GetMember
171     angefordert wird. Es wird nach Invalidate() nur dann neu geladen,
172     wenn der Inhalt erneut ausgelesen werden soll.
173 */
174 //----------------------------------------------------------------------------
175 //----------------------------------------------------------------------------
176 
177 class SwContentType : public SwTypeNumber
178 {
179     SwWrtShell*         pWrtShell;
180     SwContentArr*       pMember;            // Array fuer Inhalte
181     String              sContentTypeName;   // Name der Inhaltsform
182     String              sSingleContentTypeName; // Name der Inhaltsform, Singular
183     String              sTypeToken;         // Anhaengsel fuer URL
184     sal_uInt16              nMemberCount;       // Inhaltsanzahl
185     sal_uInt16              nContentType;       // Id der Inhaltsform
186     sal_uInt8               nOutlineLevel;
187     sal_Bool                bMemberFilled : 1;  // wurden die Inhalte bereits eingefuegt?
188     sal_Bool                bIsInternalDrag:1;  // koennen die Inhalte verschoben werden?
189     sal_Bool                bDataValid :    1;  //
190     sal_Bool                bEdit:          1;  // kann diese Type bearbeitet werden ?
191     sal_Bool                bDelete:        1;  // kann diese Type geloescht werden ?
192 protected:
193         void            RemoveNewline(String&);
194 public:
195         SwContentType(SwWrtShell* pParent, sal_uInt16 nType, sal_uInt8 nLevel );
196         ~SwContentType();
197 
198         void                Init(sal_Bool* pbInvalidateWindow = 0);
199         void                FillMemberList(sal_Bool* pbLevelChanged = NULL);
200         sal_uInt16              GetMemberCount() const
201                                 {return nMemberCount;};
202         sal_uInt16              GetType() const {return nContentType;}
203         const SwContent*    GetMember(sal_uInt16 nIndex);
204         const String&       GetName() {return sContentTypeName;}
205         const String&       GetSingleName() const {return sSingleContentTypeName;}
206         const String&       GetTypeToken() const{return sTypeToken;}
207 
208         void                SetOutlineLevel(sal_uInt8 nNew)
209                             {
210                                 nOutlineLevel = nNew;
211                                 Invalidate();
212                             }
213 
214         void                Invalidate(); // nur nMemberCount wird neu gelesen
215 
216         sal_Bool                IsEditable() const {return bEdit;}
217         sal_Bool                IsDeletable() const {return bDelete;}
218 };
219 
220 #endif
221 
222