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