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