LCOV - code coverage report
Current view: top level - libreoffice/svx/source/dialog - ctredlin.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 2 750 0.3 %
Date: 2012-12-27 Functions: 2 116 1.7 %
Legend: Lines: hit not hit

          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: */

Generated by: LCOV version 1.10