Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : *
9 : * This file incorporates work covered by the following license notice:
10 : *
11 : * Licensed to the Apache Software Foundation (ASF) under one or more
12 : * contributor license agreements. See the NOTICE file distributed
13 : * with this work for additional information regarding copyright
14 : * ownership. The ASF licenses this file to you under the Apache
15 : * License, Version 2.0 (the "License"); you may not use this file
16 : * except in compliance with the License. You may obtain a copy of
17 : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 : */
19 :
20 : #include <vcl/svapp.hxx>
21 : #include <tools/shl.hxx>
22 : #include <sfx2/app.hxx>
23 : #include <sfx2/module.hxx>
24 : #include <svtools/txtcmp.hxx>
25 : #include <svtools/svlbitm.hxx>
26 : #include "svtools/viewdataentry.hxx"
27 : #include <unotools/charclass.hxx>
28 :
29 : #include <editeng/unolingu.hxx>
30 : #include <svx/dialmgr.hxx>
31 : #include "ctredlin.hrc"
32 : #include <svx/ctredlin.hxx>
33 : #include "helpid.hrc"
34 :
35 : //============================================================================
36 : // Local Defines and Function
37 : //----------------------------------------------------------------------------
38 :
39 : inline void EnableDisable( Window& rWin, sal_Bool bEnable )
40 : {
41 : if (bEnable)
42 : rWin.Enable();
43 : else
44 : rWin.Disable();
45 : }
46 :
47 : static long nStaticTabs[]=
48 : {
49 : 5,10,65,120,170,220
50 : };
51 :
52 : #define MIN_DISTANCE 6
53 : #define WRITER_DATE 2
54 : #define CALC_DATE 3
55 :
56 0 : RedlinData::RedlinData()
57 : :
58 0 : aDateTime( DateTime::EMPTY )
59 : {
60 0 : bDisabled=sal_False;
61 0 : pData=NULL;
62 0 : }
63 0 : RedlinData::~RedlinData()
64 : {
65 0 : }
66 :
67 : //============================================================================
68 : // class SvxRedlinEntry (Entries for list)
69 : //----------------------------------------------------------------------------
70 :
71 0 : SvxRedlinEntry::SvxRedlinEntry()
72 0 : :SvTreeListEntry()
73 : {
74 0 : }
75 :
76 0 : SvxRedlinEntry::~SvxRedlinEntry()
77 : {
78 0 : RedlinData* pRedDat=(RedlinData*) GetUserData();
79 0 : if(pRedDat!=NULL)
80 : {
81 0 : delete pRedDat;
82 : }
83 0 : }
84 :
85 : // Functions in the inserts Items of SvxRedlinTable
86 :
87 : DBG_NAME(SvLBoxColorString);
88 :
89 0 : SvLBoxColorString::SvLBoxColorString( SvTreeListEntry*pEntry,sal_uInt16 nFlags,const XubString& rStr,
90 : const Color& rCol)
91 :
92 0 : : SvLBoxString( pEntry, nFlags, rStr )
93 : {
94 : DBG_CTOR(SvLBoxColorString,0);
95 0 : aPrivColor=rCol;
96 0 : SetText( rStr );
97 0 : }
98 :
99 0 : SvLBoxColorString::SvLBoxColorString()
100 0 : : SvLBoxString()
101 : {
102 : DBG_CTOR(SvLBoxColorString,0);
103 0 : }
104 :
105 0 : SvLBoxColorString::~SvLBoxColorString()
106 : {
107 : DBG_DTOR(SvLBoxColorString,0);
108 0 : }
109 :
110 0 : SvLBoxItem* SvLBoxColorString::Create() const
111 : {
112 : DBG_CHKTHIS(SvLBoxColorString,0);
113 0 : return new SvLBoxColorString;
114 : }
115 :
116 0 : void SvLBoxColorString::Paint(
117 : const Point& rPos, SvTreeListBox& rDev,
118 : const SvViewDataEntry* pView, const SvTreeListEntry* pEntry)
119 : /* [Description]
120 :
121 : Paint function of the SvLBoxColorString class. The relevant text with the
122 : selected color is drawn in the output device.
123 : */
124 :
125 : {
126 0 : Color aColor=rDev.GetTextColor();
127 0 : Color a2Color=aColor;
128 0 : if (!pView->IsSelected())
129 : {
130 0 : rDev.SetTextColor(aPrivColor);
131 : }
132 0 : SvLBoxString::Paint(rPos, rDev, pView, pEntry);
133 0 : rDev.SetTextColor(a2Color);
134 0 : }
135 :
136 : //============================================================================
137 : // class SvxRedlinTable
138 : //----------------------------------------------------------------------------
139 :
140 0 : SvxRedlinTable::SvxRedlinTable(SvxSimpleTableContainer& rParent,WinBits nBits)
141 : : SvxSimpleTable(rParent,nBits),
142 : aDaTiFirst( DateTime::EMPTY ),
143 : aDaTiLast( DateTime::EMPTY ),
144 : aDaTiFilterFirst( DateTime::EMPTY ),
145 0 : aDaTiFilterLast( DateTime::EMPTY )
146 : {
147 0 : bAuthor=sal_False;
148 0 : bDate=sal_False;
149 0 : bIsCalc=sal_False;
150 0 : bComment=sal_False;
151 0 : nDatePos=WRITER_DATE;
152 0 : pCommentSearcher=NULL;
153 0 : SetNodeDefaultImages();
154 0 : }
155 :
156 0 : SvxRedlinTable::~SvxRedlinTable()
157 : {
158 0 : if(pCommentSearcher!=NULL)
159 0 : delete pCommentSearcher;
160 0 : }
161 :
162 0 : StringCompare SvxRedlinTable::ColCompare(SvTreeListEntry* pLeft,SvTreeListEntry* pRight)
163 : {
164 0 : StringCompare eCompare=COMPARE_EQUAL;
165 :
166 0 : if(aColCompareLink.IsSet())
167 : {
168 : SvSortData aRedlinCompare;
169 0 : aRedlinCompare.pLeft=pLeft;
170 0 : aRedlinCompare.pRight=pRight;
171 0 : eCompare=(StringCompare) aColCompareLink.Call(&aRedlinCompare);
172 : }
173 : else
174 : {
175 0 : if(nDatePos==GetSortedCol())
176 : {
177 0 : RedlinData *pLeftData=(RedlinData *)(pLeft->GetUserData());
178 0 : RedlinData *pRightData=(RedlinData *)(pRight->GetUserData());
179 :
180 0 : if(pLeftData!=NULL && pRightData!=NULL)
181 : {
182 0 : if(pLeftData->aDateTime < pRightData->aDateTime)
183 : {
184 0 : eCompare=COMPARE_LESS;
185 : }
186 0 : else if(pLeftData->aDateTime > pRightData->aDateTime)
187 : {
188 0 : eCompare=COMPARE_GREATER;
189 : }
190 : }
191 : else
192 0 : eCompare=SvxSimpleTable::ColCompare(pLeft,pRight);
193 : }
194 : else
195 : {
196 0 : eCompare=SvxSimpleTable::ColCompare(pLeft,pRight);
197 : }
198 :
199 : }
200 :
201 0 : return eCompare;
202 : }
203 0 : void SvxRedlinTable::SetCalcView(sal_Bool bFlag)
204 : {
205 0 : bIsCalc=bFlag;
206 0 : if(bFlag)
207 : {
208 0 : nDatePos=CALC_DATE;
209 : }
210 : else
211 : {
212 0 : nDatePos=WRITER_DATE;
213 : }
214 0 : }
215 :
216 :
217 0 : void SvxRedlinTable::UpdateFilterTest()
218 : {
219 0 : Date aDateMax( Date::SYSTEM );
220 0 : sal_uInt16 nYEAR=aDateMax.GetYear()+100;
221 0 : aDateMax.SetYear(nYEAR);
222 0 : Date aDateMin(1,1,1989);
223 0 : Time aTMin(0);
224 0 : Time aTMax(23,59,59);
225 :
226 :
227 0 : DateTime aDTMin(aDateMin);
228 0 : DateTime aDTMax(aDateMax);
229 :
230 0 : switch(nDaTiMode)
231 : {
232 : case FLT_DATE_BEFORE:
233 0 : aDaTiFilterFirst=aDTMin;
234 0 : aDaTiFilterLast=aDaTiFirst;
235 0 : break;
236 : case FLT_DATE_SAVE:
237 : case FLT_DATE_SINCE:
238 0 : aDaTiFilterFirst=aDaTiFirst;
239 0 : aDaTiFilterLast=aDTMax;
240 0 : break;
241 : case FLT_DATE_EQUAL:
242 0 : aDaTiFilterFirst=aDaTiFirst;
243 0 : aDaTiFilterLast=aDaTiFirst;
244 0 : aDaTiFilterFirst.SetTime(aTMin.GetTime());
245 0 : aDaTiFilterLast.SetTime(aTMax.GetTime());
246 0 : break;
247 : case FLT_DATE_NOTEQUAL:
248 0 : aDaTiFilterFirst=aDaTiFirst;
249 0 : aDaTiFilterLast=aDaTiFirst;
250 0 : aDaTiFilterFirst.SetTime(aTMin.GetTime());
251 0 : aDaTiFilterLast.SetTime(aTMax.GetTime());
252 0 : break;
253 : case FLT_DATE_BETWEEN:
254 0 : aDaTiFilterFirst=aDaTiFirst;
255 0 : aDaTiFilterLast=aDaTiLast;
256 0 : break;
257 : }
258 0 : }
259 :
260 :
261 0 : void SvxRedlinTable::SetFilterDate(sal_Bool bFlag)
262 : {
263 0 : bDate=bFlag;
264 0 : }
265 :
266 0 : void SvxRedlinTable::SetDateTimeMode(sal_uInt16 nMode)
267 : {
268 0 : nDaTiMode=nMode;
269 0 : }
270 :
271 0 : void SvxRedlinTable::SetFirstDate(const Date& aDate)
272 : {
273 0 : aDaTiFirst.SetDate(aDate.GetDate());
274 0 : }
275 :
276 0 : void SvxRedlinTable::SetLastDate(const Date& aDate)
277 : {
278 0 : aDaTiLast.SetDate(aDate.GetDate());
279 0 : }
280 :
281 0 : void SvxRedlinTable::SetFirstTime(const Time& aTime)
282 : {
283 0 : aDaTiFirst.SetTime(aTime.GetTime());
284 0 : }
285 :
286 0 : void SvxRedlinTable::SetLastTime(const Time& aTime)
287 : {
288 0 : aDaTiLast.SetTime(aTime.GetTime());
289 0 : }
290 :
291 0 : void SvxRedlinTable::SetFilterAuthor(sal_Bool bFlag)
292 : {
293 0 : bAuthor=bFlag;
294 0 : }
295 :
296 0 : void SvxRedlinTable::SetAuthor(const String &aString)
297 : {
298 0 : aAuthor=aString;
299 0 : }
300 :
301 0 : void SvxRedlinTable::SetFilterComment(sal_Bool bFlag)
302 : {
303 0 : bComment=bFlag;
304 0 : }
305 :
306 0 : void SvxRedlinTable::SetCommentParams( const utl::SearchParam* pSearchPara )
307 : {
308 0 : if(pSearchPara!=NULL)
309 : {
310 0 : if(pCommentSearcher!=NULL) delete pCommentSearcher;
311 :
312 0 : pCommentSearcher=new utl::TextSearch(*pSearchPara, LANGUAGE_SYSTEM );
313 : }
314 0 : }
315 :
316 0 : sal_Bool SvxRedlinTable::IsValidEntry(const String* pAuthorStr,
317 : const DateTime *pDateTime,const String* pCommentStr)
318 : {
319 0 : bool nTheFlag=true;
320 0 : if(bAuthor)
321 : {
322 0 : nTheFlag = aAuthor.CompareTo(*pAuthorStr)==COMPARE_EQUAL;
323 : }
324 0 : if(bDate && nTheFlag)
325 : {
326 0 : if(nDaTiMode!=FLT_DATE_NOTEQUAL)
327 : {
328 0 : nTheFlag=pDateTime->IsBetween(aDaTiFilterFirst,aDaTiFilterLast);
329 : }
330 : else
331 : {
332 0 : nTheFlag=!(pDateTime->IsBetween(aDaTiFilterFirst,aDaTiFilterLast));
333 : }
334 : }
335 0 : if(bComment && nTheFlag)
336 : {
337 0 : xub_StrLen nStartPos = 0;
338 0 : xub_StrLen nEndPos = pCommentStr->Len();
339 :
340 0 : nTheFlag=pCommentSearcher->SearchFrwrd( *pCommentStr, &nStartPos, &nEndPos);
341 : }
342 0 : return nTheFlag;
343 : }
344 :
345 0 : sal_Bool SvxRedlinTable::IsValidEntry(const String* pAuthorStr,const DateTime *pDateTime)
346 : {
347 0 : sal_Bool nTheFlag=sal_True;
348 0 : if(bAuthor)
349 : {
350 0 : if(aAuthor.CompareTo(*pAuthorStr)==COMPARE_EQUAL)
351 0 : nTheFlag=sal_True;
352 : else
353 0 : nTheFlag=sal_False;
354 : }
355 0 : if(bDate && nTheFlag)
356 : {
357 0 : if(nDaTiMode!=FLT_DATE_NOTEQUAL)
358 : {
359 0 : nTheFlag=pDateTime->IsBetween(aDaTiFilterFirst,aDaTiFilterLast);
360 : }
361 : else
362 : {
363 0 : nTheFlag=!(pDateTime->IsBetween(aDaTiFilterFirst,aDaTiFilterLast));
364 : }
365 : }
366 0 : return nTheFlag;
367 : }
368 :
369 0 : sal_Bool SvxRedlinTable::IsValidComment(const String* pCommentStr)
370 : {
371 0 : bool nTheFlag=true;
372 :
373 0 : if(bComment)
374 : {
375 0 : xub_StrLen nStartPos = 0;
376 0 : xub_StrLen nEndPos = pCommentStr->Len();
377 :
378 0 : nTheFlag=pCommentSearcher->SearchFrwrd( *pCommentStr, &nStartPos, &nEndPos);
379 : }
380 0 : return nTheFlag;
381 : }
382 :
383 0 : SvTreeListEntry* SvxRedlinTable::InsertEntry(const String& rStr,RedlinData *pUserData,
384 : SvTreeListEntry* pParent,sal_uIntPtr nPos)
385 : {
386 0 : aEntryColor=GetTextColor();
387 0 : if(pUserData!=NULL)
388 : {
389 0 : if(pUserData->bDisabled)
390 0 : aEntryColor=Color(COL_GRAY);
391 : }
392 :
393 0 : XubString aStr= rStr;
394 :
395 0 : XubString aFirstStr( aStr );
396 0 : xub_StrLen nEnd = aFirstStr.Search( sal_Unicode( '\t' ) );
397 0 : if( nEnd != STRING_NOTFOUND )
398 : {
399 0 : aFirstStr.Erase( nEnd );
400 0 : aCurEntry = aStr;
401 0 : aCurEntry.Erase( 0, ++nEnd );
402 : }
403 : else
404 0 : aCurEntry.Erase();
405 :
406 0 : return SvxSimpleTable::InsertEntry( aFirstStr, pParent, sal_False, nPos, pUserData );
407 :
408 : }
409 :
410 0 : SvTreeListEntry* SvxRedlinTable::InsertEntry(const String& rStr,RedlinData *pUserData,const Color& aColor,
411 : SvTreeListEntry* pParent,sal_uIntPtr nPos)
412 : {
413 0 : aEntryColor=aColor;
414 :
415 0 : XubString aStr= rStr;
416 :
417 0 : XubString aFirstStr( aStr );
418 0 : xub_StrLen nEnd = aFirstStr.Search( sal_Unicode ( '\t' ) );
419 0 : if( nEnd != STRING_NOTFOUND )
420 : {
421 0 : aFirstStr.Erase( nEnd );
422 0 : aCurEntry = aStr;
423 0 : aCurEntry.Erase( 0, ++nEnd );
424 : }
425 : else
426 0 : aCurEntry.Erase();
427 :
428 0 : return SvxSimpleTable::InsertEntry( aFirstStr, pParent, sal_False, nPos, pUserData );
429 : }
430 :
431 0 : SvTreeListEntry* SvxRedlinTable::CreateEntry() const
432 : {
433 0 : return new SvxRedlinEntry;
434 : }
435 :
436 0 : void SvxRedlinTable::InitEntry(SvTreeListEntry* pEntry, const OUString& rStr,
437 : const Image& rColl, const Image& rExp, SvLBoxButtonKind eButtonKind)
438 : {
439 : SvLBoxButton* pButton;
440 : SvLBoxString* pString;
441 : SvLBoxContextBmp* pContextBmp;
442 :
443 0 : if( nTreeFlags & TREEFLAG_CHKBTN )
444 : {
445 0 : pButton= new SvLBoxButton( pEntry,eButtonKind,0,pCheckButtonData );
446 0 : pEntry->AddItem( pButton );
447 : }
448 :
449 0 : pContextBmp= new SvLBoxContextBmp(pEntry,0, rColl,rExp, true);
450 0 : pEntry->AddItem( pContextBmp );
451 :
452 0 : pString = new SvLBoxColorString( pEntry, 0, rStr ,aEntryColor);
453 0 : pEntry->AddItem( pString );
454 :
455 0 : XubString aToken;
456 :
457 0 : sal_Unicode* pCurToken = (sal_Unicode*)aCurEntry.GetBuffer();
458 : sal_uInt16 nCurTokenLen;
459 0 : sal_Unicode* pNextToken = (sal_Unicode*)GetToken( pCurToken, nCurTokenLen );
460 0 : sal_uInt16 nCount = TabCount(); nCount--;
461 :
462 0 : for( sal_uInt16 nToken = 0; nToken < nCount; nToken++ )
463 : {
464 0 : if( pCurToken && nCurTokenLen )
465 0 : aToken = rtl::OUString(pCurToken, nCurTokenLen);
466 : else
467 0 : aToken.Erase();
468 :
469 0 : SvLBoxColorString* pStr = new SvLBoxColorString( pEntry, 0, aToken ,aEntryColor);
470 0 : pEntry->AddItem( pStr );
471 :
472 0 : pCurToken = pNextToken;
473 0 : if( pCurToken )
474 0 : pNextToken = (sal_Unicode*)GetToken( pCurToken, nCurTokenLen );
475 : else
476 0 : nCurTokenLen = 0;
477 0 : }
478 0 : }
479 :
480 :
481 :
482 :
483 : //============================================================================
484 : // class SvxTPView
485 : //----------------------------------------------------------------------------
486 :
487 0 : SvxTPView::SvxTPView( Window * pParent)
488 0 : : TabPage( pParent, SVX_RES(SID_REDLIN_VIEW_PAGE)),
489 0 : m_aViewDataContainer(this, SVX_RES(DG_VIEW)),
490 : aViewData(m_aViewDataContainer),
491 0 : PbAccept ( this, SVX_RES(PB_ACCEPT ) ),
492 0 : PbReject ( this, SVX_RES(PB_REJECT ) ),
493 0 : PbAcceptAll ( this, SVX_RES(PB_ACCEPTALL ) ),
494 0 : PbRejectAll ( this, SVX_RES(PB_REJECTALL ) ),
495 0 : PbUndo ( this, SVX_RES(PB_UNDO ) ),
496 0 : aTitle1 ( SVX_RES( STR_TITLE1 ) ), // local resource
497 0 : aTitle2 ( SVX_RES( STR_TITLE2 ) ),
498 0 : aTitle3 ( SVX_RES( STR_TITLE3 ) ),
499 0 : aTitle4 ( SVX_RES( STR_TITLE4 ) ),
500 0 : aTitle5 ( SVX_RES( STR_TITLE5 ) ),
501 0 : aStrMyName ( SVX_RES( STR_VIEW) )
502 : {
503 0 : aViewData.SetAccessibleName(String(SVX_RES(STR_TREE)));
504 0 : FreeResource();
505 :
506 0 : aViewData.SetHelpId(HID_REDLINING_VIEW_DG_VIEW_TABLE);
507 0 : aViewData.SetHeaderBarHelpId(HID_REDLINING_VIEW_DG_VIEW_HEADER);
508 :
509 0 : aMinSize=GetSizePixel();
510 :
511 0 : Link aLink=LINK( this, SvxTPView, PbClickHdl);
512 :
513 0 : PbAccept.SetClickHdl(aLink);
514 0 : PbAcceptAll.SetClickHdl(aLink);
515 0 : PbReject.SetClickHdl(aLink);
516 0 : PbRejectAll.SetClickHdl(aLink);
517 0 : PbUndo.SetClickHdl(aLink);
518 :
519 0 : nDistance=PbAccept.GetSizePixel().Height()+2*MIN_DISTANCE;
520 0 : aViewData.SetTabs(nStaticTabs);
521 0 : }
522 :
523 0 : String SvxTPView::GetMyName() const
524 : {
525 0 : return aStrMyName;
526 : }
527 :
528 0 : void SvxTPView::Resize()
529 : {
530 0 : Size aSize=GetOutputSizePixel();
531 0 : Point aPos = m_aViewDataContainer.GetPosPixel();
532 0 : aSize.Height()-=aPos.Y()+nDistance;
533 0 : aSize.Width()-=2*aPos.X();
534 :
535 0 : long newY=aPos.Y()+aSize.Height()+MIN_DISTANCE;
536 0 : aPos=PbAccept.GetPosPixel();
537 0 : aPos.Y()=newY;
538 0 : PbAccept.SetPosPixel(aPos);
539 0 : aPos=PbAcceptAll.GetPosPixel();
540 0 : aPos.Y()=newY;
541 0 : PbAcceptAll.SetPosPixel(aPos);
542 0 : aPos=PbReject.GetPosPixel();
543 0 : aPos.Y()=newY;
544 0 : PbReject.SetPosPixel(aPos);
545 0 : aPos=PbRejectAll.GetPosPixel();
546 0 : aPos.Y()=newY;
547 0 : PbRejectAll.SetPosPixel(aPos);
548 :
549 0 : if(PbUndo.IsVisible())
550 : {
551 0 : aPos=PbUndo.GetPosPixel();
552 0 : aPos.Y()=newY;
553 0 : PbUndo.SetPosPixel(aPos);
554 : }
555 0 : m_aViewDataContainer.SetSizePixel(aSize);
556 0 : }
557 :
558 0 : void SvxTPView::InsertWriterHeader()
559 : {
560 0 : rtl::OUString aStrTab('\t');
561 0 : String aString(aTitle1);
562 0 : aString+=aStrTab;
563 0 : aString+=aTitle3;
564 0 : aString+=aStrTab;
565 0 : aString+=aTitle4;
566 0 : aString+=aStrTab;
567 0 : aString+=aTitle5;
568 0 : aViewData.ClearHeader();
569 0 : aViewData.InsertHeaderEntry(aString);
570 0 : }
571 :
572 0 : void SvxTPView::InsertCalcHeader()
573 : {
574 0 : rtl::OUString aStrTab('\t');
575 0 : String aString(aTitle1);
576 0 : aString+=aStrTab;
577 0 : aString+=aTitle2;
578 0 : aString+=aStrTab;
579 0 : aString+=aTitle3;
580 0 : aString+=aStrTab;
581 0 : aString+=aTitle4;
582 0 : aString+=aStrTab;
583 0 : aString+=aTitle5;
584 0 : aViewData.ClearHeader();
585 0 : aViewData.InsertHeaderEntry(aString);
586 0 : }
587 :
588 0 : void SvxTPView::EnableAccept(sal_Bool nFlag)
589 : {
590 0 : PbAccept.Enable(nFlag);
591 0 : }
592 :
593 0 : void SvxTPView::EnableAcceptAll(sal_Bool nFlag)
594 : {
595 0 : PbAcceptAll.Enable(nFlag);
596 0 : }
597 :
598 0 : void SvxTPView::EnableReject(sal_Bool nFlag)
599 : {
600 0 : PbReject.Enable(nFlag);
601 0 : }
602 :
603 0 : void SvxTPView::EnableRejectAll(sal_Bool nFlag)
604 : {
605 0 : PbRejectAll.Enable(nFlag);
606 0 : }
607 :
608 0 : void SvxTPView::ShowUndo(sal_Bool nFlag)
609 : {
610 0 : PbUndo.Show(nFlag);
611 0 : }
612 :
613 0 : void SvxTPView::EnableUndo(sal_Bool nFlag)
614 : {
615 0 : PbUndo.Enable(nFlag);
616 0 : }
617 :
618 0 : Size SvxTPView::GetMinSizePixel()
619 : {
620 0 : Size aSize=aMinSize;
621 0 : if(PbUndo.IsVisible())
622 : {
623 0 : sal_uIntPtr nSize=PbUndo.GetSizePixel().Width()
624 0 : +PbUndo.GetPosPixel().X()
625 0 : +PbAccept.GetPosPixel().X();
626 :
627 0 : aSize.Width()=nSize;
628 : }
629 :
630 0 : return aSize;
631 : }
632 :
633 :
634 0 : SvxRedlinTable* SvxTPView::GetTableControl()
635 : {
636 0 : return &aViewData;
637 : }
638 :
639 0 : IMPL_LINK( SvxTPView, PbClickHdl, PushButton*, pPushB )
640 : {
641 0 : if(pPushB==&PbAccept)
642 : {
643 0 : AcceptClickLk.Call(this);
644 : }
645 0 : else if(pPushB==&PbAcceptAll)
646 : {
647 0 : AcceptAllClickLk.Call(this);
648 : }
649 0 : else if(pPushB==&PbReject)
650 : {
651 0 : RejectClickLk.Call(this);
652 : }
653 0 : else if(pPushB==&PbRejectAll)
654 : {
655 0 : RejectAllClickLk.Call(this);
656 : }
657 0 : else if(pPushB==&PbUndo)
658 : {
659 0 : UndoClickLk.Call(this);
660 : }
661 :
662 0 : return 0;
663 : }
664 :
665 :
666 :
667 :
668 : //============================================================================
669 : // class SvxTPFilter
670 : //----------------------------------------------------------------------------
671 :
672 0 : SvxTPFilter::SvxTPFilter( Window * pParent)
673 0 : : TabPage( pParent, SVX_RES(SID_REDLIN_FILTER_PAGE)),
674 : pRedlinTable(NULL),
675 0 : aCbDate ( this, SVX_RES( CB_DATE ) ),
676 0 : aLbDate ( this, SVX_RES( LB_DATE ) ),
677 0 : aDfDate ( this, SVX_RES( DF_DATE ) ),
678 0 : aTfDate ( this, SVX_RES( TF_DATE ) ),
679 0 : aIbClock ( this, SVX_RES( IB_CLOCK ) ),
680 0 : aFtDate2 ( this, SVX_RES( FT_DATE2 ) ),
681 0 : aDfDate2 ( this, SVX_RES( DF_DATE2 ) ),
682 0 : aTfDate2 ( this, SVX_RES( TF_DATE2 ) ),
683 0 : aIbClock2 ( this, SVX_RES( IB_CLOCK2) ),
684 0 : aCbAuthor ( this, SVX_RES( CB_AUTOR ) ),
685 0 : aLbAuthor ( this, SVX_RES( LB_AUTOR ) ),
686 0 : aCbRange ( this, SVX_RES( CB_RANGE ) ),
687 0 : aEdRange ( this, SVX_RES( ED_RANGE ) ),
688 0 : aBtnRange ( this, SVX_RES( BTN_REF ) ),
689 0 : aLbAction ( this, SVX_RES( LB_ACTION ) ),
690 0 : aCbComment ( this, SVX_RES( CB_COMMENT) ),
691 0 : aEdComment ( this, SVX_RES( ED_COMMENT) ),
692 0 : aActionStr ( SVX_RES( STR_ACTION) ),
693 0 : aStrMyName ( SVX_RES( STR_FILTER) ),
694 0 : bModified (sal_False)
695 : {
696 0 : aLbDate.SetAccessibleName( String( SVX_RES( STR_DATE_COMBOX) ) );
697 0 : aDfDate.SetAccessibleName( String( SVX_RES( STR_DATE_SPIN) ) );
698 0 : aTfDate.SetAccessibleName( String( SVX_RES( STR_DATE_TIME_SPIN) ) );
699 0 : aDfDate2.SetAccessibleName( String( SVX_RES( STR_DATE_SPIN1) ) );
700 0 : aTfDate2.SetAccessibleName( String( SVX_RES( STR_DATE_TIME_SPIN1) ) );
701 0 : aLbAuthor.SetAccessibleName(aCbAuthor.GetText());
702 0 : aLbAction.SetAccessibleName( String( SVX_RES( STR_ACTION) ) );
703 0 : aEdComment.SetAccessibleName(aCbComment.GetText());
704 0 : FreeResource();
705 :
706 0 : aDfDate.SetShowDateCentury( sal_True );
707 0 : aDfDate2.SetShowDateCentury( sal_True );
708 :
709 0 : aRangeStr=aCbRange.GetText();
710 0 : aLbDate.SelectEntryPos(0);
711 0 : aLbDate.SetSelectHdl( LINK( this, SvxTPFilter, SelDateHdl ) );
712 0 : aIbClock.SetClickHdl( LINK( this, SvxTPFilter, TimeHdl) );
713 0 : aIbClock2.SetClickHdl( LINK( this, SvxTPFilter,TimeHdl) );
714 0 : aBtnRange.SetClickHdl( LINK( this, SvxTPFilter, RefHandle));
715 :
716 0 : Link aLink=LINK( this, SvxTPFilter, RowEnableHdl) ;
717 0 : aCbDate.SetClickHdl(aLink);
718 0 : aCbAuthor.SetClickHdl(aLink);
719 0 : aCbRange.SetClickHdl(aLink);
720 0 : aCbComment.SetClickHdl(aLink);
721 :
722 0 : Link a2Link=LINK( this, SvxTPFilter, ModifyDate);
723 0 : aDfDate.SetModifyHdl(a2Link);
724 0 : aTfDate.SetModifyHdl(a2Link);
725 0 : aDfDate2.SetModifyHdl(a2Link);
726 0 : aTfDate2.SetModifyHdl(a2Link);
727 :
728 0 : Link a3Link=LINK( this, SvxTPFilter, ModifyHdl);
729 0 : aEdRange.SetModifyHdl(a3Link);
730 0 : aEdComment.SetModifyHdl(a3Link);
731 0 : aLbAction.SetSelectHdl(a3Link);
732 0 : aLbAuthor.SetSelectHdl(a3Link);
733 :
734 0 : RowEnableHdl(&aCbDate);
735 0 : RowEnableHdl(&aCbAuthor);
736 0 : RowEnableHdl(&aCbRange);
737 0 : RowEnableHdl(&aCbComment);
738 :
739 0 : Date aDate( Date::SYSTEM );
740 0 : Time aTime( Time::SYSTEM );
741 0 : aDfDate.SetDate(aDate);
742 0 : aTfDate.SetTime(aTime);
743 0 : aDfDate2.SetDate(aDate);
744 0 : aTfDate2.SetTime(aTime);
745 0 : HideRange();
746 0 : ShowAction();
747 0 : bModified=sal_False;
748 :
749 0 : aLbDate.SetAccessibleRelationLabeledBy(&aCbDate);
750 0 : aLbAuthor.SetAccessibleRelationLabeledBy(&aCbAuthor);
751 0 : aLbAction.SetAccessibleRelationLabeledBy(&aCbRange);
752 0 : aEdRange.SetAccessibleRelationLabeledBy(&aCbRange);
753 0 : aBtnRange.SetAccessibleRelationLabeledBy(&aCbRange);
754 0 : aEdComment.SetAccessibleRelationLabeledBy(&aCbComment);
755 0 : aDfDate2.SetAccessibleRelationLabeledBy(&aDfDate2);
756 0 : aTfDate2.SetAccessibleRelationLabeledBy(&aTfDate2);
757 0 : }
758 :
759 0 : void SvxTPFilter::SetRedlinTable(SvxRedlinTable* pTable)
760 : {
761 0 : pRedlinTable=pTable;
762 0 : }
763 :
764 0 : String SvxTPFilter::GetMyName() const
765 : {
766 0 : return aStrMyName;
767 : }
768 :
769 0 : void SvxTPFilter::ShowDateFields(sal_uInt16 nKind)
770 : {
771 0 : String aEmpty;
772 0 : switch(nKind)
773 : {
774 : case FLT_DATE_BEFORE:
775 0 : EnableDateLine1(sal_True);
776 0 : EnableDateLine2(sal_False);
777 0 : break;
778 : case FLT_DATE_SINCE:
779 0 : EnableDateLine1(sal_True);
780 0 : EnableDateLine2(sal_False);
781 0 : break;
782 : case FLT_DATE_EQUAL:
783 0 : EnableDateLine1(sal_True);
784 0 : aTfDate.Disable();
785 0 : aTfDate.SetText(aEmpty);
786 0 : EnableDateLine2(sal_False);
787 0 : break;
788 : case FLT_DATE_NOTEQUAL:
789 0 : EnableDateLine1(sal_True);
790 0 : aTfDate.Disable();
791 0 : aTfDate.SetText(aEmpty);
792 0 : EnableDateLine2(sal_False);
793 0 : break;
794 : case FLT_DATE_BETWEEN:
795 0 : EnableDateLine1(sal_True);
796 0 : EnableDateLine2(sal_True);
797 0 : break;
798 : case FLT_DATE_SAVE:
799 0 : EnableDateLine1(sal_False);
800 0 : EnableDateLine2(sal_False);
801 0 : break;
802 0 : }
803 0 : }
804 :
805 0 : void SvxTPFilter::EnableDateLine1(sal_Bool bFlag)
806 : {
807 0 : if(bFlag && aCbDate.IsChecked())
808 : {
809 0 : aDfDate.Enable();
810 0 : aTfDate.Enable();
811 0 : aIbClock.Enable();
812 : }
813 : else
814 : {
815 0 : aDfDate.Disable();
816 0 : aTfDate.Disable();
817 0 : aIbClock.Disable();
818 : }
819 0 : }
820 0 : void SvxTPFilter::EnableDateLine2(sal_Bool bFlag)
821 : {
822 0 : String aEmpty;
823 0 : if(bFlag && aCbDate.IsChecked())
824 : {
825 0 : aFtDate2.Enable();
826 0 : aDfDate2.Enable();
827 0 : aTfDate2.Enable();
828 0 : aIbClock2.Enable();
829 : }
830 : else
831 : {
832 0 : aFtDate2.Disable();
833 0 : aDfDate2.Disable();
834 0 : aDfDate2.SetText(aEmpty);
835 0 : aTfDate2.Disable();
836 0 : aTfDate2.SetText(aEmpty);
837 0 : aIbClock2.Disable();
838 0 : }
839 0 : }
840 :
841 0 : Date SvxTPFilter::GetFirstDate() const
842 : {
843 0 : return aDfDate.GetDate();
844 : }
845 :
846 0 : void SvxTPFilter::SetFirstDate(const Date &aDate)
847 : {
848 0 : aDfDate.SetDate(aDate);
849 0 : }
850 :
851 0 : Time SvxTPFilter::GetFirstTime() const
852 : {
853 0 : return aTfDate.GetTime();
854 : }
855 :
856 0 : void SvxTPFilter::SetFirstTime(const Time &aTime)
857 : {
858 0 : aTfDate.SetTime(aTime);
859 0 : }
860 :
861 :
862 0 : Date SvxTPFilter::GetLastDate() const
863 : {
864 0 : return aDfDate2.GetDate();
865 : }
866 :
867 0 : void SvxTPFilter::SetLastDate(const Date &aDate)
868 : {
869 0 : aDfDate2.SetDate(aDate);
870 0 : }
871 :
872 0 : Time SvxTPFilter::GetLastTime() const
873 : {
874 0 : return aTfDate2.GetTime();
875 : }
876 :
877 0 : void SvxTPFilter::SetLastTime(const Time &aTime)
878 : {
879 0 : aTfDate2.SetTime(aTime);
880 0 : }
881 :
882 0 : void SvxTPFilter::SetDateMode(sal_uInt16 nMode)
883 : {
884 0 : aLbDate.SelectEntryPos(nMode);
885 0 : SelDateHdl(&aLbDate);
886 0 : }
887 :
888 0 : sal_uInt16 SvxTPFilter::GetDateMode()
889 : {
890 0 : return (sal_uInt16) aLbDate.GetSelectEntryPos();
891 : }
892 0 : void SvxTPFilter::ClearAuthors()
893 : {
894 0 : aLbAuthor.Clear();
895 0 : }
896 :
897 0 : void SvxTPFilter::InsertAuthor( const String& rString, sal_uInt16 nPos)
898 : {
899 0 : aLbAuthor.InsertEntry(rString,nPos);
900 0 : }
901 :
902 0 : String SvxTPFilter::GetSelectedAuthor() const
903 : {
904 0 : return aLbAuthor.GetSelectEntry();
905 : }
906 :
907 0 : void SvxTPFilter::SelectedAuthorPos(sal_uInt16 nPos)
908 : {
909 0 : aLbAuthor.SelectEntryPos(nPos);
910 0 : }
911 :
912 0 : sal_uInt16 SvxTPFilter::SelectAuthor(const String& aString)
913 : {
914 0 : aLbAuthor.SelectEntry(aString);
915 0 : return aLbAuthor.GetSelectEntryPos();
916 : }
917 :
918 0 : void SvxTPFilter::SetRange(const String& rString)
919 : {
920 0 : aEdRange.SetText(rString);
921 0 : }
922 :
923 0 : String SvxTPFilter::GetRange() const
924 : {
925 0 : return aEdRange.GetText();
926 : }
927 :
928 0 : void SvxTPFilter::SetFocusToRange()
929 : {
930 0 : aEdRange.GrabFocus();
931 0 : }
932 :
933 0 : void SvxTPFilter::HideRange(sal_Bool bHide)
934 : {
935 0 : if(bHide)
936 : {
937 0 : aCbRange.Hide();
938 0 : aEdRange.Hide();
939 0 : aBtnRange.Hide();
940 : }
941 : else
942 : {
943 0 : ShowAction(sal_False);
944 0 : aCbRange.SetText(aRangeStr);
945 0 : aCbRange.Show();
946 0 : aEdRange.Show();
947 0 : aBtnRange.Show();
948 : }
949 0 : }
950 :
951 0 : void SvxTPFilter::SetComment(const String &rComment)
952 : {
953 0 : aEdComment.SetText(rComment);
954 0 : }
955 0 : String SvxTPFilter::GetComment()const
956 : {
957 0 : return aEdComment.GetText();
958 : }
959 :
960 0 : sal_Bool SvxTPFilter::IsDate()
961 : {
962 0 : return aCbDate.IsChecked();
963 : }
964 :
965 0 : sal_Bool SvxTPFilter::IsAuthor()
966 : {
967 0 : return aCbAuthor.IsChecked();
968 : }
969 :
970 0 : sal_Bool SvxTPFilter::IsRange()
971 : {
972 0 : return aCbRange.IsChecked();
973 : }
974 0 : sal_Bool SvxTPFilter::IsAction()
975 : {
976 0 : return aCbRange.IsChecked();
977 : }
978 :
979 0 : sal_Bool SvxTPFilter::IsComment()
980 : {
981 0 : return aCbComment.IsChecked();
982 : }
983 :
984 0 : void SvxTPFilter::CheckDate(sal_Bool bFlag)
985 : {
986 0 : aCbDate.Check(bFlag);
987 0 : RowEnableHdl(&aCbDate);
988 0 : bModified=sal_False;
989 0 : }
990 :
991 0 : void SvxTPFilter::CheckAuthor(sal_Bool bFlag)
992 : {
993 0 : aCbAuthor.Check(bFlag);
994 0 : RowEnableHdl(&aCbAuthor);
995 0 : bModified=sal_False;
996 0 : }
997 :
998 0 : void SvxTPFilter::CheckRange(sal_Bool bFlag)
999 : {
1000 0 : aCbRange.Check(bFlag);
1001 0 : RowEnableHdl(&aCbRange);
1002 0 : bModified=sal_False;
1003 0 : }
1004 :
1005 0 : void SvxTPFilter::CheckAction(sal_Bool bFlag)
1006 : {
1007 0 : aCbRange.Check(bFlag);
1008 0 : RowEnableHdl(&aCbRange);
1009 0 : bModified=sal_False;
1010 0 : }
1011 :
1012 0 : void SvxTPFilter::CheckComment(sal_Bool bFlag)
1013 : {
1014 0 : aCbComment.Check(bFlag);
1015 0 : RowEnableHdl(&aCbComment);
1016 0 : bModified=sal_False;
1017 0 : }
1018 :
1019 0 : void SvxTPFilter::ShowAction(sal_Bool bShow)
1020 : {
1021 0 : if(!bShow)
1022 : {
1023 0 : aCbRange.Hide();
1024 0 : aLbAction.Hide();
1025 0 : aCbRange.SetHelpId(HID_REDLINING_FILTER_CB_RANGE);
1026 : }
1027 : else
1028 : {
1029 0 : HideRange();
1030 0 : aCbRange.SetText(aActionStr);
1031 0 : aCbRange.SetHelpId(HID_REDLINING_FILTER_CB_ACTION);
1032 0 : aCbRange.Show();
1033 0 : aLbAction.Show();
1034 :
1035 : }
1036 0 : }
1037 :
1038 0 : ListBox* SvxTPFilter::GetLbAction()
1039 : {
1040 0 : return &aLbAction;
1041 : }
1042 :
1043 0 : IMPL_LINK( SvxTPFilter, SelDateHdl, ListBox*, pLb )
1044 : {
1045 0 : ShowDateFields((sal_uInt16)aLbDate.GetSelectEntryPos());
1046 0 : ModifyHdl(pLb);
1047 0 : return 0;
1048 : }
1049 :
1050 0 : IMPL_LINK( SvxTPFilter, RowEnableHdl, CheckBox*, pCB )
1051 : {
1052 0 : if(pCB==&aCbDate)
1053 : {
1054 0 : aLbDate.Enable(aCbDate.IsChecked());
1055 0 : aLbDate.Invalidate();
1056 0 : EnableDateLine1(sal_False);
1057 0 : EnableDateLine2(sal_False);
1058 0 : if(aCbDate.IsChecked()) SelDateHdl(&aLbDate);
1059 : }
1060 0 : else if(pCB==&aCbAuthor)
1061 : {
1062 0 : aLbAuthor.Enable(aCbAuthor.IsChecked());
1063 0 : aLbAuthor.Invalidate();
1064 : }
1065 0 : else if(pCB==&aCbRange)
1066 : {
1067 0 : aLbAction.Enable(aCbRange.IsChecked());
1068 0 : aLbAction.Invalidate();
1069 0 : aEdRange.Enable(aCbRange.IsChecked());
1070 0 : aBtnRange.Enable(aCbRange.IsChecked());
1071 : }
1072 0 : else if(pCB==&aCbComment)
1073 : {
1074 0 : aEdComment.Enable(aCbComment.IsChecked());
1075 0 : aEdComment.Invalidate();
1076 : }
1077 :
1078 0 : ModifyHdl(pCB);
1079 0 : return 0;
1080 : }
1081 :
1082 0 : IMPL_LINK( SvxTPFilter, TimeHdl, ImageButton*,pIB )
1083 : {
1084 0 : Date aDate( Date::SYSTEM );
1085 0 : Time aTime( Time::SYSTEM );
1086 0 : if(pIB==&aIbClock)
1087 : {
1088 0 : aDfDate.SetDate(aDate);
1089 0 : aTfDate.SetTime(aTime);
1090 : }
1091 0 : else if(pIB==&aIbClock2)
1092 : {
1093 0 : aDfDate2.SetDate(aDate);
1094 0 : aTfDate2.SetTime(aTime);
1095 : }
1096 0 : ModifyHdl(&aDfDate);
1097 0 : return 0;
1098 : }
1099 :
1100 0 : IMPL_LINK( SvxTPFilter, ModifyHdl, void*, pCtr)
1101 : {
1102 0 : if(pCtr!=NULL)
1103 : {
1104 0 : if(pCtr==&aCbDate || pCtr==&aLbDate ||
1105 : pCtr==&aDfDate || pCtr==&aTfDate ||
1106 : pCtr==&aIbClock || pCtr==&aFtDate2||
1107 : pCtr==&aDfDate2 || pCtr==&aTfDate2||
1108 : pCtr==&aIbClock2)
1109 : {
1110 0 : aModifyDateLink.Call(this);
1111 : }
1112 0 : else if(pCtr==&aCbAuthor || pCtr==&aLbAuthor)
1113 : {
1114 0 : aModifyAuthorLink.Call(this);
1115 : }
1116 0 : else if(pCtr==&aCbRange || pCtr==&aEdRange ||
1117 : pCtr==&aBtnRange )
1118 : {
1119 0 : aModifyRefLink.Call(this);
1120 : }
1121 0 : else if(pCtr==&aCbComment || pCtr==&aEdComment)
1122 : {
1123 0 : aModifyComLink.Call(this);
1124 : }
1125 :
1126 0 : bModified=sal_True;
1127 0 : aModifyLink.Call(this);
1128 : }
1129 0 : return 0;
1130 : }
1131 :
1132 0 : void SvxTPFilter::DeactivatePage()
1133 : {
1134 0 : if(bModified)
1135 : {
1136 0 : if(pRedlinTable!=NULL)
1137 : {
1138 0 : pRedlinTable->SetFilterDate(IsDate());
1139 0 : pRedlinTable->SetDateTimeMode(GetDateMode());
1140 0 : pRedlinTable->SetFirstDate(aDfDate.GetDate());
1141 0 : pRedlinTable->SetLastDate(aDfDate2.GetDate());
1142 0 : pRedlinTable->SetFirstTime(aTfDate.GetTime());
1143 0 : pRedlinTable->SetLastTime(aTfDate2.GetTime());
1144 0 : pRedlinTable->SetFilterAuthor(IsAuthor());
1145 0 : pRedlinTable->SetAuthor(GetSelectedAuthor());
1146 :
1147 0 : pRedlinTable->SetFilterComment(IsComment());
1148 :
1149 : utl::SearchParam aSearchParam( aEdComment.GetText(),
1150 0 : utl::SearchParam::SRCH_REGEXP,sal_False,sal_False,sal_False );
1151 :
1152 0 : pRedlinTable->SetCommentParams(&aSearchParam);
1153 :
1154 0 : pRedlinTable->UpdateFilterTest();
1155 : }
1156 :
1157 0 : aReadyLink.Call(this);
1158 : }
1159 0 : bModified=sal_False;
1160 0 : TabPage::DeactivatePage();
1161 0 : }
1162 :
1163 0 : void SvxTPFilter::Enable( bool bEnable, bool bChild)
1164 : {
1165 0 : TabPage::Enable(bEnable,bChild);
1166 0 : if(aCbDate.IsEnabled())
1167 : {
1168 0 : RowEnableHdl(&aCbDate);
1169 0 : RowEnableHdl(&aCbAuthor);
1170 0 : RowEnableHdl(&aCbRange);
1171 0 : RowEnableHdl(&aCbComment);
1172 : }
1173 0 : }
1174 0 : void SvxTPFilter::Disable( bool bChild)
1175 : {
1176 0 : Enable( false, bChild );
1177 0 : }
1178 :
1179 0 : IMPL_LINK( SvxTPFilter, ModifyDate, void*,pTF)
1180 : {
1181 :
1182 0 : Date aDate( Date::SYSTEM );
1183 0 : Time aTime(0);
1184 0 : if(&aDfDate==pTF)
1185 : {
1186 0 : if(aDfDate.GetText().Len()==0)
1187 0 : aDfDate.SetDate(aDate);
1188 :
1189 0 : if(pRedlinTable!=NULL)
1190 0 : pRedlinTable->SetFirstDate(aDfDate.GetDate());
1191 : }
1192 0 : else if(&aDfDate2==pTF)
1193 : {
1194 0 : if(aDfDate2.GetText().Len()==0)
1195 0 : aDfDate2.SetDate(aDate);
1196 :
1197 0 : if(pRedlinTable!=NULL)
1198 0 : pRedlinTable->SetLastDate(aDfDate2.GetDate());
1199 : }
1200 0 : else if(&aTfDate==pTF)
1201 : {
1202 0 : if(aTfDate.GetText().Len()==0)
1203 0 : aTfDate.SetTime(aTime);
1204 :
1205 0 : if(pRedlinTable!=NULL)
1206 0 : pRedlinTable->SetFirstTime(aTfDate.GetTime());
1207 : }
1208 0 : else if(&aTfDate2==pTF)
1209 : {
1210 0 : if(aTfDate2.GetText().Len()==0)
1211 0 : aTfDate2.SetTime(aTime);
1212 :
1213 0 : if(pRedlinTable!=NULL)
1214 0 : pRedlinTable->SetLastTime(aTfDate2.GetTime());
1215 :
1216 : }
1217 0 : ModifyHdl(&aDfDate);
1218 0 : return 0;
1219 : }
1220 :
1221 0 : IMPL_LINK( SvxTPFilter, RefHandle, PushButton*, pRef )
1222 : {
1223 0 : if(pRef!=NULL)
1224 : {
1225 0 : aRefLink.Call(this);
1226 : }
1227 0 : return 0;
1228 : }
1229 :
1230 19 : static Size gDiffSize;
1231 : //============================================================================
1232 : // class SvxAcceptChgCtr
1233 : //----------------------------------------------------------------------------
1234 :
1235 0 : SvxAcceptChgCtr::SvxAcceptChgCtr( Window* pParent, const ResId& rResId )
1236 : : Control(pParent,rResId ),
1237 0 : aTCAccept(this,WB_TABSTOP |WB_DIALOGCONTROL)
1238 : {
1239 0 : pTPFilter=new SvxTPFilter(&aTCAccept);
1240 0 : pTPView=new SvxTPView(&aTCAccept);
1241 0 : aMinSize=pTPView->GetMinSizePixel();
1242 :
1243 0 : aTCAccept.InsertPage( TP_VIEW, pTPView->GetMyName());
1244 0 : aTCAccept.InsertPage( TP_FILTER, pTPFilter->GetMyName());
1245 0 : aTCAccept.SetTabPage( TP_VIEW, pTPView);
1246 0 : aTCAccept.SetTabPage( TP_FILTER, pTPFilter);
1247 0 : aTCAccept.SetHelpId(HID_REDLINING_TABCONTROL);
1248 :
1249 0 : aTCAccept.SetTabPageSizePixel(aMinSize);
1250 0 : Size aSize=aTCAccept.GetSizePixel();
1251 :
1252 0 : gDiffSize.Height()=aSize.Height()-aMinSize.Height();
1253 0 : gDiffSize.Width()=aSize.Width()-aMinSize.Width();
1254 :
1255 :
1256 0 : pTPFilter->SetRedlinTable(GetViewTable());
1257 0 : WinBits nWinStyle=GetStyle()|WB_DIALOGCONTROL;
1258 0 : SetStyle(nWinStyle);
1259 :
1260 0 : aTCAccept.Show();
1261 0 : ShowViewPage();
1262 0 : Resize();
1263 0 : }
1264 :
1265 0 : SvxAcceptChgCtr::~SvxAcceptChgCtr()
1266 : {
1267 0 : delete pTPView;
1268 0 : delete pTPFilter;
1269 0 : }
1270 :
1271 0 : void SvxAcceptChgCtr::Resize()
1272 : {
1273 0 : aMinSize=pTPView->GetMinSizePixel();
1274 0 : Size aSize=GetOutputSizePixel();
1275 0 : sal_Bool bFlag=sal_False;
1276 :
1277 0 : if(aMinSize.Height()>aSize.Height())
1278 : {
1279 0 : aSize.Height()=aMinSize.Height();
1280 0 : bFlag=sal_True;
1281 : }
1282 0 : if(aMinSize.Width()>aSize.Width())
1283 : {
1284 0 : aSize.Width()=aMinSize.Width();
1285 0 : bFlag=sal_True;
1286 : }
1287 :
1288 0 : if(bFlag)
1289 : {
1290 0 : SetOutputSizePixel(aSize);
1291 0 : aMinSizeLink.Call(this);
1292 : }
1293 :
1294 0 : aSize.Height()-=2;
1295 0 : aSize.Width()-=2;
1296 0 : aTCAccept.SetSizePixel(aSize);
1297 0 : }
1298 :
1299 0 : Size SvxAcceptChgCtr::GetMinSizePixel() const
1300 : {
1301 0 : Size aSize=pTPView->GetMinSizePixel();
1302 0 : aSize.Height()+=gDiffSize.Height();
1303 0 : aSize.Width()+=gDiffSize.Width();
1304 0 : return aSize;
1305 : }
1306 :
1307 0 : void SvxAcceptChgCtr::ShowFilterPage()
1308 : {
1309 0 : aTCAccept.SetCurPageId(TP_FILTER);
1310 0 : }
1311 :
1312 0 : void SvxAcceptChgCtr::ShowViewPage()
1313 : {
1314 0 : aTCAccept.SetCurPageId(TP_VIEW);
1315 0 : }
1316 :
1317 0 : SvxTPFilter* SvxAcceptChgCtr::GetFilterPage()
1318 : {
1319 0 : return pTPFilter;
1320 : }
1321 :
1322 0 : SvxTPView* SvxAcceptChgCtr::GetViewPage()
1323 : {
1324 0 : return pTPView;
1325 : }
1326 :
1327 0 : SvxRedlinTable* SvxAcceptChgCtr::GetViewTable()
1328 : {
1329 0 : if(pTPView!=NULL)
1330 : {
1331 0 : return pTPView->GetTableControl();
1332 : }
1333 : else
1334 : {
1335 0 : return NULL;
1336 : }
1337 57 : }
1338 :
1339 :
1340 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|