LCOV - code coverage report
Current view: top level - cui/source/tabpages - tplneend.cxx (source / functions) Hit Total Coverage
Test: commit 10e77ab3ff6f4314137acd6e2702a6e5c1ce1fae Lines: 0 312 0.0 %
Date: 2014-11-03 Functions: 0 27 0.0 %
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 <tools/urlobj.hxx>
      21             : #include <vcl/msgbox.hxx>
      22             : #include <vcl/settings.hxx>
      23             : #include <unotools/pathoptions.hxx>
      24             : #include <sfx2/app.hxx>
      25             : #include <sfx2/filedlghelper.hxx>
      26             : #include "com/sun/star/ui/dialogs/TemplateDescription.hpp"
      27             : 
      28             : #include <cuires.hrc>
      29             : #include "helpid.hrc"
      30             : #include <svx/dialmgr.hxx>
      31             : #include <svx/svdobj.hxx>
      32             : #include <svx/svdopath.hxx>
      33             : #include "svx/drawitem.hxx"
      34             : #include <svx/xpool.hxx>
      35             : #include <svx/xtable.hxx>
      36             : #include "cuitabline.hxx"
      37             : #include <svx/svxdlg.hxx>
      38             : #include <dialmgr.hxx>
      39             : #include "svx/dlgutil.hxx"
      40             : #include <basegfx/range/b2drange.hxx>
      41             : #include <basegfx/polygon/b2dpolygontools.hxx>
      42             : #include <basegfx/matrix/b2dhommatrix.hxx>
      43             : #include <basegfx/polygon/b2dpolygon.hxx>
      44             : #include <basegfx/polygon/b2dpolypolygontools.hxx>
      45             : #include <basegfx/matrix/b2dhommatrixtools.hxx>
      46             : #include <svx/dialogs.hrc>
      47             : #include <boost/scoped_ptr.hpp>
      48             : 
      49             : #define XOUT_WIDTH    150
      50             : 
      51           0 : SvxLineEndDefTabPage::SvxLineEndDefTabPage
      52             : (
      53             :     vcl::Window* pParent,
      54             :     const SfxItemSet& rInAttrs
      55             : ) :
      56             : 
      57             :     SfxTabPage( pParent
      58             :               , "LineEndPage"
      59             :               , "cui/ui/lineendstabpage.ui"
      60             :               , &rInAttrs ),
      61             :     rOutAttrs           ( rInAttrs ),
      62             :     pPolyObj            ( NULL ),
      63             :     bObjSelected        ( false ),
      64             : 
      65           0 :     pXPool              ( static_cast<XOutdevItemPool*>(rInAttrs.GetPool()) ),
      66             :     aXLStyle            ( XLINE_SOLID ),
      67             :     aXWidth             ( XOUT_WIDTH ),
      68             :     aXColor             ( OUString(), COL_BLACK ),
      69             :     aXLineAttr          ( pXPool ),
      70           0 :     rXLSet              ( aXLineAttr.GetItemSet() ),
      71             :     pLineEndList        ( NULL ),
      72             :     pnLineEndListState  ( NULL ),
      73             :     pPageType           ( NULL ),
      74             :     nDlgType            ( 0 ),
      75           0 :     pPosLineEndLb       ( NULL )
      76             : {
      77           0 :     get(m_pEdtName,"EDT_NAME");
      78           0 :     get(m_pLbLineEnds,"LB_LINEENDS");
      79           0 :     get(m_pBtnAdd,"BTN_ADD");
      80           0 :     get(m_pBtnModify,"BTN_MODIFY");
      81           0 :     get(m_pBtnDelete,"BTN_DELETE");
      82           0 :     get(m_pBtnLoad,"BTN_LOAD");
      83           0 :     get(m_pBtnSave,"BTN_SAVE");
      84           0 :     get(m_pCtlPreview,"CTL_PREVIEW");
      85             : 
      86             :     // this page needs ExchangeSupport
      87           0 :     SetExchangeSupport();
      88             : 
      89           0 :     rXLSet.Put( aXLStyle );
      90           0 :     rXLSet.Put( aXWidth );
      91           0 :     rXLSet.Put( aXColor );
      92           0 :     rXLSet.Put( XLineStartWidthItem( m_pCtlPreview->GetOutputSize().Height()  / 2 ) );
      93           0 :     rXLSet.Put( XLineEndWidthItem( m_pCtlPreview->GetOutputSize().Height() / 2 ) );
      94             : 
      95             :     // #i34740#
      96           0 :     m_pCtlPreview->SetLineAttributes(aXLineAttr.GetItemSet());
      97             : 
      98           0 :     m_pBtnAdd->SetClickHdl( LINK( this, SvxLineEndDefTabPage, ClickAddHdl_Impl ) );
      99           0 :     m_pBtnModify->SetClickHdl( LINK( this, SvxLineEndDefTabPage, ClickModifyHdl_Impl ) );
     100           0 :     m_pBtnDelete->SetClickHdl( LINK( this, SvxLineEndDefTabPage, ClickDeleteHdl_Impl ) );
     101           0 :     m_pBtnLoad->SetClickHdl( LINK( this, SvxLineEndDefTabPage, ClickLoadHdl_Impl ) );
     102           0 :     m_pBtnSave->SetClickHdl( LINK( this, SvxLineEndDefTabPage, ClickSaveHdl_Impl ) );
     103             : 
     104           0 :     m_pLbLineEnds->SetSelectHdl( LINK( this, SvxLineEndDefTabPage, SelectLineEndHdl_Impl ) );
     105             : 
     106           0 : }
     107             : 
     108           0 : void SvxLineEndDefTabPage::Resize()
     109             : {
     110           0 :     rXLSet.Put(XLineStartWidthItem(m_pCtlPreview->GetOutputSize().Height()  / 2 ));
     111           0 :     rXLSet.Put(XLineEndWidthItem(m_pCtlPreview->GetOutputSize().Height() / 2 ));
     112           0 :     SfxTabPage::Resize();
     113           0 : }
     114             : 
     115             : 
     116             : 
     117           0 : SvxLineEndDefTabPage::~SvxLineEndDefTabPage()
     118             : {
     119           0 : }
     120             : 
     121             : 
     122             : 
     123           0 : void SvxLineEndDefTabPage::Construct()
     124             : {
     125           0 :     m_pLbLineEnds->Fill( pLineEndList );
     126             : 
     127           0 :     bool bCreateArrowPossible = true;
     128             : 
     129           0 :     if( !pPolyObj )
     130             :     {
     131           0 :         bCreateArrowPossible = false;
     132             :     }
     133           0 :     else if( !pPolyObj->ISA( SdrPathObj ) )
     134             :     {
     135           0 :         SdrObjTransformInfoRec aInfoRec;
     136           0 :         pPolyObj->TakeObjInfo( aInfoRec );
     137           0 :         SdrObject* pNewObj = 0;
     138           0 :         if( aInfoRec.bCanConvToPath )
     139           0 :             pNewObj = pPolyObj->ConvertToPolyObj( true, false );
     140             : 
     141           0 :         bCreateArrowPossible = pNewObj && pNewObj->ISA( SdrPathObj );
     142           0 :         SdrObject::Free( pNewObj );
     143             :     }
     144             : 
     145           0 :     if( !bCreateArrowPossible )
     146           0 :         m_pBtnAdd->Disable();
     147           0 : }
     148             : 
     149             : 
     150             : 
     151           0 : void SvxLineEndDefTabPage::ActivatePage( const SfxItemSet& )
     152             : {
     153           0 :     if( nDlgType == 0 ) // area dialog
     154             :     {
     155             :         // ActivatePage() is called before the dialog receives PageCreated() !!!
     156           0 :         if( pLineEndList.is() )
     157             :         {
     158           0 :             if( *pPosLineEndLb != LISTBOX_ENTRY_NOTFOUND )
     159             :             {
     160           0 :                 m_pLbLineEnds->SelectEntryPos( *pPosLineEndLb );
     161           0 :                 SelectLineEndHdl_Impl( this );
     162             :             }
     163           0 :             INetURLObject   aURL( pLineEndList->GetPath() );
     164             : 
     165           0 :             aURL.Append( pLineEndList->GetName() );
     166             :             DBG_ASSERT( aURL.GetProtocol() != INET_PROT_NOT_VALID, "invalid URL" );
     167           0 :             *pPageType = 0; // 3
     168           0 :             *pPosLineEndLb = LISTBOX_ENTRY_NOTFOUND;
     169             :         }
     170             :     }
     171           0 : }
     172             : 
     173             : 
     174             : 
     175           0 : int SvxLineEndDefTabPage::DeactivatePage( SfxItemSet* _pSet )
     176             : {
     177           0 :     CheckChanges_Impl();
     178             : 
     179           0 :     if( _pSet )
     180           0 :         FillItemSet( _pSet );
     181             : 
     182           0 :     return( LEAVE_PAGE );
     183             : }
     184             : 
     185             : 
     186             : 
     187           0 : void SvxLineEndDefTabPage::CheckChanges_Impl()
     188             : {
     189           0 :     sal_Int32 nPos = m_pLbLineEnds->GetSelectEntryPos();
     190             : 
     191           0 :     if ( nPos != LISTBOX_ENTRY_NOTFOUND )
     192             :     {
     193           0 :         OUString aString = m_pEdtName->GetText();
     194             : 
     195           0 :         if( aString != m_pLbLineEnds->GetSelectEntry() )
     196             :         {
     197           0 :             MessageDialog aQueryBox( GetParentDialog()
     198             :                                     ,"AskChangeLineEndDialog"
     199           0 :                                     ,"cui/ui/querychangelineenddialog.ui");
     200             : 
     201           0 :             if ( aQueryBox.Execute() == RET_YES )
     202           0 :                 ClickModifyHdl_Impl( this );
     203           0 :         }
     204             :     }
     205           0 :     nPos = m_pLbLineEnds->GetSelectEntryPos();
     206             : 
     207           0 :     if ( nPos != LISTBOX_ENTRY_NOTFOUND )
     208           0 :         *pPosLineEndLb = nPos;
     209           0 : }
     210             : 
     211             : 
     212             : 
     213           0 : bool SvxLineEndDefTabPage::FillItemSet( SfxItemSet* rSet )
     214             : {
     215           0 :     if( nDlgType == 0 ) // line dialog
     216             :     {
     217           0 :         if( *pPageType == 3 )
     218             :         {
     219           0 :             CheckChanges_Impl();
     220             : 
     221           0 :             long nPos = m_pLbLineEnds->GetSelectEntryPos();
     222           0 :             XLineEndEntry* pEntry = pLineEndList->GetLineEnd( nPos );
     223             : 
     224           0 :             rSet->Put( XLineStartItem( pEntry->GetName(), pEntry->GetLineEnd() ) );
     225           0 :             rSet->Put( XLineEndItem( pEntry->GetName(), pEntry->GetLineEnd() ) );
     226             :         }
     227             :     }
     228           0 :     return true;
     229             : }
     230             : 
     231             : 
     232             : 
     233           0 : void SvxLineEndDefTabPage::Reset( const SfxItemSet* )
     234             : {
     235           0 :     m_pLbLineEnds->SelectEntryPos( 0 );
     236             : 
     237             :     // Update lineend
     238           0 :     if( pLineEndList->Count() > 0 )
     239             :     {
     240           0 :         int nPos = m_pLbLineEnds->GetSelectEntryPos();
     241             : 
     242           0 :         XLineEndEntry* pEntry = pLineEndList->GetLineEnd( nPos );
     243             : 
     244           0 :         m_pEdtName->SetText( m_pLbLineEnds->GetSelectEntry() );
     245             : 
     246           0 :         rXLSet.Put( XLineStartItem( OUString(), pEntry->GetLineEnd() ) );
     247           0 :         rXLSet.Put( XLineEndItem( OUString(), pEntry->GetLineEnd() ) );
     248             : 
     249             :         // #i34740#
     250           0 :         m_pCtlPreview->SetLineAttributes(aXLineAttr.GetItemSet());
     251             : 
     252           0 :         m_pCtlPreview->Invalidate();
     253             :     }
     254             : 
     255             :     // determine button state
     256           0 :     if( pLineEndList->Count() )
     257             :     {
     258           0 :         m_pBtnModify->Enable();
     259           0 :         m_pBtnDelete->Enable();
     260           0 :         m_pBtnSave->Enable();
     261             :     }
     262             :     else
     263             :     {
     264           0 :         m_pBtnModify->Disable();
     265           0 :         m_pBtnDelete->Disable();
     266           0 :         m_pBtnSave->Disable();
     267             :     }
     268           0 : }
     269             : 
     270             : 
     271             : 
     272           0 : SfxTabPage* SvxLineEndDefTabPage::Create( vcl::Window* pWindow, const SfxItemSet* rSet )
     273             : {
     274           0 :     return( new SvxLineEndDefTabPage( pWindow, *rSet ) );
     275             : }
     276             : 
     277             : 
     278             : 
     279           0 : IMPL_LINK_NOARG(SvxLineEndDefTabPage, SelectLineEndHdl_Impl)
     280             : {
     281           0 :     if( pLineEndList->Count() > 0 )
     282             :     {
     283           0 :         int nPos = m_pLbLineEnds->GetSelectEntryPos();
     284             : 
     285           0 :         XLineEndEntry* pEntry = pLineEndList->GetLineEnd( nPos );
     286             : 
     287           0 :         m_pEdtName->SetText( m_pLbLineEnds->GetSelectEntry() );
     288             : 
     289           0 :         rXLSet.Put( XLineStartItem( OUString(), pEntry->GetLineEnd() ) );
     290           0 :         rXLSet.Put( XLineEndItem( OUString(), pEntry->GetLineEnd() ) );
     291             : 
     292             :         // #i34740#
     293           0 :         m_pCtlPreview->SetLineAttributes(aXLineAttr.GetItemSet());
     294             : 
     295           0 :         m_pCtlPreview->Invalidate();
     296             : 
     297             :         // Is not set before, in order to only take the new style,
     298             :         // if there is an entry selected in the ListBox
     299           0 :         *pPageType = 3;
     300             :     }
     301           0 :     return( 0L );
     302             : }
     303             : 
     304             : 
     305             : 
     306           0 : long SvxLineEndDefTabPage::ChangePreviewHdl_Impl( void* )
     307             : {
     308           0 :     m_pCtlPreview->Invalidate();
     309           0 :     return( 0L );
     310             : }
     311             : 
     312             : 
     313             : 
     314           0 : IMPL_LINK_NOARG(SvxLineEndDefTabPage, ClickModifyHdl_Impl)
     315             : {
     316           0 :     sal_Int32 nPos = m_pLbLineEnds->GetSelectEntryPos();
     317             : 
     318           0 :     if( nPos != LISTBOX_ENTRY_NOTFOUND )
     319             :     {
     320           0 :         ResMgr& rMgr = CUI_MGR();
     321           0 :         OUString aDesc( ResId( RID_SVXSTR_DESC_LINEEND, rMgr ) );
     322           0 :         OUString aName( m_pEdtName->GetText() );
     323           0 :         long nCount = pLineEndList->Count();
     324           0 :         bool bDifferent = true;
     325             : 
     326             :         // check whether the name is existing already
     327           0 :         for ( long i = 0; i < nCount && bDifferent; i++ )
     328           0 :             if ( aName == pLineEndList->GetLineEnd( i )->GetName() )
     329           0 :                 bDifferent = false;
     330             : 
     331             :         // if yes, repeat and demand a new name
     332           0 :         if ( !bDifferent )
     333             :         {
     334           0 :             MessageDialog aWarningBox( GetParentDialog()
     335             :                                       ,"DuplicateNameDialog"
     336           0 :                                       ,"cui/ui/queryduplicatedialog.ui");
     337           0 :             aWarningBox.Execute();
     338             : 
     339           0 :             SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
     340             :             DBG_ASSERT(pFact, "Dialog creation failed!");
     341           0 :             boost::scoped_ptr<AbstractSvxNameDialog> pDlg(pFact->CreateSvxNameDialog( GetParentDialog(), aName, aDesc ));
     342             :             DBG_ASSERT(pDlg, "Dialog creation failed!");
     343           0 :             bool bLoop = true;
     344             : 
     345           0 :             while( !bDifferent && bLoop && pDlg->Execute() == RET_OK )
     346             :             {
     347           0 :                 pDlg->GetName( aName );
     348           0 :                 bDifferent = true;
     349             : 
     350           0 :                 for( long i = 0; i < nCount && bDifferent; i++ )
     351             :                 {
     352           0 :                     if( aName == pLineEndList->GetLineEnd( i )->GetName() )
     353           0 :                         bDifferent = false;
     354             :                 }
     355             : 
     356           0 :                 if( bDifferent )
     357           0 :                     bLoop = false;
     358             :                 else
     359           0 :                     aWarningBox.Execute();
     360           0 :             }
     361             :         }
     362             : 
     363             :         // if not existing, enter the entry
     364           0 :         if( bDifferent )
     365             :         {
     366           0 :             const XLineEndEntry* pOldEntry = pLineEndList->GetLineEnd( nPos );
     367             : 
     368           0 :             if(pOldEntry)
     369             :             {
     370             :                 // #123497# Need to replace the existing entry with a new one (old returned needs to be deleted)
     371           0 :                 XLineEndEntry* pEntry = new XLineEndEntry(pOldEntry->GetLineEnd(), aName);
     372           0 :                 delete pLineEndList->Replace(pEntry, nPos);
     373             : 
     374           0 :                 m_pEdtName->SetText( aName );
     375             : 
     376           0 :                 m_pLbLineEnds->Modify( *pEntry, nPos, pLineEndList->GetUiBitmap( nPos ) );
     377           0 :                 m_pLbLineEnds->SelectEntryPos( nPos );
     378             : 
     379             :                 // Flag fuer modifiziert setzen
     380           0 :                 *pnLineEndListState |= CT_MODIFIED;
     381             : 
     382           0 :                 *pPageType = 3;
     383             :             }
     384             :             else
     385             :             {
     386             :                 OSL_ENSURE(false, "LineEnd to be modified not existing (!)");
     387             :             }
     388           0 :         }
     389             :     }
     390           0 :     return( 0L );
     391             : }
     392             : 
     393             : 
     394             : 
     395           0 : IMPL_LINK_NOARG(SvxLineEndDefTabPage, ClickAddHdl_Impl)
     396             : {
     397           0 :     if( pPolyObj )
     398             :     {
     399             :         const SdrObject* pNewObj;
     400           0 :         SdrObject* pConvPolyObj = NULL;
     401             : 
     402           0 :         if( pPolyObj->ISA( SdrPathObj ) )
     403             :         {
     404           0 :             pNewObj = pPolyObj;
     405             :         }
     406             :         else
     407             :         {
     408           0 :             SdrObjTransformInfoRec aInfoRec;
     409           0 :             pPolyObj->TakeObjInfo( aInfoRec );
     410             : 
     411           0 :             if( aInfoRec.bCanConvToPath )
     412             :             {
     413           0 :                 pNewObj = pConvPolyObj = pPolyObj->ConvertToPolyObj( true, false );
     414             : 
     415           0 :                 if( !pNewObj || !pNewObj->ISA( SdrPathObj ) )
     416           0 :                     return( 0L ); // cancel, additional safety, which
     417             :                             // has no use for group objects though.
     418             :             }
     419           0 :             else return( 0L ); // cancel
     420             :         }
     421             : 
     422           0 :         basegfx::B2DPolyPolygon aNewPolyPolygon(static_cast<const SdrPathObj*>(pNewObj)->GetPathPoly());
     423           0 :         basegfx::B2DRange aNewRange(basegfx::tools::getRange(aNewPolyPolygon));
     424             : 
     425             :         // normalize
     426           0 :         aNewPolyPolygon.transform(basegfx::tools::createTranslateB2DHomMatrix( -aNewRange.getMinX(), -aNewRange.getMinY()));
     427             : 
     428           0 :         SdrObject::Free( pConvPolyObj );
     429             : 
     430             :         XLineEndEntry* pEntry;
     431             : 
     432           0 :         ResMgr& rMgr = CUI_MGR();
     433           0 :         OUString aNewName( SVX_RES( RID_SVXSTR_LINEEND ) );
     434           0 :         OUString aDesc( ResId( RID_SVXSTR_DESC_LINEEND, rMgr ) );
     435           0 :         OUString aName;
     436             : 
     437           0 :         long nCount = pLineEndList->Count();
     438           0 :         long j = 1;
     439           0 :         bool bDifferent = false;
     440             : 
     441           0 :         while ( !bDifferent )
     442             :         {
     443           0 :             aName = aNewName;
     444           0 :             aName += " ";
     445           0 :             aName += OUString::number( j++ );
     446           0 :             bDifferent = true;
     447             : 
     448           0 :             for( long i = 0; i < nCount && bDifferent; i++ )
     449           0 :                 if ( aName == pLineEndList->GetLineEnd( i )->GetName() )
     450           0 :                     bDifferent = false;
     451             :         }
     452             : 
     453           0 :         SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
     454             :         DBG_ASSERT(pFact, "Dialog creation failed!");
     455           0 :         boost::scoped_ptr<AbstractSvxNameDialog> pDlg(pFact->CreateSvxNameDialog( GetParentDialog(), aName, aDesc ));
     456             :         DBG_ASSERT(pDlg, "Dialog creation failed!");
     457           0 :         bool bLoop = true;
     458             : 
     459           0 :         while ( bLoop && pDlg->Execute() == RET_OK )
     460             :         {
     461           0 :             pDlg->GetName( aName );
     462           0 :             bDifferent = true;
     463             : 
     464           0 :             for( long i = 0; i < nCount && bDifferent; i++ )
     465             :             {
     466           0 :                 if( aName == pLineEndList->GetLineEnd( i )->GetName() )
     467           0 :                     bDifferent = false;
     468             :             }
     469             : 
     470           0 :             if( bDifferent )
     471             :             {
     472           0 :                 bLoop = false;
     473           0 :                 pEntry = new XLineEndEntry( aNewPolyPolygon, aName );
     474             : 
     475           0 :                 long nLineEndCount = pLineEndList->Count();
     476           0 :                 pLineEndList->Insert( pEntry, nLineEndCount );
     477             : 
     478             :                 // add to the ListBox
     479           0 :                 m_pLbLineEnds->Append( *pEntry, pLineEndList->GetUiBitmap( nLineEndCount ) );
     480           0 :                 m_pLbLineEnds->SelectEntryPos( m_pLbLineEnds->GetEntryCount() - 1 );
     481             : 
     482           0 :                 *pnLineEndListState |= CT_MODIFIED;
     483             : 
     484           0 :                 SelectLineEndHdl_Impl( this );
     485             :             }
     486             :             else
     487             :             {
     488           0 :                 MessageDialog aBox( GetParentDialog()
     489             :                                    ,"DuplicateNameDialog"
     490           0 :                                    ,"cui/ui/queryduplicatedialog.ui");
     491           0 :                 aBox.Execute();
     492             :             }
     493           0 :         }
     494             :     }
     495             :     else
     496           0 :         m_pBtnAdd->Disable();
     497             : 
     498             :     // determine button state
     499           0 :     if ( pLineEndList->Count() )
     500             :     {
     501           0 :         m_pBtnModify->Enable();
     502           0 :         m_pBtnDelete->Enable();
     503           0 :         m_pBtnSave->Enable();
     504             :     }
     505           0 :     return( 0L );
     506             : }
     507             : 
     508             : 
     509             : 
     510           0 : IMPL_LINK_NOARG(SvxLineEndDefTabPage, ClickDeleteHdl_Impl)
     511             : {
     512           0 :     sal_Int32 nPos = m_pLbLineEnds->GetSelectEntryPos();
     513             : 
     514           0 :     if( nPos != LISTBOX_ENTRY_NOTFOUND )
     515             :     {
     516           0 :         MessageDialog aQueryBox( GetParentDialog()
     517             :                                 ,"AskDelLineEndDialog"
     518           0 :                                 ,"cui/ui/querydeletelineenddialog.ui");
     519             : 
     520           0 :         if ( aQueryBox.Execute() == RET_YES )
     521             :         {
     522           0 :             delete pLineEndList->Remove( nPos );
     523           0 :             m_pLbLineEnds->RemoveEntry( nPos );
     524           0 :             m_pLbLineEnds->SelectEntryPos( 0 );
     525             : 
     526           0 :             SelectLineEndHdl_Impl( this );
     527           0 :             *pPageType = 0; // LineEnd shall not be taken over
     528             : 
     529           0 :             *pnLineEndListState |= CT_MODIFIED;
     530             : 
     531           0 :             ChangePreviewHdl_Impl( this );
     532           0 :         }
     533             :     }
     534             :     // determine button state
     535           0 :     if( !pLineEndList->Count() )
     536             :     {
     537           0 :         m_pBtnModify->Disable();
     538           0 :         m_pBtnDelete->Disable();
     539           0 :         m_pBtnSave->Disable();
     540             :     }
     541           0 :     return( 0L );
     542             : }
     543             : 
     544             : 
     545             : 
     546           0 : IMPL_LINK_NOARG(SvxLineEndDefTabPage, ClickLoadHdl_Impl)
     547             : {
     548           0 :     sal_uInt16 nReturn = RET_YES;
     549             : 
     550           0 :     if ( *pnLineEndListState & CT_MODIFIED )
     551             :     {
     552           0 :         nReturn = MessageDialog( GetParentDialog()
     553             :                                 ,"AskSaveList"
     554           0 :                                 ,"cui/ui/querysavelistdialog.ui").Execute();
     555             : 
     556           0 :         if ( nReturn == RET_YES )
     557           0 :             pLineEndList->Save();
     558             :     }
     559             : 
     560           0 :     if ( nReturn != RET_CANCEL )
     561             :     {
     562           0 :         ::sfx2::FileDialogHelper aDlg(com::sun::star::ui::dialogs::TemplateDescription::FILEOPEN_SIMPLE, 0 );
     563           0 :         OUString aStrFilterType( "*.soe" );
     564           0 :         aDlg.AddFilter( aStrFilterType, aStrFilterType );
     565           0 :         INetURLObject aFile( SvtPathOptions().GetPalettePath() );
     566           0 :         aDlg.SetDisplayDirectory( aFile.GetMainURL( INetURLObject::NO_DECODE ) );
     567             : 
     568           0 :         if( aDlg.Execute() == ERRCODE_NONE )
     569             :         {
     570           0 :             INetURLObject aURL( aDlg.GetPath() );
     571           0 :             INetURLObject aPathURL( aURL );
     572             : 
     573           0 :             aPathURL.removeSegment();
     574           0 :             aPathURL.removeFinalSlash();
     575             : 
     576             :             XLineEndListRef pLeList = XPropertyList::AsLineEndList(
     577             :                 XPropertyList::CreatePropertyList(
     578             :                     XLINE_END_LIST,
     579           0 :                     aPathURL.GetMainURL(INetURLObject::NO_DECODE), ""));
     580           0 :             pLeList->SetName( aURL.getName() );
     581           0 :             if( pLeList->Load() )
     582             :             {
     583           0 :                 pLineEndList = pLeList;
     584           0 :                 static_cast<SvxLineTabDialog*>( GetParentDialog() )->SetNewLineEndList( pLineEndList );
     585           0 :                 m_pLbLineEnds->Clear();
     586           0 :                 m_pLbLineEnds->Fill( pLineEndList );
     587           0 :                 Reset( &rOutAttrs );
     588             : 
     589           0 :                 pLineEndList->SetName( aURL.getName() );
     590             : 
     591           0 :                 *pnLineEndListState |= CT_CHANGED;
     592           0 :                 *pnLineEndListState &= ~CT_MODIFIED;
     593             :             }
     594             :             else
     595           0 :                 MessageDialog( GetParentDialog()
     596             :                               ,"NoLoadedFileDialog"
     597           0 :                               ,"cui/ui/querynoloadedfiledialog.ui").Execute();
     598           0 :         }
     599             :     }
     600             : 
     601             :     // determine button state
     602           0 :     if ( pLineEndList->Count() )
     603             :     {
     604           0 :         m_pBtnModify->Enable();
     605           0 :         m_pBtnDelete->Enable();
     606           0 :         m_pBtnSave->Enable();
     607             :     }
     608             :     else
     609             :     {
     610           0 :         m_pBtnModify->Disable();
     611           0 :         m_pBtnDelete->Disable();
     612           0 :         m_pBtnSave->Disable();
     613             :     }
     614           0 :     return( 0L );
     615             : }
     616             : 
     617             : 
     618             : 
     619           0 : IMPL_LINK_NOARG(SvxLineEndDefTabPage, ClickSaveHdl_Impl)
     620             : {
     621           0 :     ::sfx2::FileDialogHelper aDlg( com::sun::star::ui::dialogs::TemplateDescription::FILESAVE_SIMPLE, 0 );
     622           0 :     OUString aStrFilterType( "*.soe" );
     623           0 :     aDlg.AddFilter( aStrFilterType, aStrFilterType );
     624             : 
     625           0 :     INetURLObject aFile( SvtPathOptions().GetPalettePath() );
     626             :     DBG_ASSERT( aFile.GetProtocol() != INET_PROT_NOT_VALID, "invalid URL" );
     627             : 
     628           0 :     if( !pLineEndList->GetName().isEmpty() )
     629             :     {
     630           0 :         aFile.Append( pLineEndList->GetName() );
     631             : 
     632           0 :         if( aFile.getExtension().isEmpty() )
     633           0 :             aFile.SetExtension( "soe" );
     634             :     }
     635             : 
     636           0 :     aDlg.SetDisplayDirectory( aFile.GetMainURL( INetURLObject::NO_DECODE ) );
     637           0 :     if ( aDlg.Execute() == ERRCODE_NONE )
     638             :     {
     639           0 :         INetURLObject   aURL( aDlg.GetPath() );
     640           0 :         INetURLObject   aPathURL( aURL );
     641             : 
     642           0 :         aPathURL.removeSegment();
     643           0 :         aPathURL.removeFinalSlash();
     644             : 
     645           0 :         pLineEndList->SetName( aURL.getName() );
     646           0 :         pLineEndList->SetPath( aPathURL.GetMainURL( INetURLObject::NO_DECODE ) );
     647             : 
     648           0 :         if( pLineEndList->Save() )
     649             :         {
     650           0 :             *pnLineEndListState |= CT_SAVED;
     651           0 :             *pnLineEndListState &= ~CT_MODIFIED;
     652             :         }
     653             :         else
     654             :         {
     655           0 :             MessageDialog( GetParentDialog()
     656             :                           ,"NoSaveFileDialog"
     657           0 :                           ,"cui/ui/querynosavefiledialog.ui").Execute();
     658           0 :         }
     659             :     }
     660           0 :     return( 0L );
     661             : }
     662             : 
     663           0 : void SvxLineEndDefTabPage::DataChanged( const DataChangedEvent& rDCEvt )
     664             : {
     665           0 :     SfxTabPage::DataChanged( rDCEvt );
     666             : 
     667           0 :     if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) && (rDCEvt.GetFlags() & SETTINGS_STYLE) )
     668             :     {
     669           0 :         sal_Int32 nOldSelect = m_pLbLineEnds->GetSelectEntryPos();
     670           0 :         m_pLbLineEnds->Clear();
     671           0 :         m_pLbLineEnds->Fill( pLineEndList );
     672           0 :         m_pLbLineEnds->SelectEntryPos( nOldSelect );
     673             :     }
     674           0 : }
     675             : 
     676             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10