xref: /aoo41x/main/sw/source/ui/inc/redlndlg.hxx (revision 1d2dbeb0)
1*1d2dbeb0SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*1d2dbeb0SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*1d2dbeb0SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*1d2dbeb0SAndrew Rist  * distributed with this work for additional information
6*1d2dbeb0SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*1d2dbeb0SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*1d2dbeb0SAndrew Rist  * "License"); you may not use this file except in compliance
9*1d2dbeb0SAndrew Rist  * with the License.  You may obtain a copy of the License at
10*1d2dbeb0SAndrew Rist  *
11*1d2dbeb0SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*1d2dbeb0SAndrew Rist  *
13*1d2dbeb0SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*1d2dbeb0SAndrew Rist  * software distributed under the License is distributed on an
15*1d2dbeb0SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*1d2dbeb0SAndrew Rist  * KIND, either express or implied.  See the License for the
17*1d2dbeb0SAndrew Rist  * specific language governing permissions and limitations
18*1d2dbeb0SAndrew Rist  * under the License.
19*1d2dbeb0SAndrew Rist  *
20*1d2dbeb0SAndrew Rist  *************************************************************/
21*1d2dbeb0SAndrew Rist 
22*1d2dbeb0SAndrew Rist 
23cdf0e10cSrcweir #ifndef _SWREDLNDLG_HXX
24cdf0e10cSrcweir #define _SWREDLNDLG_HXX
25cdf0e10cSrcweir #include "swdllapi.h"
26cdf0e10cSrcweir #include "chldwrap.hxx"
27cdf0e10cSrcweir #include <redline.hxx>
28cdf0e10cSrcweir #include <tools/datetime.hxx>
29cdf0e10cSrcweir #include <vcl/msgbox.hxx>
30cdf0e10cSrcweir #ifndef _SVSTDARR_HXX
31cdf0e10cSrcweir #include <svl/svstdarr.hxx>
32cdf0e10cSrcweir #endif
33cdf0e10cSrcweir #include <svl/eitem.hxx>
34cdf0e10cSrcweir #include <sfx2/basedlgs.hxx>
35cdf0e10cSrcweir #include <sfx2/viewfrm.hxx>
36cdf0e10cSrcweir #include <sfx2/dispatch.hxx>
37cdf0e10cSrcweir #include <svx/ctredlin.hxx>
38cdf0e10cSrcweir #include <svx/postattr.hxx>
39cdf0e10cSrcweir 
40cdf0e10cSrcweir class SwChildWinWrapper;
41cdf0e10cSrcweir 
42cdf0e10cSrcweir struct SwRedlineDataChild
43cdf0e10cSrcweir {
44cdf0e10cSrcweir 	const SwRedlineData*		pChild;		// Verweis auf originale gestackte Daten
45cdf0e10cSrcweir 	const SwRedlineDataChild*	pNext;		// Verweis auf gestackte Daten
46cdf0e10cSrcweir 	SvLBoxEntry*				pTLBChild;	// zugehoeriger TreeListBox-Eintrag
47cdf0e10cSrcweir };
48cdf0e10cSrcweir 
49cdf0e10cSrcweir struct SwRedlineDataParent
50cdf0e10cSrcweir {
51cdf0e10cSrcweir 	const SwRedlineData*		pData;		// RedlineDataPtr
52cdf0e10cSrcweir 	const SwRedlineDataChild*	pNext;		// Verweis auf gestackte Daten
53cdf0e10cSrcweir 	SvLBoxEntry*				pTLBParent;	// zugehoeriger TreeListBox-Eintrag
54cdf0e10cSrcweir 	String						sComment;	// Redline-Kommentar
55cdf0e10cSrcweir 
operator ==SwRedlineDataParent56cdf0e10cSrcweir 	inline sal_Bool	operator==( const SwRedlineDataParent& rObj ) const
57cdf0e10cSrcweir 						{ return (pData && pData->GetSeqNo() == rObj.pData->GetSeqNo()); }
operator <SwRedlineDataParent58cdf0e10cSrcweir 	inline sal_Bool	operator< ( const SwRedlineDataParent& rObj ) const
59cdf0e10cSrcweir 						{ return (pData && pData->GetSeqNo() <  rObj.pData->GetSeqNo()); }
60cdf0e10cSrcweir };
61cdf0e10cSrcweir 
62cdf0e10cSrcweir typedef SwRedlineDataParent* SwRedlineDataParentPtr;
63cdf0e10cSrcweir SV_DECL_PTRARR_DEL(SwRedlineDataParentArr, SwRedlineDataParentPtr, 10, 20)
64cdf0e10cSrcweir 
65cdf0e10cSrcweir 
66cdf0e10cSrcweir SV_DECL_PTRARR_SORT(SwRedlineDataParentSortArr, SwRedlineDataParentPtr, 10, 20)
67cdf0e10cSrcweir 
68cdf0e10cSrcweir 
69cdf0e10cSrcweir typedef SwRedlineDataChild* SwRedlineDataChildPtr;
70cdf0e10cSrcweir SV_DECL_PTRARR_DEL(SwRedlineDataChildArr, SwRedlineDataChildPtr, 4, 4)
71cdf0e10cSrcweir 
72cdf0e10cSrcweir 
73cdf0e10cSrcweir typedef SvLBoxEntry* SvLBoxEntryPtr;
74cdf0e10cSrcweir SV_DECL_PTRARR(SvLBoxEntryArr, SvLBoxEntryPtr, 100, 100)
75cdf0e10cSrcweir 
76cdf0e10cSrcweir class SW_DLLPUBLIC SwRedlineAcceptDlg
77cdf0e10cSrcweir {
78cdf0e10cSrcweir 	Dialog*					pParentDlg;
79cdf0e10cSrcweir 	SwRedlineDataParentArr	aRedlineParents;
80cdf0e10cSrcweir 	SwRedlineDataChildArr	aRedlineChilds;
81cdf0e10cSrcweir 	SwRedlineDataParentSortArr aUsedSeqNo;
82cdf0e10cSrcweir 	SvxAcceptChgCtr			aTabPagesCTRL;
83cdf0e10cSrcweir 	PopupMenu				aPopup;
84cdf0e10cSrcweir 	Timer					aDeselectTimer;
85cdf0e10cSrcweir 	Timer					aSelectTimer;
86cdf0e10cSrcweir 	String					sInserted;
87cdf0e10cSrcweir 	String					sDeleted;
88cdf0e10cSrcweir 	String					sFormated;
89cdf0e10cSrcweir 	String					sTableChgd;
90cdf0e10cSrcweir 	String					sFmtCollSet;
91cdf0e10cSrcweir 	String					sFilterAction;
92cdf0e10cSrcweir 	String					sAutoFormat;
93cdf0e10cSrcweir 	Size					aBorderSz;
94cdf0e10cSrcweir 	SvxTPView*				pTPView;
95cdf0e10cSrcweir 	SvxRedlinTable*			pTable; // PB 2006/02/02 #i48648 now SvHeaderTabListBox
96cdf0e10cSrcweir 	Link					aOldSelectHdl;
97cdf0e10cSrcweir 	Link					aOldDeselectHdl;
98cdf0e10cSrcweir 	sal_Bool 					bOnlyFormatedRedlines;
99cdf0e10cSrcweir 	sal_Bool					bHasReadonlySel;
100cdf0e10cSrcweir 	sal_Bool					bRedlnAutoFmt;
101cdf0e10cSrcweir 
102cdf0e10cSrcweir     // prevent update dialog data during longer operations (cf #102657#)
103cdf0e10cSrcweir     bool                    bInhibitActivate;
104cdf0e10cSrcweir 
105cdf0e10cSrcweir 	SW_DLLPRIVATE DECL_LINK( AcceptHdl,		void* );
106cdf0e10cSrcweir 	SW_DLLPRIVATE DECL_LINK( AcceptAllHdl,	void* );
107cdf0e10cSrcweir 	SW_DLLPRIVATE DECL_LINK( RejectHdl,		void* );
108cdf0e10cSrcweir 	SW_DLLPRIVATE DECL_LINK( RejectAllHdl,	void* );
109cdf0e10cSrcweir 	SW_DLLPRIVATE DECL_LINK( UndoHdl,			void* );
110cdf0e10cSrcweir 	SW_DLLPRIVATE DECL_LINK( DeselectHdl,		void* );
111cdf0e10cSrcweir 	SW_DLLPRIVATE DECL_LINK( SelectHdl,		void* );
112cdf0e10cSrcweir 	SW_DLLPRIVATE DECL_LINK( GotoHdl,			void* );
113cdf0e10cSrcweir 	SW_DLLPRIVATE DECL_LINK( CommandHdl,		void* );
114cdf0e10cSrcweir 
115cdf0e10cSrcweir 	SW_DLLPRIVATE sal_uInt16			CalcDiff(sal_uInt16 nStart, sal_Bool bChild);
116cdf0e10cSrcweir 	SW_DLLPRIVATE void			InsertChilds(SwRedlineDataParent *pParent, const SwRedline& rRedln, const sal_uInt16 nAutoFmt);
117cdf0e10cSrcweir 	SW_DLLPRIVATE void			InsertParents(sal_uInt16 nStart, sal_uInt16 nEnd = USHRT_MAX);
118cdf0e10cSrcweir 	SW_DLLPRIVATE void			RemoveParents(sal_uInt16 nStart, sal_uInt16 nEnd);
119cdf0e10cSrcweir 	SW_DLLPRIVATE void			InitAuthors();
120cdf0e10cSrcweir 
121cdf0e10cSrcweir 	SW_DLLPRIVATE String			GetRedlineText(const SwRedline& rRedln, DateTime &rDateTime, sal_uInt16 nStack = 0);
122cdf0e10cSrcweir 	SW_DLLPRIVATE const String&	GetActionText(const SwRedline& rRedln, sal_uInt16 nStack = 0);
123cdf0e10cSrcweir 	SW_DLLPRIVATE sal_uInt16			GetRedlinePos( const SvLBoxEntry& rEntry) const;
124cdf0e10cSrcweir 
125cdf0e10cSrcweir public:
126cdf0e10cSrcweir 	SwRedlineAcceptDlg(Dialog *pParent, sal_Bool bAutoFmt = sal_False);
127cdf0e10cSrcweir 	virtual ~SwRedlineAcceptDlg();
128cdf0e10cSrcweir 
129cdf0e10cSrcweir 	DECL_LINK( FilterChangedHdl, void *pDummy = 0 );
130cdf0e10cSrcweir 
GetChgCtrl()131cdf0e10cSrcweir 	inline SvxAcceptChgCtr* GetChgCtrl()		{ return &aTabPagesCTRL; }
HasRedlineAutoFmt() const132cdf0e10cSrcweir 	inline sal_Bool		HasRedlineAutoFmt() const 	{ return bRedlnAutoFmt; }
133cdf0e10cSrcweir 
134cdf0e10cSrcweir 	void			Init(sal_uInt16 nStart = 0);
135cdf0e10cSrcweir 	void			CallAcceptReject( sal_Bool bSelect, sal_Bool bAccept );
136cdf0e10cSrcweir 
137cdf0e10cSrcweir 	void			Initialize(const String &rExtraData);
138cdf0e10cSrcweir 	void			FillInfo(String &rExtraData) const;
139cdf0e10cSrcweir 
140cdf0e10cSrcweir 	virtual void	Activate();
141cdf0e10cSrcweir 	virtual void	Resize();
142cdf0e10cSrcweir };
143cdf0e10cSrcweir 
144cdf0e10cSrcweir /*------------------------------------------------------------------------
145cdf0e10cSrcweir 	Beschreibung:
146cdf0e10cSrcweir ------------------------------------------------------------------------*/
147cdf0e10cSrcweir 
148cdf0e10cSrcweir class SwModelessRedlineAcceptDlg : public SfxModelessDialog
149cdf0e10cSrcweir {
150cdf0e10cSrcweir 	SwRedlineAcceptDlg*		pImplDlg;
151cdf0e10cSrcweir 	SwChildWinWrapper*		pChildWin;
152cdf0e10cSrcweir 
153cdf0e10cSrcweir 	virtual void	Resize();
154cdf0e10cSrcweir 
155cdf0e10cSrcweir public:
156cdf0e10cSrcweir 	SwModelessRedlineAcceptDlg(SfxBindings*, SwChildWinWrapper*, Window *pParent);
157cdf0e10cSrcweir 	~SwModelessRedlineAcceptDlg();
158cdf0e10cSrcweir 
159cdf0e10cSrcweir 	virtual void	Activate();
160cdf0e10cSrcweir 	virtual void	FillInfo(SfxChildWinInfo&) const;
161cdf0e10cSrcweir 	void			Initialize (SfxChildWinInfo* pInfo);
162cdf0e10cSrcweir };
163cdf0e10cSrcweir 
164cdf0e10cSrcweir 
165cdf0e10cSrcweir /*------------------------------------------------------------------------
166cdf0e10cSrcweir 	Beschreibung:
167cdf0e10cSrcweir ------------------------------------------------------------------------*/
168cdf0e10cSrcweir 
169cdf0e10cSrcweir class SwRedlineAcceptChild : public SwChildWinWrapper
170cdf0e10cSrcweir {
171cdf0e10cSrcweir public:
172cdf0e10cSrcweir 	SwRedlineAcceptChild(	Window* ,
173cdf0e10cSrcweir 							sal_uInt16 nId,
174cdf0e10cSrcweir 							SfxBindings*,
175cdf0e10cSrcweir 							SfxChildWinInfo*  );
176cdf0e10cSrcweir 
177cdf0e10cSrcweir 	SFX_DECL_CHILDWINDOW( SwRedlineAcceptChild );
178cdf0e10cSrcweir 
179cdf0e10cSrcweir 	virtual sal_Bool	ReInitDlg(SwDocShell *pDocSh);
180cdf0e10cSrcweir };
181cdf0e10cSrcweir 
182cdf0e10cSrcweir 
183cdf0e10cSrcweir #endif
184cdf0e10cSrcweir 
185cdf0e10cSrcweir 
186