xref: /trunk/main/sw/source/ui/inc/content.hxx (revision cdf0e10c)
1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 #ifndef _CONTENT_HXX
28 #define _CONTENT_HXX
29 #include <limits.h>		// USHRT_MAX
30 #include "swcont.hxx"
31 
32 #ifndef _MENU_HXX //autogen
33 #include <vcl/menu.hxx>
34 #endif
35 
36 class SwWrtShell;
37 class SwContentArr;
38 class SwContentType;
39 class SwFmtFld;
40 class SwTxtINetFmt;
41 class SwTOXBase;
42 class SwRedline;
43 
44 //----------------------------------------------------------------------------
45 //	Hilfsklassen
46 //----------------------------------------------------------------------------
47 
48 class SwPopup : public PopupMenu
49 {
50 	sal_uInt16			nCurId;
51 	virtual void    Select(){nCurId = GetCurItemId();}
52 
53 public:
54 	SwPopup() :
55 		PopupMenu(),
56 		nCurId(USHRT_MAX){}
57 
58 	sal_uInt16			GetCurId() const { return nCurId; }
59 
60 };
61 
62 //----------------------------------------------------------------------------
63 
64 class SwOutlineContent : public SwContent
65 {
66 	sal_uInt16	nOutlinePos;
67 	sal_uInt8	nOutlineLevel;
68 	sal_Bool	bIsMoveable;
69 	public:
70 		SwOutlineContent(	const SwContentType* pCnt,
71 							const String& rName,
72 							sal_uInt16 nArrPos,
73 							sal_uInt8 nLevel,
74 							sal_Bool bMove,
75 							long nYPos) :
76 			SwContent(pCnt, rName, nYPos),
77 			nOutlinePos(nArrPos), nOutlineLevel(nLevel), bIsMoveable(bMove) {}
78 
79 	sal_uInt16 	GetPos(){return nOutlinePos;}
80 	sal_uInt8 	GetOutlineLevel(){return nOutlineLevel;}
81 	sal_Bool	IsMoveable(){return bIsMoveable;};
82 };
83 
84 //----------------------------------------------------------------------------
85 class SwRegionContent : public SwContent
86 {
87 
88 	sal_uInt8	nRegionLevel;
89 
90 	public:
91 		SwRegionContent(	const SwContentType* pCnt,
92 							const String& rName,
93 							sal_uInt8 nLevel,
94 							long nYPos) :
95 			SwContent(pCnt, rName, nYPos),
96 						nRegionLevel(nLevel){}
97 	sal_uInt8 	GetRegionLevel() const {return nRegionLevel;}
98 };
99 //----------------------------------------------------------------------------
100 
101 class SwURLFieldContent : public SwContent
102 {
103 	String sURL;
104 	const SwTxtINetFmt* pINetAttr;
105 
106 public:
107 	SwURLFieldContent(	const SwContentType* pCnt,
108 							const String& rName,
109 							const String& rURL,
110 							const SwTxtINetFmt* pAttr,
111 							long nYPos )
112 		: SwContent( pCnt, rName, nYPos ), sURL( rURL ), pINetAttr( pAttr )
113 	{}
114 
115 	virtual sal_Bool	IsProtect() const;
116 	const String& 	GetURL() 				{ return sURL; }
117 	const SwTxtINetFmt* GetINetAttr()		{ return pINetAttr; }
118 };
119 
120 //----------------------------------------------------------------------------
121 class SwPostItContent : public SwContent
122 {
123 	const SwFmtFld* 	pFld;
124 	SwRedline* 			pRedline;
125 	bool				mbPostIt;
126 public:
127 	SwPostItContent( const SwContentType* pCnt,
128 							const String& rName,
129 							const SwFmtFld* pField,
130 							long nYPos )
131 		: SwContent( pCnt, rName, nYPos ), pFld( pField ),mbPostIt(true)
132 	{}
133 	SwPostItContent( const SwContentType* pCnt,
134 							const String& rName,
135 							SwRedline* pRed,
136 							long nYPos )
137 		: SwContent( pCnt, rName, nYPos ), pRedline( pRed ),mbPostIt(false)
138 	{}
139 
140 	const SwFmtFld* GetPostIt()		{ return pFld; }
141 	SwRedline* GetRedline()	{ return pRedline; }
142 	virtual sal_Bool	IsProtect()		const;
143 	bool			IsPostIt()		{return mbPostIt; }
144 };
145 
146 //----------------------------------------------------------------------------
147 
148 class SwGraphicContent : public SwContent
149 {
150 	String 		sLink;
151 public:
152 	SwGraphicContent(const SwContentType* pCnt, const String& rName, const String& rLink, long nYPos)
153 		: SwContent( pCnt, rName, nYPos ), sLink( rLink )
154 		{}
155 	virtual ~SwGraphicContent();
156 
157 	const String& 	GetLink() const {return sLink;}
158 };
159 
160 //----------------------------------------------------------------------------
161 class SwTOXBaseContent : public SwContent
162 {
163 	const SwTOXBase* pBase;
164 public:
165 	SwTOXBaseContent(const SwContentType* pCnt, const String& rName, long nYPos, const SwTOXBase& rBase)
166 		: SwContent( pCnt, rName, nYPos ), pBase(&rBase)
167 		{}
168 	virtual ~SwTOXBaseContent();
169 
170 	const SwTOXBase* GetTOXBase() const {return pBase;}
171 };
172 /*
173 	class ContentType enthaelt Informationen zu einer Inhaltsform
174 	Das MemberArray wird nur gefuellt, wenn der Inhalt mit GetMember
175 	angefordert wird. Es wird nach Invalidate() nur dann neu geladen,
176 	wenn der Inhalt erneut ausgelesen werden soll.
177 */
178 //----------------------------------------------------------------------------
179 //----------------------------------------------------------------------------
180 
181 class SwContentType : public SwTypeNumber
182 {
183 	SwWrtShell* 		pWrtShell;
184 	SwContentArr* 		pMember;			// Array fuer Inhalte
185 	String 				sContentTypeName; 	// Name der Inhaltsform
186 	String 				sSingleContentTypeName; // Name der Inhaltsform, Singular
187 	String 				sTypeToken;			// Anhaengsel fuer URL
188 	sal_uInt16				nMemberCount;		// Inhaltsanzahl
189 	sal_uInt16				nContentType;		// Id der Inhaltsform
190 	sal_uInt8 				nOutlineLevel;
191 	sal_Bool 				bMemberFilled : 1; 	// wurden die Inhalte bereits eingefuegt?
192 	sal_Bool 				bIsInternalDrag:1;	// koennen die Inhalte verschoben werden?
193 	sal_Bool				bDataValid : 	1;  //
194 	sal_Bool				bEdit:			1;	// kann diese Type bearbeitet werden ?
195 	sal_Bool				bDelete:		1;	// kann diese Type geloescht werden ?
196 protected:
197 		void			RemoveNewline(String&);
198 public:
199 		SwContentType(SwWrtShell* pParent, sal_uInt16 nType, sal_uInt8 nLevel );
200 		~SwContentType();
201 
202 		void				Init(sal_Bool* pbInvalidateWindow = 0);
203 		void				FillMemberList(sal_Bool* pbLevelChanged = NULL);
204 		sal_uInt16				GetMemberCount() const
205 								{return nMemberCount;};
206 		sal_uInt16				GetType() const {return nContentType;}
207 		const SwContent*	GetMember(sal_uInt16 nIndex);
208 		const String&		GetName() {return sContentTypeName;}
209 		const String&		GetSingleName() const {return sSingleContentTypeName;}
210 		const String&		GetTypeToken() const{return sTypeToken;}
211 
212 		void				SetOutlineLevel(sal_uInt8 nNew)
213 							{
214 								nOutlineLevel = nNew;
215 								Invalidate();
216 							}
217 
218 		void				Invalidate(); // nur nMemberCount wird neu gelesen
219 
220 		sal_Bool 				IsEditable() const {return bEdit;}
221 		sal_Bool				IsDeletable() const {return bDelete;}
222 };
223 
224 #endif
225 
226