xref: /aoo4110/main/sc/source/ui/miscdlgs/acredlin.cxx (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 
24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_sc.hxx"
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski // System - Includes ---------------------------------------------------------
28*b1cdbd2cSJim Jagielski 
29*b1cdbd2cSJim Jagielski 
30*b1cdbd2cSJim Jagielski 
31*b1cdbd2cSJim Jagielski #include <svl/undo.hxx>
32*b1cdbd2cSJim Jagielski #include <unotools/textsearch.hxx>
33*b1cdbd2cSJim Jagielski #include <unotools/localedatawrapper.hxx>
34*b1cdbd2cSJim Jagielski #include <unotools/collatorwrapper.hxx>
35*b1cdbd2cSJim Jagielski #include <vcl/msgbox.hxx>
36*b1cdbd2cSJim Jagielski #include <sfx2/app.hxx>
37*b1cdbd2cSJim Jagielski #include <sfx2/viewfrm.hxx>
38*b1cdbd2cSJim Jagielski 
39*b1cdbd2cSJim Jagielski // INCLUDE -------------------------------------------------------------------
40*b1cdbd2cSJim Jagielski 
41*b1cdbd2cSJim Jagielski #include "acredlin.hxx"
42*b1cdbd2cSJim Jagielski #include "global.hxx"
43*b1cdbd2cSJim Jagielski #include "reffact.hxx"
44*b1cdbd2cSJim Jagielski #include "document.hxx"
45*b1cdbd2cSJim Jagielski #include "docsh.hxx"
46*b1cdbd2cSJim Jagielski #include "scresid.hxx"
47*b1cdbd2cSJim Jagielski #include "globstr.hrc"
48*b1cdbd2cSJim Jagielski #include "acredlin.hrc"
49*b1cdbd2cSJim Jagielski #include "simpref.hxx"
50*b1cdbd2cSJim Jagielski #include "scmod.hxx"
51*b1cdbd2cSJim Jagielski #include "popmenu.hxx"
52*b1cdbd2cSJim Jagielski #include "tabvwsh.hxx"
53*b1cdbd2cSJim Jagielski 
54*b1cdbd2cSJim Jagielski // defines -------------------------------------------------------------------
55*b1cdbd2cSJim Jagielski 
56*b1cdbd2cSJim Jagielski #define ABS_SREF		  SCA_VALID \
57*b1cdbd2cSJim Jagielski 						| SCA_COL_ABSOLUTE | SCA_ROW_ABSOLUTE | SCA_TAB_ABSOLUTE
58*b1cdbd2cSJim Jagielski #define ABS_DREF		  ABS_SREF \
59*b1cdbd2cSJim Jagielski 						| SCA_COL2_ABSOLUTE | SCA_ROW2_ABSOLUTE | SCA_TAB2_ABSOLUTE
60*b1cdbd2cSJim Jagielski #define ABS_SREF3D		ABS_SREF | SCA_TAB_3D
61*b1cdbd2cSJim Jagielski #define ABS_DREF3D		ABS_DREF | SCA_TAB_3D
62*b1cdbd2cSJim Jagielski 
63*b1cdbd2cSJim Jagielski 
64*b1cdbd2cSJim Jagielski 
65*b1cdbd2cSJim Jagielski #define ERRORBOX(s) ErrorBox(this,WinBits(WB_OK|WB_DEF_OK),s).Execute();
66*b1cdbd2cSJim Jagielski 
EnableDisable(Window & rWin,sal_Bool bEnable)67*b1cdbd2cSJim Jagielski inline void EnableDisable( Window& rWin, sal_Bool bEnable )
68*b1cdbd2cSJim Jagielski {
69*b1cdbd2cSJim Jagielski 	if (bEnable)
70*b1cdbd2cSJim Jagielski 		rWin.Enable();
71*b1cdbd2cSJim Jagielski 	else
72*b1cdbd2cSJim Jagielski 		rWin.Disable();
73*b1cdbd2cSJim Jagielski }
74*b1cdbd2cSJim Jagielski 
75*b1cdbd2cSJim Jagielski #define	RD_SPECIAL_NONE			0
76*b1cdbd2cSJim Jagielski #define	RD_SPECIAL_CONTENT		1
77*b1cdbd2cSJim Jagielski #define	RD_SPECIAL_VISCONTENT	2
78*b1cdbd2cSJim Jagielski 
79*b1cdbd2cSJim Jagielski //============================================================================
80*b1cdbd2cSJim Jagielski //	class ScRedlinData
81*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
82*b1cdbd2cSJim Jagielski 
ScRedlinData()83*b1cdbd2cSJim Jagielski ScRedlinData::ScRedlinData()
84*b1cdbd2cSJim Jagielski 	:RedlinData()
85*b1cdbd2cSJim Jagielski {
86*b1cdbd2cSJim Jagielski 	nInfo=RD_SPECIAL_NONE;
87*b1cdbd2cSJim Jagielski 	nActionNo=0;
88*b1cdbd2cSJim Jagielski 	pData=NULL;
89*b1cdbd2cSJim Jagielski 	bDisabled=sal_False;
90*b1cdbd2cSJim Jagielski 	bIsRejectable=sal_False;
91*b1cdbd2cSJim Jagielski 	bIsAcceptable=sal_False;
92*b1cdbd2cSJim Jagielski 	nTable=SCTAB_MAX;
93*b1cdbd2cSJim Jagielski 	nCol=SCCOL_MAX;
94*b1cdbd2cSJim Jagielski 	nRow=SCROW_MAX;
95*b1cdbd2cSJim Jagielski }
96*b1cdbd2cSJim Jagielski 
~ScRedlinData()97*b1cdbd2cSJim Jagielski ScRedlinData::~ScRedlinData()
98*b1cdbd2cSJim Jagielski {
99*b1cdbd2cSJim Jagielski 	nInfo=RD_SPECIAL_NONE;
100*b1cdbd2cSJim Jagielski 	nActionNo=0;
101*b1cdbd2cSJim Jagielski 	pData=NULL;
102*b1cdbd2cSJim Jagielski 	bDisabled=sal_False;
103*b1cdbd2cSJim Jagielski 	bIsRejectable=sal_False;
104*b1cdbd2cSJim Jagielski 	bIsAcceptable=sal_False;
105*b1cdbd2cSJim Jagielski }
106*b1cdbd2cSJim Jagielski 
107*b1cdbd2cSJim Jagielski 
108*b1cdbd2cSJim Jagielski //============================================================================
109*b1cdbd2cSJim Jagielski //	class ScAcceptChgDlg
110*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
ScAcceptChgDlg(SfxBindings * pB,SfxChildWindow * pCW,Window * pParent,ScViewData * ptrViewData)111*b1cdbd2cSJim Jagielski ScAcceptChgDlg::ScAcceptChgDlg( SfxBindings* pB, SfxChildWindow* pCW, Window* pParent,
112*b1cdbd2cSJim Jagielski 					  ScViewData*		ptrViewData)
113*b1cdbd2cSJim Jagielski 
114*b1cdbd2cSJim Jagielski 	:	SfxModelessDialog( pB, pCW, pParent, ScResId(RID_SCDLG_CHANGES) ),
115*b1cdbd2cSJim Jagielski 		//
116*b1cdbd2cSJim Jagielski 		aAcceptChgCtr			( this, ScResId( CTR_REDLINING ) ),
117*b1cdbd2cSJim Jagielski 		//
118*b1cdbd2cSJim Jagielski 		pViewData		( ptrViewData ),
119*b1cdbd2cSJim Jagielski 		pDoc			( ptrViewData->GetDocument() ),
120*b1cdbd2cSJim Jagielski 		aLocalRangeName ( *(pDoc->GetRangeName()) ),
121*b1cdbd2cSJim Jagielski 		//
122*b1cdbd2cSJim Jagielski 		aStrInsertCols			( ScResId( STR_INSERT_COLS)),
123*b1cdbd2cSJim Jagielski 		aStrInsertRows			( ScResId( STR_INSERT_ROWS)),
124*b1cdbd2cSJim Jagielski 		aStrInsertTabs			( ScResId( STR_INSERT_TABS)),
125*b1cdbd2cSJim Jagielski 		aStrDeleteCols			( ScResId( STR_DELETE_COLS)),
126*b1cdbd2cSJim Jagielski 		aStrDeleteRows			( ScResId( STR_DELETE_ROWS)),
127*b1cdbd2cSJim Jagielski 		aStrDeleteTabs			( ScResId( STR_DELETE_TABS)),
128*b1cdbd2cSJim Jagielski 		aStrMove				( ScResId( STR_MOVE	    )),
129*b1cdbd2cSJim Jagielski 		aStrContent				( ScResId( STR_CONTENT	)),
130*b1cdbd2cSJim Jagielski 		aStrReject				( ScResId( STR_REJECT	    )),
131*b1cdbd2cSJim Jagielski 		aStrAllAccepted			( ScResId( STR_ACCEPTED	)),
132*b1cdbd2cSJim Jagielski 		aStrAllRejected			( ScResId( STR_REJECTED	)),
133*b1cdbd2cSJim Jagielski 		aStrNoEntry				( ScResId( STR_NO_ENTRY   )),
134*b1cdbd2cSJim Jagielski 		aStrContentWithChild	( ScResId( STR_CONTENT_WITH_CHILD)),
135*b1cdbd2cSJim Jagielski 		aStrChildContent		( ScResId( STR_CHILD_CONTENT)),
136*b1cdbd2cSJim Jagielski 		aStrChildOrgContent		( ScResId( STR_CHILD_ORGCONTENT)),
137*b1cdbd2cSJim Jagielski 		aStrEmpty				( ScResId( STR_EMPTY		))
138*b1cdbd2cSJim Jagielski {
139*b1cdbd2cSJim Jagielski 	FreeResource();
140*b1cdbd2cSJim Jagielski //	bScAcceptChgDlgIsDead=sal_False;
141*b1cdbd2cSJim Jagielski 	bNoSelection=sal_False;
142*b1cdbd2cSJim Jagielski 	bNeedsUpdate=sal_False;
143*b1cdbd2cSJim Jagielski 	bIgnoreMsg=sal_False;
144*b1cdbd2cSJim Jagielski 	nAcceptCount=0;
145*b1cdbd2cSJim Jagielski 	nRejectCount=0;
146*b1cdbd2cSJim Jagielski 	bAcceptEnableFlag=sal_True;
147*b1cdbd2cSJim Jagielski 	bRejectEnableFlag=sal_True;
148*b1cdbd2cSJim Jagielski 	bHasFilterEntry=sal_False;
149*b1cdbd2cSJim Jagielski 	bUseColor=sal_False;
150*b1cdbd2cSJim Jagielski 	aReOpenTimer.SetTimeout(50);
151*b1cdbd2cSJim Jagielski 	aReOpenTimer.SetTimeoutHdl(LINK( this, ScAcceptChgDlg, ReOpenTimerHdl ));
152*b1cdbd2cSJim Jagielski 
153*b1cdbd2cSJim Jagielski 	//	dialog is now only hidden, not deleted, on switching views,
154*b1cdbd2cSJim Jagielski 	//	so there's no need to restore settings when reopening
155*b1cdbd2cSJim Jagielski 
156*b1cdbd2cSJim Jagielski 	MinSize=aAcceptChgCtr.GetMinSizePixel();
157*b1cdbd2cSJim Jagielski 	MinSize.Height()+=2;
158*b1cdbd2cSJim Jagielski 	MinSize.Width()+=2;
159*b1cdbd2cSJim Jagielski 	SetMinOutputSizePixel(MinSize);
160*b1cdbd2cSJim Jagielski 	aUnknown.AssignAscii(RTL_CONSTASCII_STRINGPARAM("Unknown"));
161*b1cdbd2cSJim Jagielski 
162*b1cdbd2cSJim Jagielski 	pTPFilter=aAcceptChgCtr.GetFilterPage();
163*b1cdbd2cSJim Jagielski 	pTPView=aAcceptChgCtr.GetViewPage();
164*b1cdbd2cSJim Jagielski 	pTheView=pTPView->GetTableControl();
165*b1cdbd2cSJim Jagielski 	aSelectionTimer.SetTimeout(100);
166*b1cdbd2cSJim Jagielski 	aSelectionTimer.SetTimeoutHdl(LINK( this, ScAcceptChgDlg, UpdateSelectionHdl ));
167*b1cdbd2cSJim Jagielski 
168*b1cdbd2cSJim Jagielski 	pTPFilter->SetReadyHdl(LINK( this, ScAcceptChgDlg, FilterHandle ));
169*b1cdbd2cSJim Jagielski 	pTPFilter->SetRefHdl(LINK( this, ScAcceptChgDlg, RefHandle ));
170*b1cdbd2cSJim Jagielski 	pTPFilter->SetModifyHdl(LINK( this, ScAcceptChgDlg, FilterModified));
171*b1cdbd2cSJim Jagielski 	pTPFilter->HideRange(sal_False);
172*b1cdbd2cSJim Jagielski 	pTPView->InsertCalcHeader();
173*b1cdbd2cSJim Jagielski 	pTPView->SetRejectClickHdl( LINK( this, ScAcceptChgDlg,RejectHandle));
174*b1cdbd2cSJim Jagielski 	pTPView->SetAcceptClickHdl( LINK(this, ScAcceptChgDlg, AcceptHandle));
175*b1cdbd2cSJim Jagielski 	pTPView->SetRejectAllClickHdl( LINK( this, ScAcceptChgDlg,RejectAllHandle));
176*b1cdbd2cSJim Jagielski 	pTPView->SetAcceptAllClickHdl( LINK(this, ScAcceptChgDlg, AcceptAllHandle));
177*b1cdbd2cSJim Jagielski 	pTheView->SetCalcView();
178*b1cdbd2cSJim Jagielski 	pTheView->SetStyle(pTheView->GetStyle()|WB_HASLINES|WB_CLIPCHILDREN|WB_HASBUTTONS|WB_HASBUTTONSATROOT|WB_HSCROLL);
179*b1cdbd2cSJim Jagielski 	pTheView->SetExpandingHdl( LINK(this, ScAcceptChgDlg, ExpandingHandle));
180*b1cdbd2cSJim Jagielski 	pTheView->SetSelectHdl( LINK(this, ScAcceptChgDlg, SelectHandle));
181*b1cdbd2cSJim Jagielski 	pTheView->SetDeselectHdl( LINK(this, ScAcceptChgDlg, SelectHandle));
182*b1cdbd2cSJim Jagielski 	pTheView->SetCommandHdl( LINK(this, ScAcceptChgDlg, CommandHdl));
183*b1cdbd2cSJim Jagielski 	pTheView->SetColCompareHdl( LINK(this, ScAcceptChgDlg,ColCompareHdl));
184*b1cdbd2cSJim Jagielski 	pTheView->SetSelectionMode(MULTIPLE_SELECTION);
185*b1cdbd2cSJim Jagielski 	pTheView->SetHighlightRange(1);
186*b1cdbd2cSJim Jagielski 
187*b1cdbd2cSJim Jagielski 	Init();
188*b1cdbd2cSJim Jagielski 
189*b1cdbd2cSJim Jagielski 	aAcceptChgCtr.SetMinSizeHdl( LINK( this, ScAcceptChgDlg, MinSizeHandle ));
190*b1cdbd2cSJim Jagielski 
191*b1cdbd2cSJim Jagielski 	UpdateView();
192*b1cdbd2cSJim Jagielski 	SvLBoxEntry* pEntry=pTheView->First();
193*b1cdbd2cSJim Jagielski 	if(pEntry!=NULL)
194*b1cdbd2cSJim Jagielski 	{
195*b1cdbd2cSJim Jagielski 		pTheView->Select(pEntry);
196*b1cdbd2cSJim Jagielski 	}
197*b1cdbd2cSJim Jagielski }
~ScAcceptChgDlg()198*b1cdbd2cSJim Jagielski ScAcceptChgDlg::~ScAcceptChgDlg()
199*b1cdbd2cSJim Jagielski {
200*b1cdbd2cSJim Jagielski //	bScAcceptChgDlgIsDead=sal_True;
201*b1cdbd2cSJim Jagielski 	ClearView();
202*b1cdbd2cSJim Jagielski 	ScChangeTrack* pChanges=pDoc->GetChangeTrack();
203*b1cdbd2cSJim Jagielski 
204*b1cdbd2cSJim Jagielski 	if(pChanges!=NULL)
205*b1cdbd2cSJim Jagielski 	{
206*b1cdbd2cSJim Jagielski 		Link aLink;
207*b1cdbd2cSJim Jagielski 		pChanges->SetModifiedLink(aLink);
208*b1cdbd2cSJim Jagielski 	}
209*b1cdbd2cSJim Jagielski }
210*b1cdbd2cSJim Jagielski 
ReInit(ScViewData * ptrViewData)211*b1cdbd2cSJim Jagielski void ScAcceptChgDlg::ReInit(ScViewData* ptrViewData)
212*b1cdbd2cSJim Jagielski {
213*b1cdbd2cSJim Jagielski 	pViewData=ptrViewData;
214*b1cdbd2cSJim Jagielski 	if(pViewData!=NULL)
215*b1cdbd2cSJim Jagielski 	{
216*b1cdbd2cSJim Jagielski 		pDoc=ptrViewData->GetDocument();
217*b1cdbd2cSJim Jagielski 	}
218*b1cdbd2cSJim Jagielski 	else
219*b1cdbd2cSJim Jagielski 	{
220*b1cdbd2cSJim Jagielski 		pDoc=NULL;
221*b1cdbd2cSJim Jagielski 	}
222*b1cdbd2cSJim Jagielski 
223*b1cdbd2cSJim Jagielski 	bNoSelection=sal_False;
224*b1cdbd2cSJim Jagielski 	bNeedsUpdate=sal_False;
225*b1cdbd2cSJim Jagielski 	bIgnoreMsg=sal_False;
226*b1cdbd2cSJim Jagielski 	nAcceptCount=0;
227*b1cdbd2cSJim Jagielski 	nRejectCount=0;
228*b1cdbd2cSJim Jagielski 	bAcceptEnableFlag=sal_True;
229*b1cdbd2cSJim Jagielski 	bRejectEnableFlag=sal_True;
230*b1cdbd2cSJim Jagielski 
231*b1cdbd2cSJim Jagielski 	//	#91781# don't call Init here (switching between views), just set link below
232*b1cdbd2cSJim Jagielski 	//	(dialog is just hidden, not deleted anymore, when switching views)
233*b1cdbd2cSJim Jagielski 	ClearView();
234*b1cdbd2cSJim Jagielski 	UpdateView();
235*b1cdbd2cSJim Jagielski 
236*b1cdbd2cSJim Jagielski 	if ( pDoc )
237*b1cdbd2cSJim Jagielski 	{
238*b1cdbd2cSJim Jagielski 		ScChangeTrack* pChanges = pDoc->GetChangeTrack();
239*b1cdbd2cSJim Jagielski 		if ( pChanges )
240*b1cdbd2cSJim Jagielski 			pChanges->SetModifiedLink( LINK( this, ScAcceptChgDlg, ChgTrackModHdl ) );
241*b1cdbd2cSJim Jagielski 	}
242*b1cdbd2cSJim Jagielski }
243*b1cdbd2cSJim Jagielski 
Init()244*b1cdbd2cSJim Jagielski void __EXPORT ScAcceptChgDlg::Init()
245*b1cdbd2cSJim Jagielski {
246*b1cdbd2cSJim Jagielski 	String	aAreaStr;
247*b1cdbd2cSJim Jagielski 	ScRange aRange;
248*b1cdbd2cSJim Jagielski 
249*b1cdbd2cSJim Jagielski 	DBG_ASSERT( pViewData && pDoc, "ViewData oder Document nicht gefunden!" );
250*b1cdbd2cSJim Jagielski 
251*b1cdbd2cSJim Jagielski 	ScChangeTrack* pChanges=pDoc->GetChangeTrack();
252*b1cdbd2cSJim Jagielski 
253*b1cdbd2cSJim Jagielski 	if(pChanges!=NULL)
254*b1cdbd2cSJim Jagielski 	{
255*b1cdbd2cSJim Jagielski 		pChanges->SetModifiedLink( LINK( this, ScAcceptChgDlg,ChgTrackModHdl));
256*b1cdbd2cSJim Jagielski 		aChangeViewSet.SetTheAuthorToShow(pChanges->GetUser());
257*b1cdbd2cSJim Jagielski 		pTPFilter->ClearAuthors();
258*b1cdbd2cSJim Jagielski 		ScStrCollection aUserColl=pChanges->GetUserCollection();
259*b1cdbd2cSJim Jagielski 		for(sal_uInt16	i=0;i<aUserColl.GetCount();i++)
260*b1cdbd2cSJim Jagielski 			pTPFilter->InsertAuthor(aUserColl[i]->GetString());
261*b1cdbd2cSJim Jagielski 	}
262*b1cdbd2cSJim Jagielski 
263*b1cdbd2cSJim Jagielski 	ScChangeViewSettings* pViewSettings=pDoc->GetChangeViewSettings();
264*b1cdbd2cSJim Jagielski 	if ( pViewSettings!=NULL )
265*b1cdbd2cSJim Jagielski 		aChangeViewSet = *pViewSettings;
266*b1cdbd2cSJim Jagielski     // adjust TimeField for filter tabpage
267*b1cdbd2cSJim Jagielski     aChangeViewSet.AdjustDateMode( *pDoc );
268*b1cdbd2cSJim Jagielski 
269*b1cdbd2cSJim Jagielski 	pTPFilter->CheckDate(aChangeViewSet.HasDate());
270*b1cdbd2cSJim Jagielski 	pTPFilter->SetFirstDate(aChangeViewSet.GetTheFirstDateTime());
271*b1cdbd2cSJim Jagielski 	pTPFilter->SetFirstTime(aChangeViewSet.GetTheFirstDateTime());
272*b1cdbd2cSJim Jagielski 	pTPFilter->SetLastDate(aChangeViewSet.GetTheLastDateTime());
273*b1cdbd2cSJim Jagielski 	pTPFilter->SetLastTime(aChangeViewSet.GetTheLastDateTime());
274*b1cdbd2cSJim Jagielski 	pTPFilter->SetDateMode((sal_uInt16)aChangeViewSet.GetTheDateMode());
275*b1cdbd2cSJim Jagielski 	pTPFilter->CheckComment(aChangeViewSet.HasComment());
276*b1cdbd2cSJim Jagielski 	pTPFilter->SetComment(aChangeViewSet.GetTheComment());
277*b1cdbd2cSJim Jagielski 
278*b1cdbd2cSJim Jagielski 	pTPFilter->CheckAuthor(aChangeViewSet.HasAuthor());
279*b1cdbd2cSJim Jagielski 	String aString=aChangeViewSet.GetTheAuthorToShow();
280*b1cdbd2cSJim Jagielski 	if(aString.Len()!=0)
281*b1cdbd2cSJim Jagielski 	{
282*b1cdbd2cSJim Jagielski 		pTPFilter->SelectAuthor(aString);
283*b1cdbd2cSJim Jagielski 		if(pTPFilter->GetSelectedAuthor()!=aString)
284*b1cdbd2cSJim Jagielski 		{
285*b1cdbd2cSJim Jagielski 			pTPFilter->InsertAuthor(aString);
286*b1cdbd2cSJim Jagielski 			pTPFilter->SelectAuthor(aString);
287*b1cdbd2cSJim Jagielski 		}
288*b1cdbd2cSJim Jagielski 	}
289*b1cdbd2cSJim Jagielski 	else
290*b1cdbd2cSJim Jagielski 	{
291*b1cdbd2cSJim Jagielski 		pTPFilter->SelectedAuthorPos(0);
292*b1cdbd2cSJim Jagielski 	}
293*b1cdbd2cSJim Jagielski 
294*b1cdbd2cSJim Jagielski 	pTPFilter->CheckRange(aChangeViewSet.HasRange());
295*b1cdbd2cSJim Jagielski 
296*b1cdbd2cSJim Jagielski 	ScRange* pRangeEntry=aChangeViewSet.GetTheRangeList().GetObject(0);
297*b1cdbd2cSJim Jagielski 	aRangeList=aChangeViewSet.GetTheRangeList();
298*b1cdbd2cSJim Jagielski 
299*b1cdbd2cSJim Jagielski 	if(pRangeEntry!=NULL)
300*b1cdbd2cSJim Jagielski 	{
301*b1cdbd2cSJim Jagielski 		String aRefStr;
302*b1cdbd2cSJim Jagielski 		pRangeEntry->Format( aRefStr, ABS_DREF3D, pDoc );
303*b1cdbd2cSJim Jagielski 		pTPFilter->SetRange(aRefStr);
304*b1cdbd2cSJim Jagielski 	}
305*b1cdbd2cSJim Jagielski 
306*b1cdbd2cSJim Jagielski 	Point aPoint(1,1);
307*b1cdbd2cSJim Jagielski 	aAcceptChgCtr.SetPosPixel(aPoint);
308*b1cdbd2cSJim Jagielski 	InitFilter();
309*b1cdbd2cSJim Jagielski }
310*b1cdbd2cSJim Jagielski 
311*b1cdbd2cSJim Jagielski 
312*b1cdbd2cSJim Jagielski 
ClearView()313*b1cdbd2cSJim Jagielski void ScAcceptChgDlg::ClearView()
314*b1cdbd2cSJim Jagielski {
315*b1cdbd2cSJim Jagielski 	nAcceptCount=0;
316*b1cdbd2cSJim Jagielski 	nRejectCount=0;
317*b1cdbd2cSJim Jagielski 	pTheView->SetUpdateMode(sal_False);
318*b1cdbd2cSJim Jagielski 
319*b1cdbd2cSJim Jagielski 	pTheView->Clear();
320*b1cdbd2cSJim Jagielski 	pTheView->SetUpdateMode(sal_True);
321*b1cdbd2cSJim Jagielski }
322*b1cdbd2cSJim Jagielski 
MakeTypeString(ScChangeActionType eType)323*b1cdbd2cSJim Jagielski String* ScAcceptChgDlg::MakeTypeString(ScChangeActionType eType)
324*b1cdbd2cSJim Jagielski {
325*b1cdbd2cSJim Jagielski 	String* pStr;
326*b1cdbd2cSJim Jagielski 
327*b1cdbd2cSJim Jagielski 	switch(eType)
328*b1cdbd2cSJim Jagielski 	{
329*b1cdbd2cSJim Jagielski 
330*b1cdbd2cSJim Jagielski 		case SC_CAT_INSERT_COLS:	pStr=&aStrInsertCols;break;
331*b1cdbd2cSJim Jagielski 
332*b1cdbd2cSJim Jagielski 		case SC_CAT_INSERT_ROWS:	pStr=&aStrInsertRows;break;
333*b1cdbd2cSJim Jagielski 
334*b1cdbd2cSJim Jagielski 		case SC_CAT_INSERT_TABS:	pStr=&aStrInsertTabs;break;
335*b1cdbd2cSJim Jagielski 
336*b1cdbd2cSJim Jagielski 		case SC_CAT_DELETE_COLS:	pStr=&aStrDeleteCols;break;
337*b1cdbd2cSJim Jagielski 
338*b1cdbd2cSJim Jagielski 		case SC_CAT_DELETE_ROWS:	pStr=&aStrDeleteRows;break;
339*b1cdbd2cSJim Jagielski 
340*b1cdbd2cSJim Jagielski 		case SC_CAT_DELETE_TABS:	pStr=&aStrDeleteTabs;break;
341*b1cdbd2cSJim Jagielski 
342*b1cdbd2cSJim Jagielski 		case SC_CAT_MOVE:			pStr=&aStrMove;break;
343*b1cdbd2cSJim Jagielski 
344*b1cdbd2cSJim Jagielski 		case SC_CAT_CONTENT:		pStr=&aStrContent;break;
345*b1cdbd2cSJim Jagielski 
346*b1cdbd2cSJim Jagielski 		case SC_CAT_REJECT:			pStr=&aStrReject;break;
347*b1cdbd2cSJim Jagielski 
348*b1cdbd2cSJim Jagielski 		default:					pStr=&aUnknown;break;
349*b1cdbd2cSJim Jagielski 	}
350*b1cdbd2cSJim Jagielski 	return pStr;
351*b1cdbd2cSJim Jagielski }
352*b1cdbd2cSJim Jagielski 
353*b1cdbd2cSJim Jagielski 
IsValidAction(const ScChangeAction * pScChangeAction)354*b1cdbd2cSJim Jagielski sal_Bool ScAcceptChgDlg::IsValidAction(const ScChangeAction* pScChangeAction)
355*b1cdbd2cSJim Jagielski {
356*b1cdbd2cSJim Jagielski 	if(pScChangeAction==NULL) return sal_False;
357*b1cdbd2cSJim Jagielski 
358*b1cdbd2cSJim Jagielski 	sal_Bool bFlag=sal_False;
359*b1cdbd2cSJim Jagielski 
360*b1cdbd2cSJim Jagielski 	ScRange aRef=pScChangeAction->GetBigRange().MakeRange();
361*b1cdbd2cSJim Jagielski 	String aUser=pScChangeAction->GetUser();
362*b1cdbd2cSJim Jagielski 	DateTime aDateTime=pScChangeAction->GetDateTime();
363*b1cdbd2cSJim Jagielski 
364*b1cdbd2cSJim Jagielski 	ScChangeActionType eType=pScChangeAction->GetType();
365*b1cdbd2cSJim Jagielski 	String aString;
366*b1cdbd2cSJim Jagielski 	String aDesc;
367*b1cdbd2cSJim Jagielski 
368*b1cdbd2cSJim Jagielski 	String aComment=pScChangeAction->GetComment();
369*b1cdbd2cSJim Jagielski 	aComment.EraseAllChars('\n');
370*b1cdbd2cSJim Jagielski 
371*b1cdbd2cSJim Jagielski 	if(eType==SC_CAT_CONTENT)
372*b1cdbd2cSJim Jagielski 	{
373*b1cdbd2cSJim Jagielski 		if(!pScChangeAction->IsDialogParent())
374*b1cdbd2cSJim Jagielski 		{
375*b1cdbd2cSJim Jagielski 			pScChangeAction->GetDescription( aDesc, pDoc, sal_True);
376*b1cdbd2cSJim Jagielski 		}
377*b1cdbd2cSJim Jagielski 	}
378*b1cdbd2cSJim Jagielski 	else
379*b1cdbd2cSJim Jagielski 	{
380*b1cdbd2cSJim Jagielski 		pScChangeAction->GetDescription( aDesc, pDoc,!pScChangeAction->IsMasterDelete());
381*b1cdbd2cSJim Jagielski 	}
382*b1cdbd2cSJim Jagielski 
383*b1cdbd2cSJim Jagielski 	if(aDesc.Len()>0)
384*b1cdbd2cSJim Jagielski 	{
385*b1cdbd2cSJim Jagielski 		aComment.AppendAscii(RTL_CONSTASCII_STRINGPARAM( " (" ));
386*b1cdbd2cSJim Jagielski 		aComment+=aDesc;
387*b1cdbd2cSJim Jagielski 		aComment+=')';
388*b1cdbd2cSJim Jagielski 	}
389*b1cdbd2cSJim Jagielski 
390*b1cdbd2cSJim Jagielski 	if(pTheView->IsValidEntry(&aUser,&aDateTime,&aComment))
391*b1cdbd2cSJim Jagielski 	{
392*b1cdbd2cSJim Jagielski 		if(pTPFilter->IsRange())
393*b1cdbd2cSJim Jagielski 		{
394*b1cdbd2cSJim Jagielski 			ScRange* pRangeEntry=aRangeList.First();
395*b1cdbd2cSJim Jagielski 
396*b1cdbd2cSJim Jagielski 			while(pRangeEntry!=NULL)
397*b1cdbd2cSJim Jagielski 			{
398*b1cdbd2cSJim Jagielski 				if(pRangeEntry->Intersects(aRef)) break;
399*b1cdbd2cSJim Jagielski 				pRangeEntry=aRangeList.Next();
400*b1cdbd2cSJim Jagielski 			}
401*b1cdbd2cSJim Jagielski 
402*b1cdbd2cSJim Jagielski 			if(pRangeEntry!=NULL)
403*b1cdbd2cSJim Jagielski 			{
404*b1cdbd2cSJim Jagielski 				bFlag=sal_True;
405*b1cdbd2cSJim Jagielski 			}
406*b1cdbd2cSJim Jagielski 		}
407*b1cdbd2cSJim Jagielski 		else
408*b1cdbd2cSJim Jagielski 		{
409*b1cdbd2cSJim Jagielski 			bFlag=sal_True;
410*b1cdbd2cSJim Jagielski 		}
411*b1cdbd2cSJim Jagielski 	}
412*b1cdbd2cSJim Jagielski 
413*b1cdbd2cSJim Jagielski 	return bFlag;
414*b1cdbd2cSJim Jagielski }
415*b1cdbd2cSJim Jagielski 
InsertChangeAction(const ScChangeAction * pScChangeAction,ScChangeActionState,SvLBoxEntry * pParent,sal_Bool bDelMaster,sal_Bool bDisabled,sal_uLong nPos)416*b1cdbd2cSJim Jagielski SvLBoxEntry* ScAcceptChgDlg::InsertChangeAction(const ScChangeAction* pScChangeAction,
417*b1cdbd2cSJim Jagielski                                                    ScChangeActionState /* eState */, SvLBoxEntry* pParent,
418*b1cdbd2cSJim Jagielski 												   sal_Bool bDelMaster,sal_Bool bDisabled,sal_uLong nPos)
419*b1cdbd2cSJim Jagielski {
420*b1cdbd2cSJim Jagielski 	ScChangeTrack* pChanges=pDoc->GetChangeTrack();
421*b1cdbd2cSJim Jagielski 
422*b1cdbd2cSJim Jagielski 	if(pScChangeAction==NULL || pChanges==NULL) return NULL;
423*b1cdbd2cSJim Jagielski 
424*b1cdbd2cSJim Jagielski 	SvLBoxEntry* pEntry=NULL;
425*b1cdbd2cSJim Jagielski 
426*b1cdbd2cSJim Jagielski 	sal_Bool bFlag=sal_False;
427*b1cdbd2cSJim Jagielski 
428*b1cdbd2cSJim Jagielski 	ScRange aRef=pScChangeAction->GetBigRange().MakeRange();
429*b1cdbd2cSJim Jagielski 	String aUser=pScChangeAction->GetUser();
430*b1cdbd2cSJim Jagielski 	DateTime aDateTime=pScChangeAction->GetDateTime();
431*b1cdbd2cSJim Jagielski 
432*b1cdbd2cSJim Jagielski 	String aRefStr;
433*b1cdbd2cSJim Jagielski 	ScChangeActionType eType=pScChangeAction->GetType();
434*b1cdbd2cSJim Jagielski 	String aString;
435*b1cdbd2cSJim Jagielski 	String aDesc;
436*b1cdbd2cSJim Jagielski 
437*b1cdbd2cSJim Jagielski 	ScRedlinData* pNewData=new ScRedlinData;
438*b1cdbd2cSJim Jagielski 	pNewData->pData=(void *)pScChangeAction;
439*b1cdbd2cSJim Jagielski 	pNewData->nActionNo=pScChangeAction->GetActionNumber();
440*b1cdbd2cSJim Jagielski 	pNewData->bIsAcceptable=pScChangeAction->IsClickable();
441*b1cdbd2cSJim Jagielski 	pNewData->bIsRejectable=pScChangeAction->IsRejectable();
442*b1cdbd2cSJim Jagielski 	pNewData->bDisabled=!pNewData->bIsAcceptable | bDisabled;
443*b1cdbd2cSJim Jagielski 	pNewData->aDateTime=aDateTime;
444*b1cdbd2cSJim Jagielski 	pNewData->nRow	= aRef.aStart.Row();
445*b1cdbd2cSJim Jagielski 	pNewData->nCol	= aRef.aStart.Col();
446*b1cdbd2cSJim Jagielski 	pNewData->nTable= aRef.aStart.Tab();
447*b1cdbd2cSJim Jagielski 
448*b1cdbd2cSJim Jagielski 	if(eType==SC_CAT_CONTENT)
449*b1cdbd2cSJim Jagielski 	{
450*b1cdbd2cSJim Jagielski 		if(pScChangeAction->IsDialogParent())
451*b1cdbd2cSJim Jagielski 		{
452*b1cdbd2cSJim Jagielski 			aString=aStrContentWithChild;
453*b1cdbd2cSJim Jagielski 			pNewData->nInfo=RD_SPECIAL_VISCONTENT;
454*b1cdbd2cSJim Jagielski 			pNewData->bIsRejectable=sal_False;
455*b1cdbd2cSJim Jagielski 			pNewData->bIsAcceptable=sal_False;
456*b1cdbd2cSJim Jagielski 		}
457*b1cdbd2cSJim Jagielski 		else
458*b1cdbd2cSJim Jagielski 		{
459*b1cdbd2cSJim Jagielski 			aString=*MakeTypeString(eType);
460*b1cdbd2cSJim Jagielski 			pScChangeAction->GetDescription( aDesc, pDoc, sal_True);
461*b1cdbd2cSJim Jagielski 		}
462*b1cdbd2cSJim Jagielski 	}
463*b1cdbd2cSJim Jagielski 	else
464*b1cdbd2cSJim Jagielski 	{
465*b1cdbd2cSJim Jagielski 		aString=*MakeTypeString(eType);
466*b1cdbd2cSJim Jagielski 
467*b1cdbd2cSJim Jagielski 		if(bDelMaster)
468*b1cdbd2cSJim Jagielski 		{
469*b1cdbd2cSJim Jagielski 			pScChangeAction->GetDescription( aDesc, pDoc,sal_True);
470*b1cdbd2cSJim Jagielski 			pNewData->bDisabled=sal_True;
471*b1cdbd2cSJim Jagielski 			pNewData->bIsRejectable=sal_False;
472*b1cdbd2cSJim Jagielski 		}
473*b1cdbd2cSJim Jagielski 		else
474*b1cdbd2cSJim Jagielski 			pScChangeAction->GetDescription( aDesc, pDoc,!pScChangeAction->IsMasterDelete());
475*b1cdbd2cSJim Jagielski 
476*b1cdbd2cSJim Jagielski 	}
477*b1cdbd2cSJim Jagielski 
478*b1cdbd2cSJim Jagielski 	aString+='\t';
479*b1cdbd2cSJim Jagielski 	pScChangeAction->GetRefString(aRefStr, pDoc, sal_True);
480*b1cdbd2cSJim Jagielski 	aString+=aRefStr;
481*b1cdbd2cSJim Jagielski 	aString+='\t';
482*b1cdbd2cSJim Jagielski 
483*b1cdbd2cSJim Jagielski 	sal_Bool bIsGenerated;
484*b1cdbd2cSJim Jagielski 
485*b1cdbd2cSJim Jagielski 	if(!pChanges->IsGenerated(pScChangeAction->GetActionNumber()))
486*b1cdbd2cSJim Jagielski 	{
487*b1cdbd2cSJim Jagielski 		aString+=aUser;
488*b1cdbd2cSJim Jagielski 		aString+='\t';
489*b1cdbd2cSJim Jagielski 
490*b1cdbd2cSJim Jagielski         aString+=ScGlobal::pLocaleData->getDate(aDateTime);
491*b1cdbd2cSJim Jagielski 		aString+=' ';
492*b1cdbd2cSJim Jagielski         aString+=ScGlobal::pLocaleData->getTime(aDateTime);
493*b1cdbd2cSJim Jagielski 		aString+='\t';
494*b1cdbd2cSJim Jagielski 		bIsGenerated=sal_False;
495*b1cdbd2cSJim Jagielski 	}
496*b1cdbd2cSJim Jagielski 	else
497*b1cdbd2cSJim Jagielski 	{
498*b1cdbd2cSJim Jagielski 		aString+='\t';
499*b1cdbd2cSJim Jagielski 		aString+='\t';
500*b1cdbd2cSJim Jagielski 		bIsGenerated=sal_True;
501*b1cdbd2cSJim Jagielski 	}
502*b1cdbd2cSJim Jagielski 
503*b1cdbd2cSJim Jagielski 	String aComment=pScChangeAction->GetComment();
504*b1cdbd2cSJim Jagielski 	aComment.EraseAllChars('\n');
505*b1cdbd2cSJim Jagielski 	if(aDesc.Len()>0)
506*b1cdbd2cSJim Jagielski 	{
507*b1cdbd2cSJim Jagielski 		aComment.AppendAscii(RTL_CONSTASCII_STRINGPARAM( " (" ));
508*b1cdbd2cSJim Jagielski 		aComment+=aDesc;
509*b1cdbd2cSJim Jagielski 		aComment+=')';
510*b1cdbd2cSJim Jagielski 	}
511*b1cdbd2cSJim Jagielski 
512*b1cdbd2cSJim Jagielski 	aString+=aComment;
513*b1cdbd2cSJim Jagielski 
514*b1cdbd2cSJim Jagielski 	if(pTheView->IsValidEntry(&aUser,&aDateTime)|| bIsGenerated)
515*b1cdbd2cSJim Jagielski 	{
516*b1cdbd2cSJim Jagielski 		if(pTheView->IsValidComment(&aComment))
517*b1cdbd2cSJim Jagielski 		{
518*b1cdbd2cSJim Jagielski 			if(pTPFilter->IsRange())
519*b1cdbd2cSJim Jagielski 			{
520*b1cdbd2cSJim Jagielski 				ScRange* pRangeEntry=aRangeList.First();
521*b1cdbd2cSJim Jagielski 
522*b1cdbd2cSJim Jagielski 				while(pRangeEntry!=NULL)
523*b1cdbd2cSJim Jagielski 				{
524*b1cdbd2cSJim Jagielski 					if(pRangeEntry->Intersects(aRef)) break;
525*b1cdbd2cSJim Jagielski 					pRangeEntry=aRangeList.Next();
526*b1cdbd2cSJim Jagielski 				}
527*b1cdbd2cSJim Jagielski 				//SC_CAS_VIRGIN,SC_CAS_ACCEPTED,SC_CAS_REJECTED
528*b1cdbd2cSJim Jagielski 				if(pRangeEntry!=NULL)
529*b1cdbd2cSJim Jagielski 				{
530*b1cdbd2cSJim Jagielski 					bHasFilterEntry=sal_True;
531*b1cdbd2cSJim Jagielski 					bFlag=sal_True;
532*b1cdbd2cSJim Jagielski 				}
533*b1cdbd2cSJim Jagielski 			}
534*b1cdbd2cSJim Jagielski 			else if(!bIsGenerated)
535*b1cdbd2cSJim Jagielski 			{
536*b1cdbd2cSJim Jagielski 				bHasFilterEntry=sal_True;
537*b1cdbd2cSJim Jagielski 				bFlag=sal_True;
538*b1cdbd2cSJim Jagielski 			}
539*b1cdbd2cSJim Jagielski 		}
540*b1cdbd2cSJim Jagielski 	}
541*b1cdbd2cSJim Jagielski 
542*b1cdbd2cSJim Jagielski 	if(!bFlag&& bUseColor&& pParent==NULL)
543*b1cdbd2cSJim Jagielski 	{
544*b1cdbd2cSJim Jagielski 		pEntry=pTheView->InsertEntry(aString,pNewData,Color(COL_LIGHTBLUE),pParent,nPos);
545*b1cdbd2cSJim Jagielski 	}
546*b1cdbd2cSJim Jagielski 	else if(bFlag&& bUseColor&& pParent!=NULL)
547*b1cdbd2cSJim Jagielski 	{
548*b1cdbd2cSJim Jagielski 		pEntry=pTheView->InsertEntry(aString,pNewData,Color(COL_GREEN),pParent,nPos);
549*b1cdbd2cSJim Jagielski 		SvLBoxEntry* pExpEntry=pParent;
550*b1cdbd2cSJim Jagielski 
551*b1cdbd2cSJim Jagielski 		while(pExpEntry!=NULL && !pTheView->IsExpanded(pExpEntry))
552*b1cdbd2cSJim Jagielski 		{
553*b1cdbd2cSJim Jagielski 			SvLBoxEntry* pTmpEntry=pTheView->GetParent(pExpEntry);
554*b1cdbd2cSJim Jagielski 
555*b1cdbd2cSJim Jagielski 			if(pTmpEntry!=NULL) pTheView->Expand(pExpEntry);
556*b1cdbd2cSJim Jagielski 
557*b1cdbd2cSJim Jagielski 			pExpEntry=pTmpEntry;
558*b1cdbd2cSJim Jagielski 		}
559*b1cdbd2cSJim Jagielski 	}
560*b1cdbd2cSJim Jagielski 	else
561*b1cdbd2cSJim Jagielski 	{
562*b1cdbd2cSJim Jagielski 		pEntry=pTheView->InsertEntry(aString,pNewData,pParent,nPos);
563*b1cdbd2cSJim Jagielski 	}
564*b1cdbd2cSJim Jagielski 	return pEntry;
565*b1cdbd2cSJim Jagielski }
566*b1cdbd2cSJim Jagielski 
InsertFilteredAction(const ScChangeAction * pScChangeAction,ScChangeActionState eState,SvLBoxEntry * pParent,sal_Bool bDelMaster,sal_Bool bDisabled,sal_uLong nPos)567*b1cdbd2cSJim Jagielski SvLBoxEntry* ScAcceptChgDlg::InsertFilteredAction(const ScChangeAction* pScChangeAction,
568*b1cdbd2cSJim Jagielski 												   ScChangeActionState eState,SvLBoxEntry* pParent,
569*b1cdbd2cSJim Jagielski 												   sal_Bool bDelMaster,sal_Bool bDisabled,sal_uLong nPos)
570*b1cdbd2cSJim Jagielski {
571*b1cdbd2cSJim Jagielski 
572*b1cdbd2cSJim Jagielski 	ScChangeTrack* pChanges=pDoc->GetChangeTrack();
573*b1cdbd2cSJim Jagielski 
574*b1cdbd2cSJim Jagielski 	if(pScChangeAction==NULL || pChanges==NULL) return NULL;
575*b1cdbd2cSJim Jagielski 
576*b1cdbd2cSJim Jagielski 	sal_Bool bIsGenerated=pChanges->IsGenerated(pScChangeAction->GetActionNumber());
577*b1cdbd2cSJim Jagielski 
578*b1cdbd2cSJim Jagielski 	SvLBoxEntry* pEntry=NULL;
579*b1cdbd2cSJim Jagielski 
580*b1cdbd2cSJim Jagielski 	int bFlag=sal_False;
581*b1cdbd2cSJim Jagielski 
582*b1cdbd2cSJim Jagielski 	ScRange aRef=pScChangeAction->GetBigRange().MakeRange();
583*b1cdbd2cSJim Jagielski 	String aUser=pScChangeAction->GetUser();
584*b1cdbd2cSJim Jagielski 	DateTime aDateTime=pScChangeAction->GetDateTime();
585*b1cdbd2cSJim Jagielski 
586*b1cdbd2cSJim Jagielski 	if(pTheView->IsValidEntry(&aUser,&aDateTime)||bIsGenerated)
587*b1cdbd2cSJim Jagielski 	{
588*b1cdbd2cSJim Jagielski 		if(pTPFilter->IsRange())
589*b1cdbd2cSJim Jagielski 		{
590*b1cdbd2cSJim Jagielski 			ScRange* pRangeEntry=aRangeList.First();
591*b1cdbd2cSJim Jagielski 
592*b1cdbd2cSJim Jagielski 			while(pRangeEntry!=NULL)
593*b1cdbd2cSJim Jagielski 			{
594*b1cdbd2cSJim Jagielski 				if(pRangeEntry->Intersects(aRef)) break;
595*b1cdbd2cSJim Jagielski 				pRangeEntry=aRangeList.Next();
596*b1cdbd2cSJim Jagielski 			}
597*b1cdbd2cSJim Jagielski 			//SC_CAS_VIRGIN,SC_CAS_ACCEPTED,SC_CAS_REJECTED
598*b1cdbd2cSJim Jagielski 			if(pRangeEntry!=NULL &&
599*b1cdbd2cSJim Jagielski 				pScChangeAction->GetState()==eState)
600*b1cdbd2cSJim Jagielski 			{
601*b1cdbd2cSJim Jagielski 				bFlag=sal_True;
602*b1cdbd2cSJim Jagielski 			}
603*b1cdbd2cSJim Jagielski 		}
604*b1cdbd2cSJim Jagielski 		else if(pScChangeAction->GetState()==eState && !bIsGenerated)
605*b1cdbd2cSJim Jagielski 		{
606*b1cdbd2cSJim Jagielski 			bFlag=sal_True;
607*b1cdbd2cSJim Jagielski 		}
608*b1cdbd2cSJim Jagielski 	}
609*b1cdbd2cSJim Jagielski 
610*b1cdbd2cSJim Jagielski 	if(bFlag)
611*b1cdbd2cSJim Jagielski 	{
612*b1cdbd2cSJim Jagielski 
613*b1cdbd2cSJim Jagielski 		String aRefStr;
614*b1cdbd2cSJim Jagielski 		ScChangeActionType eType=pScChangeAction->GetType();
615*b1cdbd2cSJim Jagielski 		String aString;
616*b1cdbd2cSJim Jagielski 		String aDesc;
617*b1cdbd2cSJim Jagielski 
618*b1cdbd2cSJim Jagielski 
619*b1cdbd2cSJim Jagielski 		ScRedlinData* pNewData=new ScRedlinData;
620*b1cdbd2cSJim Jagielski 		pNewData->pData=(void *)pScChangeAction;
621*b1cdbd2cSJim Jagielski 		pNewData->nActionNo=pScChangeAction->GetActionNumber();
622*b1cdbd2cSJim Jagielski 		pNewData->bIsAcceptable=pScChangeAction->IsClickable();
623*b1cdbd2cSJim Jagielski 		pNewData->bIsRejectable=pScChangeAction->IsRejectable();
624*b1cdbd2cSJim Jagielski 		pNewData->bDisabled=!pNewData->bIsAcceptable | bDisabled;
625*b1cdbd2cSJim Jagielski 		pNewData->aDateTime=aDateTime;
626*b1cdbd2cSJim Jagielski 		pNewData->nRow	= aRef.aStart.Row();
627*b1cdbd2cSJim Jagielski 		pNewData->nCol	= aRef.aStart.Col();
628*b1cdbd2cSJim Jagielski 		pNewData->nTable= aRef.aStart.Tab();
629*b1cdbd2cSJim Jagielski 
630*b1cdbd2cSJim Jagielski 		if(eType==SC_CAT_CONTENT)
631*b1cdbd2cSJim Jagielski 		{
632*b1cdbd2cSJim Jagielski 			if(pScChangeAction->IsDialogParent())
633*b1cdbd2cSJim Jagielski 			{
634*b1cdbd2cSJim Jagielski 				aString=aStrContentWithChild;
635*b1cdbd2cSJim Jagielski 				pNewData->nInfo=RD_SPECIAL_VISCONTENT;
636*b1cdbd2cSJim Jagielski 				pNewData->bIsRejectable=sal_False;
637*b1cdbd2cSJim Jagielski 				pNewData->bIsAcceptable=sal_False;
638*b1cdbd2cSJim Jagielski 			}
639*b1cdbd2cSJim Jagielski 			else
640*b1cdbd2cSJim Jagielski 			{
641*b1cdbd2cSJim Jagielski 				aString=*MakeTypeString(eType);
642*b1cdbd2cSJim Jagielski 				pScChangeAction->GetDescription( aDesc, pDoc, sal_True);
643*b1cdbd2cSJim Jagielski 			}
644*b1cdbd2cSJim Jagielski 		}
645*b1cdbd2cSJim Jagielski 		else
646*b1cdbd2cSJim Jagielski 		{
647*b1cdbd2cSJim Jagielski 			aString=*MakeTypeString(eType);
648*b1cdbd2cSJim Jagielski 
649*b1cdbd2cSJim Jagielski 			if(bDelMaster)
650*b1cdbd2cSJim Jagielski 			{
651*b1cdbd2cSJim Jagielski 				pScChangeAction->GetDescription( aDesc, pDoc,sal_True);
652*b1cdbd2cSJim Jagielski 				pNewData->bDisabled=sal_True;
653*b1cdbd2cSJim Jagielski 				pNewData->bIsRejectable=sal_False;
654*b1cdbd2cSJim Jagielski 			}
655*b1cdbd2cSJim Jagielski 			else
656*b1cdbd2cSJim Jagielski 				pScChangeAction->GetDescription( aDesc, pDoc,!pScChangeAction->IsMasterDelete());
657*b1cdbd2cSJim Jagielski 
658*b1cdbd2cSJim Jagielski 		}
659*b1cdbd2cSJim Jagielski 
660*b1cdbd2cSJim Jagielski 		aString+='\t';
661*b1cdbd2cSJim Jagielski 		pScChangeAction->GetRefString(aRefStr, pDoc, sal_True);
662*b1cdbd2cSJim Jagielski 		aString+=aRefStr;
663*b1cdbd2cSJim Jagielski 		aString+='\t';
664*b1cdbd2cSJim Jagielski 
665*b1cdbd2cSJim Jagielski 		if(!bIsGenerated)
666*b1cdbd2cSJim Jagielski 		{
667*b1cdbd2cSJim Jagielski 			aString+=aUser;
668*b1cdbd2cSJim Jagielski 			aString+='\t';
669*b1cdbd2cSJim Jagielski             aString+=ScGlobal::pLocaleData->getDate(aDateTime);
670*b1cdbd2cSJim Jagielski 			aString+=' ';
671*b1cdbd2cSJim Jagielski             aString+=ScGlobal::pLocaleData->getTime(aDateTime);
672*b1cdbd2cSJim Jagielski 			aString+='\t';
673*b1cdbd2cSJim Jagielski 		}
674*b1cdbd2cSJim Jagielski 		else
675*b1cdbd2cSJim Jagielski 		{
676*b1cdbd2cSJim Jagielski 			aString+='\t';
677*b1cdbd2cSJim Jagielski 			aString+='\t';
678*b1cdbd2cSJim Jagielski 		}
679*b1cdbd2cSJim Jagielski 
680*b1cdbd2cSJim Jagielski 		String aComment=pScChangeAction->GetComment();
681*b1cdbd2cSJim Jagielski 		aComment.EraseAllChars('\n');
682*b1cdbd2cSJim Jagielski 		if(aDesc.Len()>0)
683*b1cdbd2cSJim Jagielski 		{
684*b1cdbd2cSJim Jagielski 			aComment.AppendAscii(RTL_CONSTASCII_STRINGPARAM( " (" ));
685*b1cdbd2cSJim Jagielski 			aComment+=aDesc;
686*b1cdbd2cSJim Jagielski 			aComment+=')';
687*b1cdbd2cSJim Jagielski 		}
688*b1cdbd2cSJim Jagielski 		if(pTheView->IsValidComment(&aComment))
689*b1cdbd2cSJim Jagielski 		{
690*b1cdbd2cSJim Jagielski 			aString+=aComment;
691*b1cdbd2cSJim Jagielski 			pEntry=pTheView->InsertEntry(aString,pNewData,pParent,nPos);
692*b1cdbd2cSJim Jagielski 		}
693*b1cdbd2cSJim Jagielski 		else
694*b1cdbd2cSJim Jagielski 			delete pNewData;
695*b1cdbd2cSJim Jagielski 	}
696*b1cdbd2cSJim Jagielski 	return pEntry;
697*b1cdbd2cSJim Jagielski }
698*b1cdbd2cSJim Jagielski 
InsertChangeActionContent(const ScChangeActionContent * pScChangeAction,SvLBoxEntry * pParent,sal_uLong nSpecial)699*b1cdbd2cSJim Jagielski SvLBoxEntry* ScAcceptChgDlg::InsertChangeActionContent(const ScChangeActionContent* pScChangeAction,
700*b1cdbd2cSJim Jagielski 														  SvLBoxEntry* pParent, sal_uLong nSpecial)
701*b1cdbd2cSJim Jagielski {
702*b1cdbd2cSJim Jagielski 	ScChangeTrack* pChanges=pDoc->GetChangeTrack();
703*b1cdbd2cSJim Jagielski 	SvLBoxEntry* pEntry=NULL;
704*b1cdbd2cSJim Jagielski 
705*b1cdbd2cSJim Jagielski 	if(pScChangeAction==NULL || pChanges==NULL) return NULL;
706*b1cdbd2cSJim Jagielski 
707*b1cdbd2cSJim Jagielski 	sal_Bool bIsGenerated=pChanges->IsGenerated(pScChangeAction->GetActionNumber());
708*b1cdbd2cSJim Jagielski 
709*b1cdbd2cSJim Jagielski 	sal_Bool bFlag=sal_False;
710*b1cdbd2cSJim Jagielski 
711*b1cdbd2cSJim Jagielski 	ScRange aRef=pScChangeAction->GetBigRange().MakeRange();
712*b1cdbd2cSJim Jagielski 	String aUser=pScChangeAction->GetUser();
713*b1cdbd2cSJim Jagielski 	DateTime aDateTime=pScChangeAction->GetDateTime();
714*b1cdbd2cSJim Jagielski 
715*b1cdbd2cSJim Jagielski 	if(pTheView->IsValidEntry(&aUser,&aDateTime)||bIsGenerated)
716*b1cdbd2cSJim Jagielski 	{
717*b1cdbd2cSJim Jagielski 		if(pTPFilter->IsRange())
718*b1cdbd2cSJim Jagielski 		{
719*b1cdbd2cSJim Jagielski 			ScRange* pRangeEntry=aRangeList.First();
720*b1cdbd2cSJim Jagielski 
721*b1cdbd2cSJim Jagielski 			while(pRangeEntry!=NULL)
722*b1cdbd2cSJim Jagielski 			{
723*b1cdbd2cSJim Jagielski 				if(pRangeEntry->Intersects(aRef)) break;
724*b1cdbd2cSJim Jagielski 				pRangeEntry=aRangeList.Next();
725*b1cdbd2cSJim Jagielski 			}
726*b1cdbd2cSJim Jagielski 			//SC_CAS_VIRGIN,SC_CAS_ACCEPTED,SC_CAS_REJECTED
727*b1cdbd2cSJim Jagielski 			if(pRangeEntry!=NULL)
728*b1cdbd2cSJim Jagielski 			{
729*b1cdbd2cSJim Jagielski 				bFlag=sal_True;
730*b1cdbd2cSJim Jagielski 			}
731*b1cdbd2cSJim Jagielski 		}
732*b1cdbd2cSJim Jagielski 		else if(!bIsGenerated)
733*b1cdbd2cSJim Jagielski 			bFlag=sal_True;
734*b1cdbd2cSJim Jagielski 	}
735*b1cdbd2cSJim Jagielski 
736*b1cdbd2cSJim Jagielski 	String aRefStr;
737*b1cdbd2cSJim Jagielski 	String aString;
738*b1cdbd2cSJim Jagielski 	String a2String;
739*b1cdbd2cSJim Jagielski 	String aDesc;
740*b1cdbd2cSJim Jagielski 
741*b1cdbd2cSJim Jagielski 	if(nSpecial==RD_SPECIAL_CONTENT)
742*b1cdbd2cSJim Jagielski 	{
743*b1cdbd2cSJim Jagielski 		pScChangeAction->GetOldString(a2String);
744*b1cdbd2cSJim Jagielski 		if(a2String.Len()==0) a2String=aStrEmpty;
745*b1cdbd2cSJim Jagielski 
746*b1cdbd2cSJim Jagielski 		//aString+="\'";
747*b1cdbd2cSJim Jagielski 		aString+=a2String;
748*b1cdbd2cSJim Jagielski 		//aString+="\'";
749*b1cdbd2cSJim Jagielski 
750*b1cdbd2cSJim Jagielski 		aDesc=aStrChildOrgContent;
751*b1cdbd2cSJim Jagielski 		aDesc.AppendAscii(RTL_CONSTASCII_STRINGPARAM( ": " ));
752*b1cdbd2cSJim Jagielski 	}
753*b1cdbd2cSJim Jagielski 	else
754*b1cdbd2cSJim Jagielski 	{
755*b1cdbd2cSJim Jagielski 		pScChangeAction->GetNewString(a2String);
756*b1cdbd2cSJim Jagielski 		if(a2String.Len()==0)
757*b1cdbd2cSJim Jagielski 		{
758*b1cdbd2cSJim Jagielski 			a2String=aStrEmpty;
759*b1cdbd2cSJim Jagielski 			aString+=a2String;
760*b1cdbd2cSJim Jagielski 		}
761*b1cdbd2cSJim Jagielski 		else
762*b1cdbd2cSJim Jagielski 		{
763*b1cdbd2cSJim Jagielski 			aString+='\'';
764*b1cdbd2cSJim Jagielski 			aString+=a2String;
765*b1cdbd2cSJim Jagielski 			aString+='\'';
766*b1cdbd2cSJim Jagielski 			a2String=aString;
767*b1cdbd2cSJim Jagielski 		}
768*b1cdbd2cSJim Jagielski 		aDesc=aStrChildContent;
769*b1cdbd2cSJim Jagielski 
770*b1cdbd2cSJim Jagielski 	}
771*b1cdbd2cSJim Jagielski 
772*b1cdbd2cSJim Jagielski 	aDesc+=a2String;
773*b1cdbd2cSJim Jagielski 	aString+='\t';
774*b1cdbd2cSJim Jagielski 	pScChangeAction->GetRefString(aRefStr, pDoc, sal_True);
775*b1cdbd2cSJim Jagielski 	aString+=aRefStr;
776*b1cdbd2cSJim Jagielski 	aString+='\t';
777*b1cdbd2cSJim Jagielski 
778*b1cdbd2cSJim Jagielski 	if(!bIsGenerated)
779*b1cdbd2cSJim Jagielski 	{
780*b1cdbd2cSJim Jagielski 		aString+=aUser;
781*b1cdbd2cSJim Jagielski 		aString+='\t';
782*b1cdbd2cSJim Jagielski 
783*b1cdbd2cSJim Jagielski         aString+=ScGlobal::pLocaleData->getDate(aDateTime);
784*b1cdbd2cSJim Jagielski 		aString+=' ';
785*b1cdbd2cSJim Jagielski         aString+=ScGlobal::pLocaleData->getTime(aDateTime);
786*b1cdbd2cSJim Jagielski 		aString+='\t';
787*b1cdbd2cSJim Jagielski 	}
788*b1cdbd2cSJim Jagielski 	else
789*b1cdbd2cSJim Jagielski 	{
790*b1cdbd2cSJim Jagielski 		aString+='\t';
791*b1cdbd2cSJim Jagielski 		aString+='\t';
792*b1cdbd2cSJim Jagielski 	}
793*b1cdbd2cSJim Jagielski 	String aComment=pScChangeAction->GetComment();
794*b1cdbd2cSJim Jagielski 	aComment.EraseAllChars('\n');
795*b1cdbd2cSJim Jagielski 
796*b1cdbd2cSJim Jagielski 	if(aDesc.Len()>0)
797*b1cdbd2cSJim Jagielski 	{
798*b1cdbd2cSJim Jagielski 		aComment.AppendAscii(RTL_CONSTASCII_STRINGPARAM( " (" ));
799*b1cdbd2cSJim Jagielski 		aComment+=aDesc;
800*b1cdbd2cSJim Jagielski 		aComment+=')';
801*b1cdbd2cSJim Jagielski 	}
802*b1cdbd2cSJim Jagielski 
803*b1cdbd2cSJim Jagielski 	aString+=aComment;
804*b1cdbd2cSJim Jagielski 
805*b1cdbd2cSJim Jagielski 	ScRedlinData* pNewData=new ScRedlinData;
806*b1cdbd2cSJim Jagielski 	pNewData->nInfo=nSpecial;
807*b1cdbd2cSJim Jagielski 	pNewData->pData=(void *)pScChangeAction;
808*b1cdbd2cSJim Jagielski 	pNewData->nActionNo=pScChangeAction->GetActionNumber();
809*b1cdbd2cSJim Jagielski 	pNewData->bIsAcceptable=pScChangeAction->IsClickable();
810*b1cdbd2cSJim Jagielski 	pNewData->bIsRejectable=sal_False;
811*b1cdbd2cSJim Jagielski 	pNewData->bDisabled=!pNewData->bIsAcceptable;
812*b1cdbd2cSJim Jagielski 	pNewData->aDateTime=aDateTime;
813*b1cdbd2cSJim Jagielski 	pNewData->nRow	= aRef.aStart.Row();
814*b1cdbd2cSJim Jagielski 	pNewData->nCol	= aRef.aStart.Col();
815*b1cdbd2cSJim Jagielski 	pNewData->nTable= aRef.aStart.Tab();
816*b1cdbd2cSJim Jagielski 
817*b1cdbd2cSJim Jagielski 	if(pTheView->IsValidComment(&aComment) && bFlag)
818*b1cdbd2cSJim Jagielski 	{
819*b1cdbd2cSJim Jagielski 		bHasFilterEntry=sal_True;
820*b1cdbd2cSJim Jagielski 		pEntry=pTheView->InsertEntry(aString,pNewData,pParent);
821*b1cdbd2cSJim Jagielski 	}
822*b1cdbd2cSJim Jagielski 	else
823*b1cdbd2cSJim Jagielski 		pEntry=pTheView->InsertEntry(aString,pNewData,Color(COL_LIGHTBLUE),pParent);
824*b1cdbd2cSJim Jagielski 	return pEntry;
825*b1cdbd2cSJim Jagielski }
826*b1cdbd2cSJim Jagielski 
PreNotify(NotifyEvent & rNEvt)827*b1cdbd2cSJim Jagielski long ScAcceptChgDlg::PreNotify( NotifyEvent& rNEvt )
828*b1cdbd2cSJim Jagielski {
829*b1cdbd2cSJim Jagielski 	if(rNEvt.GetType()==EVENT_GETFOCUS && bNeedsUpdate)
830*b1cdbd2cSJim Jagielski 	{
831*b1cdbd2cSJim Jagielski 		ClearView();
832*b1cdbd2cSJim Jagielski 		UpdateView();
833*b1cdbd2cSJim Jagielski 		bNoSelection=sal_False;
834*b1cdbd2cSJim Jagielski 	}
835*b1cdbd2cSJim Jagielski 
836*b1cdbd2cSJim Jagielski 	return SfxModelessDialog::PreNotify(rNEvt);
837*b1cdbd2cSJim Jagielski }
838*b1cdbd2cSJim Jagielski 
839*b1cdbd2cSJim Jagielski 
UpdateView()840*b1cdbd2cSJim Jagielski void ScAcceptChgDlg::UpdateView()
841*b1cdbd2cSJim Jagielski {
842*b1cdbd2cSJim Jagielski 	bNeedsUpdate=sal_False;
843*b1cdbd2cSJim Jagielski 	DateTime aDateTime;
844*b1cdbd2cSJim Jagielski 	SvLBoxEntry* pParent=NULL;
845*b1cdbd2cSJim Jagielski 	ScChangeTrack* pChanges=NULL;
846*b1cdbd2cSJim Jagielski 	const ScChangeAction* pScChangeAction=NULL;
847*b1cdbd2cSJim Jagielski 	bAcceptEnableFlag=sal_True;
848*b1cdbd2cSJim Jagielski 	bRejectEnableFlag=sal_True;
849*b1cdbd2cSJim Jagielski 	SetPointer(Pointer(POINTER_WAIT));
850*b1cdbd2cSJim Jagielski 	pTheView->SetUpdateMode(sal_False);
851*b1cdbd2cSJim Jagielski 	sal_Bool bFilterFlag=pTPFilter->IsDate()||pTPFilter->IsRange()||
852*b1cdbd2cSJim Jagielski 					 pTPFilter->IsAuthor()||pTPFilter->IsComment();
853*b1cdbd2cSJim Jagielski 
854*b1cdbd2cSJim Jagielski 	bUseColor=bFilterFlag;
855*b1cdbd2cSJim Jagielski 
856*b1cdbd2cSJim Jagielski 	if(pDoc!=NULL)
857*b1cdbd2cSJim Jagielski 	{
858*b1cdbd2cSJim Jagielski 		pChanges=pDoc->GetChangeTrack();
859*b1cdbd2cSJim Jagielski 		if(pChanges!=NULL)
860*b1cdbd2cSJim Jagielski 		{
861*b1cdbd2cSJim Jagielski 			pScChangeAction=pChanges->GetFirst();
862*b1cdbd2cSJim Jagielski 		}
863*b1cdbd2cSJim Jagielski 	}
864*b1cdbd2cSJim Jagielski 	ScChangeActionTable ActionTable;
865*b1cdbd2cSJim Jagielski 	sal_Bool bTheFlag=sal_False;
866*b1cdbd2cSJim Jagielski 
867*b1cdbd2cSJim Jagielski 	while(pScChangeAction!=NULL)
868*b1cdbd2cSJim Jagielski 	{
869*b1cdbd2cSJim Jagielski 		bHasFilterEntry=sal_False;
870*b1cdbd2cSJim Jagielski 		switch(pScChangeAction->GetState())
871*b1cdbd2cSJim Jagielski 		{
872*b1cdbd2cSJim Jagielski 			case SC_CAS_VIRGIN:
873*b1cdbd2cSJim Jagielski 
874*b1cdbd2cSJim Jagielski 				if(pScChangeAction->IsDialogRoot())
875*b1cdbd2cSJim Jagielski 				{
876*b1cdbd2cSJim Jagielski 					if(pScChangeAction->IsDialogParent())
877*b1cdbd2cSJim Jagielski 						pParent=InsertChangeAction(pScChangeAction,SC_CAS_VIRGIN);
878*b1cdbd2cSJim Jagielski 					else
879*b1cdbd2cSJim Jagielski 						pParent=InsertFilteredAction(pScChangeAction,SC_CAS_VIRGIN);
880*b1cdbd2cSJim Jagielski 				}
881*b1cdbd2cSJim Jagielski 				else
882*b1cdbd2cSJim Jagielski 					pParent=NULL;
883*b1cdbd2cSJim Jagielski 
884*b1cdbd2cSJim Jagielski 				bTheFlag=sal_True;
885*b1cdbd2cSJim Jagielski 				break;
886*b1cdbd2cSJim Jagielski 
887*b1cdbd2cSJim Jagielski 			case SC_CAS_ACCEPTED:
888*b1cdbd2cSJim Jagielski 				pParent=NULL;
889*b1cdbd2cSJim Jagielski 				nAcceptCount++;
890*b1cdbd2cSJim Jagielski 				break;
891*b1cdbd2cSJim Jagielski 
892*b1cdbd2cSJim Jagielski 			case SC_CAS_REJECTED:
893*b1cdbd2cSJim Jagielski 				pParent=NULL;
894*b1cdbd2cSJim Jagielski 				nRejectCount++;
895*b1cdbd2cSJim Jagielski 				break;
896*b1cdbd2cSJim Jagielski 		}
897*b1cdbd2cSJim Jagielski 
898*b1cdbd2cSJim Jagielski 		if(pParent!=NULL && pScChangeAction->IsDialogParent())
899*b1cdbd2cSJim Jagielski 		{
900*b1cdbd2cSJim Jagielski 			if(!bFilterFlag)
901*b1cdbd2cSJim Jagielski 			{
902*b1cdbd2cSJim Jagielski 				pParent->EnableChildsOnDemand(sal_True);
903*b1cdbd2cSJim Jagielski 			}
904*b1cdbd2cSJim Jagielski 			else
905*b1cdbd2cSJim Jagielski 			{
906*b1cdbd2cSJim Jagielski 				sal_Bool bTestFlag=bHasFilterEntry;
907*b1cdbd2cSJim Jagielski 				bHasFilterEntry=sal_False;
908*b1cdbd2cSJim Jagielski 				if(Expand(pChanges,pScChangeAction,pParent,!bTestFlag)&&!bTestFlag)
909*b1cdbd2cSJim Jagielski                     pTheView->RemoveEntry(pParent);
910*b1cdbd2cSJim Jagielski 			}
911*b1cdbd2cSJim Jagielski 		}
912*b1cdbd2cSJim Jagielski 
913*b1cdbd2cSJim Jagielski 		pScChangeAction=pScChangeAction->GetNext();
914*b1cdbd2cSJim Jagielski 	}
915*b1cdbd2cSJim Jagielski 
916*b1cdbd2cSJim Jagielski     if( bTheFlag && (!pDoc->IsDocEditable() || pChanges->IsProtected()) )
917*b1cdbd2cSJim Jagielski 		bTheFlag=sal_False;
918*b1cdbd2cSJim Jagielski 
919*b1cdbd2cSJim Jagielski 	pTPView->EnableAccept(bTheFlag);
920*b1cdbd2cSJim Jagielski 	pTPView->EnableAcceptAll(bTheFlag);
921*b1cdbd2cSJim Jagielski 	pTPView->EnableReject(bTheFlag);
922*b1cdbd2cSJim Jagielski 	pTPView->EnableRejectAll(bTheFlag);
923*b1cdbd2cSJim Jagielski 
924*b1cdbd2cSJim Jagielski 	if(nAcceptCount>0)
925*b1cdbd2cSJim Jagielski 	{
926*b1cdbd2cSJim Jagielski 		pParent=pTheView->InsertEntry(
927*b1cdbd2cSJim Jagielski             aStrAllAccepted, static_cast< RedlinData * >(NULL),
928*b1cdbd2cSJim Jagielski             static_cast< SvLBoxEntry * >(NULL));
929*b1cdbd2cSJim Jagielski 		pParent->EnableChildsOnDemand(sal_True);
930*b1cdbd2cSJim Jagielski 	}
931*b1cdbd2cSJim Jagielski 	if(nRejectCount>0)
932*b1cdbd2cSJim Jagielski 	{
933*b1cdbd2cSJim Jagielski 		pParent=pTheView->InsertEntry(
934*b1cdbd2cSJim Jagielski             aStrAllRejected, static_cast< RedlinData * >(NULL),
935*b1cdbd2cSJim Jagielski             static_cast< SvLBoxEntry * >(NULL));
936*b1cdbd2cSJim Jagielski 		pParent->EnableChildsOnDemand(sal_True);
937*b1cdbd2cSJim Jagielski 	}
938*b1cdbd2cSJim Jagielski 	pTheView->SetUpdateMode(sal_True);
939*b1cdbd2cSJim Jagielski 	SetPointer(Pointer(POINTER_ARROW));
940*b1cdbd2cSJim Jagielski 	SvLBoxEntry* pEntry=pTheView->First();
941*b1cdbd2cSJim Jagielski 	if(pEntry!=NULL)
942*b1cdbd2cSJim Jagielski 	{
943*b1cdbd2cSJim Jagielski 		pTheView->Select(pEntry);
944*b1cdbd2cSJim Jagielski 	}
945*b1cdbd2cSJim Jagielski }
946*b1cdbd2cSJim Jagielski 
947*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
Close()948*b1cdbd2cSJim Jagielski sal_Bool ScAcceptChgDlg::Close()
949*b1cdbd2cSJim Jagielski {
950*b1cdbd2cSJim Jagielski 	return SfxModelessDialog::Close();
951*b1cdbd2cSJim Jagielski }
952*b1cdbd2cSJim Jagielski 
Resize()953*b1cdbd2cSJim Jagielski void ScAcceptChgDlg::Resize()
954*b1cdbd2cSJim Jagielski {
955*b1cdbd2cSJim Jagielski 	SfxModelessDialog::Resize();
956*b1cdbd2cSJim Jagielski     Size aOutSize=GetOutputSizePixel();
957*b1cdbd2cSJim Jagielski     aAcceptChgCtr.SetSizePixel(aOutSize);
958*b1cdbd2cSJim Jagielski }
959*b1cdbd2cSJim Jagielski 
IMPL_LINK(ScAcceptChgDlg,MinSizeHandle,SvxAcceptChgCtr *,pCtr)960*b1cdbd2cSJim Jagielski IMPL_LINK( ScAcceptChgDlg, MinSizeHandle, SvxAcceptChgCtr*, pCtr )
961*b1cdbd2cSJim Jagielski {
962*b1cdbd2cSJim Jagielski 	if(pCtr==&aAcceptChgCtr)
963*b1cdbd2cSJim Jagielski 	{
964*b1cdbd2cSJim Jagielski 		if(!IsRollUp())
965*b1cdbd2cSJim Jagielski 			SetOutputSizePixel(MinSize);
966*b1cdbd2cSJim Jagielski 	}
967*b1cdbd2cSJim Jagielski 	return 0;
968*b1cdbd2cSJim Jagielski }
969*b1cdbd2cSJim Jagielski 
IMPL_LINK(ScAcceptChgDlg,RefHandle,SvxTPFilter *,EMPTYARG)970*b1cdbd2cSJim Jagielski IMPL_LINK( ScAcceptChgDlg, RefHandle, SvxTPFilter*, EMPTYARG )
971*b1cdbd2cSJim Jagielski {
972*b1cdbd2cSJim Jagielski 	sal_uInt16 nId  =ScSimpleRefDlgWrapper::GetChildWindowId();
973*b1cdbd2cSJim Jagielski 
974*b1cdbd2cSJim Jagielski 	ScSimpleRefDlgWrapper::SetDefaultPosSize(GetPosPixel(),GetSizePixel(),sal_True);
975*b1cdbd2cSJim Jagielski 
976*b1cdbd2cSJim Jagielski 	SC_MOD()->SetRefDialog( nId, sal_True );
977*b1cdbd2cSJim Jagielski 
978*b1cdbd2cSJim Jagielski 	SfxViewFrame* pViewFrm = pViewData->GetViewShell()->GetViewFrame();
979*b1cdbd2cSJim Jagielski 	ScSimpleRefDlgWrapper* pWnd =(ScSimpleRefDlgWrapper*)pViewFrm->GetChildWindow( nId );
980*b1cdbd2cSJim Jagielski 
981*b1cdbd2cSJim Jagielski 	if(pWnd!=NULL)
982*b1cdbd2cSJim Jagielski 	{
983*b1cdbd2cSJim Jagielski //		bSimpleRefDlgStarted=sal_True;
984*b1cdbd2cSJim Jagielski 		sal_uInt16 nAcceptId=ScAcceptChgDlgWrapper::GetChildWindowId();
985*b1cdbd2cSJim Jagielski 		pViewFrm->ShowChildWindow(nAcceptId,sal_False);
986*b1cdbd2cSJim Jagielski 		pWnd->SetCloseHdl(LINK( this, ScAcceptChgDlg,RefInfoHandle));
987*b1cdbd2cSJim Jagielski 		pWnd->SetRefString(pTPFilter->GetRange());
988*b1cdbd2cSJim Jagielski 		pWnd->SetAutoReOpen(sal_False);
989*b1cdbd2cSJim Jagielski 		Window* pWin=pWnd->GetWindow();
990*b1cdbd2cSJim Jagielski 		pWin->SetPosSizePixel(GetPosPixel(),GetSizePixel());
991*b1cdbd2cSJim Jagielski 		Hide();
992*b1cdbd2cSJim Jagielski 		pWin->SetText(GetText());
993*b1cdbd2cSJim Jagielski 		pWnd->StartRefInput();
994*b1cdbd2cSJim Jagielski 	}
995*b1cdbd2cSJim Jagielski 	return 0;
996*b1cdbd2cSJim Jagielski }
997*b1cdbd2cSJim Jagielski 
IMPL_LINK(ScAcceptChgDlg,RefInfoHandle,String *,pResult)998*b1cdbd2cSJim Jagielski IMPL_LINK( ScAcceptChgDlg, RefInfoHandle, String*, pResult)
999*b1cdbd2cSJim Jagielski {
1000*b1cdbd2cSJim Jagielski 	sal_uInt16 nId;
1001*b1cdbd2cSJim Jagielski 
1002*b1cdbd2cSJim Jagielski //	bSimpleRefDlgStarted=sal_False;
1003*b1cdbd2cSJim Jagielski 	ScSimpleRefDlgWrapper::SetAutoReOpen(sal_True);
1004*b1cdbd2cSJim Jagielski 
1005*b1cdbd2cSJim Jagielski 	SfxViewFrame* pViewFrm = pViewData->GetViewShell()->GetViewFrame();
1006*b1cdbd2cSJim Jagielski 	if(pResult!=NULL)
1007*b1cdbd2cSJim Jagielski 	{
1008*b1cdbd2cSJim Jagielski 		pTPFilter->SetRange(*pResult);
1009*b1cdbd2cSJim Jagielski 		FilterHandle(pTPFilter);
1010*b1cdbd2cSJim Jagielski 
1011*b1cdbd2cSJim Jagielski 		nId = ScSimpleRefDlgWrapper::GetChildWindowId();
1012*b1cdbd2cSJim Jagielski 		ScSimpleRefDlgWrapper* pWnd = (ScSimpleRefDlgWrapper*)pViewFrm->GetChildWindow( nId );
1013*b1cdbd2cSJim Jagielski 
1014*b1cdbd2cSJim Jagielski 		if(pWnd!=NULL)
1015*b1cdbd2cSJim Jagielski 		{
1016*b1cdbd2cSJim Jagielski 			Window* pWin=pWnd->GetWindow();
1017*b1cdbd2cSJim Jagielski             Size aWinSize=pWin->GetSizePixel();
1018*b1cdbd2cSJim Jagielski             aWinSize.Width()=GetSizePixel().Width();
1019*b1cdbd2cSJim Jagielski             SetPosSizePixel(pWin->GetPosPixel(),aWinSize);
1020*b1cdbd2cSJim Jagielski 			Invalidate();
1021*b1cdbd2cSJim Jagielski 		}
1022*b1cdbd2cSJim Jagielski 		nId = ScAcceptChgDlgWrapper::GetChildWindowId();
1023*b1cdbd2cSJim Jagielski 		pViewFrm->ShowChildWindow( nId, sal_True );
1024*b1cdbd2cSJim Jagielski 	}
1025*b1cdbd2cSJim Jagielski 	else
1026*b1cdbd2cSJim Jagielski 	{
1027*b1cdbd2cSJim Jagielski 		nId = ScAcceptChgDlgWrapper::GetChildWindowId();
1028*b1cdbd2cSJim Jagielski 		pViewFrm->SetChildWindow( nId, sal_False );
1029*b1cdbd2cSJim Jagielski 	}
1030*b1cdbd2cSJim Jagielski 	return 0;
1031*b1cdbd2cSJim Jagielski }
1032*b1cdbd2cSJim Jagielski 
IMPL_LINK(ScAcceptChgDlg,FilterHandle,SvxTPFilter *,pRef)1033*b1cdbd2cSJim Jagielski IMPL_LINK( ScAcceptChgDlg, FilterHandle, SvxTPFilter*, pRef )
1034*b1cdbd2cSJim Jagielski {
1035*b1cdbd2cSJim Jagielski 	if(pRef!=NULL)
1036*b1cdbd2cSJim Jagielski 	{
1037*b1cdbd2cSJim Jagielski 		ClearView();
1038*b1cdbd2cSJim Jagielski 		aRangeList.Clear();
1039*b1cdbd2cSJim Jagielski 		aRangeList.Parse(pTPFilter->GetRange(),pDoc);
1040*b1cdbd2cSJim Jagielski 		UpdateView();
1041*b1cdbd2cSJim Jagielski 	}
1042*b1cdbd2cSJim Jagielski 	return 0;
1043*b1cdbd2cSJim Jagielski }
1044*b1cdbd2cSJim Jagielski 
IMPL_LINK(ScAcceptChgDlg,RejectHandle,SvxTPView *,pRef)1045*b1cdbd2cSJim Jagielski IMPL_LINK( ScAcceptChgDlg, RejectHandle, SvxTPView*, pRef )
1046*b1cdbd2cSJim Jagielski {
1047*b1cdbd2cSJim Jagielski 	SetPointer(Pointer(POINTER_WAIT));
1048*b1cdbd2cSJim Jagielski 
1049*b1cdbd2cSJim Jagielski 	bIgnoreMsg=sal_True;
1050*b1cdbd2cSJim Jagielski 	ScChangeTrack* pChanges=pDoc->GetChangeTrack();
1051*b1cdbd2cSJim Jagielski 
1052*b1cdbd2cSJim Jagielski 	if(pRef!=NULL)
1053*b1cdbd2cSJim Jagielski 	{
1054*b1cdbd2cSJim Jagielski 		SvLBoxEntry* pEntry=pTheView->FirstSelected();
1055*b1cdbd2cSJim Jagielski 		while(pEntry!=NULL)
1056*b1cdbd2cSJim Jagielski 		{
1057*b1cdbd2cSJim Jagielski 			ScRedlinData *pEntryData=(ScRedlinData *)(pEntry->GetUserData());
1058*b1cdbd2cSJim Jagielski 			if(pEntryData!=NULL)
1059*b1cdbd2cSJim Jagielski 			{
1060*b1cdbd2cSJim Jagielski 				ScChangeAction* pScChangeAction=
1061*b1cdbd2cSJim Jagielski 						(ScChangeAction*) pEntryData->pData;
1062*b1cdbd2cSJim Jagielski 
1063*b1cdbd2cSJim Jagielski 				if(pScChangeAction->GetType()==SC_CAT_INSERT_TABS)
1064*b1cdbd2cSJim Jagielski 				{
1065*b1cdbd2cSJim Jagielski 					pViewData->SetTabNo(0);
1066*b1cdbd2cSJim Jagielski 				}
1067*b1cdbd2cSJim Jagielski 				pChanges->Reject(pScChangeAction);
1068*b1cdbd2cSJim Jagielski 			}
1069*b1cdbd2cSJim Jagielski 			pEntry = pTheView->NextSelected(pEntry);
1070*b1cdbd2cSJim Jagielski 		}
1071*b1cdbd2cSJim Jagielski 		ScDocShell* pDocSh=pViewData->GetDocShell();
1072*b1cdbd2cSJim Jagielski 		pDocSh->PostPaintExtras();
1073*b1cdbd2cSJim Jagielski 		pDocSh->PostPaintGridAll();
1074*b1cdbd2cSJim Jagielski 		pDocSh->GetUndoManager()->Clear();
1075*b1cdbd2cSJim Jagielski 		pDocSh->SetDocumentModified();
1076*b1cdbd2cSJim Jagielski 		ClearView();
1077*b1cdbd2cSJim Jagielski 		UpdateView();
1078*b1cdbd2cSJim Jagielski 	}
1079*b1cdbd2cSJim Jagielski 	SetPointer(Pointer(POINTER_ARROW));
1080*b1cdbd2cSJim Jagielski 
1081*b1cdbd2cSJim Jagielski 	bIgnoreMsg=sal_False;
1082*b1cdbd2cSJim Jagielski 	return 0;
1083*b1cdbd2cSJim Jagielski }
IMPL_LINK(ScAcceptChgDlg,AcceptHandle,SvxTPView *,pRef)1084*b1cdbd2cSJim Jagielski IMPL_LINK( ScAcceptChgDlg, AcceptHandle, SvxTPView*, pRef )
1085*b1cdbd2cSJim Jagielski {
1086*b1cdbd2cSJim Jagielski 	SetPointer(Pointer(POINTER_WAIT));
1087*b1cdbd2cSJim Jagielski 
1088*b1cdbd2cSJim Jagielski 	ScChangeTrack* pChanges=pDoc->GetChangeTrack();
1089*b1cdbd2cSJim Jagielski 	bIgnoreMsg=sal_True;
1090*b1cdbd2cSJim Jagielski 	if(pRef!=NULL)
1091*b1cdbd2cSJim Jagielski 	{
1092*b1cdbd2cSJim Jagielski 		SvLBoxEntry* pEntry=pTheView->FirstSelected();
1093*b1cdbd2cSJim Jagielski 		while(pEntry!=NULL)
1094*b1cdbd2cSJim Jagielski 		{
1095*b1cdbd2cSJim Jagielski 			ScRedlinData *pEntryData=(ScRedlinData *)(pEntry->GetUserData());
1096*b1cdbd2cSJim Jagielski 			if(pEntryData!=NULL)
1097*b1cdbd2cSJim Jagielski 			{
1098*b1cdbd2cSJim Jagielski 				ScChangeAction* pScChangeAction=
1099*b1cdbd2cSJim Jagielski 						(ScChangeAction*) pEntryData->pData;
1100*b1cdbd2cSJim Jagielski 				if(pScChangeAction->GetType()==SC_CAT_CONTENT)
1101*b1cdbd2cSJim Jagielski 				{
1102*b1cdbd2cSJim Jagielski 					if(pEntryData->nInfo==RD_SPECIAL_CONTENT)
1103*b1cdbd2cSJim Jagielski 					{
1104*b1cdbd2cSJim Jagielski 						pChanges->SelectContent(pScChangeAction,sal_True);
1105*b1cdbd2cSJim Jagielski 					}
1106*b1cdbd2cSJim Jagielski 					else
1107*b1cdbd2cSJim Jagielski 					{
1108*b1cdbd2cSJim Jagielski 						pChanges->SelectContent(pScChangeAction);
1109*b1cdbd2cSJim Jagielski 					}
1110*b1cdbd2cSJim Jagielski 				}
1111*b1cdbd2cSJim Jagielski 				else
1112*b1cdbd2cSJim Jagielski 					pChanges->Accept(pScChangeAction);
1113*b1cdbd2cSJim Jagielski 			}
1114*b1cdbd2cSJim Jagielski 			pEntry = pTheView->NextSelected(pEntry);
1115*b1cdbd2cSJim Jagielski 		}
1116*b1cdbd2cSJim Jagielski 		ScDocShell* pDocSh=pViewData->GetDocShell();
1117*b1cdbd2cSJim Jagielski 		pDocSh->PostPaintExtras();
1118*b1cdbd2cSJim Jagielski 		pDocSh->PostPaintGridAll();
1119*b1cdbd2cSJim Jagielski 		pDocSh->SetDocumentModified();
1120*b1cdbd2cSJim Jagielski 		ClearView();
1121*b1cdbd2cSJim Jagielski 		UpdateView();
1122*b1cdbd2cSJim Jagielski 	}
1123*b1cdbd2cSJim Jagielski 	bIgnoreMsg=sal_False;
1124*b1cdbd2cSJim Jagielski 
1125*b1cdbd2cSJim Jagielski 	return 0;
1126*b1cdbd2cSJim Jagielski }
1127*b1cdbd2cSJim Jagielski 
RejectFiltered()1128*b1cdbd2cSJim Jagielski void ScAcceptChgDlg::RejectFiltered()
1129*b1cdbd2cSJim Jagielski {
1130*b1cdbd2cSJim Jagielski 	if(pDoc==NULL) return;
1131*b1cdbd2cSJim Jagielski 	ScChangeTrack* pChanges=pDoc->GetChangeTrack();
1132*b1cdbd2cSJim Jagielski 	const ScChangeAction* pScChangeAction=NULL;
1133*b1cdbd2cSJim Jagielski 
1134*b1cdbd2cSJim Jagielski 	if(pChanges!=NULL)
1135*b1cdbd2cSJim Jagielski 	{
1136*b1cdbd2cSJim Jagielski 		pScChangeAction=pChanges->GetLast();
1137*b1cdbd2cSJim Jagielski 	}
1138*b1cdbd2cSJim Jagielski 
1139*b1cdbd2cSJim Jagielski 	while(pScChangeAction!=NULL)
1140*b1cdbd2cSJim Jagielski 	{
1141*b1cdbd2cSJim Jagielski 		if(pScChangeAction->IsDialogRoot())
1142*b1cdbd2cSJim Jagielski 		{
1143*b1cdbd2cSJim Jagielski 			if(IsValidAction(pScChangeAction))
1144*b1cdbd2cSJim Jagielski 			{
1145*b1cdbd2cSJim Jagielski 				pChanges->Reject((ScChangeAction*)pScChangeAction);
1146*b1cdbd2cSJim Jagielski 			}
1147*b1cdbd2cSJim Jagielski 		}
1148*b1cdbd2cSJim Jagielski 		pScChangeAction=pScChangeAction->GetPrev();
1149*b1cdbd2cSJim Jagielski 	}
1150*b1cdbd2cSJim Jagielski }
AcceptFiltered()1151*b1cdbd2cSJim Jagielski void ScAcceptChgDlg::AcceptFiltered()
1152*b1cdbd2cSJim Jagielski {
1153*b1cdbd2cSJim Jagielski 	if(pDoc==NULL) return;
1154*b1cdbd2cSJim Jagielski 	ScChangeTrack* pChanges=pDoc->GetChangeTrack();
1155*b1cdbd2cSJim Jagielski 	const ScChangeAction* pScChangeAction=NULL;
1156*b1cdbd2cSJim Jagielski 
1157*b1cdbd2cSJim Jagielski 	if(pChanges!=NULL)
1158*b1cdbd2cSJim Jagielski 	{
1159*b1cdbd2cSJim Jagielski 		pScChangeAction=pChanges->GetLast();
1160*b1cdbd2cSJim Jagielski 	}
1161*b1cdbd2cSJim Jagielski 
1162*b1cdbd2cSJim Jagielski 	while(pScChangeAction!=NULL)
1163*b1cdbd2cSJim Jagielski 	{
1164*b1cdbd2cSJim Jagielski 		if(pScChangeAction->IsDialogRoot())
1165*b1cdbd2cSJim Jagielski 		{
1166*b1cdbd2cSJim Jagielski 			if(IsValidAction(pScChangeAction))
1167*b1cdbd2cSJim Jagielski 			{
1168*b1cdbd2cSJim Jagielski 				pChanges->Accept((ScChangeAction*)pScChangeAction);
1169*b1cdbd2cSJim Jagielski 			}
1170*b1cdbd2cSJim Jagielski 		}
1171*b1cdbd2cSJim Jagielski 		pScChangeAction=pScChangeAction->GetPrev();
1172*b1cdbd2cSJim Jagielski 	}
1173*b1cdbd2cSJim Jagielski }
1174*b1cdbd2cSJim Jagielski 
IMPL_LINK(ScAcceptChgDlg,RejectAllHandle,SvxTPView *,EMPTYARG)1175*b1cdbd2cSJim Jagielski IMPL_LINK( ScAcceptChgDlg, RejectAllHandle, SvxTPView*, EMPTYARG )
1176*b1cdbd2cSJim Jagielski {
1177*b1cdbd2cSJim Jagielski 	SetPointer(Pointer(POINTER_WAIT));
1178*b1cdbd2cSJim Jagielski 	bIgnoreMsg=sal_True;
1179*b1cdbd2cSJim Jagielski 	ScChangeTrack* pChanges=pDoc->GetChangeTrack();
1180*b1cdbd2cSJim Jagielski 	if(pChanges!=NULL)
1181*b1cdbd2cSJim Jagielski 	{
1182*b1cdbd2cSJim Jagielski 		if(pTPFilter->IsDate()||pTPFilter->IsAuthor()||pTPFilter->IsRange()||pTPFilter->IsComment())
1183*b1cdbd2cSJim Jagielski 		{
1184*b1cdbd2cSJim Jagielski 			RejectFiltered();
1185*b1cdbd2cSJim Jagielski 		}
1186*b1cdbd2cSJim Jagielski 		else
1187*b1cdbd2cSJim Jagielski 		{
1188*b1cdbd2cSJim Jagielski 			pChanges->RejectAll();
1189*b1cdbd2cSJim Jagielski 		}
1190*b1cdbd2cSJim Jagielski 		pViewData->SetTabNo(0);
1191*b1cdbd2cSJim Jagielski 
1192*b1cdbd2cSJim Jagielski 		ScDocShell* pDocSh=pViewData->GetDocShell();
1193*b1cdbd2cSJim Jagielski 		pDocSh->PostPaintExtras();
1194*b1cdbd2cSJim Jagielski 		pDocSh->PostPaintGridAll();
1195*b1cdbd2cSJim Jagielski 		pDocSh->GetUndoManager()->Clear();
1196*b1cdbd2cSJim Jagielski 		pDocSh->SetDocumentModified();
1197*b1cdbd2cSJim Jagielski 		ClearView();
1198*b1cdbd2cSJim Jagielski 		UpdateView();
1199*b1cdbd2cSJim Jagielski 	}
1200*b1cdbd2cSJim Jagielski 	SetPointer(Pointer(POINTER_ARROW));
1201*b1cdbd2cSJim Jagielski 
1202*b1cdbd2cSJim Jagielski 	bIgnoreMsg=sal_False;
1203*b1cdbd2cSJim Jagielski 
1204*b1cdbd2cSJim Jagielski 	return 0;
1205*b1cdbd2cSJim Jagielski }
1206*b1cdbd2cSJim Jagielski 
IMPL_LINK(ScAcceptChgDlg,AcceptAllHandle,SvxTPView *,EMPTYARG)1207*b1cdbd2cSJim Jagielski IMPL_LINK( ScAcceptChgDlg, AcceptAllHandle, SvxTPView*, EMPTYARG )
1208*b1cdbd2cSJim Jagielski {
1209*b1cdbd2cSJim Jagielski 	SetPointer(Pointer(POINTER_WAIT));
1210*b1cdbd2cSJim Jagielski 
1211*b1cdbd2cSJim Jagielski 	bIgnoreMsg=sal_True;
1212*b1cdbd2cSJim Jagielski 	ScChangeTrack* pChanges=pDoc->GetChangeTrack();
1213*b1cdbd2cSJim Jagielski 	if(pChanges!=NULL)
1214*b1cdbd2cSJim Jagielski 	{
1215*b1cdbd2cSJim Jagielski 		if(pTPFilter->IsDate()||pTPFilter->IsAuthor()||pTPFilter->IsRange()||pTPFilter->IsComment())
1216*b1cdbd2cSJim Jagielski 		{
1217*b1cdbd2cSJim Jagielski 			AcceptFiltered();
1218*b1cdbd2cSJim Jagielski 		}
1219*b1cdbd2cSJim Jagielski 		else
1220*b1cdbd2cSJim Jagielski 		{
1221*b1cdbd2cSJim Jagielski 			pChanges->AcceptAll();
1222*b1cdbd2cSJim Jagielski 		}
1223*b1cdbd2cSJim Jagielski 		ScDocShell* pDocSh=pViewData->GetDocShell();
1224*b1cdbd2cSJim Jagielski 		pDocSh->PostPaintExtras();
1225*b1cdbd2cSJim Jagielski 		pDocSh->PostPaintGridAll();
1226*b1cdbd2cSJim Jagielski 		pDocSh->SetDocumentModified();
1227*b1cdbd2cSJim Jagielski 		ClearView();
1228*b1cdbd2cSJim Jagielski 		UpdateView();
1229*b1cdbd2cSJim Jagielski 	}
1230*b1cdbd2cSJim Jagielski 	bIgnoreMsg=sal_False;
1231*b1cdbd2cSJim Jagielski 	SetPointer(Pointer(POINTER_ARROW));
1232*b1cdbd2cSJim Jagielski 
1233*b1cdbd2cSJim Jagielski 	return 0;
1234*b1cdbd2cSJim Jagielski }
1235*b1cdbd2cSJim Jagielski 
IMPL_LINK(ScAcceptChgDlg,SelectHandle,SvxRedlinTable *,EMPTYARG)1236*b1cdbd2cSJim Jagielski IMPL_LINK( ScAcceptChgDlg, SelectHandle, SvxRedlinTable*, EMPTYARG )
1237*b1cdbd2cSJim Jagielski {
1238*b1cdbd2cSJim Jagielski 	if(!bNoSelection)
1239*b1cdbd2cSJim Jagielski 	{
1240*b1cdbd2cSJim Jagielski 		aSelectionTimer.Start();
1241*b1cdbd2cSJim Jagielski 	}
1242*b1cdbd2cSJim Jagielski 	bNoSelection=sal_False;
1243*b1cdbd2cSJim Jagielski 	return 0;
1244*b1cdbd2cSJim Jagielski }
1245*b1cdbd2cSJim Jagielski 
GetDependents(const ScChangeAction * pScChangeAction,ScChangeActionTable & aActionTable,SvLBoxEntry * pEntry)1246*b1cdbd2cSJim Jagielski void ScAcceptChgDlg::GetDependents(  const ScChangeAction* pScChangeAction,
1247*b1cdbd2cSJim Jagielski 									ScChangeActionTable& aActionTable,
1248*b1cdbd2cSJim Jagielski 									SvLBoxEntry* pEntry)
1249*b1cdbd2cSJim Jagielski {
1250*b1cdbd2cSJim Jagielski 	ScChangeTrack* pChanges=pDoc->GetChangeTrack();
1251*b1cdbd2cSJim Jagielski 
1252*b1cdbd2cSJim Jagielski 	SvLBoxEntry* pParent=pTheView->GetParent(pEntry);
1253*b1cdbd2cSJim Jagielski 	if(pParent!=NULL)
1254*b1cdbd2cSJim Jagielski 	{
1255*b1cdbd2cSJim Jagielski 		ScRedlinData *pParentData=(ScRedlinData *)(pParent->GetUserData());
1256*b1cdbd2cSJim Jagielski 		ScChangeAction* pParentAction=(ScChangeAction*) pParentData->pData;
1257*b1cdbd2cSJim Jagielski 		if(pParentAction!=pScChangeAction)
1258*b1cdbd2cSJim Jagielski 		{
1259*b1cdbd2cSJim Jagielski 			pChanges->GetDependents((ScChangeAction*) pScChangeAction,
1260*b1cdbd2cSJim Jagielski 						aActionTable,pScChangeAction->IsMasterDelete());
1261*b1cdbd2cSJim Jagielski 		}
1262*b1cdbd2cSJim Jagielski 		else
1263*b1cdbd2cSJim Jagielski 		{
1264*b1cdbd2cSJim Jagielski 			pChanges->GetDependents((ScChangeAction*) pScChangeAction,
1265*b1cdbd2cSJim Jagielski 						aActionTable);
1266*b1cdbd2cSJim Jagielski 		}
1267*b1cdbd2cSJim Jagielski 	}
1268*b1cdbd2cSJim Jagielski 	else
1269*b1cdbd2cSJim Jagielski 	{
1270*b1cdbd2cSJim Jagielski 		pChanges->GetDependents((ScChangeAction*) pScChangeAction,
1271*b1cdbd2cSJim Jagielski 					aActionTable,pScChangeAction->IsMasterDelete());
1272*b1cdbd2cSJim Jagielski 	}
1273*b1cdbd2cSJim Jagielski }
1274*b1cdbd2cSJim Jagielski 
InsertContentChilds(ScChangeActionTable * pActionTable,SvLBoxEntry * pParent)1275*b1cdbd2cSJim Jagielski sal_Bool ScAcceptChgDlg::InsertContentChilds(ScChangeActionTable* pActionTable,SvLBoxEntry* pParent)
1276*b1cdbd2cSJim Jagielski {
1277*b1cdbd2cSJim Jagielski 	sal_Bool bTheTestFlag=sal_True;
1278*b1cdbd2cSJim Jagielski 	ScRedlinData *pEntryData=(ScRedlinData *)(pParent->GetUserData());
1279*b1cdbd2cSJim Jagielski 	const ScChangeAction* pScChangeAction = (ScChangeAction*) pEntryData->pData;
1280*b1cdbd2cSJim Jagielski 	sal_Bool bParentInserted = sal_False;
1281*b1cdbd2cSJim Jagielski 	// If the parent is a MatrixOrigin then place it in the right order before
1282*b1cdbd2cSJim Jagielski 	// the MatrixReferences. Also if it is the first content change at this
1283*b1cdbd2cSJim Jagielski 	// position don't insert the first dependent MatrixReference as the special
1284*b1cdbd2cSJim Jagielski 	// content (original value) but insert the predecessor of the MatrixOrigin
1285*b1cdbd2cSJim Jagielski 	// itself instead.
1286*b1cdbd2cSJim Jagielski 	if ( pScChangeAction->GetType() == SC_CAT_CONTENT &&
1287*b1cdbd2cSJim Jagielski 			((const ScChangeActionContent*)pScChangeAction)->IsMatrixOrigin() )
1288*b1cdbd2cSJim Jagielski 	{
1289*b1cdbd2cSJim Jagielski 		pActionTable->Insert( pScChangeAction->GetActionNumber(),
1290*b1cdbd2cSJim Jagielski 			(ScChangeAction*) pScChangeAction );
1291*b1cdbd2cSJim Jagielski 		bParentInserted = sal_True;
1292*b1cdbd2cSJim Jagielski 	}
1293*b1cdbd2cSJim Jagielski 	SvLBoxEntry* pEntry=NULL;
1294*b1cdbd2cSJim Jagielski 
1295*b1cdbd2cSJim Jagielski 	const ScChangeActionContent* pCChild=(const ScChangeActionContent*)pActionTable->First();
1296*b1cdbd2cSJim Jagielski 	while(pCChild!=NULL)
1297*b1cdbd2cSJim Jagielski 	{
1298*b1cdbd2cSJim Jagielski 		if( pCChild->GetState()==SC_CAS_VIRGIN )
1299*b1cdbd2cSJim Jagielski 			break;
1300*b1cdbd2cSJim Jagielski 		pCChild=(const ScChangeActionContent*)pActionTable->Next();
1301*b1cdbd2cSJim Jagielski 	}
1302*b1cdbd2cSJim Jagielski 
1303*b1cdbd2cSJim Jagielski 	if(pCChild==NULL) return sal_True;
1304*b1cdbd2cSJim Jagielski 
1305*b1cdbd2cSJim Jagielski 	SvLBoxEntry* pOriginal=InsertChangeActionContent(pCChild,pParent,RD_SPECIAL_CONTENT);
1306*b1cdbd2cSJim Jagielski 	if(pOriginal!=NULL)
1307*b1cdbd2cSJim Jagielski 	{
1308*b1cdbd2cSJim Jagielski 		bTheTestFlag=sal_False;
1309*b1cdbd2cSJim Jagielski 		ScRedlinData *pParentData=(ScRedlinData *)(pOriginal->GetUserData());
1310*b1cdbd2cSJim Jagielski 		pParentData->pData=(void *)pScChangeAction;
1311*b1cdbd2cSJim Jagielski 		pParentData->nActionNo=pScChangeAction->GetActionNumber();
1312*b1cdbd2cSJim Jagielski 		pParentData->bIsAcceptable=pScChangeAction->IsRejectable();	// select old value
1313*b1cdbd2cSJim Jagielski 		pParentData->bIsRejectable=sal_False;
1314*b1cdbd2cSJim Jagielski 		pParentData->bDisabled=sal_False;
1315*b1cdbd2cSJim Jagielski 	}
1316*b1cdbd2cSJim Jagielski 	while(pCChild!=NULL)
1317*b1cdbd2cSJim Jagielski 	{
1318*b1cdbd2cSJim Jagielski 		if(pCChild->GetState()==SC_CAS_VIRGIN)
1319*b1cdbd2cSJim Jagielski 		{
1320*b1cdbd2cSJim Jagielski 			pEntry=InsertChangeActionContent(pCChild,pParent,RD_SPECIAL_NONE);
1321*b1cdbd2cSJim Jagielski 
1322*b1cdbd2cSJim Jagielski 			if(pEntry!=NULL)
1323*b1cdbd2cSJim Jagielski 				bTheTestFlag=sal_False;
1324*b1cdbd2cSJim Jagielski 		}
1325*b1cdbd2cSJim Jagielski 		pCChild=(const ScChangeActionContent*)pActionTable->Next();
1326*b1cdbd2cSJim Jagielski 	}
1327*b1cdbd2cSJim Jagielski 
1328*b1cdbd2cSJim Jagielski 	if ( !bParentInserted )
1329*b1cdbd2cSJim Jagielski 	{
1330*b1cdbd2cSJim Jagielski 		pEntry=InsertChangeActionContent((const ScChangeActionContent*)
1331*b1cdbd2cSJim Jagielski 								pScChangeAction,pParent,RD_SPECIAL_NONE);
1332*b1cdbd2cSJim Jagielski 
1333*b1cdbd2cSJim Jagielski 		if(pEntry!=NULL)
1334*b1cdbd2cSJim Jagielski 		{
1335*b1cdbd2cSJim Jagielski 			bTheTestFlag=sal_False;
1336*b1cdbd2cSJim Jagielski 			ScRedlinData *pParentData=(ScRedlinData *)(pEntry->GetUserData());
1337*b1cdbd2cSJim Jagielski 			pParentData->pData=(void *)pScChangeAction;
1338*b1cdbd2cSJim Jagielski 			pParentData->nActionNo=pScChangeAction->GetActionNumber();
1339*b1cdbd2cSJim Jagielski 			pParentData->bIsAcceptable=pScChangeAction->IsClickable();
1340*b1cdbd2cSJim Jagielski 			pParentData->bIsRejectable=sal_False;
1341*b1cdbd2cSJim Jagielski 			pParentData->bDisabled=sal_False;
1342*b1cdbd2cSJim Jagielski 		}
1343*b1cdbd2cSJim Jagielski 	}
1344*b1cdbd2cSJim Jagielski 
1345*b1cdbd2cSJim Jagielski 	return bTheTestFlag;
1346*b1cdbd2cSJim Jagielski 
1347*b1cdbd2cSJim Jagielski }
1348*b1cdbd2cSJim Jagielski 
InsertAcceptedORejected(SvLBoxEntry * pParent)1349*b1cdbd2cSJim Jagielski sal_Bool ScAcceptChgDlg::InsertAcceptedORejected(SvLBoxEntry* pParent)
1350*b1cdbd2cSJim Jagielski {
1351*b1cdbd2cSJim Jagielski 	ScChangeTrack* pChanges=pDoc->GetChangeTrack();
1352*b1cdbd2cSJim Jagielski 	sal_Bool bTheTestFlag=sal_True;
1353*b1cdbd2cSJim Jagielski 
1354*b1cdbd2cSJim Jagielski 	ScChangeActionState eState = SC_CAS_VIRGIN;
1355*b1cdbd2cSJim Jagielski 	String aString=pTheView->GetEntryText( pParent);
1356*b1cdbd2cSJim Jagielski 	String a2String=aString.Copy(0,aStrAllAccepted.Len());
1357*b1cdbd2cSJim Jagielski 	if(a2String==aStrAllAccepted)
1358*b1cdbd2cSJim Jagielski 	{
1359*b1cdbd2cSJim Jagielski 		eState=SC_CAS_ACCEPTED;
1360*b1cdbd2cSJim Jagielski 	}
1361*b1cdbd2cSJim Jagielski 	else
1362*b1cdbd2cSJim Jagielski 	{
1363*b1cdbd2cSJim Jagielski 		a2String=aString.Copy(0,aStrAllRejected.Len());
1364*b1cdbd2cSJim Jagielski 		if(a2String==aStrAllRejected)
1365*b1cdbd2cSJim Jagielski 		{
1366*b1cdbd2cSJim Jagielski 			eState=SC_CAS_REJECTED;
1367*b1cdbd2cSJim Jagielski 		}
1368*b1cdbd2cSJim Jagielski 	}
1369*b1cdbd2cSJim Jagielski 
1370*b1cdbd2cSJim Jagielski 	ScChangeAction* pScChangeAction=pChanges->GetFirst();
1371*b1cdbd2cSJim Jagielski 	while(pScChangeAction!=NULL)
1372*b1cdbd2cSJim Jagielski 	{
1373*b1cdbd2cSJim Jagielski 		if(pScChangeAction->GetState()==eState &&
1374*b1cdbd2cSJim Jagielski 			InsertFilteredAction(pScChangeAction,eState,pParent)!=NULL)
1375*b1cdbd2cSJim Jagielski 			bTheTestFlag=sal_False;
1376*b1cdbd2cSJim Jagielski 		pScChangeAction=pScChangeAction->GetNext();
1377*b1cdbd2cSJim Jagielski 	}
1378*b1cdbd2cSJim Jagielski 	return bTheTestFlag;
1379*b1cdbd2cSJim Jagielski }
1380*b1cdbd2cSJim Jagielski 
InsertChilds(ScChangeActionTable * pActionTable,SvLBoxEntry * pParent)1381*b1cdbd2cSJim Jagielski sal_Bool ScAcceptChgDlg::InsertChilds(ScChangeActionTable* pActionTable,SvLBoxEntry* pParent)
1382*b1cdbd2cSJim Jagielski {
1383*b1cdbd2cSJim Jagielski 	ScChangeTrack* pChanges=pDoc->GetChangeTrack();
1384*b1cdbd2cSJim Jagielski 	sal_Bool bTheTestFlag=sal_True;
1385*b1cdbd2cSJim Jagielski 	SvLBoxEntry* pEntry=NULL;
1386*b1cdbd2cSJim Jagielski 	const ScChangeAction* pChild=(const ScChangeAction*)pActionTable->First();
1387*b1cdbd2cSJim Jagielski 	while(pChild!=NULL)
1388*b1cdbd2cSJim Jagielski 	{
1389*b1cdbd2cSJim Jagielski 		pEntry=InsertChangeAction(pChild,SC_CAS_VIRGIN,pParent,sal_False,sal_True);
1390*b1cdbd2cSJim Jagielski 
1391*b1cdbd2cSJim Jagielski 		if(pEntry!=NULL)
1392*b1cdbd2cSJim Jagielski 		{
1393*b1cdbd2cSJim Jagielski 			bTheTestFlag=sal_False;
1394*b1cdbd2cSJim Jagielski 
1395*b1cdbd2cSJim Jagielski 			ScRedlinData *pEntryData=(ScRedlinData *)(pEntry->GetUserData());
1396*b1cdbd2cSJim Jagielski 			pEntryData->bIsRejectable=sal_False;
1397*b1cdbd2cSJim Jagielski 			pEntryData->bIsAcceptable=sal_False;
1398*b1cdbd2cSJim Jagielski 			pEntryData->bDisabled=sal_True;
1399*b1cdbd2cSJim Jagielski 
1400*b1cdbd2cSJim Jagielski 			if(pChild->IsDialogParent())
1401*b1cdbd2cSJim Jagielski 			{
1402*b1cdbd2cSJim Jagielski 
1403*b1cdbd2cSJim Jagielski 				//pEntry->EnableChildsOnDemand(sal_True);
1404*b1cdbd2cSJim Jagielski 				Expand(pChanges,pChild,pEntry);
1405*b1cdbd2cSJim Jagielski 			}
1406*b1cdbd2cSJim Jagielski 		}
1407*b1cdbd2cSJim Jagielski 		pChild=pActionTable->Next();
1408*b1cdbd2cSJim Jagielski 	}
1409*b1cdbd2cSJim Jagielski 	return bTheTestFlag;
1410*b1cdbd2cSJim Jagielski }
InsertDeletedChilds(const ScChangeAction * pScChangeAction,ScChangeActionTable * pActionTable,SvLBoxEntry * pParent)1411*b1cdbd2cSJim Jagielski sal_Bool ScAcceptChgDlg::InsertDeletedChilds(const ScChangeAction* pScChangeAction,
1412*b1cdbd2cSJim Jagielski 										 ScChangeActionTable* pActionTable,SvLBoxEntry* pParent)
1413*b1cdbd2cSJim Jagielski {
1414*b1cdbd2cSJim Jagielski 	ScChangeTrack* pChanges=pDoc->GetChangeTrack();
1415*b1cdbd2cSJim Jagielski 	sal_Bool bTheTestFlag=sal_True;
1416*b1cdbd2cSJim Jagielski 	SvLBoxEntry* pEntry=NULL;
1417*b1cdbd2cSJim Jagielski 	ScChangeActionTable aDelActionTable;
1418*b1cdbd2cSJim Jagielski 	const ScChangeAction* pChild=(const ScChangeAction*)pActionTable->First();
1419*b1cdbd2cSJim Jagielski 
1420*b1cdbd2cSJim Jagielski 	while(pChild!=NULL)
1421*b1cdbd2cSJim Jagielski 	{
1422*b1cdbd2cSJim Jagielski 
1423*b1cdbd2cSJim Jagielski 		if(pScChangeAction!=pChild)
1424*b1cdbd2cSJim Jagielski 			pEntry=InsertChangeAction(pChild,SC_CAS_VIRGIN,pParent,sal_False,sal_True);
1425*b1cdbd2cSJim Jagielski 		else
1426*b1cdbd2cSJim Jagielski 			pEntry=InsertChangeAction(pChild,SC_CAS_VIRGIN,pParent,sal_True,sal_True);
1427*b1cdbd2cSJim Jagielski 
1428*b1cdbd2cSJim Jagielski 		if(pEntry!=NULL)
1429*b1cdbd2cSJim Jagielski 		{
1430*b1cdbd2cSJim Jagielski 			ScRedlinData *pEntryData=(ScRedlinData *)(pEntry->GetUserData());
1431*b1cdbd2cSJim Jagielski 			pEntryData->bIsRejectable=sal_False;
1432*b1cdbd2cSJim Jagielski 			pEntryData->bIsAcceptable=sal_False;
1433*b1cdbd2cSJim Jagielski 			pEntryData->bDisabled=sal_True;
1434*b1cdbd2cSJim Jagielski 
1435*b1cdbd2cSJim Jagielski 			bTheTestFlag=sal_False;
1436*b1cdbd2cSJim Jagielski 			if ( pChild->IsDialogParent() )
1437*b1cdbd2cSJim Jagielski 			{
1438*b1cdbd2cSJim Jagielski 				Expand(pChanges,pChild,pEntry);
1439*b1cdbd2cSJim Jagielski 				/*
1440*b1cdbd2cSJim Jagielski 				pChanges->GetDependents((ScChangeAction*) pChild,aDelActionTable);
1441*b1cdbd2cSJim Jagielski 				if(aDelActionTable.First()!=NULL)
1442*b1cdbd2cSJim Jagielski 				{
1443*b1cdbd2cSJim Jagielski 					pEntry->EnableChildsOnDemand(sal_True);
1444*b1cdbd2cSJim Jagielski 				}
1445*b1cdbd2cSJim Jagielski 				aDelActionTable.Clear();
1446*b1cdbd2cSJim Jagielski 				*/
1447*b1cdbd2cSJim Jagielski 			}
1448*b1cdbd2cSJim Jagielski 		}
1449*b1cdbd2cSJim Jagielski 		pChild=pActionTable->Next();
1450*b1cdbd2cSJim Jagielski 	}
1451*b1cdbd2cSJim Jagielski 	return bTheTestFlag;
1452*b1cdbd2cSJim Jagielski }
1453*b1cdbd2cSJim Jagielski 
Expand(ScChangeTrack * pChanges,const ScChangeAction * pScChangeAction,SvLBoxEntry * pEntry,sal_Bool bFilter)1454*b1cdbd2cSJim Jagielski sal_Bool ScAcceptChgDlg::Expand(ScChangeTrack* pChanges,const ScChangeAction* pScChangeAction,
1455*b1cdbd2cSJim Jagielski 							SvLBoxEntry* pEntry,sal_Bool bFilter)
1456*b1cdbd2cSJim Jagielski {
1457*b1cdbd2cSJim Jagielski 	sal_Bool bTheTestFlag=sal_True;
1458*b1cdbd2cSJim Jagielski 
1459*b1cdbd2cSJim Jagielski 	if(pChanges!=NULL &&pEntry!=NULL &&pScChangeAction!=NULL)
1460*b1cdbd2cSJim Jagielski 	{
1461*b1cdbd2cSJim Jagielski 		ScChangeActionTable aActionTable;
1462*b1cdbd2cSJim Jagielski 
1463*b1cdbd2cSJim Jagielski 		GetDependents( pScChangeAction,aActionTable,pEntry);
1464*b1cdbd2cSJim Jagielski 
1465*b1cdbd2cSJim Jagielski 		switch(pScChangeAction->GetType())
1466*b1cdbd2cSJim Jagielski 		{
1467*b1cdbd2cSJim Jagielski 			case SC_CAT_CONTENT:
1468*b1cdbd2cSJim Jagielski 			{
1469*b1cdbd2cSJim Jagielski 				InsertContentChilds(&aActionTable,pEntry);
1470*b1cdbd2cSJim Jagielski 				bTheTestFlag=!bHasFilterEntry;
1471*b1cdbd2cSJim Jagielski 				break;
1472*b1cdbd2cSJim Jagielski 			}
1473*b1cdbd2cSJim Jagielski 			case SC_CAT_DELETE_COLS:
1474*b1cdbd2cSJim Jagielski 			case SC_CAT_DELETE_ROWS:
1475*b1cdbd2cSJim Jagielski 			case SC_CAT_DELETE_TABS:
1476*b1cdbd2cSJim Jagielski 			{
1477*b1cdbd2cSJim Jagielski 				InsertDeletedChilds(pScChangeAction,&aActionTable,pEntry);
1478*b1cdbd2cSJim Jagielski 				bTheTestFlag=!bHasFilterEntry;
1479*b1cdbd2cSJim Jagielski 				break;
1480*b1cdbd2cSJim Jagielski 			}
1481*b1cdbd2cSJim Jagielski 			default:
1482*b1cdbd2cSJim Jagielski 			{
1483*b1cdbd2cSJim Jagielski 				if(!bFilter)
1484*b1cdbd2cSJim Jagielski 					bTheTestFlag=InsertChilds(&aActionTable,pEntry);
1485*b1cdbd2cSJim Jagielski 				break;
1486*b1cdbd2cSJim Jagielski 			}
1487*b1cdbd2cSJim Jagielski 		}
1488*b1cdbd2cSJim Jagielski 		aActionTable.Clear();
1489*b1cdbd2cSJim Jagielski 	}
1490*b1cdbd2cSJim Jagielski 	return bTheTestFlag;
1491*b1cdbd2cSJim Jagielski }
1492*b1cdbd2cSJim Jagielski 
IMPL_LINK(ScAcceptChgDlg,ExpandingHandle,SvxRedlinTable *,pTable)1493*b1cdbd2cSJim Jagielski IMPL_LINK( ScAcceptChgDlg, ExpandingHandle, SvxRedlinTable*, pTable )
1494*b1cdbd2cSJim Jagielski {
1495*b1cdbd2cSJim Jagielski 	ScChangeTrack* pChanges=pDoc->GetChangeTrack();
1496*b1cdbd2cSJim Jagielski 	ScChangeAction* pScChangeAction=NULL;
1497*b1cdbd2cSJim Jagielski 	SetPointer(Pointer(POINTER_WAIT));
1498*b1cdbd2cSJim Jagielski 	if(pTable!=NULL && pChanges!=NULL)
1499*b1cdbd2cSJim Jagielski 	{
1500*b1cdbd2cSJim Jagielski 		ScChangeActionTable aActionTable;
1501*b1cdbd2cSJim Jagielski 		SvLBoxEntry* pEntry=pTheView->GetHdlEntry();
1502*b1cdbd2cSJim Jagielski 		if(pEntry!=NULL)
1503*b1cdbd2cSJim Jagielski 		{
1504*b1cdbd2cSJim Jagielski 			ScRedlinData *pEntryData=(ScRedlinData *)(pEntry->GetUserData());
1505*b1cdbd2cSJim Jagielski 			if(pEntryData!=NULL)
1506*b1cdbd2cSJim Jagielski 			{
1507*b1cdbd2cSJim Jagielski 				pScChangeAction=(ScChangeAction*) pEntryData->pData;
1508*b1cdbd2cSJim Jagielski 			}
1509*b1cdbd2cSJim Jagielski 
1510*b1cdbd2cSJim Jagielski 			if(pEntry->HasChildsOnDemand())
1511*b1cdbd2cSJim Jagielski 			{
1512*b1cdbd2cSJim Jagielski 				sal_Bool bTheTestFlag=sal_True;
1513*b1cdbd2cSJim Jagielski 				pEntry->EnableChildsOnDemand(sal_False);
1514*b1cdbd2cSJim Jagielski                 pTheView->RemoveEntry(pTheView->FirstChild(pEntry));
1515*b1cdbd2cSJim Jagielski 
1516*b1cdbd2cSJim Jagielski 				if(pEntryData!=NULL)
1517*b1cdbd2cSJim Jagielski 				{
1518*b1cdbd2cSJim Jagielski 					pScChangeAction=(ScChangeAction*) pEntryData->pData;
1519*b1cdbd2cSJim Jagielski 
1520*b1cdbd2cSJim Jagielski 					GetDependents( pScChangeAction,aActionTable,pEntry);
1521*b1cdbd2cSJim Jagielski 
1522*b1cdbd2cSJim Jagielski 					switch(pScChangeAction->GetType())
1523*b1cdbd2cSJim Jagielski 					{
1524*b1cdbd2cSJim Jagielski 						case SC_CAT_CONTENT:
1525*b1cdbd2cSJim Jagielski 						{
1526*b1cdbd2cSJim Jagielski 							bTheTestFlag=InsertContentChilds(&aActionTable,pEntry);
1527*b1cdbd2cSJim Jagielski 							break;
1528*b1cdbd2cSJim Jagielski 						}
1529*b1cdbd2cSJim Jagielski 						case SC_CAT_DELETE_COLS:
1530*b1cdbd2cSJim Jagielski 						case SC_CAT_DELETE_ROWS:
1531*b1cdbd2cSJim Jagielski 						case SC_CAT_DELETE_TABS:
1532*b1cdbd2cSJim Jagielski 						{
1533*b1cdbd2cSJim Jagielski 							bTheTestFlag=InsertDeletedChilds(pScChangeAction,&aActionTable,pEntry);
1534*b1cdbd2cSJim Jagielski 							break;
1535*b1cdbd2cSJim Jagielski 						}
1536*b1cdbd2cSJim Jagielski 						default:
1537*b1cdbd2cSJim Jagielski 						{
1538*b1cdbd2cSJim Jagielski 							bTheTestFlag=InsertChilds(&aActionTable,pEntry);
1539*b1cdbd2cSJim Jagielski 							break;
1540*b1cdbd2cSJim Jagielski 						}
1541*b1cdbd2cSJim Jagielski 					}
1542*b1cdbd2cSJim Jagielski 					aActionTable.Clear();
1543*b1cdbd2cSJim Jagielski 
1544*b1cdbd2cSJim Jagielski 				}
1545*b1cdbd2cSJim Jagielski 				else
1546*b1cdbd2cSJim Jagielski 				{
1547*b1cdbd2cSJim Jagielski 					bTheTestFlag=InsertAcceptedORejected(pEntry);
1548*b1cdbd2cSJim Jagielski 				}
1549*b1cdbd2cSJim Jagielski 				if(bTheTestFlag) pTheView->InsertEntry(aStrNoEntry,NULL,Color(COL_GRAY),pEntry);
1550*b1cdbd2cSJim Jagielski 			}
1551*b1cdbd2cSJim Jagielski 
1552*b1cdbd2cSJim Jagielski 		}
1553*b1cdbd2cSJim Jagielski 	}
1554*b1cdbd2cSJim Jagielski 	SetPointer(Pointer(POINTER_ARROW));
1555*b1cdbd2cSJim Jagielski 	return (sal_uLong) sal_True;
1556*b1cdbd2cSJim Jagielski }
1557*b1cdbd2cSJim Jagielski 
1558*b1cdbd2cSJim Jagielski 
AppendChanges(ScChangeTrack * pChanges,sal_uLong nStartAction,sal_uLong nEndAction,sal_uLong)1559*b1cdbd2cSJim Jagielski void ScAcceptChgDlg::AppendChanges(ScChangeTrack* pChanges,sal_uLong nStartAction,
1560*b1cdbd2cSJim Jagielski                                    sal_uLong nEndAction, sal_uLong /* nPos */)
1561*b1cdbd2cSJim Jagielski {
1562*b1cdbd2cSJim Jagielski 	if(pChanges!=NULL)
1563*b1cdbd2cSJim Jagielski 	{
1564*b1cdbd2cSJim Jagielski 		DateTime aDateTime;
1565*b1cdbd2cSJim Jagielski 		SvLBoxEntry* pParent=NULL;
1566*b1cdbd2cSJim Jagielski 		const ScChangeAction* pScChangeAction=NULL;
1567*b1cdbd2cSJim Jagielski 		bAcceptEnableFlag=sal_True;
1568*b1cdbd2cSJim Jagielski 		bRejectEnableFlag=sal_True;
1569*b1cdbd2cSJim Jagielski 		SetPointer(Pointer(POINTER_WAIT));
1570*b1cdbd2cSJim Jagielski 		pTheView->SetUpdateMode(sal_False);
1571*b1cdbd2cSJim Jagielski 
1572*b1cdbd2cSJim Jagielski 		ScChangeActionTable ActionTable;
1573*b1cdbd2cSJim Jagielski 		sal_Bool bTheFlag=sal_False;
1574*b1cdbd2cSJim Jagielski 
1575*b1cdbd2cSJim Jagielski 		sal_Bool bFilterFlag=pTPFilter->IsDate()||pTPFilter->IsRange()||
1576*b1cdbd2cSJim Jagielski 					 pTPFilter->IsAuthor()||pTPFilter->IsComment();
1577*b1cdbd2cSJim Jagielski 
1578*b1cdbd2cSJim Jagielski 		bUseColor=bFilterFlag;
1579*b1cdbd2cSJim Jagielski 
1580*b1cdbd2cSJim Jagielski 		for(sal_uLong i=nStartAction;i<=nEndAction;i++)
1581*b1cdbd2cSJim Jagielski 		{
1582*b1cdbd2cSJim Jagielski 			pScChangeAction=pChanges->GetAction(i);
1583*b1cdbd2cSJim Jagielski 			if(pScChangeAction==NULL) continue;
1584*b1cdbd2cSJim Jagielski 
1585*b1cdbd2cSJim Jagielski 
1586*b1cdbd2cSJim Jagielski 			switch(pScChangeAction->GetState())
1587*b1cdbd2cSJim Jagielski 			{
1588*b1cdbd2cSJim Jagielski 				case SC_CAS_VIRGIN:
1589*b1cdbd2cSJim Jagielski 
1590*b1cdbd2cSJim Jagielski 					if(pScChangeAction->IsDialogRoot())
1591*b1cdbd2cSJim Jagielski 					{
1592*b1cdbd2cSJim Jagielski 						if(pScChangeAction->IsDialogParent())
1593*b1cdbd2cSJim Jagielski 							pParent=InsertChangeAction(pScChangeAction,SC_CAS_VIRGIN);
1594*b1cdbd2cSJim Jagielski 						else
1595*b1cdbd2cSJim Jagielski 							pParent=InsertFilteredAction(pScChangeAction,SC_CAS_VIRGIN);
1596*b1cdbd2cSJim Jagielski 					}
1597*b1cdbd2cSJim Jagielski 					else
1598*b1cdbd2cSJim Jagielski 						pParent=NULL;
1599*b1cdbd2cSJim Jagielski 
1600*b1cdbd2cSJim Jagielski 					bTheFlag=sal_True;
1601*b1cdbd2cSJim Jagielski 					break;
1602*b1cdbd2cSJim Jagielski 
1603*b1cdbd2cSJim Jagielski 				case SC_CAS_ACCEPTED:
1604*b1cdbd2cSJim Jagielski 					pParent=NULL;
1605*b1cdbd2cSJim Jagielski 					nAcceptCount++;
1606*b1cdbd2cSJim Jagielski 					break;
1607*b1cdbd2cSJim Jagielski 
1608*b1cdbd2cSJim Jagielski 				case SC_CAS_REJECTED:
1609*b1cdbd2cSJim Jagielski 					pParent=NULL;
1610*b1cdbd2cSJim Jagielski 					nRejectCount++;
1611*b1cdbd2cSJim Jagielski 					break;
1612*b1cdbd2cSJim Jagielski 			}
1613*b1cdbd2cSJim Jagielski 
1614*b1cdbd2cSJim Jagielski 			if(pParent!=NULL && pScChangeAction->IsDialogParent())
1615*b1cdbd2cSJim Jagielski 			{
1616*b1cdbd2cSJim Jagielski 				if(!bFilterFlag)
1617*b1cdbd2cSJim Jagielski 				{
1618*b1cdbd2cSJim Jagielski 					pParent->EnableChildsOnDemand(sal_True);
1619*b1cdbd2cSJim Jagielski 				}
1620*b1cdbd2cSJim Jagielski 				else
1621*b1cdbd2cSJim Jagielski 				{
1622*b1cdbd2cSJim Jagielski 					sal_Bool bTestFlag=bHasFilterEntry;
1623*b1cdbd2cSJim Jagielski 					bHasFilterEntry=sal_False;
1624*b1cdbd2cSJim Jagielski 					if(Expand(pChanges,pScChangeAction,pParent,!bTestFlag)&&!bTestFlag)
1625*b1cdbd2cSJim Jagielski                         pTheView->RemoveEntry(pParent);
1626*b1cdbd2cSJim Jagielski 				}
1627*b1cdbd2cSJim Jagielski 			}
1628*b1cdbd2cSJim Jagielski 
1629*b1cdbd2cSJim Jagielski 			pScChangeAction=pScChangeAction->GetNext();
1630*b1cdbd2cSJim Jagielski 		}
1631*b1cdbd2cSJim Jagielski 
1632*b1cdbd2cSJim Jagielski         if( bTheFlag && (!pDoc->IsDocEditable() || pChanges->IsProtected()) )
1633*b1cdbd2cSJim Jagielski 			bTheFlag=sal_False;
1634*b1cdbd2cSJim Jagielski 
1635*b1cdbd2cSJim Jagielski 		pTPView->EnableAccept(bTheFlag);
1636*b1cdbd2cSJim Jagielski 		pTPView->EnableAcceptAll(bTheFlag);
1637*b1cdbd2cSJim Jagielski 		pTPView->EnableReject(bTheFlag);
1638*b1cdbd2cSJim Jagielski 		pTPView->EnableRejectAll(bTheFlag);
1639*b1cdbd2cSJim Jagielski 
1640*b1cdbd2cSJim Jagielski 		pTheView->SetUpdateMode(sal_True);
1641*b1cdbd2cSJim Jagielski 		SetPointer(Pointer(POINTER_ARROW));
1642*b1cdbd2cSJim Jagielski 	}
1643*b1cdbd2cSJim Jagielski }
1644*b1cdbd2cSJim Jagielski 
RemoveEntrys(sal_uLong nStartAction,sal_uLong nEndAction)1645*b1cdbd2cSJim Jagielski void ScAcceptChgDlg::RemoveEntrys(sal_uLong nStartAction,sal_uLong nEndAction)
1646*b1cdbd2cSJim Jagielski {
1647*b1cdbd2cSJim Jagielski 
1648*b1cdbd2cSJim Jagielski 	pTheView->SetUpdateMode(sal_False);
1649*b1cdbd2cSJim Jagielski 
1650*b1cdbd2cSJim Jagielski 	SvLBoxEntry* pEntry=pTheView->GetCurEntry();
1651*b1cdbd2cSJim Jagielski 
1652*b1cdbd2cSJim Jagielski 	ScRedlinData *pEntryData=NULL;
1653*b1cdbd2cSJim Jagielski 
1654*b1cdbd2cSJim Jagielski 	if(pEntry!=NULL)
1655*b1cdbd2cSJim Jagielski 		pEntryData=(ScRedlinData *)(pEntry->GetUserData());
1656*b1cdbd2cSJim Jagielski 
1657*b1cdbd2cSJim Jagielski 	sal_uLong nAction=0;
1658*b1cdbd2cSJim Jagielski 	if(pEntryData!=NULL)
1659*b1cdbd2cSJim Jagielski 	{
1660*b1cdbd2cSJim Jagielski 		nAction=pEntryData->nActionNo;
1661*b1cdbd2cSJim Jagielski 	}
1662*b1cdbd2cSJim Jagielski 
1663*b1cdbd2cSJim Jagielski 	if(nAction>=nStartAction && nAction<=nEndAction)
1664*b1cdbd2cSJim Jagielski 	{
1665*b1cdbd2cSJim Jagielski 		pTheView->SetCurEntry(pTheView->GetModel()->GetEntry(0));
1666*b1cdbd2cSJim Jagielski 	}
1667*b1cdbd2cSJim Jagielski 
1668*b1cdbd2cSJim Jagielski 	sal_Bool bRemove=sal_False;
1669*b1cdbd2cSJim Jagielski 
1670*b1cdbd2cSJim Jagielski 	// MUST do it backwards, don't delete parents before children and GPF
1671*b1cdbd2cSJim Jagielski 	pEntry=pTheView->Last();
1672*b1cdbd2cSJim Jagielski 	while(pEntry!=NULL)
1673*b1cdbd2cSJim Jagielski 	{
1674*b1cdbd2cSJim Jagielski 		bRemove=sal_False;
1675*b1cdbd2cSJim Jagielski 		pEntryData=(ScRedlinData *)(pEntry->GetUserData());
1676*b1cdbd2cSJim Jagielski 		if(pEntryData!=NULL)
1677*b1cdbd2cSJim Jagielski 		{
1678*b1cdbd2cSJim Jagielski 			nAction=pEntryData->nActionNo;
1679*b1cdbd2cSJim Jagielski 
1680*b1cdbd2cSJim Jagielski 			if(nStartAction<=nAction && nAction<=nEndAction) bRemove=sal_True;
1681*b1cdbd2cSJim Jagielski 
1682*b1cdbd2cSJim Jagielski 
1683*b1cdbd2cSJim Jagielski 		}
1684*b1cdbd2cSJim Jagielski 		SvLBoxEntry* pPrevEntry = pTheView->Prev(pEntry);
1685*b1cdbd2cSJim Jagielski 
1686*b1cdbd2cSJim Jagielski 		if(bRemove)
1687*b1cdbd2cSJim Jagielski 		{
1688*b1cdbd2cSJim Jagielski 			//delete pEntryData;
1689*b1cdbd2cSJim Jagielski             pTheView->RemoveEntry(pEntry);
1690*b1cdbd2cSJim Jagielski 		}
1691*b1cdbd2cSJim Jagielski 		pEntry=pPrevEntry;
1692*b1cdbd2cSJim Jagielski 	}
1693*b1cdbd2cSJim Jagielski 	pTheView->SetUpdateMode(sal_True);
1694*b1cdbd2cSJim Jagielski 
1695*b1cdbd2cSJim Jagielski }
1696*b1cdbd2cSJim Jagielski 
UpdateEntrys(ScChangeTrack * pChgTrack,sal_uLong nStartAction,sal_uLong nEndAction)1697*b1cdbd2cSJim Jagielski void ScAcceptChgDlg::UpdateEntrys(ScChangeTrack* pChgTrack, sal_uLong nStartAction,sal_uLong nEndAction)
1698*b1cdbd2cSJim Jagielski {
1699*b1cdbd2cSJim Jagielski 	pTheView->SetUpdateMode(sal_False);
1700*b1cdbd2cSJim Jagielski 
1701*b1cdbd2cSJim Jagielski 	sal_uLong nPos=LIST_APPEND;
1702*b1cdbd2cSJim Jagielski 
1703*b1cdbd2cSJim Jagielski 	sal_Bool bRemove=sal_False;
1704*b1cdbd2cSJim Jagielski 
1705*b1cdbd2cSJim Jagielski 	SvLBoxEntry* pEntry=pTheView->First();
1706*b1cdbd2cSJim Jagielski 	SvLBoxEntry* pNextEntry = (pEntry ? pTheView->NextSibling(pEntry) : NULL);
1707*b1cdbd2cSJim Jagielski 	SvLBoxEntry* pLastEntry=NULL;
1708*b1cdbd2cSJim Jagielski 	while(pEntry!=NULL)
1709*b1cdbd2cSJim Jagielski 	{
1710*b1cdbd2cSJim Jagielski 		bRemove=sal_False;
1711*b1cdbd2cSJim Jagielski 		ScRedlinData *pEntryData=(ScRedlinData *)(pEntry->GetUserData());
1712*b1cdbd2cSJim Jagielski 		if(pEntryData!=NULL)
1713*b1cdbd2cSJim Jagielski 		{
1714*b1cdbd2cSJim Jagielski 			ScChangeAction* pScChangeAction=
1715*b1cdbd2cSJim Jagielski 					(ScChangeAction*) pEntryData->pData;
1716*b1cdbd2cSJim Jagielski 
1717*b1cdbd2cSJim Jagielski 			sal_uLong nAction=pScChangeAction->GetActionNumber();
1718*b1cdbd2cSJim Jagielski 
1719*b1cdbd2cSJim Jagielski 			if(nStartAction<=nAction && nAction<=nEndAction) bRemove=sal_True;
1720*b1cdbd2cSJim Jagielski 		}
1721*b1cdbd2cSJim Jagielski 
1722*b1cdbd2cSJim Jagielski 		if(bRemove)
1723*b1cdbd2cSJim Jagielski 		{
1724*b1cdbd2cSJim Jagielski 			nPos=pEntry->GetChildListPos();
1725*b1cdbd2cSJim Jagielski             pTheView->RemoveEntry(pEntry);
1726*b1cdbd2cSJim Jagielski 
1727*b1cdbd2cSJim Jagielski 			if(pLastEntry==NULL) pLastEntry=pTheView->First();
1728*b1cdbd2cSJim Jagielski 			if(pLastEntry!=NULL)
1729*b1cdbd2cSJim Jagielski 			{
1730*b1cdbd2cSJim Jagielski 				pNextEntry=pTheView->Next(pLastEntry);
1731*b1cdbd2cSJim Jagielski 
1732*b1cdbd2cSJim Jagielski 				if(pNextEntry==NULL)
1733*b1cdbd2cSJim Jagielski 				{
1734*b1cdbd2cSJim Jagielski 					pNextEntry=pLastEntry;
1735*b1cdbd2cSJim Jagielski 					pLastEntry=NULL;
1736*b1cdbd2cSJim Jagielski 				}
1737*b1cdbd2cSJim Jagielski 			}
1738*b1cdbd2cSJim Jagielski 			else
1739*b1cdbd2cSJim Jagielski 				pNextEntry=NULL;
1740*b1cdbd2cSJim Jagielski 
1741*b1cdbd2cSJim Jagielski 		}
1742*b1cdbd2cSJim Jagielski 		else
1743*b1cdbd2cSJim Jagielski 		{
1744*b1cdbd2cSJim Jagielski 			pLastEntry = pEntry;
1745*b1cdbd2cSJim Jagielski 			pNextEntry = pTheView->Next(pEntry);
1746*b1cdbd2cSJim Jagielski 		}
1747*b1cdbd2cSJim Jagielski 		pEntry=pNextEntry;
1748*b1cdbd2cSJim Jagielski 	}
1749*b1cdbd2cSJim Jagielski 
1750*b1cdbd2cSJim Jagielski 	if(nStartAction==nEndAction)
1751*b1cdbd2cSJim Jagielski 		AppendChanges(pChgTrack,nStartAction,nEndAction,nPos);
1752*b1cdbd2cSJim Jagielski 	else
1753*b1cdbd2cSJim Jagielski 		AppendChanges(pChgTrack,nStartAction,nEndAction);
1754*b1cdbd2cSJim Jagielski 
1755*b1cdbd2cSJim Jagielski 	pTheView->SetUpdateMode(sal_True);
1756*b1cdbd2cSJim Jagielski 
1757*b1cdbd2cSJim Jagielski }
1758*b1cdbd2cSJim Jagielski 
IMPL_LINK(ScAcceptChgDlg,ChgTrackModHdl,ScChangeTrack *,pChgTrack)1759*b1cdbd2cSJim Jagielski IMPL_LINK( ScAcceptChgDlg, ChgTrackModHdl, ScChangeTrack*, pChgTrack)
1760*b1cdbd2cSJim Jagielski {
1761*b1cdbd2cSJim Jagielski //	if(bScAcceptChgDlgIsDead) return 0;
1762*b1cdbd2cSJim Jagielski 
1763*b1cdbd2cSJim Jagielski 	ScChangeTrackMsgQueue& aMsgQueue= pChgTrack->GetMsgQueue();
1764*b1cdbd2cSJim Jagielski 
1765*b1cdbd2cSJim Jagielski 	ScChangeTrackMsgInfo* pTrackInfo=aMsgQueue.Get();
1766*b1cdbd2cSJim Jagielski 	sal_uLong	nStartAction;
1767*b1cdbd2cSJim Jagielski 	sal_uLong	nEndAction;
1768*b1cdbd2cSJim Jagielski 
1769*b1cdbd2cSJim Jagielski 	while(pTrackInfo!=NULL)
1770*b1cdbd2cSJim Jagielski 	{
1771*b1cdbd2cSJim Jagielski 		nStartAction=pTrackInfo->nStartAction;
1772*b1cdbd2cSJim Jagielski 		nEndAction=pTrackInfo->nEndAction;
1773*b1cdbd2cSJim Jagielski 
1774*b1cdbd2cSJim Jagielski 		if(!bIgnoreMsg)
1775*b1cdbd2cSJim Jagielski 		{
1776*b1cdbd2cSJim Jagielski 			bNoSelection=sal_True;
1777*b1cdbd2cSJim Jagielski 
1778*b1cdbd2cSJim Jagielski 			switch(pTrackInfo->eMsgType)
1779*b1cdbd2cSJim Jagielski 			{
1780*b1cdbd2cSJim Jagielski 				case SC_CTM_APPEND: AppendChanges(pChgTrack,nStartAction,nEndAction);
1781*b1cdbd2cSJim Jagielski 									break;
1782*b1cdbd2cSJim Jagielski 				case SC_CTM_REMOVE: RemoveEntrys(nStartAction,nEndAction);
1783*b1cdbd2cSJim Jagielski 									break;
1784*b1cdbd2cSJim Jagielski 				case SC_CTM_PARENT:
1785*b1cdbd2cSJim Jagielski 				case SC_CTM_CHANGE: //bNeedsUpdate=sal_True;
1786*b1cdbd2cSJim Jagielski 									UpdateEntrys(pChgTrack,nStartAction,nEndAction);
1787*b1cdbd2cSJim Jagielski 									break;
1788*b1cdbd2cSJim Jagielski                 default:
1789*b1cdbd2cSJim Jagielski                 {
1790*b1cdbd2cSJim Jagielski                     // added to avoid warnings
1791*b1cdbd2cSJim Jagielski                 }
1792*b1cdbd2cSJim Jagielski 			}
1793*b1cdbd2cSJim Jagielski 		}
1794*b1cdbd2cSJim Jagielski 		delete pTrackInfo;
1795*b1cdbd2cSJim Jagielski 		pTrackInfo=aMsgQueue.Get();
1796*b1cdbd2cSJim Jagielski 	}
1797*b1cdbd2cSJim Jagielski 
1798*b1cdbd2cSJim Jagielski 	return 0;
1799*b1cdbd2cSJim Jagielski }
IMPL_LINK(ScAcceptChgDlg,ReOpenTimerHdl,Timer *,EMPTYARG)1800*b1cdbd2cSJim Jagielski IMPL_LINK( ScAcceptChgDlg, ReOpenTimerHdl, Timer*, EMPTYARG )
1801*b1cdbd2cSJim Jagielski {
1802*b1cdbd2cSJim Jagielski 	ScSimpleRefDlgWrapper::SetAutoReOpen(sal_True);
1803*b1cdbd2cSJim Jagielski 	aAcceptChgCtr.ShowFilterPage();
1804*b1cdbd2cSJim Jagielski 	RefHandle(NULL);
1805*b1cdbd2cSJim Jagielski 
1806*b1cdbd2cSJim Jagielski 	return 0;
1807*b1cdbd2cSJim Jagielski }
1808*b1cdbd2cSJim Jagielski 
IMPL_LINK(ScAcceptChgDlg,UpdateSelectionHdl,Timer *,EMPTYARG)1809*b1cdbd2cSJim Jagielski IMPL_LINK( ScAcceptChgDlg, UpdateSelectionHdl, Timer*, EMPTYARG )
1810*b1cdbd2cSJim Jagielski {
1811*b1cdbd2cSJim Jagielski     ScTabView* pTabView = pViewData->GetView();
1812*b1cdbd2cSJim Jagielski 
1813*b1cdbd2cSJim Jagielski     sal_Bool bAcceptFlag = sal_True;
1814*b1cdbd2cSJim Jagielski     sal_Bool bRejectFlag = sal_True;
1815*b1cdbd2cSJim Jagielski     sal_Bool bContMark = sal_False;
1816*b1cdbd2cSJim Jagielski 
1817*b1cdbd2cSJim Jagielski     pTabView->DoneBlockMode();  // clears old marking
1818*b1cdbd2cSJim Jagielski     SvLBoxEntry* pEntry = pTheView->FirstSelected();
1819*b1cdbd2cSJim Jagielski     while( pEntry )
1820*b1cdbd2cSJim Jagielski 	{
1821*b1cdbd2cSJim Jagielski         ScRedlinData* pEntryData = (ScRedlinData*) pEntry->GetUserData();
1822*b1cdbd2cSJim Jagielski         if( pEntryData )
1823*b1cdbd2cSJim Jagielski 		{
1824*b1cdbd2cSJim Jagielski             bRejectFlag &= pEntryData->bIsRejectable;
1825*b1cdbd2cSJim Jagielski             bAcceptFlag &= pEntryData->bIsAcceptable;
1826*b1cdbd2cSJim Jagielski 
1827*b1cdbd2cSJim Jagielski             const ScChangeAction* pScChangeAction = (ScChangeAction*) pEntryData->pData;
1828*b1cdbd2cSJim Jagielski             if( pScChangeAction && (pScChangeAction->GetType() != SC_CAT_DELETE_TABS) &&
1829*b1cdbd2cSJim Jagielski                     (!pEntryData->bDisabled || pScChangeAction->IsVisible()) )
1830*b1cdbd2cSJim Jagielski             {
1831*b1cdbd2cSJim Jagielski                 const ScBigRange& rBigRange = pScChangeAction->GetBigRange();
1832*b1cdbd2cSJim Jagielski                 if( rBigRange.IsValid( pDoc ) && IsActive() )
1833*b1cdbd2cSJim Jagielski                 {
1834*b1cdbd2cSJim Jagielski                     sal_Bool bSetCursor = !pTheView->NextSelected( pEntry );
1835*b1cdbd2cSJim Jagielski                     pTabView->MarkRange( rBigRange.MakeRange(), bSetCursor, bContMark );
1836*b1cdbd2cSJim Jagielski                     bContMark = sal_True;
1837*b1cdbd2cSJim Jagielski                 }
1838*b1cdbd2cSJim Jagielski             }
1839*b1cdbd2cSJim Jagielski 		}
1840*b1cdbd2cSJim Jagielski 		else
1841*b1cdbd2cSJim Jagielski 		{
1842*b1cdbd2cSJim Jagielski             bAcceptFlag = sal_False;
1843*b1cdbd2cSJim Jagielski             bRejectFlag = sal_False;
1844*b1cdbd2cSJim Jagielski 		}
1845*b1cdbd2cSJim Jagielski         bAcceptEnableFlag = bAcceptFlag;
1846*b1cdbd2cSJim Jagielski         bRejectEnableFlag = bRejectFlag;
1847*b1cdbd2cSJim Jagielski 
1848*b1cdbd2cSJim Jagielski         pEntry = pTheView->NextSelected( pEntry );
1849*b1cdbd2cSJim Jagielski 	}
1850*b1cdbd2cSJim Jagielski 
1851*b1cdbd2cSJim Jagielski     ScChangeTrack* pChanges = pDoc->GetChangeTrack();
1852*b1cdbd2cSJim Jagielski     sal_Bool bEnable = pDoc->IsDocEditable() && pChanges && !pChanges->IsProtected();
1853*b1cdbd2cSJim Jagielski     pTPView->EnableAccept( bAcceptFlag && bEnable );
1854*b1cdbd2cSJim Jagielski     pTPView->EnableReject( bRejectFlag && bEnable );
1855*b1cdbd2cSJim Jagielski 
1856*b1cdbd2cSJim Jagielski 	return 0;
1857*b1cdbd2cSJim Jagielski }
1858*b1cdbd2cSJim Jagielski 
IMPL_LINK(ScAcceptChgDlg,CommandHdl,Control *,EMPTYARG)1859*b1cdbd2cSJim Jagielski IMPL_LINK( ScAcceptChgDlg, CommandHdl, Control*, EMPTYARG )
1860*b1cdbd2cSJim Jagielski {
1861*b1cdbd2cSJim Jagielski 
1862*b1cdbd2cSJim Jagielski 	const CommandEvent aCEvt(pTheView->GetCommandEvent());
1863*b1cdbd2cSJim Jagielski 
1864*b1cdbd2cSJim Jagielski 	if(aCEvt.GetCommand()==COMMAND_CONTEXTMENU)
1865*b1cdbd2cSJim Jagielski 	{
1866*b1cdbd2cSJim Jagielski 		ScPopupMenu aPopup(ScResId(RID_POPUP_CHANGES));
1867*b1cdbd2cSJim Jagielski 
1868*b1cdbd2cSJim Jagielski 		aPopup.SetMenuFlags(MENU_FLAG_HIDEDISABLEDENTRIES);
1869*b1cdbd2cSJim Jagielski 
1870*b1cdbd2cSJim Jagielski 		SvLBoxEntry* pEntry=pTheView->GetCurEntry();
1871*b1cdbd2cSJim Jagielski 		if(pEntry!=NULL)
1872*b1cdbd2cSJim Jagielski 		{
1873*b1cdbd2cSJim Jagielski 			pTheView->Select(pEntry);
1874*b1cdbd2cSJim Jagielski 		}
1875*b1cdbd2cSJim Jagielski 		else
1876*b1cdbd2cSJim Jagielski 		{
1877*b1cdbd2cSJim Jagielski 			aPopup.Deactivate();
1878*b1cdbd2cSJim Jagielski 		}
1879*b1cdbd2cSJim Jagielski 
1880*b1cdbd2cSJim Jagielski 		sal_uInt16 nSortedCol= pTheView->GetSortedCol();
1881*b1cdbd2cSJim Jagielski 
1882*b1cdbd2cSJim Jagielski 		if(nSortedCol!=0xFFFF)
1883*b1cdbd2cSJim Jagielski 		{
1884*b1cdbd2cSJim Jagielski 			sal_uInt16 nItemId=nSortedCol+SC_SUB_SORT+1;
1885*b1cdbd2cSJim Jagielski 
1886*b1cdbd2cSJim Jagielski 			aPopup.CheckItem(nItemId);
1887*b1cdbd2cSJim Jagielski 
1888*b1cdbd2cSJim Jagielski 			PopupMenu *pSubMenu = aPopup.GetPopupMenu(SC_SUB_SORT);
1889*b1cdbd2cSJim Jagielski 			if (pSubMenu)
1890*b1cdbd2cSJim Jagielski 			{
1891*b1cdbd2cSJim Jagielski 				pSubMenu->CheckItem(nItemId);
1892*b1cdbd2cSJim Jagielski 			}
1893*b1cdbd2cSJim Jagielski 		}
1894*b1cdbd2cSJim Jagielski 
1895*b1cdbd2cSJim Jagielski 		aPopup.EnableItem(SC_CHANGES_COMMENT,sal_False);
1896*b1cdbd2cSJim Jagielski 
1897*b1cdbd2cSJim Jagielski 		if(pDoc->IsDocEditable() && pEntry!=NULL)
1898*b1cdbd2cSJim Jagielski 		{
1899*b1cdbd2cSJim Jagielski 			ScRedlinData *pEntryData=(ScRedlinData *)(pEntry->GetUserData());
1900*b1cdbd2cSJim Jagielski 			if(pEntryData!=NULL)
1901*b1cdbd2cSJim Jagielski 			{
1902*b1cdbd2cSJim Jagielski 				ScChangeAction* pScChangeAction=
1903*b1cdbd2cSJim Jagielski 						(ScChangeAction*) pEntryData->pData;
1904*b1cdbd2cSJim Jagielski 				if(pScChangeAction!=NULL && !pTheView->GetParent(pEntry))
1905*b1cdbd2cSJim Jagielski 					aPopup.EnableItem(SC_CHANGES_COMMENT);
1906*b1cdbd2cSJim Jagielski 			}
1907*b1cdbd2cSJim Jagielski 		}
1908*b1cdbd2cSJim Jagielski 
1909*b1cdbd2cSJim Jagielski 		sal_uInt16 nCommand=aPopup.Execute( this, GetPointerPosPixel() );
1910*b1cdbd2cSJim Jagielski 
1911*b1cdbd2cSJim Jagielski 
1912*b1cdbd2cSJim Jagielski 		if(nCommand)
1913*b1cdbd2cSJim Jagielski 		{
1914*b1cdbd2cSJim Jagielski 			if(nCommand==SC_CHANGES_COMMENT)
1915*b1cdbd2cSJim Jagielski 			{
1916*b1cdbd2cSJim Jagielski 				if(pEntry!=NULL)
1917*b1cdbd2cSJim Jagielski 				{
1918*b1cdbd2cSJim Jagielski 					ScRedlinData *pEntryData=(ScRedlinData *)(pEntry->GetUserData());
1919*b1cdbd2cSJim Jagielski 					if(pEntryData!=NULL)
1920*b1cdbd2cSJim Jagielski 					{
1921*b1cdbd2cSJim Jagielski 						ScChangeAction* pScChangeAction=
1922*b1cdbd2cSJim Jagielski 								(ScChangeAction*) pEntryData->pData;
1923*b1cdbd2cSJim Jagielski 
1924*b1cdbd2cSJim Jagielski 						pViewData->GetDocShell()->ExecuteChangeCommentDialog( pScChangeAction, this,sal_False);
1925*b1cdbd2cSJim Jagielski 					}
1926*b1cdbd2cSJim Jagielski 				}
1927*b1cdbd2cSJim Jagielski 			}
1928*b1cdbd2cSJim Jagielski 			else
1929*b1cdbd2cSJim Jagielski 			{
1930*b1cdbd2cSJim Jagielski 				sal_Bool bSortDir=pTheView->GetSortDirection();
1931*b1cdbd2cSJim Jagielski 				sal_uInt16 nDialogCol=nCommand-SC_SUB_SORT-1;
1932*b1cdbd2cSJim Jagielski 				if(nSortedCol==nDialogCol) bSortDir=!bSortDir;
1933*b1cdbd2cSJim Jagielski 				pTheView->SortByCol(nDialogCol,bSortDir);
1934*b1cdbd2cSJim Jagielski 				/*
1935*b1cdbd2cSJim Jagielski 				SC_SUB_SORT
1936*b1cdbd2cSJim Jagielski 				SC_SORT_ACTION
1937*b1cdbd2cSJim Jagielski 				SC_SORT_POSITION
1938*b1cdbd2cSJim Jagielski 				SC_SORT_AUTHOR
1939*b1cdbd2cSJim Jagielski 				SC_SORT_DATE
1940*b1cdbd2cSJim Jagielski 				SC_SORT_COMMENT
1941*b1cdbd2cSJim Jagielski 				*/
1942*b1cdbd2cSJim Jagielski 			}
1943*b1cdbd2cSJim Jagielski 		}
1944*b1cdbd2cSJim Jagielski 	}
1945*b1cdbd2cSJim Jagielski 	return 0;
1946*b1cdbd2cSJim Jagielski }
1947*b1cdbd2cSJim Jagielski 
Initialize(SfxChildWinInfo * pInfo)1948*b1cdbd2cSJim Jagielski void ScAcceptChgDlg::Initialize(SfxChildWinInfo *pInfo)
1949*b1cdbd2cSJim Jagielski {
1950*b1cdbd2cSJim Jagielski 	String aStr;
1951*b1cdbd2cSJim Jagielski 	if(pInfo!=NULL)
1952*b1cdbd2cSJim Jagielski 	{
1953*b1cdbd2cSJim Jagielski 		if ( pInfo->aExtraString.Len() )
1954*b1cdbd2cSJim Jagielski 		{
1955*b1cdbd2cSJim Jagielski 			xub_StrLen nPos = pInfo->aExtraString.Search(
1956*b1cdbd2cSJim Jagielski 				String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("AcceptChgDat:")));
1957*b1cdbd2cSJim Jagielski 
1958*b1cdbd2cSJim Jagielski 			// Versuche, den Alignment-String "ALIGN:(...)" einzulesen; wenn
1959*b1cdbd2cSJim Jagielski 			// er nicht vorhanden ist, liegt eine "altere Version vor
1960*b1cdbd2cSJim Jagielski 			if ( nPos != STRING_NOTFOUND )
1961*b1cdbd2cSJim Jagielski 			{
1962*b1cdbd2cSJim Jagielski 				xub_StrLen n1 = pInfo->aExtraString.Search('(', nPos);
1963*b1cdbd2cSJim Jagielski 				if ( n1 != STRING_NOTFOUND )
1964*b1cdbd2cSJim Jagielski 				{
1965*b1cdbd2cSJim Jagielski 					xub_StrLen n2 = pInfo->aExtraString.Search(')', n1);
1966*b1cdbd2cSJim Jagielski 					if ( n2 != STRING_NOTFOUND )
1967*b1cdbd2cSJim Jagielski 					{
1968*b1cdbd2cSJim Jagielski 						// Alignment-String herausschneiden
1969*b1cdbd2cSJim Jagielski 						aStr = pInfo->aExtraString.Copy(nPos, n2 - nPos + 1);
1970*b1cdbd2cSJim Jagielski 						pInfo->aExtraString.Erase(nPos, n2 - nPos + 1);
1971*b1cdbd2cSJim Jagielski 						aStr.Erase(0, n1-nPos+1);
1972*b1cdbd2cSJim Jagielski 					}
1973*b1cdbd2cSJim Jagielski 				}
1974*b1cdbd2cSJim Jagielski 			}
1975*b1cdbd2cSJim Jagielski 		}
1976*b1cdbd2cSJim Jagielski 	}
1977*b1cdbd2cSJim Jagielski 	SfxModelessDialog::Initialize(pInfo);
1978*b1cdbd2cSJim Jagielski 
1979*b1cdbd2cSJim Jagielski 	if ( aStr.Len())
1980*b1cdbd2cSJim Jagielski 	{
1981*b1cdbd2cSJim Jagielski 		sal_uInt16 nCount=(sal_uInt16)aStr.ToInt32();
1982*b1cdbd2cSJim Jagielski 
1983*b1cdbd2cSJim Jagielski 		for(sal_uInt16 i=0;i<nCount;i++)
1984*b1cdbd2cSJim Jagielski 		{
1985*b1cdbd2cSJim Jagielski 			xub_StrLen n1 = aStr.Search(';');
1986*b1cdbd2cSJim Jagielski 			aStr.Erase(0, n1+1);
1987*b1cdbd2cSJim Jagielski 			pTheView->SetTab(i,(sal_uInt16)aStr.ToInt32(),MAP_PIXEL);
1988*b1cdbd2cSJim Jagielski 		}
1989*b1cdbd2cSJim Jagielski 	}
1990*b1cdbd2cSJim Jagielski }
1991*b1cdbd2cSJim Jagielski 
1992*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------------
1993*b1cdbd2cSJim Jagielski 
FillInfo(SfxChildWinInfo & rInfo) const1994*b1cdbd2cSJim Jagielski void ScAcceptChgDlg::FillInfo(SfxChildWinInfo& rInfo) const
1995*b1cdbd2cSJim Jagielski {
1996*b1cdbd2cSJim Jagielski 	SfxModelessDialog::FillInfo(rInfo);
1997*b1cdbd2cSJim Jagielski 	rInfo.aExtraString.AppendAscii(RTL_CONSTASCII_STRINGPARAM( "AcceptChgDat:(" ));
1998*b1cdbd2cSJim Jagielski 
1999*b1cdbd2cSJim Jagielski 	sal_uInt16	nCount=pTheView->TabCount();
2000*b1cdbd2cSJim Jagielski 
2001*b1cdbd2cSJim Jagielski 	rInfo.aExtraString += String::CreateFromInt32(nCount);
2002*b1cdbd2cSJim Jagielski 	rInfo.aExtraString += ';';
2003*b1cdbd2cSJim Jagielski 	for(sal_uInt16 i=0;i<nCount;i++)
2004*b1cdbd2cSJim Jagielski 	{
2005*b1cdbd2cSJim Jagielski 		rInfo.aExtraString += String::CreateFromInt32(pTheView->GetTab(i));
2006*b1cdbd2cSJim Jagielski 		rInfo.aExtraString += ';';
2007*b1cdbd2cSJim Jagielski 	}
2008*b1cdbd2cSJim Jagielski 	rInfo.aExtraString += ')';
2009*b1cdbd2cSJim Jagielski }
2010*b1cdbd2cSJim Jagielski 
InitFilter()2011*b1cdbd2cSJim Jagielski void ScAcceptChgDlg::InitFilter()
2012*b1cdbd2cSJim Jagielski {
2013*b1cdbd2cSJim Jagielski 	if(pTPFilter->IsDate()||pTPFilter->IsRange()||
2014*b1cdbd2cSJim Jagielski 		pTPFilter->IsAuthor()||pTPFilter->IsComment())
2015*b1cdbd2cSJim Jagielski 	{
2016*b1cdbd2cSJim Jagielski 		pTheView->SetFilterDate(pTPFilter->IsDate());
2017*b1cdbd2cSJim Jagielski 		pTheView->SetDateTimeMode(pTPFilter->GetDateMode());
2018*b1cdbd2cSJim Jagielski 		pTheView->SetFirstDate(pTPFilter->GetFirstDate());
2019*b1cdbd2cSJim Jagielski 		pTheView->SetLastDate(pTPFilter->GetLastDate());
2020*b1cdbd2cSJim Jagielski 		pTheView->SetFirstTime(pTPFilter->GetFirstTime());
2021*b1cdbd2cSJim Jagielski 		pTheView->SetLastTime(pTPFilter->GetLastTime());
2022*b1cdbd2cSJim Jagielski 		pTheView->SetFilterAuthor(pTPFilter->IsAuthor());
2023*b1cdbd2cSJim Jagielski 		pTheView->SetAuthor(pTPFilter->GetSelectedAuthor());
2024*b1cdbd2cSJim Jagielski 
2025*b1cdbd2cSJim Jagielski 		pTheView->SetFilterComment(pTPFilter->IsComment());
2026*b1cdbd2cSJim Jagielski 
2027*b1cdbd2cSJim Jagielski 		utl::SearchParam aSearchParam( pTPFilter->GetComment(),
2028*b1cdbd2cSJim Jagielski 				utl::SearchParam::SRCH_REGEXP,sal_False,sal_False,sal_False );
2029*b1cdbd2cSJim Jagielski 
2030*b1cdbd2cSJim Jagielski 		pTheView->SetCommentParams(&aSearchParam);
2031*b1cdbd2cSJim Jagielski 
2032*b1cdbd2cSJim Jagielski 		pTheView->UpdateFilterTest();
2033*b1cdbd2cSJim Jagielski 	}
2034*b1cdbd2cSJim Jagielski }
2035*b1cdbd2cSJim Jagielski 
2036*b1cdbd2cSJim Jagielski //UNUSED2008-05  void ScAcceptChgDlg::SetMyStaticData()
2037*b1cdbd2cSJim Jagielski //UNUSED2008-05  {
2038*b1cdbd2cSJim Jagielski //UNUSED2008-05  }
2039*b1cdbd2cSJim Jagielski 
IMPL_LINK(ScAcceptChgDlg,FilterModified,SvxTPFilter *,EMPTYARG)2040*b1cdbd2cSJim Jagielski IMPL_LINK( ScAcceptChgDlg, FilterModified, SvxTPFilter*, EMPTYARG )
2041*b1cdbd2cSJim Jagielski {
2042*b1cdbd2cSJim Jagielski 	return 0;
2043*b1cdbd2cSJim Jagielski }
2044*b1cdbd2cSJim Jagielski 
2045*b1cdbd2cSJim Jagielski #define CALC_DATE		3
2046*b1cdbd2cSJim Jagielski #define CALC_POS		1
2047*b1cdbd2cSJim Jagielski 
IMPL_LINK(ScAcceptChgDlg,ColCompareHdl,SvSortData *,pSortData)2048*b1cdbd2cSJim Jagielski IMPL_LINK( ScAcceptChgDlg, ColCompareHdl, SvSortData*, pSortData )
2049*b1cdbd2cSJim Jagielski {
2050*b1cdbd2cSJim Jagielski 	StringCompare eCompare=COMPARE_EQUAL;
2051*b1cdbd2cSJim Jagielski 	SCCOL nSortCol= static_cast<SCCOL>(pTheView->GetSortedCol());
2052*b1cdbd2cSJim Jagielski 
2053*b1cdbd2cSJim Jagielski 	if(pSortData)
2054*b1cdbd2cSJim Jagielski 	{
2055*b1cdbd2cSJim Jagielski 		SvLBoxEntry* pLeft = (SvLBoxEntry*)(pSortData->pLeft );
2056*b1cdbd2cSJim Jagielski 		SvLBoxEntry* pRight = (SvLBoxEntry*)(pSortData->pRight );
2057*b1cdbd2cSJim Jagielski 
2058*b1cdbd2cSJim Jagielski 		if(CALC_DATE==nSortCol)
2059*b1cdbd2cSJim Jagielski 		{
2060*b1cdbd2cSJim Jagielski 			RedlinData *pLeftData=(RedlinData *)(pLeft->GetUserData());
2061*b1cdbd2cSJim Jagielski 			RedlinData *pRightData=(RedlinData *)(pRight->GetUserData());
2062*b1cdbd2cSJim Jagielski 
2063*b1cdbd2cSJim Jagielski 			if(pLeftData!=NULL && pRightData!=NULL)
2064*b1cdbd2cSJim Jagielski 			{
2065*b1cdbd2cSJim Jagielski 				if(pLeftData->aDateTime < pRightData->aDateTime)
2066*b1cdbd2cSJim Jagielski 				{
2067*b1cdbd2cSJim Jagielski 					eCompare=COMPARE_LESS;
2068*b1cdbd2cSJim Jagielski 				}
2069*b1cdbd2cSJim Jagielski 				else if(pLeftData->aDateTime > pRightData->aDateTime)
2070*b1cdbd2cSJim Jagielski 				{
2071*b1cdbd2cSJim Jagielski 					eCompare=COMPARE_GREATER;
2072*b1cdbd2cSJim Jagielski 				}
2073*b1cdbd2cSJim Jagielski 				return eCompare;
2074*b1cdbd2cSJim Jagielski 			}
2075*b1cdbd2cSJim Jagielski 		}
2076*b1cdbd2cSJim Jagielski 		else if(CALC_POS==nSortCol)
2077*b1cdbd2cSJim Jagielski 		{
2078*b1cdbd2cSJim Jagielski 			ScRedlinData *pLeftData=(ScRedlinData *)(pLeft->GetUserData());
2079*b1cdbd2cSJim Jagielski 			ScRedlinData *pRightData=(ScRedlinData *)(pRight->GetUserData());
2080*b1cdbd2cSJim Jagielski 
2081*b1cdbd2cSJim Jagielski 			if(pLeftData!=NULL && pRightData!=NULL)
2082*b1cdbd2cSJim Jagielski 			{
2083*b1cdbd2cSJim Jagielski 				eCompare=COMPARE_GREATER;
2084*b1cdbd2cSJim Jagielski 
2085*b1cdbd2cSJim Jagielski 				if(pLeftData->nTable < pRightData->nTable)
2086*b1cdbd2cSJim Jagielski 				{
2087*b1cdbd2cSJim Jagielski 					eCompare=COMPARE_LESS;
2088*b1cdbd2cSJim Jagielski 				}
2089*b1cdbd2cSJim Jagielski 				else if(pLeftData->nTable == pRightData->nTable)
2090*b1cdbd2cSJim Jagielski 				{
2091*b1cdbd2cSJim Jagielski 					if(pLeftData->nRow < pRightData->nRow)
2092*b1cdbd2cSJim Jagielski 					{
2093*b1cdbd2cSJim Jagielski 						eCompare=COMPARE_LESS;
2094*b1cdbd2cSJim Jagielski 					}
2095*b1cdbd2cSJim Jagielski 					else if(pLeftData->nRow == pRightData->nRow)
2096*b1cdbd2cSJim Jagielski 					{
2097*b1cdbd2cSJim Jagielski 						if(pLeftData->nCol < pRightData->nCol)
2098*b1cdbd2cSJim Jagielski 						{
2099*b1cdbd2cSJim Jagielski 							eCompare=COMPARE_LESS;
2100*b1cdbd2cSJim Jagielski 						}
2101*b1cdbd2cSJim Jagielski 						else if(pLeftData->nCol == pRightData->nCol)
2102*b1cdbd2cSJim Jagielski 						{
2103*b1cdbd2cSJim Jagielski 							eCompare=COMPARE_EQUAL;
2104*b1cdbd2cSJim Jagielski 						}
2105*b1cdbd2cSJim Jagielski 					}
2106*b1cdbd2cSJim Jagielski 				}
2107*b1cdbd2cSJim Jagielski 
2108*b1cdbd2cSJim Jagielski 				return eCompare;
2109*b1cdbd2cSJim Jagielski 			}
2110*b1cdbd2cSJim Jagielski 		}
2111*b1cdbd2cSJim Jagielski 
2112*b1cdbd2cSJim Jagielski 		SvLBoxItem* pLeftItem = pTheView->GetEntryAtPos( pLeft, static_cast<sal_uInt16>(nSortCol));
2113*b1cdbd2cSJim Jagielski 		SvLBoxItem* pRightItem = pTheView->GetEntryAtPos( pRight, static_cast<sal_uInt16>(nSortCol));
2114*b1cdbd2cSJim Jagielski 
2115*b1cdbd2cSJim Jagielski 		if(pLeftItem != NULL && pRightItem != NULL)
2116*b1cdbd2cSJim Jagielski 		{
2117*b1cdbd2cSJim Jagielski 			sal_uInt16 nLeftKind=pLeftItem->IsA();
2118*b1cdbd2cSJim Jagielski 			sal_uInt16 nRightKind=pRightItem->IsA();
2119*b1cdbd2cSJim Jagielski 
2120*b1cdbd2cSJim Jagielski 			if(nRightKind == SV_ITEM_ID_LBOXSTRING &&
2121*b1cdbd2cSJim Jagielski 				nLeftKind == SV_ITEM_ID_LBOXSTRING )
2122*b1cdbd2cSJim Jagielski 			{
2123*b1cdbd2cSJim Jagielski 				eCompare= (StringCompare) ScGlobal::GetCaseCollator()->compareString(
2124*b1cdbd2cSJim Jagielski 										((SvLBoxString*)pLeftItem)->GetText(),
2125*b1cdbd2cSJim Jagielski 										((SvLBoxString*)pRightItem)->GetText());
2126*b1cdbd2cSJim Jagielski 
2127*b1cdbd2cSJim Jagielski 				if(eCompare==COMPARE_EQUAL) eCompare=COMPARE_LESS;
2128*b1cdbd2cSJim Jagielski 			}
2129*b1cdbd2cSJim Jagielski 		}
2130*b1cdbd2cSJim Jagielski 
2131*b1cdbd2cSJim Jagielski 
2132*b1cdbd2cSJim Jagielski 	}
2133*b1cdbd2cSJim Jagielski 	return eCompare;
2134*b1cdbd2cSJim Jagielski }
2135*b1cdbd2cSJim Jagielski 
2136