LCOV - code coverage report
Current view: top level - sfx2/source/dialog - mgetempl.cxx (source / functions) Hit Total Coverage
Test: commit c8344322a7af75b84dd3ca8f78b05543a976dfd5 Lines: 1 309 0.3 %
Date: 2015-06-13 12:38:46 Functions: 2 26 7.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 <comphelper/string.hxx>
      21             : #include <vcl/layout.hxx>
      22             : #include <vcl/msgbox.hxx>
      23             : #include <vcl/field.hxx>
      24             : #include <svl/eitem.hxx>
      25             : #include <svl/intitem.hxx>
      26             : #include <svl/style.hxx>
      27             : 
      28             : #include <sfx2/styfitem.hxx>
      29             : #include <sfx2/styledlg.hxx>
      30             : #include <sfx2/tabdlg.hxx>
      31             : #include <sfx2/app.hxx>
      32             : #include <sfx2/mgetempl.hxx>
      33             : #include <sfx2/objsh.hxx>
      34             : #include "sfxtypes.hxx"
      35             : #include <sfx2/sfxresid.hxx>
      36             : #include <sfx2/module.hxx>
      37             : 
      38             : #include <sfx2/templdlg.hxx>
      39             : #include "templdgi.hxx"
      40             : #include <sfx2/sfx.hrc>
      41             : #include "dialog.hrc"
      42             : 
      43             : #include <svl/style.hrc>
      44             : #include <svl/stritem.hxx>
      45             : #include <sfx2/dispatch.hxx>
      46             : 
      47             : /*  SfxManageStyleSheetPage Constructor
      48             :  *
      49             :  *  initializes the list box with the templates
      50             :  */
      51           0 : SfxManageStyleSheetPage::SfxManageStyleSheetPage(vcl::Window* pParent, const SfxItemSet& rAttrSet)
      52             :     : SfxTabPage(pParent, "ManageStylePage", "sfx/ui/managestylepage.ui", &rAttrSet)
      53           0 :     , pStyle(&static_cast<SfxStyleDialog*>(GetParentDialog())->GetStyleSheet())
      54             :     , pItem(0)
      55             :     , bModified(false)
      56           0 :     , aName(pStyle->GetName())
      57           0 :     , aFollow(pStyle->GetFollow())
      58           0 :     , aParent(pStyle->GetParent())
      59           0 :     , nFlags(pStyle->GetMask())
      60             : {
      61           0 :     get(m_pNameRo, "namero");
      62           0 :     get(m_pNameRw, "namerw");
      63           0 :     m_pNameRo->set_width_request(m_pNameRw->get_preferred_size().Width());
      64           0 :     get(m_pAutoCB, "autoupdate");
      65           0 :     get(m_pFollowFt, "nextstyleft");
      66           0 :     get(m_pFollowLb, "nextstyle");
      67           0 :     m_pFollowLb->SetStyle(m_pFollowLb->GetStyle() | WB_SORT);
      68           0 :     const sal_Int32 nMaxWidth(62);
      69           0 :     m_pFollowLb->setMaxWidthChars(nMaxWidth);
      70           0 :     get(m_pEditStyleBtn, "editstyle");
      71           0 :     get(m_pBaseFt, "linkedwithft");
      72           0 :     get(m_pBaseLb, "linkedwith");
      73           0 :     get(m_pEditLinkStyleBtn, "editlinkstyle");
      74           0 :     m_pBaseLb->SetStyle(m_pBaseLb->GetStyle() | WB_SORT);
      75           0 :     m_pBaseLb->setMaxWidthChars(nMaxWidth);
      76           0 :     get(m_pFilterFt, "categoryft");
      77           0 :     get(m_pFilterLb, "category");
      78             :     //note that the code depends on categories not being lexically
      79             :     //sorted, so if its changed to sorted, the code needs to
      80             :     //be adapted to be position unaware
      81           0 :     m_pFilterLb->setMaxWidthChars(nMaxWidth);
      82           0 :     get(m_pDescFt, "desc");
      83             : 
      84             :     // this Page needs ExchangeSupport
      85           0 :     SetExchangeSupport();
      86             : 
      87           0 :     if ( aFollow == aName )
      88           0 :         m_pEditStyleBtn->Disable();
      89             :     else
      90           0 :         m_pEditStyleBtn->Enable();
      91             : 
      92           0 :     sal_Int32 linkSelectPos = m_pBaseLb->GetSelectEntryPos();
      93           0 :     if ( linkSelectPos == 0 )
      94           0 :         m_pEditLinkStyleBtn->Disable();
      95             :     else
      96           0 :         m_pEditLinkStyleBtn->Enable();
      97             : 
      98           0 :     ResMgr* pResMgr = SfxGetpApp()->GetModule_Impl()->GetResMgr();
      99             :     OSL_ENSURE( pResMgr, "No ResMgr in Module" );
     100           0 :     pFamilies = new SfxStyleFamilies( ResId( DLG_STYLE_DESIGNER, *pResMgr ) );
     101             : 
     102           0 :     SfxStyleSheetBasePool* pPool = 0;
     103           0 :     SfxObjectShell* pDocShell = SfxObjectShell::Current();
     104             : 
     105           0 :     if ( pDocShell )
     106           0 :         pPool = pDocShell->GetStyleSheetPool();
     107             :     OSL_ENSURE( pPool, "no Pool or no DocShell" );
     108             : 
     109           0 :     if ( pPool )
     110             :     {
     111           0 :         pPool->SetSearchMask( pStyle->GetFamily() );
     112           0 :         pPool->First();     // for SW - update internal list
     113             :     }
     114             : 
     115           0 :     if ( pStyle->GetName().isEmpty() && pPool )
     116             :     {
     117             :         // NullString as Name -> generate Name
     118           0 :         OUString aNoName(SfxStyleDialog::GenerateUnusedName(*pPool));
     119           0 :         pStyle->SetName( aNoName );
     120           0 :         aName = aNoName;
     121           0 :         aFollow = pStyle->GetFollow();
     122           0 :         aParent = pStyle->GetParent();
     123             :     }
     124           0 :     m_pNameRw->SetText(pStyle->GetName());
     125             : 
     126             :     // Set the field read-only if it is NOT an user-defined style
     127             :     // but allow selecting and copying
     128           0 :     if (!pStyle->IsUserDefined())
     129             :     {
     130           0 :         m_pNameRo->SetText(m_pNameRw->GetText());
     131           0 :         m_pNameRw->Hide();
     132           0 :         m_pNameRo->Show();
     133           0 :         FixedText *pLabel = get<FixedText>("nameft");
     134           0 :         pLabel->set_mnemonic_widget(m_pNameRo);
     135             :     }
     136             : 
     137           0 :     if ( pStyle->HasFollowSupport() && pPool )
     138             :     {
     139           0 :         SfxStyleSheetBase* pPoolStyle = pPool->First();
     140             : 
     141           0 :         while ( pPoolStyle )
     142             :         {
     143           0 :             m_pFollowLb->InsertEntry( pPoolStyle->GetName() );
     144           0 :             pPoolStyle = pPool->Next();
     145             :         }
     146             : 
     147             :         // A new Template is not yet in the Pool
     148           0 :         if ( LISTBOX_ENTRY_NOTFOUND == m_pFollowLb->GetEntryPos( pStyle->GetName() ) )
     149           0 :             m_pFollowLb->InsertEntry( pStyle->GetName() );
     150             :     }
     151             :     else
     152             :     {
     153           0 :         m_pFollowFt->Hide();
     154           0 :         m_pFollowLb->Hide();
     155             :     }
     156             : 
     157           0 :     if ( pStyle->HasParentSupport() && pPool )
     158             :     {
     159           0 :         if ( pStyle->HasClearParentSupport() )
     160             :             // the base template can be set to NULL
     161           0 :             m_pBaseLb->InsertEntry( SfxResId(STR_NONE).toString() );
     162             : 
     163           0 :         SfxStyleSheetBase* pPoolStyle = pPool->First();
     164             : 
     165           0 :         while ( pPoolStyle )
     166             :         {
     167           0 :             const OUString aStr( pPoolStyle->GetName() );
     168             :             // own name as base template
     169           0 :             if ( aStr != aName )
     170           0 :                 m_pBaseLb->InsertEntry( aStr );
     171           0 :             pPoolStyle = pPool->Next();
     172           0 :         }
     173             :     }
     174             :     else
     175             :     {
     176           0 :         m_pBaseFt->Disable();
     177           0 :         m_pBaseLb->Disable();
     178             :     }
     179             : 
     180           0 :     size_t nCount = pFamilies->size();
     181             :     size_t i;
     182           0 :     for ( i = 0; i < nCount; ++i )
     183             :     {
     184           0 :         pItem = pFamilies->at( i );
     185             : 
     186           0 :         if ( pItem->GetFamily() == pStyle->GetFamily() )
     187           0 :             break;
     188             :     }
     189             : 
     190           0 :     if ( i < nCount )
     191             :     {
     192           0 :         sal_uInt16 nStyleFilterIdx = 0xffff;
     193             :         // Filter flags
     194           0 :         const SfxStyleFilter& rList = pItem->GetFilterList();
     195           0 :         nCount = rList.size();
     196           0 :         sal_uInt16 nIdx = 0;
     197           0 :         sal_uInt16 nMask = pStyle->GetMask() & ~SFXSTYLEBIT_USERDEF;
     198             : 
     199           0 :         if ( !nMask )   // User Template?
     200           0 :             nMask = pStyle->GetMask();
     201             : 
     202           0 :         for ( i = 0; i < nCount; ++i )
     203             :         {
     204           0 :             SfxFilterTupel* pTupel = rList[ i ];
     205             : 
     206           0 :             if ( pTupel->nFlags != SFXSTYLEBIT_AUTO     &&
     207           0 :                  pTupel->nFlags != SFXSTYLEBIT_USED     &&
     208           0 :                  pTupel->nFlags != SFXSTYLEBIT_ALL_VISIBLE &&
     209           0 :                  pTupel->nFlags != SFXSTYLEBIT_ALL )
     210             :             {
     211           0 :                 m_pFilterLb->InsertEntry( pTupel->aName, nIdx );
     212           0 :                 m_pFilterLb->SetEntryData(nIdx, reinterpret_cast<void*>(i));
     213             : 
     214           0 :                 if ( ( pTupel->nFlags & nMask ) == nMask )
     215           0 :                     nStyleFilterIdx = nIdx;
     216           0 :                 ++nIdx;
     217             :             }
     218             :         }
     219             : 
     220           0 :         if ( nStyleFilterIdx != 0xFFFF )
     221           0 :             m_pFilterLb->SelectEntryPos( nStyleFilterIdx );
     222             :     }
     223             : 
     224           0 :     if ( !m_pFilterLb->GetEntryCount() || !pStyle->IsUserDefined() )
     225             :     {
     226           0 :         pItem = 0;
     227           0 :         m_pFilterFt->Disable();
     228           0 :         m_pFilterLb->Disable();
     229             :     }
     230             :     else
     231           0 :         m_pFilterLb->SaveValue();
     232           0 :     SetDescriptionText_Impl();
     233             : 
     234           0 :     if ( m_pFollowLb->IsEnabled() || m_pBaseLb->IsEnabled() )
     235             :     {
     236           0 :         m_pNameRw->SetGetFocusHdl(
     237           0 :             LINK( this, SfxManageStyleSheetPage, GetFocusHdl ) );
     238           0 :         m_pNameRw->SetLoseFocusHdl(
     239           0 :             LINK( this, SfxManageStyleSheetPage, LoseFocusHdl ) );
     240             :     }
     241             :     // It is a style with auto update? (SW only)
     242           0 :     if(SfxItemState::SET == rAttrSet.GetItemState(SID_ATTR_AUTO_STYLE_UPDATE))
     243           0 :         m_pAutoCB->Show();
     244           0 :     m_pFollowLb->SetSelectHdl( LINK( this, SfxManageStyleSheetPage, EditStyleSelectHdl_Impl ) );
     245           0 :     m_pBaseLb->SetSelectHdl( LINK( this, SfxManageStyleSheetPage, EditLinkStyleSelectHdl_Impl ) );
     246           0 :     m_pEditStyleBtn->SetClickHdl( LINK( this, SfxManageStyleSheetPage, EditStyleHdl_Impl ) );
     247           0 :     m_pEditLinkStyleBtn->SetClickHdl( LINK( this, SfxManageStyleSheetPage, EditLinkStyleHdl_Impl ) );
     248           0 : }
     249             : 
     250             : 
     251             : 
     252           0 : SfxManageStyleSheetPage::~SfxManageStyleSheetPage()
     253             : {
     254           0 :     disposeOnce();
     255           0 : }
     256             : 
     257           0 : void SfxManageStyleSheetPage::dispose()
     258             : {
     259           0 :     m_pNameRw->SetGetFocusHdl( Link<>() );
     260           0 :     m_pNameRw->SetLoseFocusHdl( Link<>() );
     261           0 :     delete pFamilies;
     262           0 :     pItem = 0;
     263           0 :     pStyle = 0;
     264           0 :     m_pNameRo.clear();
     265           0 :     m_pNameRw.clear();
     266           0 :     m_pAutoCB.clear();
     267           0 :     m_pFollowFt.clear();
     268           0 :     m_pFollowLb.clear();
     269           0 :     m_pEditStyleBtn.clear();
     270           0 :     m_pBaseFt.clear();
     271           0 :     m_pBaseLb.clear();
     272           0 :     m_pEditLinkStyleBtn.clear();
     273           0 :     m_pFilterFt.clear();
     274           0 :     m_pFilterLb.clear();
     275           0 :     m_pDescFt.clear();
     276           0 :     SfxTabPage::dispose();
     277           0 : }
     278             : 
     279             : 
     280             : 
     281           0 : void SfxManageStyleSheetPage::UpdateName_Impl( ListBox* pBox,
     282             :                                                const OUString& rNew )
     283             : 
     284             : /*  [Description]
     285             : 
     286             :     After the change of a template name update the ListBox pBox
     287             : 
     288             :     [Parameter]
     289             : 
     290             :     ListBox* pBox         ListBox, whose entries are to be updated
     291             :     const String& rNew    the new Name
     292             : */
     293             : 
     294             : {
     295           0 :     if ( pBox->IsEnabled() )
     296             :     {
     297             :         // it is the current entry, which name was modified
     298           0 :         const bool bSelect = pBox->GetSelectEntry() == aBuf;
     299           0 :         pBox->RemoveEntry( aBuf );
     300           0 :         pBox->InsertEntry( rNew );
     301             : 
     302           0 :         if ( bSelect )
     303           0 :             pBox->SelectEntry( rNew );
     304             :     }
     305           0 : }
     306             : 
     307             : 
     308             : 
     309           0 : void SfxManageStyleSheetPage::SetDescriptionText_Impl()
     310             : 
     311             : /*  [Description]
     312             : 
     313             :     Set attribute description. Get the set metric for this.
     314             : */
     315             : 
     316             : {
     317           0 :     SfxMapUnit eUnit = SFX_MAPUNIT_CM;
     318           0 :     FieldUnit eFieldUnit( FUNIT_CM );
     319           0 :     SfxModule* pModule = SfxModule::GetActiveModule();
     320           0 :     if ( pModule )
     321             :     {
     322           0 :         const SfxPoolItem* pPoolItem = pModule->GetItem( SID_ATTR_METRIC );
     323           0 :         if ( pPoolItem )
     324           0 :             eFieldUnit = (FieldUnit) static_cast<const SfxUInt16Item*>( pPoolItem )->GetValue();
     325             :     }
     326             : 
     327           0 :     switch ( eFieldUnit )
     328             :     {
     329           0 :         case FUNIT_MM:      eUnit = SFX_MAPUNIT_MM; break;
     330             :         case FUNIT_CM:
     331             :         case FUNIT_M:
     332           0 :         case FUNIT_KM:      eUnit = SFX_MAPUNIT_CM; break;
     333             :         case FUNIT_POINT:
     334           0 :         case FUNIT_PICA:    eUnit = SFX_MAPUNIT_POINT; break;
     335             :         case FUNIT_INCH:
     336             :         case FUNIT_FOOT:
     337           0 :         case FUNIT_MILE:    eUnit = SFX_MAPUNIT_INCH; break;
     338             : 
     339             :         default:
     340             :             OSL_FAIL( "non supported field unit" );
     341             :     }
     342           0 :     m_pDescFt->SetText( pStyle->GetDescription( eUnit ) );
     343           0 : }
     344             : 
     345           0 : IMPL_LINK_NOARG( SfxManageStyleSheetPage, EditStyleSelectHdl_Impl )
     346             : {
     347           0 :     OUString aTemplName(m_pFollowLb->GetSelectEntry());
     348           0 :     OUString aEditTemplName(m_pNameRo->GetText());
     349           0 :     if (!( aTemplName == aEditTemplName))
     350           0 :         m_pEditStyleBtn->Enable();
     351             :     else
     352           0 :         m_pEditStyleBtn->Disable();
     353           0 :     return 0;
     354             : }
     355             : 
     356           0 : IMPL_LINK_NOARG( SfxManageStyleSheetPage, EditStyleHdl_Impl )
     357             : {
     358             : 
     359           0 :     OUString aTemplName(m_pFollowLb->GetSelectEntry());
     360           0 :     if (Execute_Impl( SID_STYLE_EDIT, aTemplName, OUString(),(sal_uInt16)pStyle->GetFamily(), 0 ))
     361             :     {
     362             :     }
     363             : 
     364           0 :     return 0;
     365             : 
     366             : }
     367             : 
     368           0 : IMPL_LINK_NOARG( SfxManageStyleSheetPage, EditLinkStyleSelectHdl_Impl )
     369             : {
     370           0 :     sal_Int32 linkSelectPos = m_pBaseLb->GetSelectEntryPos();
     371           0 :     if ( linkSelectPos == 0 )
     372           0 :         m_pEditLinkStyleBtn->Disable();
     373             :     else
     374           0 :         m_pEditLinkStyleBtn->Enable();
     375           0 :     return 0;
     376             : }
     377             : 
     378           0 : IMPL_LINK_NOARG( SfxManageStyleSheetPage, EditLinkStyleHdl_Impl )
     379             : {
     380           0 :     OUString aTemplName(m_pBaseLb->GetSelectEntry());
     381           0 :     if (aTemplName != SfxResId(STR_NONE))
     382           0 :         Execute_Impl( SID_STYLE_EDIT, aTemplName, OUString(),(sal_uInt16)pStyle->GetFamily(), 0 );
     383           0 :     return 0;
     384             : }
     385             : 
     386             : // Internal: Perform functions through the Dispatcher
     387           0 : bool SfxManageStyleSheetPage::Execute_Impl(
     388             :     sal_uInt16 nId, const OUString &rStr, const OUString& rRefStr, sal_uInt16 nFamily,
     389             :     sal_uInt16 nMask, const sal_uInt16* pModifier)
     390             : {
     391             : 
     392           0 :     SfxDispatcher &rDispatcher = *SfxGetpApp()->GetDispatcher_Impl();
     393           0 :     SfxStringItem aItem(nId, rStr);
     394           0 :     SfxUInt16Item aFamily(SID_STYLE_FAMILY, nFamily);
     395           0 :     SfxUInt16Item aMask( SID_STYLE_MASK, nMask );
     396           0 :     SfxStringItem aUpdName(SID_STYLE_UPD_BY_EX_NAME, rStr);
     397           0 :     SfxStringItem aRefName( SID_STYLE_REFERENCE, rRefStr );
     398             :     const SfxPoolItem* pItems[ 6 ];
     399           0 :     sal_uInt16 nCount = 0;
     400           0 :     if( !rStr.isEmpty() )
     401           0 :         pItems[ nCount++ ] = &aItem;
     402           0 :     pItems[ nCount++ ] = &aFamily;
     403           0 :     if( nMask )
     404           0 :         pItems[ nCount++ ] = &aMask;
     405           0 :     if ( !rRefStr.isEmpty() )
     406           0 :         pItems[ nCount++ ] = &aRefName;
     407             : 
     408           0 :     pItems[ nCount++ ] = 0;
     409             : 
     410           0 :     sal_uInt16 nModi = pModifier ? *pModifier : 0;
     411             :     const SfxPoolItem* mpItem = rDispatcher.Execute(
     412             :         nId, SfxCallMode::SYNCHRON | SfxCallMode::RECORD | SfxCallMode::MODAL,
     413           0 :         pItems, nModi );
     414             : 
     415           0 :     if ( !mpItem )
     416           0 :         return false;
     417             : 
     418           0 :     return true;
     419             : 
     420             : }
     421             : 
     422           0 : IMPL_LINK( SfxManageStyleSheetPage, GetFocusHdl, Edit *, pEdit )
     423             : 
     424             : /*  [Description]
     425             : 
     426             :     StarView Handler; GetFocus-Handler of the Edits with the template name.
     427             : */
     428             : 
     429             : {
     430           0 :     aBuf = comphelper::string::stripStart(pEdit->GetText(), ' ');
     431           0 :     return 0;
     432             : }
     433             : 
     434           0 : IMPL_LINK( SfxManageStyleSheetPage, LoseFocusHdl, Edit *, pEdit )
     435             : 
     436             : /*  [Description]
     437             : 
     438             :     StarView Handler; lose-focus-handler of the edits of the template name.
     439             :     This will update the listbox with the subsequent templates. The current
     440             :     template itself is not returned in the listbox of the base templates.
     441             : */
     442             : 
     443             : {
     444           0 :     const OUString aStr(comphelper::string::stripStart(pEdit->GetText(), ' '));
     445           0 :     pEdit->SetText( aStr );
     446             :     // Update the Listbox of the base template if possible
     447           0 :     if ( aStr != aBuf )
     448           0 :         UpdateName_Impl(m_pFollowLb, aStr);
     449           0 :     return 0;
     450             : }
     451             : 
     452           0 : bool SfxManageStyleSheetPage::FillItemSet( SfxItemSet* rSet )
     453             : 
     454             : /*  [Description]
     455             : 
     456             :     Handler for setting the (modified) data. I called from the OK of the
     457             :     SfxTabDialog.
     458             : 
     459             :     [Parameter]
     460             : 
     461             :     SfxItemSet &rAttrSet    The set, which receives the data.
     462             : 
     463             :     [Return value]
     464             : 
     465             :     sal_Bool                sal_True:  The data had been changed
     466             :                             sal_False: The data had not been changed
     467             : 
     468             :     [Cross-reference]
     469             : 
     470             :     <class SfxTabDialog>
     471             : */
     472             : 
     473             : {
     474           0 :     const sal_Int32 nFilterIdx = m_pFilterLb->GetSelectEntryPos();
     475             : 
     476             :     // Set Filter
     477             : 
     478           0 :     if ( LISTBOX_ENTRY_NOTFOUND  != nFilterIdx      &&
     479           0 :          m_pFilterLb->IsValueChangedFromSaved()    &&
     480           0 :          m_pFilterLb->IsEnabled() )
     481             :     {
     482           0 :         bModified = true;
     483             :         OSL_ENSURE( pItem, "No Item" );
     484             :         // is only possibly for user templates
     485           0 :         sal_uInt16 nMask = pItem->GetFilterList()[ reinterpret_cast<size_t>(m_pFilterLb->GetEntryData( nFilterIdx )) ]->nFlags | SFXSTYLEBIT_USERDEF;
     486           0 :         pStyle->SetMask( nMask );
     487             :     }
     488           0 :     if(m_pAutoCB->IsVisible() &&
     489           0 :        m_pAutoCB->IsValueChangedFromSaved())
     490             :     {
     491           0 :         rSet->Put(SfxBoolItem(SID_ATTR_AUTO_STYLE_UPDATE, m_pAutoCB->IsChecked()));
     492             :     }
     493             : 
     494           0 :     return bModified;
     495             : }
     496             : 
     497             : 
     498             : 
     499           0 : void SfxManageStyleSheetPage::Reset( const SfxItemSet* /*rAttrSet*/ )
     500             : 
     501             : /*  [Description]
     502             : 
     503             :     Handler to initialize the page with the initial data.
     504             : 
     505             :     [Parameter]
     506             : 
     507             :     const SfxItemSet &rAttrSet          The data set
     508             : 
     509             :     [Cross-reference]
     510             : 
     511             :     <class SfxTabDialog>
     512             : */
     513             : 
     514             : {
     515           0 :     bModified = false;
     516           0 :     OUString sCmp( pStyle->GetName() );
     517             : 
     518           0 :     if ( sCmp != aName )
     519           0 :         pStyle->SetName( aName );
     520           0 :     m_pNameRw->SetText( aName );
     521           0 :     m_pNameRw->SetSelection( Selection( SELECTION_MIN, SELECTION_MAX ) );
     522             : 
     523           0 :     if ( m_pFollowLb->IsEnabled() )
     524             :     {
     525           0 :         sCmp = pStyle->GetFollow();
     526             : 
     527           0 :         if ( sCmp != aFollow )
     528           0 :             pStyle->SetFollow( aFollow );
     529             : 
     530           0 :         if ( aFollow.isEmpty() )
     531           0 :             m_pFollowLb->SelectEntry( aName );
     532             :         else
     533           0 :             m_pFollowLb->SelectEntry( aFollow );
     534             :     }
     535             : 
     536           0 :     if ( m_pBaseLb->IsEnabled() )
     537             :     {
     538           0 :         sCmp = pStyle->GetParent();
     539             : 
     540           0 :         if ( sCmp != aParent )
     541           0 :             pStyle->SetParent( aParent );
     542             : 
     543           0 :         if ( aParent.isEmpty() )
     544           0 :             m_pBaseLb->SelectEntry( SfxResId(STR_NONE).toString() );
     545             :         else
     546           0 :             m_pBaseLb->SelectEntry( aParent );
     547             : 
     548           0 :         if ( SfxResId(STR_STANDARD).toString().equals(aName) )
     549             :         {
     550             :             // the default template can not be linked
     551           0 :             m_pBaseFt->Disable();
     552           0 :             m_pBaseLb->Disable();
     553             :         }
     554             :     }
     555             : 
     556           0 :     if ( m_pFilterLb->IsEnabled() )
     557             :     {
     558           0 :         sal_uInt16 nCmp = pStyle->GetMask();
     559             : 
     560           0 :         if ( nCmp != nFlags )
     561           0 :             pStyle->SetMask( nFlags );
     562           0 :         m_pFilterLb->SelectEntryPos( m_pFilterLb->GetSavedValue() );
     563           0 :     }
     564           0 : }
     565             : 
     566             : 
     567             : 
     568           0 : VclPtr<SfxTabPage> SfxManageStyleSheetPage::Create( vcl::Window* pParent,
     569             :                                                     const SfxItemSet *rAttrSet )
     570             : {
     571           0 :     return VclPtr<SfxManageStyleSheetPage>::Create( pParent, *rAttrSet );
     572             : }
     573             : 
     574             : 
     575             : 
     576           0 : void SfxManageStyleSheetPage::ActivatePage( const SfxItemSet& rSet)
     577             : 
     578             : /*  [Description]
     579             : 
     580             :     ActivatePage handler of SfxTabDialog, is used for the update of the
     581             :     descriptive text, since this might have changed through changes of data on
     582             :     other pages.
     583             : 
     584             :     [Parameter]
     585             : 
     586             :     const SfxItemSet&    the set for the exchange of data; is not used here.
     587             : 
     588             :     [Cross-reference]
     589             : 
     590             :     <SfxTabDialog::ActivatePage(const SfxItemSet &)>
     591             : */
     592             : 
     593             : {
     594           0 :     SetDescriptionText_Impl();
     595             : 
     596             :     // It is a style with auto update? (SW only)
     597             :     const SfxPoolItem* pPoolItem;
     598             : 
     599           0 :     if ( SfxItemState::SET ==
     600           0 :          rSet.GetItemState( SID_ATTR_AUTO_STYLE_UPDATE, false, &pPoolItem ) )
     601           0 :         m_pAutoCB->Check( static_cast<const SfxBoolItem*>(pPoolItem)->GetValue() );
     602           0 :     m_pAutoCB->SaveValue();
     603           0 : }
     604             : 
     605             : 
     606             : 
     607           0 : SfxTabPage::sfxpg SfxManageStyleSheetPage::DeactivatePage( SfxItemSet* pItemSet )
     608             : 
     609             : /*  [Description]
     610             : 
     611             :     DeactivatePage-handler of SfxTabDialog; data is set on the template, so
     612             :     that the correct inheritance on the other pages of the dialog is made.
     613             :     If an error occurs, leaving the page is prevented.
     614             :     [Parameter]
     615             : 
     616             :     SfxItemSet*    the set for the exchange of data; is not used here.
     617             : 
     618             :     [Cross-reference]
     619             : 
     620             :     <SfxTabDialog::DeactivatePage(SfxItemSet*)>
     621             : */
     622             : 
     623             : {
     624           0 :     sfxpg nRet = SfxTabPage::LEAVE_PAGE;
     625             : 
     626           0 :     if ( m_pNameRw->IsModified() )
     627             :     {
     628             :         // By pressing <Enter> LoseFocus() is not trigged through StarView
     629           0 :         if ( m_pNameRw->HasFocus() )
     630           0 :             LoseFocusHdl( m_pNameRw );
     631             : 
     632           0 :         if (!pStyle->SetName(comphelper::string::stripStart(m_pNameRw->GetText(), ' ')))
     633             :         {
     634           0 :             ScopedVclPtrInstance< MessageDialog > aBox(this, SfxResId( STR_TABPAGE_INVALIDNAME ), VCL_MESSAGE_INFO);
     635           0 :             aBox->Execute();
     636           0 :             m_pNameRw->GrabFocus();
     637           0 :             m_pNameRw->SetSelection( Selection( SELECTION_MIN, SELECTION_MAX ) );
     638           0 :             return SfxTabPage::KEEP_PAGE;
     639             :         }
     640           0 :         bModified = true;
     641             :     }
     642             : 
     643           0 :     if ( pStyle->HasFollowSupport() && m_pFollowLb->IsEnabled() )
     644             :     {
     645           0 :         const OUString aFollowEntry( m_pFollowLb->GetSelectEntry() );
     646             : 
     647           0 :         if ( pStyle->GetFollow() != aFollowEntry )
     648             :         {
     649           0 :             if ( !pStyle->SetFollow( aFollowEntry ) )
     650             :             {
     651           0 :                 ScopedVclPtrInstance< MessageDialog > aBox(this, SfxResId( STR_TABPAGE_INVALIDSTYLE ), VCL_MESSAGE_INFO);
     652           0 :                 aBox->Execute();
     653           0 :                 m_pFollowLb->GrabFocus();
     654           0 :                 return SfxTabPage::KEEP_PAGE;
     655             :             }
     656           0 :             bModified = true;
     657           0 :         }
     658             :     }
     659             : 
     660           0 :     if ( m_pBaseLb->IsEnabled() )
     661             :     {
     662           0 :         OUString aParentEntry( m_pBaseLb->GetSelectEntry() );
     663             : 
     664           0 :         if ( SfxResId(STR_NONE).toString().equals(aParentEntry) || aParentEntry == pStyle->GetName() )
     665           0 :             aParentEntry.clear();
     666             : 
     667           0 :         if ( pStyle->GetParent() != aParentEntry )
     668             :         {
     669           0 :             if ( !pStyle->SetParent( aParentEntry ) )
     670             :             {
     671           0 :                 ScopedVclPtrInstance< MessageDialog > aBox(this, SfxResId( STR_TABPAGE_INVALIDPARENT ), VCL_MESSAGE_INFO);
     672           0 :                 aBox->Execute();
     673           0 :                 m_pBaseLb->GrabFocus();
     674           0 :                 return SfxTabPage::KEEP_PAGE;
     675             :             }
     676           0 :             bModified = true;
     677           0 :             nRet = sfxpg(nRet | SfxTabPage::REFRESH_SET);
     678           0 :         }
     679             :     }
     680             : 
     681           0 :     if ( pItemSet )
     682           0 :         FillItemSet( pItemSet );
     683             : 
     684           0 :     return nRet;
     685         648 : }
     686             : 
     687             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.11