LCOV - code coverage report
Current view: top level - sd/source/ui/dlg - headerfooterdlg.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 0 375 0.0 %
Date: 2012-08-25 Functions: 0 39 0.0 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 0 0 -

           Branch data     Line data    Source code
       1                 :            : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2                 :            : /*************************************************************************
       3                 :            :  *
       4                 :            :  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       5                 :            :  *
       6                 :            :  * Copyright 2000, 2010 Oracle and/or its affiliates.
       7                 :            :  *
       8                 :            :  * OpenOffice.org - a multi-platform office productivity suite
       9                 :            :  *
      10                 :            :  * This file is part of OpenOffice.org.
      11                 :            :  *
      12                 :            :  * OpenOffice.org is free software: you can redistribute it and/or modify
      13                 :            :  * it under the terms of the GNU Lesser General Public License version 3
      14                 :            :  * only, as published by the Free Software Foundation.
      15                 :            :  *
      16                 :            :  * OpenOffice.org is distributed in the hope that it will be useful,
      17                 :            :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
      18                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      19                 :            :  * GNU Lesser General Public License version 3 for more details
      20                 :            :  * (a copy is included in the LICENSE file that accompanied this code).
      21                 :            :  *
      22                 :            :  * You should have received a copy of the GNU Lesser General Public License
      23                 :            :  * version 3 along with OpenOffice.org.  If not, see
      24                 :            :  * <http://www.openoffice.org/license.html>
      25                 :            :  * for a copy of the LGPLv3 License.
      26                 :            :  *
      27                 :            :  ************************************************************************/
      28                 :            : 
      29                 :            : 
      30                 :            : #ifdef SD_DLLIMPLEMENTATION
      31                 :            : #undef SD_DLLIMPLEMENTATION
      32                 :            : #endif
      33                 :            : 
      34                 :            : #include <svx/dialogs.hrc>
      35                 :            : #include <editeng/eeitem.hxx>
      36                 :            : #include <editeng/flditem.hxx>
      37                 :            : #include <editeng/langitem.hxx>
      38                 :            : #include <svx/langbox.hxx>
      39                 :            : #include <svx/svdotext.hxx>
      40                 :            : #include <editeng/editeng.hxx>
      41                 :            : #include <sfx2/viewfrm.hxx>
      42                 :            : 
      43                 :            : #include "sdresid.hxx"
      44                 :            : 
      45                 :            : #include <vcl/fixed.hxx>
      46                 :            : #include <vcl/button.hxx>
      47                 :            : #include <vcl/edit.hxx>
      48                 :            : #include <vcl/combobox.hxx>
      49                 :            : 
      50                 :            : #include "helpids.h"
      51                 :            : #include "Outliner.hxx"
      52                 :            : #include "dialogs.hrc"
      53                 :            : #include "headerfooterdlg.hxx"
      54                 :            : #include "DrawDocShell.hxx"
      55                 :            : #include "drawdoc.hxx"
      56                 :            : #include "ViewShell.hxx"
      57                 :            : 
      58                 :            : ///////////////////////////////////////////////////////////////////////
      59                 :            : // preview control for presentation layout
      60                 :            : ///////////////////////////////////////////////////////////////////////
      61                 :            : #include <vcl/ctrl.hxx>
      62                 :            : #include <tools/color.hxx>
      63                 :            : #include <i18npool/mslangid.hxx>
      64                 :            : #include <svtools/colorcfg.hxx>
      65                 :            : #include <svx/xlndsit.hxx>
      66                 :            : #include <svx/xlineit0.hxx>
      67                 :            : #include <svx/xlnclit.hxx>
      68                 :            : #include <vcl/decoview.hxx>
      69                 :            : 
      70                 :            : #include "undoheaderfooter.hxx"
      71                 :            : #include "sdundogr.hxx"
      72                 :            : 
      73                 :            : #include <basegfx/matrix/b2dhommatrix.hxx>
      74                 :            : #include <basegfx/polygon/b2dpolygontools.hxx>
      75                 :            : #include <basegfx/polygon/b2dpolypolygontools.hxx>
      76                 :            : 
      77                 :            : namespace sd
      78                 :            : {
      79                 :            : 
      80                 :            : class PresLayoutPreview : public Control
      81                 :            : {
      82                 :            : private:
      83                 :            :     SdPage* mpMaster;
      84                 :            :     HeaderFooterSettings maSettings;
      85                 :            :     Size maPageSize;
      86                 :            :     Rectangle maOutRect;
      87                 :            : 
      88                 :            : private:
      89                 :            :     void Paint( OutputDevice& aOut, SdrTextObj* pObj, bool bVisible, bool bDotted = false );
      90                 :            : 
      91                 :            : public:
      92                 :            :     PresLayoutPreview( ::Window* pParent, const ResId& rResId, SdPage* pMaster );
      93                 :            :     ~PresLayoutPreview();
      94                 :            : 
      95                 :            :     virtual void Paint( const Rectangle& rRect );
      96                 :            : 
      97                 :            :     void update( HeaderFooterSettings& rSettings );
      98                 :            : };
      99                 :            : 
     100                 :            : }
     101                 :            : 
     102                 :            : ///////////////////////////////////////////////////////////////////////
     103                 :            : // tab page for slide & header'n'notes
     104                 :            : ///////////////////////////////////////////////////////////////////////
     105                 :            : 
     106                 :            : namespace sd
     107                 :            : {
     108                 :            : 
     109                 :            : const int nDateTimeFormatsCount = 10;
     110                 :            : int nDateTimeFormats[nDateTimeFormatsCount] =
     111                 :            : {
     112                 :            :     SVXDATEFORMAT_A,
     113                 :            :     SVXDATEFORMAT_F,
     114                 :            :     SVXDATEFORMAT_D,
     115                 :            :     SVXDATEFORMAT_C,
     116                 :            : 
     117                 :            :     SVXDATEFORMAT_A | (SVXTIMEFORMAT_24_HM << 4),
     118                 :            :     SVXDATEFORMAT_A | (SVXTIMEFORMAT_12_HM << 4),
     119                 :            : 
     120                 :            :     (SVXTIMEFORMAT_24_HM << 4),
     121                 :            :     (SVXTIMEFORMAT_24_HMS <<4),
     122                 :            : 
     123                 :            :     (SVXTIMEFORMAT_12_HM << 4 ),
     124                 :            :     (SVXTIMEFORMAT_12_HMS << 4 )
     125                 :            : };
     126                 :            : 
     127                 :            : class HeaderFooterTabPage : public TabPage
     128                 :            : {
     129                 :            : private:
     130                 :            :     FixedLine   maFLIncludeOnPage;
     131                 :            : 
     132                 :            :     CheckBox    maCBHeader;
     133                 :            :     FixedText   maFTHeader;
     134                 :            :     Edit        maTBHeader;
     135                 :            : 
     136                 :            :     FixedLine   maFLDateTime;
     137                 :            :     CheckBox    maCBDateTime;
     138                 :            :     RadioButton maRBDateTimeFixed;
     139                 :            :     RadioButton maRBDateTimeAutomatic;
     140                 :            :     Edit        maTBDateTimeFixed;
     141                 :            :     ListBox     maCBDateTimeFormat;
     142                 :            :     FixedText   maFTDateTimeLanguage;
     143                 :            :     SvxLanguageBox  maCBDateTimeLanguage;
     144                 :            : 
     145                 :            :     FixedLine   maFLFooter;
     146                 :            :     CheckBox    maCBFooter;
     147                 :            :     FixedText   maFTFooter;
     148                 :            :     Edit        maTBFooter;
     149                 :            : 
     150                 :            :     FixedLine   maFLSlideNumber;
     151                 :            :     CheckBox    maCBSlideNumber;
     152                 :            : 
     153                 :            :     FixedLine   maFLNotOnTitle;
     154                 :            :     CheckBox    maCBNotOnTitle;
     155                 :            : 
     156                 :            :     PushButton      maPBApplyToAll;
     157                 :            :     PushButton      maPBApply;
     158                 :            :     CancelButton    maPBCancel;
     159                 :            :     HelpButton      maPBHelp;
     160                 :            : 
     161                 :            :     PresLayoutPreview   maCTPreview;
     162                 :            : 
     163                 :            :     SdPage*             mpCurrentPage;
     164                 :            :     SdDrawDocument *    mpDoc;
     165                 :            :     HeaderFooterDialog* mpDialog;
     166                 :            :     LanguageType        meOldLanguage;
     167                 :            : 
     168                 :            :     bool            mbHandoutMode;
     169                 :            : 
     170                 :            :     DECL_LINK( UpdateOnClickHdl, void * );
     171                 :            : 
     172                 :            :     DECL_LINK( ClickApplyToAllHdl, void * );
     173                 :            :     DECL_LINK( ClickApplyHdl, void * );
     174                 :            :     DECL_LINK( ClickCancelHdl, void * );
     175                 :            : 
     176                 :            :     DECL_LINK( LanguageChangeHdl, void * );
     177                 :            : 
     178                 :            :     void FillFormatList(int eFormat);
     179                 :            :     void GetOrSetDateTimeLanguage( LanguageType &rLanguage, bool bSet );
     180                 :            :     void GetOrSetDateTimeLanguage( LanguageType &rLanguage, bool bSet, SdPage* pPage );
     181                 :            : 
     182                 :            : public:
     183                 :            :     HeaderFooterTabPage( HeaderFooterDialog* pDialog, ::Window* pParent, SdDrawDocument* pDoc, SdPage* pActualPage, bool bHandoutMode );
     184                 :            :     ~HeaderFooterTabPage();
     185                 :            : 
     186                 :            :     static  SfxTabPage* Create( ::Window*, const SfxItemSet& );
     187                 :            :     static  sal_uInt16*    GetRanges();
     188                 :            : 
     189                 :            :     void    init( const HeaderFooterSettings& rSettings, bool bNotOnTitle, bool bHasApply );
     190                 :            :     void    getData( HeaderFooterSettings& rSettings, bool& rNotOnTitle );
     191                 :            :     void    update();
     192                 :            : };
     193                 :            : 
     194                 :            : }
     195                 :            : 
     196                 :            : ///////////////////////////////////////////////////////////////////////
     197                 :            : 
     198                 :            : using namespace ::sd;
     199                 :            : 
     200                 :            : 
     201                 :          0 : HeaderFooterDialog::HeaderFooterDialog( ViewShell* pViewShell, ::Window* pParent, SdDrawDocument* pDoc, SdPage* pCurrentPage ) :
     202                 :            :         TabDialog ( pParent, SdResId( RID_SD_DLG_HEADERFOOTER ) ),
     203                 :            :         maTabCtrl( this, SdResId( 1 ) ),
     204                 :            :         mpDoc( pDoc ),
     205                 :            :         mpCurrentPage( pCurrentPage ),
     206                 :          0 :         mpViewShell( pViewShell )
     207                 :            : {
     208                 :          0 :     FreeResource();
     209                 :            : 
     210                 :            :     SdPage* pSlide;
     211                 :            :     SdPage* pNotes;
     212                 :          0 :     if( pCurrentPage->GetPageKind() == PK_STANDARD )
     213                 :            :     {
     214                 :          0 :         pSlide = pCurrentPage;
     215                 :          0 :         pNotes = (SdPage*)pDoc->GetPage( pCurrentPage->GetPageNum() + 1 );
     216                 :            :     }
     217                 :          0 :     else if( pCurrentPage->GetPageKind() == PK_NOTES )
     218                 :            :     {
     219                 :          0 :         pNotes = pCurrentPage;
     220                 :          0 :         pSlide = (SdPage*)pDoc->GetPage( pCurrentPage->GetPageNum() -1 );
     221                 :          0 :         mpCurrentPage = pSlide;
     222                 :            :     }
     223                 :            :     else
     224                 :            :     {
     225                 :            :         // handout
     226                 :          0 :         pSlide = pDoc->GetSdPage( 0, PK_STANDARD );
     227                 :          0 :         pNotes = pDoc->GetSdPage( 0, PK_NOTES );
     228                 :          0 :         mpCurrentPage = NULL;
     229                 :            :     }
     230                 :            : 
     231                 :            : //  maTabCtrl.SetHelpId( HID_XML_FILTER_TABPAGE_CTRL );
     232                 :          0 :     maTabCtrl.Show();
     233                 :            : 
     234                 :          0 :     mpSlideTabPage = new HeaderFooterTabPage( this, &maTabCtrl, pDoc, pSlide, false );
     235                 :          0 :     mpSlideTabPage->SetHelpId( HID_SD_TABPAGE_HEADERFOOTER_SLIDE );
     236                 :          0 :     maTabCtrl.SetTabPage( RID_SD_TABPAGE_HEADERFOOTER_SLIDE, mpSlideTabPage );
     237                 :            : 
     238                 :          0 :     Size aSiz = mpSlideTabPage->GetSizePixel();
     239                 :          0 :     Size aCtrlSiz = maTabCtrl.GetOutputSizePixel();
     240                 :            :     // set size on TabControl only if smaller than TabPage
     241                 :          0 :     if ( aCtrlSiz.Width() < aSiz.Width() || aCtrlSiz.Height() < aSiz.Height() )
     242                 :            :     {
     243                 :          0 :         maTabCtrl.SetOutputSizePixel( aSiz );
     244                 :          0 :         aCtrlSiz = aSiz;
     245                 :            :     }
     246                 :            : 
     247                 :          0 :     mpNotesHandoutsTabPage = new HeaderFooterTabPage( this, &maTabCtrl, pDoc, pNotes, true );
     248                 :          0 :     mpNotesHandoutsTabPage->SetHelpId( HID_SD_TABPAGE_HEADERFOOTER_NOTESHANDOUT );
     249                 :          0 :     maTabCtrl.SetTabPage( RID_SD_TABPAGE_HEADERFOOTER_NOTESHANDOUT, mpNotesHandoutsTabPage );
     250                 :            : 
     251                 :          0 :     aSiz = mpNotesHandoutsTabPage->GetSizePixel();
     252                 :          0 :     if ( aCtrlSiz.Width() < aSiz.Width() || aCtrlSiz.Height() < aSiz.Height() )
     253                 :            :     {
     254                 :          0 :         maTabCtrl.SetOutputSizePixel( aSiz );
     255                 :          0 :         aCtrlSiz = aSiz;
     256                 :            :     }
     257                 :            : 
     258                 :          0 :     ActivatePageHdl( &maTabCtrl );
     259                 :            : 
     260                 :          0 :     AdjustLayout();
     261                 :            : 
     262                 :          0 :     maTabCtrl.SetActivatePageHdl( LINK( this, HeaderFooterDialog, ActivatePageHdl ) );
     263                 :          0 :     maTabCtrl.SetDeactivatePageHdl( LINK( this, HeaderFooterDialog, DeactivatePageHdl ) );
     264                 :            : 
     265                 :          0 :     maSlideSettings = pSlide->getHeaderFooterSettings();
     266                 :            : 
     267                 :          0 :     const HeaderFooterSettings& rTitleSettings = mpDoc->GetSdPage(0, PK_STANDARD)->getHeaderFooterSettings();
     268                 :          0 :     bool bNotOnTitle = !rTitleSettings.mbFooterVisible && !rTitleSettings.mbSlideNumberVisible && !rTitleSettings.mbDateTimeVisible;
     269                 :            : 
     270                 :          0 :     mpSlideTabPage->init( maSlideSettings, bNotOnTitle, mpCurrentPage != NULL );
     271                 :            : 
     272                 :          0 :     maNotesHandoutSettings = pNotes->getHeaderFooterSettings();
     273                 :          0 :     mpNotesHandoutsTabPage->init( maNotesHandoutSettings, false, false );
     274                 :          0 : }
     275                 :            : 
     276                 :            : // -----------------------------------------------------------------------
     277                 :            : 
     278                 :          0 : HeaderFooterDialog::~HeaderFooterDialog()
     279                 :            : {
     280                 :          0 :     delete mpSlideTabPage;
     281                 :          0 :     delete mpNotesHandoutsTabPage;
     282                 :          0 : }
     283                 :            : 
     284                 :            : // -----------------------------------------------------------------------
     285                 :            : 
     286                 :          0 : IMPL_LINK( HeaderFooterDialog, ActivatePageHdl, TabControl *, pTabCtrl )
     287                 :            : {
     288                 :          0 :     const sal_uInt16 nId = pTabCtrl->GetCurPageId();
     289                 :          0 :     TabPage* pTabPage = pTabCtrl->GetTabPage( nId );
     290                 :          0 :     pTabPage->Show();
     291                 :            : 
     292                 :          0 :     return 0;
     293                 :            : }
     294                 :            : 
     295                 :            : // -----------------------------------------------------------------------
     296                 :            : 
     297                 :          0 : IMPL_LINK_NOARG(HeaderFooterDialog, DeactivatePageHdl)
     298                 :            : {
     299                 :          0 :     return sal_True;
     300                 :            : }
     301                 :            : 
     302                 :            : // -----------------------------------------------------------------------
     303                 :            : 
     304                 :          0 : short HeaderFooterDialog::Execute()
     305                 :            : {
     306                 :          0 :     sal_uInt16 nRet = TabDialog::Execute();
     307                 :          0 :     if( nRet )
     308                 :          0 :         mpViewShell->GetDocSh()->SetModified();
     309                 :          0 :     return nRet;
     310                 :            : }
     311                 :            : 
     312                 :            : // -----------------------------------------------------------------------
     313                 :            : 
     314                 :          0 : void HeaderFooterDialog::ApplyToAll( TabPage* pPage )
     315                 :            : {
     316                 :          0 :     apply( true, pPage == mpSlideTabPage );
     317                 :          0 :     EndDialog(1);
     318                 :          0 : }
     319                 :            : 
     320                 :            : // -----------------------------------------------------------------------
     321                 :            : 
     322                 :          0 : void HeaderFooterDialog::Apply( TabPage* pPage )
     323                 :            : {
     324                 :          0 :     apply( false, pPage == mpSlideTabPage );
     325                 :          0 :     EndDialog(1);
     326                 :          0 : }
     327                 :            : 
     328                 :            : // -----------------------------------------------------------------------
     329                 :            : 
     330                 :          0 : void HeaderFooterDialog::Cancel( TabPage* )
     331                 :            : {
     332                 :          0 :     EndDialog();
     333                 :          0 : }
     334                 :            : 
     335                 :            : // -----------------------------------------------------------------------
     336                 :            : 
     337                 :          0 : void HeaderFooterDialog::apply( bool bToAll, bool bForceSlides )
     338                 :            : {
     339                 :          0 :     SdUndoGroup* pUndoGroup = new SdUndoGroup(mpDoc);
     340                 :          0 :     String aComment( GetText() );
     341                 :          0 :     pUndoGroup->SetComment( aComment );
     342                 :            : 
     343                 :          0 :     HeaderFooterSettings aNewSettings;
     344                 :            :     bool bNewNotOnTitle;
     345                 :            : 
     346                 :            :     // change slide settings first ...
     347                 :            : 
     348                 :          0 :     mpSlideTabPage->getData( aNewSettings, bNewNotOnTitle );
     349                 :            : 
     350                 :            :     // only if we pressed apply or apply all on the slide tab page or if the slide settings
     351                 :            :     // have been changed
     352                 :          0 :     if( bForceSlides || !(aNewSettings == maSlideSettings) )
     353                 :            :     {
     354                 :            :         // apply to all slides
     355                 :          0 :         if( bToAll )
     356                 :            :         {
     357                 :          0 :             int nPageCount = mpDoc->GetSdPageCount( PK_STANDARD );
     358                 :            :             int nPage;
     359                 :          0 :             for( nPage = 0; nPage < nPageCount; nPage++ )
     360                 :            :             {
     361                 :          0 :                 SdPage* pPage = mpDoc->GetSdPage( (sal_uInt16)nPage, PK_STANDARD );
     362                 :          0 :                 change( pUndoGroup, pPage, aNewSettings );
     363                 :            :             }
     364                 :            :         }
     365                 :            :         else
     366                 :            :         {
     367                 :            :             // apply only to the current slide
     368                 :            :             DBG_ASSERT( mpCurrentPage && mpCurrentPage->GetPageKind() == PK_STANDARD, "no current page to apply to!" );
     369                 :          0 :             if( mpCurrentPage && (mpCurrentPage->GetPageKind() == PK_STANDARD) )
     370                 :            :             {
     371                 :          0 :                 change( pUndoGroup, mpCurrentPage, aNewSettings );
     372                 :            :             }
     373                 :            :         }
     374                 :            :     }
     375                 :            : 
     376                 :            :     // if we don't want to have header&footer on the first slide
     377                 :          0 :     if( bNewNotOnTitle )
     378                 :            :     {
     379                 :            :         // just hide them, plain simple UI feature
     380                 :          0 :         HeaderFooterSettings aTempSettings = mpDoc->GetSdPage( 0, PK_STANDARD )->getHeaderFooterSettings();
     381                 :            : 
     382                 :          0 :         aTempSettings.mbFooterVisible = false;
     383                 :          0 :         aTempSettings.mbSlideNumberVisible = false;
     384                 :          0 :         aTempSettings.mbDateTimeVisible = false;
     385                 :            : 
     386                 :          0 :         change( pUndoGroup, mpDoc->GetSdPage( 0, PK_STANDARD ), aTempSettings );
     387                 :            :     }
     388                 :            : 
     389                 :            :     // now notes settings
     390                 :            : 
     391                 :          0 :     mpNotesHandoutsTabPage->getData( aNewSettings, bNewNotOnTitle );
     392                 :            : 
     393                 :            :     // only if we pressed apply or apply all on the notes tab page or if the notes settings
     394                 :            :     // have been changed
     395                 :          0 :     if( !bForceSlides || !(aNewSettings == maNotesHandoutSettings) )
     396                 :            :     {
     397                 :            :         // first set to all notes pages
     398                 :          0 :         int nPageCount = mpDoc->GetSdPageCount( PK_NOTES );
     399                 :            :         int nPage;
     400                 :          0 :         for( nPage = 0; nPage < nPageCount; nPage++ )
     401                 :            :         {
     402                 :          0 :             SdPage* pPage = mpDoc->GetSdPage( (sal_uInt16)nPage, PK_NOTES );
     403                 :            : 
     404                 :          0 :             change( pUndoGroup, pPage, aNewSettings );
     405                 :            :         }
     406                 :            : 
     407                 :            :         // and last but not least to the handout page
     408                 :          0 :         change( pUndoGroup, mpDoc->GetMasterSdPage( 0, PK_HANDOUT ), aNewSettings );
     409                 :            :     }
     410                 :            : 
     411                 :            :     // Undo Gruppe dem Undo Manager uebergeben
     412                 :          0 :     mpViewShell->GetViewFrame()->GetObjectShell()->GetUndoManager()->AddUndoAction(pUndoGroup);
     413                 :          0 : }
     414                 :            : 
     415                 :            : // -----------------------------------------------------------------------
     416                 :            : 
     417                 :          0 : void HeaderFooterDialog::change( SdUndoGroup* pUndoGroup, SdPage* pPage, const HeaderFooterSettings& rNewSettings )
     418                 :            : {
     419                 :          0 :     pUndoGroup->AddAction(new SdHeaderFooterUndoAction(mpDoc, pPage, rNewSettings ));
     420                 :          0 :     pPage->setHeaderFooterSettings( rNewSettings );
     421                 :          0 : }
     422                 :            : 
     423                 :            : ///////////////////////////////////////////////////////////////////////
     424                 :            : 
     425                 :          0 : inline void moveY( ::Window& rWin, int deltaY )
     426                 :            : {
     427                 :          0 :     Point aPos = rWin.GetPosPixel();
     428                 :          0 :     aPos.Y() += deltaY;
     429                 :          0 :     rWin.SetPosPixel( aPos );
     430                 :          0 : }
     431                 :            : 
     432                 :          0 : HeaderFooterTabPage::HeaderFooterTabPage( HeaderFooterDialog* pDialog, ::Window* pWindow, SdDrawDocument* pDoc, SdPage* pActualPage, bool bHandoutMode ) :
     433                 :            :         TabPage( pWindow, SdResId( RID_SD_TABPAGE_HEADERFOOTER ) ),
     434                 :            :         maFLIncludeOnPage( this, SdResId( FL_INCLUDE_ON_PAGE ) ),
     435                 :            :         maCBHeader( this, SdResId( CB_HEADER ) ),
     436                 :            :         maFTHeader( this, SdResId( FT_HEADER ) ),
     437                 :            :         maTBHeader( this, SdResId( TB_HEADER_FIXED ) ),
     438                 :            :         maFLDateTime( this, SdResId( FL_DATETIME ) ),
     439                 :            :         maCBDateTime( this, SdResId( CB_DATETIME ) ),
     440                 :            :         maRBDateTimeFixed( this, SdResId( RB_DATETIME_FIXED ) ),
     441                 :            :         maRBDateTimeAutomatic( this, SdResId( RB_DATETIME_AUTOMATIC ) ),
     442                 :            :         maTBDateTimeFixed( this, SdResId( TB_DATETIME_FIXED ) ),
     443                 :            :         maCBDateTimeFormat( this, SdResId( CB_DATETIME_FORMAT ) ),
     444                 :            :         maFTDateTimeLanguage( this, SdResId( FT_DATETIME_LANGUAGE ) ),
     445                 :            :         maCBDateTimeLanguage( this, SdResId( CB_DATETIME_LANGUAGE ) ),
     446                 :            : 
     447                 :            :         maFLFooter( this, SdResId( FL_FOOTER ) ),
     448                 :            :         maCBFooter( this, SdResId( CB_FOOTER ) ),
     449                 :            :         maFTFooter( this, SdResId( FT_FOOTER ) ),
     450                 :            :         maTBFooter( this, SdResId( TB_FOOTER_FIXED ) ),
     451                 :            : 
     452                 :            :         maFLSlideNumber( this, SdResId( FL_SLIDENUMBER ) ),
     453                 :            :         maCBSlideNumber( this, SdResId( CB_SLIDENUMBER ) ),
     454                 :            : 
     455                 :            :         maFLNotOnTitle( this, SdResId( FL_NOTONTITLE ) ),
     456                 :            :         maCBNotOnTitle( this, SdResId( CB_NOTONTITLE ) ),
     457                 :            : 
     458                 :            :         maPBApplyToAll( this, SdResId( BT_APPLYTOALL ) ),
     459                 :            :         maPBApply( this, SdResId( BT_APPLY ) ),
     460                 :            :         maPBCancel( this, SdResId( BT_CANCEL ) ),
     461                 :            :         maPBHelp( this, SdResId( BT_HELP ) ),
     462                 :            : 
     463                 :            :         maCTPreview( this, SdResId( CT_PREVIEW ),
     464                 :            :             pActualPage ?
     465                 :          0 :                 (pActualPage->IsMasterPage() ? pActualPage : (SdPage*)(&(pActualPage->TRG_GetMasterPage()))) :
     466                 :          0 :                 (pDoc->GetMasterSdPage( 0, bHandoutMode ? PK_NOTES : PK_STANDARD )) ),
     467                 :            :         mpCurrentPage(pActualPage),
     468                 :            :         mpDoc(pDoc),
     469                 :            :         mpDialog(pDialog),
     470                 :          0 :         mbHandoutMode( bHandoutMode )
     471                 :            : 
     472                 :            : {
     473                 :          0 :     pDoc->StopWorkStartupDelay();
     474                 :            : 
     475                 :          0 :     if( !mbHandoutMode )
     476                 :            :     {
     477                 :          0 :         int deltaY = maCBHeader.GetPosPixel().Y() - maCBDateTime.GetPosPixel().Y();
     478                 :            : 
     479                 :          0 :         moveY( maCBDateTime, deltaY );
     480                 :          0 :         moveY( maRBDateTimeFixed, deltaY );
     481                 :          0 :         moveY( maRBDateTimeAutomatic, deltaY );
     482                 :          0 :         moveY( maTBDateTimeFixed, deltaY );
     483                 :          0 :         moveY( maCBDateTimeFormat, deltaY );
     484                 :          0 :         moveY( maFTDateTimeLanguage, deltaY );
     485                 :          0 :         moveY( maCBDateTimeLanguage, deltaY );
     486                 :          0 :         moveY( maFLFooter, deltaY );
     487                 :          0 :         moveY( maCBFooter, deltaY );
     488                 :          0 :         moveY( maFTFooter, deltaY );
     489                 :          0 :         moveY( maTBFooter, deltaY );
     490                 :          0 :         moveY( maFLSlideNumber, deltaY );
     491                 :          0 :         moveY( maCBSlideNumber, deltaY );
     492                 :          0 :         moveY( maFLNotOnTitle, deltaY );
     493                 :          0 :         moveY( maCBNotOnTitle, deltaY );
     494                 :            :     }
     495                 :            :     else
     496                 :            :     {
     497                 :          0 :         int deltaY = maPBApply.GetPosPixel().Y() - maPBCancel.GetPosPixel().Y();
     498                 :            : 
     499                 :          0 :         moveY( maPBCancel, deltaY );
     500                 :          0 :         moveY( maPBHelp, deltaY );
     501                 :            : 
     502                 :          0 :         String aPageNumberStr( SdResId( STR_PAGE_NUMBER ) );
     503                 :          0 :         maCBSlideNumber.SetText( aPageNumberStr );
     504                 :            : 
     505                 :          0 :         String aIncludeOnPageStr( SdResId( STR_INCLUDE_ON_PAGE ) );
     506                 :          0 :         maFLIncludeOnPage.SetText( aIncludeOnPageStr );
     507                 :            :     }
     508                 :            : 
     509                 :          0 :     FreeResource();
     510                 :            : 
     511                 :          0 :     maPBApply.Show( !mbHandoutMode );
     512                 :          0 :     maCBHeader.Show( mbHandoutMode );
     513                 :          0 :     maFTHeader.Show( mbHandoutMode );
     514                 :          0 :     maTBHeader.Show( mbHandoutMode );
     515                 :          0 :     maFLDateTime.Show( mbHandoutMode );
     516                 :          0 :     maFLNotOnTitle.Show( !mbHandoutMode );
     517                 :          0 :     maCBNotOnTitle.Show( !mbHandoutMode );
     518                 :            : 
     519                 :          0 :     maCBDateTime.SetClickHdl( LINK( this, HeaderFooterTabPage, UpdateOnClickHdl ) );
     520                 :          0 :     maRBDateTimeFixed.SetClickHdl( LINK( this, HeaderFooterTabPage, UpdateOnClickHdl ) );
     521                 :          0 :     maRBDateTimeAutomatic.SetClickHdl( LINK( this, HeaderFooterTabPage, UpdateOnClickHdl ) );
     522                 :          0 :     maCBFooter.SetClickHdl( LINK( this, HeaderFooterTabPage, UpdateOnClickHdl ) );
     523                 :          0 :     maCBHeader.SetClickHdl( LINK( this, HeaderFooterTabPage, UpdateOnClickHdl ) );
     524                 :          0 :     maCBSlideNumber.SetClickHdl( LINK( this, HeaderFooterTabPage, UpdateOnClickHdl ) );
     525                 :            : 
     526                 :          0 :     maPBApplyToAll.SetClickHdl( LINK( this, HeaderFooterTabPage, ClickApplyToAllHdl ) );
     527                 :          0 :     maPBApply.SetClickHdl( LINK( this, HeaderFooterTabPage, ClickApplyHdl ) );
     528                 :          0 :     maPBCancel.SetClickHdl( LINK( this, HeaderFooterTabPage, ClickCancelHdl ) );
     529                 :            : 
     530                 :          0 :     maCBDateTimeLanguage.SetLanguageList( LANG_LIST_ALL|LANG_LIST_ONLY_KNOWN, false );
     531                 :          0 :     maCBDateTimeLanguage.SetSelectHdl( LINK( this, HeaderFooterTabPage, LanguageChangeHdl ) );
     532                 :            : 
     533                 :          0 :     GetOrSetDateTimeLanguage( meOldLanguage, false );
     534                 :          0 :     meOldLanguage = MsLangId::getRealLanguage( meOldLanguage );
     535                 :          0 :     maCBDateTimeLanguage.SelectLanguage( meOldLanguage );
     536                 :            : 
     537                 :          0 :     FillFormatList(SVXDATEFORMAT_A);
     538                 :            : 
     539                 :          0 :     maTBHeader.SetAccessibleRelationMemberOf(&maCBHeader);
     540                 :          0 :     maRBDateTimeFixed.SetAccessibleRelationMemberOf(&maCBDateTime);
     541                 :          0 :     maRBDateTimeAutomatic.SetAccessibleRelationMemberOf(&maCBDateTime);
     542                 :          0 :     maTBDateTimeFixed.SetAccessibleName(maRBDateTimeFixed.GetText());
     543                 :          0 :     maTBDateTimeFixed.SetAccessibleRelationMemberOf(&maCBDateTime);
     544                 :          0 :     maTBDateTimeFixed.SetAccessibleRelationLabeledBy(&maRBDateTimeFixed);
     545                 :          0 :     maCBDateTimeFormat.SetAccessibleRelationMemberOf(&maCBDateTime);
     546                 :          0 :     maCBDateTimeFormat.SetAccessibleName(maRBDateTimeAutomatic.GetText());
     547                 :          0 :     maCBDateTimeFormat.SetAccessibleRelationLabeledBy(&maRBDateTimeAutomatic);
     548                 :          0 :     maCBDateTimeLanguage.SetAccessibleRelationMemberOf(&maCBDateTime);
     549                 :          0 :     maTBFooter.SetAccessibleRelationMemberOf(&maCBFooter);
     550                 :          0 :     maCBSlideNumber.SetAccessibleRelationMemberOf(&maFLIncludeOnPage);
     551                 :          0 :     maCBFooter.SetAccessibleRelationMemberOf(&maFLIncludeOnPage);
     552                 :          0 : }
     553                 :            : // -----------------------------------------------------------------------
     554                 :            : 
     555                 :          0 : HeaderFooterTabPage::~HeaderFooterTabPage()
     556                 :            : {
     557                 :          0 : }
     558                 :            : 
     559                 :            : // -----------------------------------------------------------------------
     560                 :            : 
     561                 :          0 : IMPL_LINK_NOARG(HeaderFooterTabPage, LanguageChangeHdl)
     562                 :            : {
     563                 :          0 :     FillFormatList( (int)(sal_IntPtr)maCBDateTimeFormat.GetEntryData( maCBDateTimeFormat.GetSelectEntryPos() ) );
     564                 :            : 
     565                 :            : 
     566                 :          0 :     return 0L;
     567                 :            : }
     568                 :            : 
     569                 :            : // -----------------------------------------------------------------------
     570                 :            : 
     571                 :          0 : void HeaderFooterTabPage::FillFormatList( int eFormat )
     572                 :            : {
     573                 :          0 :     LanguageType eLanguage = maCBDateTimeLanguage.GetSelectLanguage();
     574                 :            : 
     575                 :          0 :     maCBDateTimeFormat.Clear();
     576                 :            : 
     577                 :          0 :     Date aDate( Date::SYSTEM );
     578                 :          0 :     Time aTime( Time::SYSTEM );
     579                 :            : 
     580                 :            :     int nFormat;
     581                 :          0 :     for( nFormat = 0; nFormat < nDateTimeFormatsCount; nFormat++ )
     582                 :            :     {
     583                 :          0 :         String aStr( SvxDateTimeField::GetFormatted( aDate, aTime, nDateTimeFormats[nFormat], *(SD_MOD()->GetNumberFormatter()), eLanguage ) );
     584                 :          0 :         sal_uInt16 nEntry = maCBDateTimeFormat.InsertEntry( aStr );
     585                 :          0 :         maCBDateTimeFormat.SetEntryData( nEntry, (void*)(sal_IntPtr)nDateTimeFormats[nFormat] );
     586                 :          0 :         if( nDateTimeFormats[nFormat] == eFormat )
     587                 :            :         {
     588                 :          0 :             maCBDateTimeFormat.SelectEntryPos( nEntry );
     589                 :          0 :             maCBDateTimeFormat.SetText( aStr );
     590                 :            :         }
     591                 :          0 :     }
     592                 :          0 : }
     593                 :            : 
     594                 :            : // -----------------------------------------------------------------------
     595                 :            : 
     596                 :          0 : void HeaderFooterTabPage::init( const HeaderFooterSettings& rSettings, bool bNotOnTitle, bool bHasApply )
     597                 :            : {
     598                 :          0 :     maCBDateTime.Check( rSettings.mbDateTimeVisible );
     599                 :          0 :     maRBDateTimeFixed.Check( rSettings.mbDateTimeIsFixed );
     600                 :          0 :     maRBDateTimeAutomatic.Check( !rSettings.mbDateTimeIsFixed );
     601                 :          0 :     maTBDateTimeFixed.SetText( rSettings.maDateTimeText );
     602                 :            : 
     603                 :          0 :     maCBHeader.Check( rSettings.mbHeaderVisible );
     604                 :          0 :     maTBHeader.SetText( rSettings.maHeaderText );
     605                 :            : 
     606                 :          0 :     maCBFooter.Check( rSettings.mbFooterVisible );
     607                 :          0 :     maTBFooter.SetText( rSettings.maFooterText );
     608                 :            : 
     609                 :          0 :     maCBSlideNumber.Check( rSettings.mbSlideNumberVisible );
     610                 :            : 
     611                 :          0 :     maCBNotOnTitle.Check( bNotOnTitle );
     612                 :          0 :     maPBApply.Enable( bHasApply );
     613                 :            : 
     614                 :          0 :     maCBDateTimeLanguage.SelectLanguage( meOldLanguage );
     615                 :            : 
     616                 :            :     sal_uInt16 nPos;
     617                 :          0 :     for( nPos = 0; nPos < maCBDateTimeFormat.GetEntryCount(); nPos++ )
     618                 :            :     {
     619                 :          0 :         int nFormat = (int)(sal_IntPtr)maCBDateTimeFormat.GetEntryData( nPos );
     620                 :          0 :         if( nFormat == rSettings.meDateTimeFormat )
     621                 :            :         {
     622                 :          0 :             maCBDateTimeFormat.SelectEntryPos( nPos );
     623                 :          0 :             maCBDateTimeFormat.SetText( maCBDateTimeFormat.GetEntry(nPos) );
     624                 :          0 :             break;
     625                 :            :         }
     626                 :            :     }
     627                 :            : 
     628                 :          0 :     update();
     629                 :          0 : }
     630                 :            : 
     631                 :            : // -----------------------------------------------------------------------
     632                 :            : 
     633                 :          0 : void HeaderFooterTabPage::getData( HeaderFooterSettings& rSettings, bool& rNotOnTitle )
     634                 :            : {
     635                 :          0 :     rSettings.mbDateTimeVisible = maCBDateTime.IsChecked();
     636                 :          0 :     rSettings.mbDateTimeIsFixed = maRBDateTimeFixed.IsChecked();
     637                 :          0 :     rSettings.maDateTimeText = maTBDateTimeFixed.GetText();
     638                 :          0 :     rSettings.mbFooterVisible = maCBFooter.IsChecked();
     639                 :          0 :     rSettings.maFooterText = maTBFooter.GetText();
     640                 :          0 :     rSettings.mbSlideNumberVisible = maCBSlideNumber.IsChecked();
     641                 :          0 :     rSettings.mbHeaderVisible = maCBHeader.IsChecked();
     642                 :          0 :     rSettings.maHeaderText = maTBHeader.GetText();
     643                 :            : 
     644                 :          0 :     if( maCBDateTimeFormat.GetSelectEntryCount() == 1 )
     645                 :          0 :         rSettings.meDateTimeFormat = (int)(sal_IntPtr)maCBDateTimeFormat.GetEntryData( maCBDateTimeFormat.GetSelectEntryPos() );
     646                 :            : 
     647                 :          0 :     LanguageType eLanguage = maCBDateTimeLanguage.GetSelectLanguage();
     648                 :          0 :     if( eLanguage != meOldLanguage )
     649                 :          0 :         GetOrSetDateTimeLanguage( eLanguage, true );
     650                 :            : 
     651                 :          0 :     rNotOnTitle = maCBNotOnTitle.IsChecked();
     652                 :          0 : }
     653                 :            : 
     654                 :            : // -----------------------------------------------------------------------
     655                 :            : 
     656                 :          0 : void HeaderFooterTabPage::update()
     657                 :            : {
     658                 :          0 :     maRBDateTimeFixed.Enable( maCBDateTime.IsChecked() );
     659                 :          0 :     maTBDateTimeFixed.Enable( maRBDateTimeFixed.IsChecked() && maCBDateTime.IsChecked() );
     660                 :          0 :     maRBDateTimeAutomatic.Enable( maCBDateTime.IsChecked() );
     661                 :          0 :     maCBDateTimeFormat.Enable( maCBDateTime.IsChecked() && maRBDateTimeAutomatic.IsChecked() );
     662                 :          0 :     maFTDateTimeLanguage.Enable( maCBDateTime.IsChecked() && maRBDateTimeAutomatic.IsChecked() );
     663                 :          0 :     maCBDateTimeLanguage.Enable( maCBDateTime.IsChecked() && maRBDateTimeAutomatic.IsChecked() );
     664                 :            : 
     665                 :          0 :     maFTFooter.Enable( maCBFooter.IsChecked() );
     666                 :          0 :     maTBFooter.Enable( maCBFooter.IsChecked() );
     667                 :            : 
     668                 :          0 :     maFTHeader.Enable( maCBHeader.IsChecked() );
     669                 :          0 :     maTBHeader.Enable( maCBHeader.IsChecked() );
     670                 :            : 
     671                 :          0 :     HeaderFooterSettings aSettings;
     672                 :            :     bool bNotOnTitle;
     673                 :          0 :     getData( aSettings, bNotOnTitle );
     674                 :          0 :     maCTPreview.update( aSettings );
     675                 :          0 : }
     676                 :            : 
     677                 :            : // -----------------------------------------------------------------------
     678                 :            : 
     679                 :          0 : IMPL_LINK_NOARG(HeaderFooterTabPage, UpdateOnClickHdl)
     680                 :            : {
     681                 :          0 :     update();
     682                 :            : 
     683                 :          0 :     return 0;
     684                 :            : }
     685                 :            : 
     686                 :            : // -----------------------------------------------------------------------
     687                 :            : 
     688                 :          0 : IMPL_LINK_NOARG(HeaderFooterTabPage, ClickApplyToAllHdl)
     689                 :            : {
     690                 :          0 :     mpDialog->ApplyToAll( this );
     691                 :          0 :     return 0;
     692                 :            : }
     693                 :            : 
     694                 :            : // -----------------------------------------------------------------------
     695                 :            : 
     696                 :          0 : IMPL_LINK_NOARG(HeaderFooterTabPage, ClickApplyHdl)
     697                 :            : {
     698                 :          0 :     mpDialog->Apply( this );
     699                 :          0 :     return 0;
     700                 :            : }
     701                 :            : 
     702                 :            : // -----------------------------------------------------------------------
     703                 :            : 
     704                 :          0 : IMPL_LINK_NOARG(HeaderFooterTabPage, ClickCancelHdl)
     705                 :            : {
     706                 :          0 :     mpDialog->Cancel( this );
     707                 :          0 :     return 0;
     708                 :            : }
     709                 :            : 
     710                 :            : // -----------------------------------------------------------------------
     711                 :            : 
     712                 :          0 : void HeaderFooterTabPage::GetOrSetDateTimeLanguage( LanguageType &rLanguage, bool bSet )
     713                 :            : {
     714                 :          0 :     if( mbHandoutMode )
     715                 :            :     {
     716                 :            :         // if set, set it on all notes master pages
     717                 :          0 :         if( bSet )
     718                 :            :         {
     719                 :          0 :             sal_uInt16 nPageCount = mpDoc->GetMasterSdPageCount( PK_NOTES );
     720                 :            :             sal_uInt16 nPage;
     721                 :          0 :             for( nPage = 0; nPage < nPageCount; nPage++ )
     722                 :            :             {
     723                 :          0 :                 GetOrSetDateTimeLanguage( rLanguage, bSet, mpDoc->GetMasterSdPage( nPage, PK_NOTES ) );
     724                 :            :             }
     725                 :            :         }
     726                 :            : 
     727                 :            :         // and set it, or just get it from the handout master page
     728                 :          0 :         GetOrSetDateTimeLanguage( rLanguage, bSet, mpDoc->GetMasterSdPage( 0, PK_HANDOUT ) );
     729                 :            :     }
     730                 :            :     else
     731                 :            :     {
     732                 :            :         // get the language from the first master page
     733                 :            :         // or set it to all master pages
     734                 :          0 :         sal_uInt16 nPageCount = bSet ? mpDoc->GetMasterSdPageCount( PK_NOTES ) : 1;
     735                 :            :         sal_uInt16 nPage;
     736                 :          0 :         for( nPage = 0; nPage < nPageCount; nPage++ )
     737                 :            :         {
     738                 :          0 :             GetOrSetDateTimeLanguage( rLanguage, bSet, mpDoc->GetMasterSdPage( nPage, PK_STANDARD ) );
     739                 :            :         }
     740                 :            :     }
     741                 :          0 : }
     742                 :            : 
     743                 :            : // -----------------------------------------------------------------------
     744                 :            : 
     745                 :          0 : void HeaderFooterTabPage::GetOrSetDateTimeLanguage( LanguageType &rLanguage, bool bSet, SdPage* pPage )
     746                 :            : {
     747                 :          0 :     if( pPage )
     748                 :            :     {
     749                 :          0 :         SdrTextObj* pObj = (SdrTextObj*)pPage->GetPresObj( PRESOBJ_DATETIME );
     750                 :          0 :         if( pObj )
     751                 :            :         {
     752                 :          0 :             Outliner* pOutl = mpDoc->GetInternalOutliner();
     753                 :          0 :             pOutl->Init( OUTLINERMODE_TEXTOBJECT );
     754                 :          0 :             sal_uInt16 nOutlMode = pOutl->GetMode();
     755                 :            : 
     756                 :          0 :             EditEngine* pEdit = const_cast< EditEngine* >(&pOutl->GetEditEngine());
     757                 :            : 
     758                 :          0 :             OutlinerParaObject* pOPO = pObj->GetOutlinerParaObject();
     759                 :          0 :             if( pOPO )
     760                 :          0 :                 pOutl->SetText( *pOPO );
     761                 :            : 
     762                 :          0 :             EFieldInfo aFieldInfo;
     763                 :          0 :             aFieldInfo.pFieldItem = NULL;
     764                 :            : 
     765                 :          0 :             sal_uInt16 nParaCount = pEdit->GetParagraphCount();
     766                 :            :             sal_uInt16 nPara;
     767                 :          0 :             for( nPara = 0; (nPara < nParaCount) && (aFieldInfo.pFieldItem == NULL); nPara++ )
     768                 :            :             {
     769                 :          0 :                 sal_uInt16 nFieldCount = pEdit->GetFieldCount( nPara );
     770                 :            :                 sal_uInt16 nField;
     771                 :          0 :                 for( nField = 0; (nField < nFieldCount) && (aFieldInfo.pFieldItem == NULL); nField++ )
     772                 :            :                 {
     773                 :          0 :                     aFieldInfo = pEdit->GetFieldInfo( nPara, nField );
     774                 :          0 :                     if( aFieldInfo.pFieldItem )
     775                 :            :                     {
     776                 :          0 :                         const SvxFieldData* pFieldData = aFieldInfo.pFieldItem->GetField();
     777                 :          0 :                         if( pFieldData && pFieldData->ISA( SvxDateTimeField ) )
     778                 :            :                         {
     779                 :          0 :                             break;
     780                 :            :                         }
     781                 :            :                     }
     782                 :          0 :                     aFieldInfo.pFieldItem = NULL;
     783                 :            :                 }
     784                 :            :             }
     785                 :            : 
     786                 :            : 
     787                 :          0 :             if( aFieldInfo.pFieldItem != NULL )
     788                 :            :             {
     789                 :          0 :                 if( bSet )
     790                 :            :                 {
     791                 :          0 :                     SfxItemSet aSet( pEdit->GetAttribs( aFieldInfo.aPosition.nPara, aFieldInfo.aPosition.nIndex, aFieldInfo.aPosition.nIndex+1, bSet ? GETATTRIBS_CHARATTRIBS : GETATTRIBS_ALL ) );
     792                 :            : 
     793                 :          0 :                     SvxLanguageItem aItem( rLanguage, EE_CHAR_LANGUAGE );
     794                 :          0 :                     aSet.Put( aItem );
     795                 :            : 
     796                 :          0 :                     SvxLanguageItem aItemCJK( rLanguage, EE_CHAR_LANGUAGE_CJK );
     797                 :          0 :                     aSet.Put( aItemCJK );
     798                 :            : 
     799                 :          0 :                     SvxLanguageItem aItemCTL( rLanguage, EE_CHAR_LANGUAGE_CTL );
     800                 :          0 :                     aSet.Put( aItemCTL );
     801                 :            : 
     802                 :          0 :                     ESelection aSel( aFieldInfo.aPosition.nPara, aFieldInfo.aPosition.nIndex, aFieldInfo.aPosition.nPara, aFieldInfo.aPosition.nIndex+1 );
     803                 :          0 :                     pEdit->QuickSetAttribs( aSet, aSel );
     804                 :            : 
     805                 :          0 :                     pObj->SetOutlinerParaObject( pOutl->CreateParaObject() );
     806                 :          0 :                     pOutl->UpdateFields();
     807                 :            :                 }
     808                 :            :                 else
     809                 :            :                 {
     810                 :          0 :                     rLanguage =  pOutl->GetLanguage( aFieldInfo.aPosition.nPara, aFieldInfo.aPosition.nIndex );
     811                 :            :                 }
     812                 :            :             }
     813                 :            : 
     814                 :          0 :             pOutl->Clear();
     815                 :          0 :             pOutl->Init( nOutlMode );
     816                 :            :         }
     817                 :            :     }
     818                 :          0 : }
     819                 :            : 
     820                 :            : ///////////////////////////////////////////////////////////////////////
     821                 :            : 
     822                 :          0 : PresLayoutPreview::PresLayoutPreview( ::Window* pParent, const ResId& rResId, SdPage* pMaster )
     823                 :          0 : :Control( pParent, rResId ), mpMaster( pMaster ), maPageSize( pMaster->GetSize() )
     824                 :            : {
     825                 :          0 : }
     826                 :            : 
     827                 :            : // -----------------------------------------------------------------------
     828                 :            : 
     829                 :          0 : PresLayoutPreview::~PresLayoutPreview()
     830                 :            : {
     831                 :          0 : }
     832                 :            : 
     833                 :            : // -----------------------------------------------------------------------
     834                 :            : 
     835                 :          0 : void PresLayoutPreview::update( HeaderFooterSettings& rSettings )
     836                 :            : {
     837                 :          0 :     maSettings = rSettings;
     838                 :          0 :     Invalidate();
     839                 :          0 : }
     840                 :            : 
     841                 :            : // -----------------------------------------------------------------------
     842                 :            : 
     843                 :          0 : void PresLayoutPreview::Paint( OutputDevice& aOut, SdrTextObj* pObj, bool bVisible, bool bDotted /* = false*/ )
     844                 :            : {
     845                 :            :     // get object transformation
     846                 :          0 :     basegfx::B2DHomMatrix aObjectTransform;
     847                 :          0 :     basegfx::B2DPolyPolygon aObjectPolyPolygon;
     848                 :          0 :     pObj->TRGetBaseGeometry(aObjectTransform, aObjectPolyPolygon);
     849                 :            : 
     850                 :            :     // build complete transformation by adding view transformation from
     851                 :            :     // logic page coordinates to local pixel coordinates
     852                 :          0 :     const double fScaleX((double)maOutRect.getWidth() / (double)maPageSize.Width());
     853                 :          0 :     const double fScaleY((double)maOutRect.getHeight() / (double)maPageSize.Height());
     854                 :          0 :     aObjectTransform.scale(fScaleX, fScaleY);
     855                 :          0 :     aObjectTransform.translate(maOutRect.TopLeft().X(), maOutRect.TopLeft().Y());
     856                 :            : 
     857                 :            :     // create geometry using unit range and object transform
     858                 :          0 :     basegfx::B2DPolyPolygon aGeometry(basegfx::tools::createUnitPolygon());
     859                 :          0 :     aGeometry.transform(aObjectTransform);
     860                 :            : 
     861                 :            :     // apply line pattern if wanted
     862                 :          0 :     if(bDotted)
     863                 :            :     {
     864                 :          0 :         ::std::vector<double> aPattern;
     865                 :            :         static double fFactor(1.0);
     866                 :          0 :         aPattern.push_back(3.0 * fFactor);
     867                 :          0 :         aPattern.push_back(1.0 * fFactor);
     868                 :            : 
     869                 :          0 :         basegfx::B2DPolyPolygon aDashed;
     870                 :          0 :         basegfx::tools::applyLineDashing(aGeometry, aPattern, &aDashed);
     871                 :          0 :         aGeometry = aDashed;
     872                 :            :     }
     873                 :            : 
     874                 :            :     // determine line color
     875                 :          0 :     svtools::ColorConfig aColorConfig;
     876                 :          0 :     svtools::ColorConfigValue aColor( aColorConfig.GetColorValue( bVisible ? svtools::FONTCOLOR : svtools::OBJECTBOUNDARIES ) );
     877                 :            : 
     878                 :            :     // paint at OutDev
     879                 :          0 :     aOut.SetLineColor(Color(aColor.nColor));
     880                 :          0 :     aOut.SetFillColor();
     881                 :            : 
     882                 :          0 :     for(sal_uInt32 a(0); a < aGeometry.count(); a++)
     883                 :            :     {
     884                 :          0 :         aOut.DrawPolyLine(aGeometry.getB2DPolygon(a));
     885                 :          0 :     }
     886                 :          0 : }
     887                 :            : 
     888                 :            : // -----------------------------------------------------------------------
     889                 :            : 
     890                 :          0 : void PresLayoutPreview::Paint( const Rectangle& )
     891                 :            : {
     892                 :          0 :     Push();
     893                 :            : 
     894                 :          0 :     maOutRect = Rectangle( Point(0,0), GetOutputSize() );
     895                 :            : 
     896                 :            :     // calculate page size with correct aspect ratio
     897                 :            :     int nWidth, nHeight;
     898                 :          0 :     if( maPageSize.Width() > maPageSize.Height() )
     899                 :            :     {
     900                 :          0 :         nWidth = maOutRect.GetWidth();
     901                 :          0 :         nHeight = long( (double)(nWidth * maPageSize.Height()) / (double)maPageSize.Width() );
     902                 :            :     }
     903                 :            :     else
     904                 :            :     {
     905                 :          0 :         nHeight = maOutRect.GetHeight();
     906                 :          0 :         nWidth = long( (double)(nHeight * maPageSize.Width()) / (double)maPageSize.Height() );
     907                 :            :     }
     908                 :            : 
     909                 :          0 :     maOutRect.nLeft += (maOutRect.GetWidth() - nWidth) >> 1;
     910                 :          0 :     maOutRect.nRight = maOutRect.nLeft + nWidth - 1;
     911                 :          0 :     maOutRect.nTop += (maOutRect.GetHeight() - nHeight) >> 1;
     912                 :          0 :     maOutRect.nBottom = maOutRect.nTop + nHeight - 1;
     913                 :            : 
     914                 :            :     // draw decoration frame
     915                 :          0 :     DecorationView aDecoView( this );
     916                 :          0 :     maOutRect = aDecoView.DrawFrame( maOutRect, FRAME_HIGHLIGHT_IN );
     917                 :            : 
     918                 :            :     // draw page background
     919                 :          0 :     SetFillColor( Color(COL_WHITE) );
     920                 :          0 :     DrawRect( maOutRect );
     921                 :            : 
     922                 :            :     // paint presentation objects from masterpage
     923                 :          0 :     SdrTextObj* pMasterTitle = (SdrTextObj*)mpMaster->GetPresObj( PRESOBJ_TITLE );
     924                 :          0 :     SdrTextObj* pMasterOutline = (SdrTextObj*)mpMaster->GetPresObj( mpMaster->GetPageKind()==PK_NOTES ? PRESOBJ_NOTES : PRESOBJ_OUTLINE );
     925                 :          0 :     SdrTextObj* pHeader = (SdrTextObj*)mpMaster->GetPresObj( PRESOBJ_HEADER );
     926                 :          0 :     SdrTextObj* pFooter = (SdrTextObj*)mpMaster->GetPresObj( PRESOBJ_FOOTER );
     927                 :          0 :     SdrTextObj* pDate   = (SdrTextObj*)mpMaster->GetPresObj( PRESOBJ_DATETIME );
     928                 :          0 :     SdrTextObj* pNumber = (SdrTextObj*)mpMaster->GetPresObj( PRESOBJ_SLIDENUMBER );
     929                 :            : 
     930                 :          0 :     if( pMasterTitle )
     931                 :          0 :         Paint( *this, pMasterTitle, true, true );
     932                 :          0 :     if( pMasterOutline )
     933                 :          0 :         Paint( *this, pMasterOutline, true, true );
     934                 :          0 :     if( pHeader )
     935                 :          0 :         Paint( *this, pHeader, maSettings.mbHeaderVisible );
     936                 :          0 :     if( pFooter )
     937                 :          0 :         Paint( *this, pFooter, maSettings.mbFooterVisible );
     938                 :          0 :     if( pDate )
     939                 :          0 :         Paint( *this, pDate, maSettings.mbDateTimeVisible );
     940                 :          0 :     if( pNumber )
     941                 :          0 :         Paint( *this, pNumber, maSettings.mbSlideNumberVisible );
     942                 :            : 
     943                 :          0 :     Pop();
     944                 :          0 : }
     945                 :            : 
     946                 :            : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10