LCOV - code coverage report
Current view: top level - chart2/source/controller/main - ChartController_Tools.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 15 410 3.7 %
Date: 2012-08-25 Functions: 2 20 10.0 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 18 1181 1.5 %

           Branch data     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                 :            : 
      21                 :            : #include "ChartController.hxx"
      22                 :            : #include "ChartWindow.hxx"
      23                 :            : #include "ChartModelHelper.hxx"
      24                 :            : #include "TitleHelper.hxx"
      25                 :            : #include "ThreeDHelper.hxx"
      26                 :            : #include "DataSeriesHelper.hxx"
      27                 :            : #include "UndoGuard.hxx"
      28                 :            : #include "ControllerLockGuard.hxx"
      29                 :            : #include "macros.hxx"
      30                 :            : #include "ResId.hxx"
      31                 :            : #include "Strings.hrc"
      32                 :            : #include "ObjectIdentifier.hxx"
      33                 :            : #include "ReferenceSizeProvider.hxx"
      34                 :            : #include "chartview/ExplicitValueProvider.hxx"
      35                 :            : #include "chartview/DrawModelWrapper.hxx"
      36                 :            : #include "ChartTransferable.hxx"
      37                 :            : #include "DrawViewWrapper.hxx"
      38                 :            : #include "LegendHelper.hxx"
      39                 :            : #include "AxisHelper.hxx"
      40                 :            : #include "RegressionCurveHelper.hxx"
      41                 :            : #include "ShapeController.hxx"
      42                 :            : #include "DiagramHelper.hxx"
      43                 :            : #include "ObjectNameProvider.hxx"
      44                 :            : 
      45                 :            : #include <com/sun/star/chart2/DataPointLabel.hpp>
      46                 :            : #include <com/sun/star/beans/XPropertyState.hpp>
      47                 :            : #include <com/sun/star/drawing/CameraGeometry.hpp>
      48                 :            : #include <com/sun/star/graphic/XGraphic.hpp>
      49                 :            : #include <com/sun/star/io/XInputStream.hpp>
      50                 :            : #include <com/sun/star/text/XTextRange.hpp>
      51                 :            : #include <com/sun/star/drawing/TextVerticalAdjust.hpp>
      52                 :            : #include <com/sun/star/drawing/TextHorizontalAdjust.hpp>
      53                 :            : #include <com/sun/star/chart/ErrorBarStyle.hpp>
      54                 :            : 
      55                 :            : #include <svx/ActionDescriptionProvider.hxx>
      56                 :            : // for TransferableDataHelper/TransferableHelper
      57                 :            : #include <svtools/transfer.hxx>
      58                 :            : // for SotStorageStreamRef
      59                 :            : #include <sot/storage.hxx>
      60                 :            : // for Graphic
      61                 :            : #include <vcl/graph.hxx>
      62                 :            : // for SvxDrawingLayerImport/SvxUnoDrawingModel
      63                 :            : #include <svx/unomodel.hxx>
      64                 :            : // for SdrModel
      65                 :            : #include <svx/svdmodel.hxx>
      66                 :            : // for OInputStreamWrapper
      67                 :            : #include <unotools/streamwrap.hxx>
      68                 :            : // for SolarMutex
      69                 :            : #include <vcl/svapp.hxx>
      70                 :            : #include <osl/mutex.hxx>
      71                 :            : #include <svx/dialmgr.hxx>
      72                 :            : #include <svx/dialogs.hrc>
      73                 :            : // for OutlinerView
      74                 :            : #include <editeng/outliner.hxx>
      75                 :            : #include <svx/svditer.hxx>
      76                 :            : #include <svx/svdpage.hxx>
      77                 :            : #include <svx/svdundo.hxx>
      78                 :            : #include <svx/unoapi.hxx>
      79                 :            : #include <svx/unopage.hxx>
      80                 :            : 
      81                 :            : #include <boost/scoped_ptr.hpp>
      82                 :            : 
      83                 :            : using namespace ::com::sun::star;
      84                 :            : 
      85                 :            : using ::com::sun::star::uno::Reference;
      86                 :            : using ::com::sun::star::uno::Sequence;
      87                 :            : using ::rtl::OUString;
      88                 :            : 
      89                 :            : namespace
      90                 :            : {
      91                 :            : 
      92                 :          0 : bool lcl_deleteDataSeries(
      93                 :            :     const OUString & rCID,
      94                 :            :     const Reference< frame::XModel > & xModel,
      95                 :            :     const Reference< document::XUndoManager > & xUndoManager )
      96                 :            : {
      97                 :          0 :     bool bResult = false;
      98         [ #  # ]:          0 :     uno::Reference< chart2::XDataSeries > xSeries( ::chart::ObjectIdentifier::getDataSeriesForCID( rCID, xModel ));
      99         [ #  # ]:          0 :     uno::Reference< chart2::XChartDocument > xChartDoc( xModel, uno::UNO_QUERY );
     100 [ #  # ][ #  # ]:          0 :     if( xSeries.is() && xChartDoc.is())
                 [ #  # ]
     101                 :            :     {
     102                 :            :         uno::Reference< chart2::XChartType > xChartType(
     103 [ #  # ][ #  # ]:          0 :             ::chart::DataSeriesHelper::getChartTypeOfSeries( xSeries, xChartDoc->getFirstDiagram()));
                 [ #  # ]
     104         [ #  # ]:          0 :         if( xChartType.is())
     105                 :            :         {
     106                 :            :             ::chart::UndoGuard aUndoGuard(
     107                 :            :                 ActionDescriptionProvider::createDescription(
     108                 :            :                     ActionDescriptionProvider::DELETE, String( ::chart::SchResId( STR_OBJECT_DATASERIES ))),
     109 [ #  # ][ #  # ]:          0 :                 xUndoManager );
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
     110                 :            : 
     111         [ #  # ]:          0 :             Reference< chart2::XDiagram > xDiagram( ::chart::ChartModelHelper::findDiagram( xModel ) );
     112         [ #  # ]:          0 :             uno::Reference< chart2::XAxis > xAxis( ::chart::DiagramHelper::getAttachedAxis( xSeries, xDiagram ) );
     113                 :            : 
     114         [ #  # ]:          0 :             ::chart::DataSeriesHelper::deleteSeries( xSeries, xChartType );
     115                 :            : 
     116         [ #  # ]:          0 :             ::chart::AxisHelper::hideAxisIfNoDataIsAttached( xAxis, xDiagram );
     117                 :            : 
     118                 :          0 :             bResult = true;
     119 [ #  # ][ #  # ]:          0 :             aUndoGuard.commit();
     120                 :          0 :         }
     121                 :            :     }
     122                 :          0 :     return bResult;
     123                 :            : }
     124                 :            : 
     125                 :          0 : bool lcl_deleteDataCurve(
     126                 :            :     const OUString & rCID,
     127                 :            :     const Reference< frame::XModel > & xModel,
     128                 :            :     const Reference< document::XUndoManager > & xUndoManager )
     129                 :            : {
     130                 :          0 :     bool bResult = false;
     131                 :            :     uno::Reference< chart2::XRegressionCurveContainer > xRegCurveCnt(
     132                 :            :         ::chart::ObjectIdentifier::getObjectPropertySet(
     133 [ #  # ][ #  # ]:          0 :             ::chart::ObjectIdentifier::getSeriesParticleFromCID( rCID ), xModel ), uno::UNO_QUERY );
                 [ #  # ]
     134         [ #  # ]:          0 :     if( xRegCurveCnt.is())
     135                 :            :     {
     136                 :            :         ::chart::UndoGuard aUndoGuard(
     137                 :            :             ActionDescriptionProvider::createDescription(
     138                 :            :                 ActionDescriptionProvider::DELETE, String( ::chart::SchResId( STR_OBJECT_CURVE ))),
     139 [ #  # ][ #  # ]:          0 :             xUndoManager );
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
     140         [ #  # ]:          0 :         ::chart::RegressionCurveHelper::removeAllExceptMeanValueLine( xRegCurveCnt );
     141                 :          0 :         bResult = true;
     142 [ #  # ][ #  # ]:          0 :         aUndoGuard.commit();
     143                 :            :     }
     144                 :          0 :     return bResult;
     145                 :            : }
     146                 :            : 
     147                 :            : } // anonymous namespace
     148                 :            : 
     149                 :            : 
     150                 :            : namespace chart
     151                 :            : {
     152                 :            : 
     153                 :            : SAL_WNODEPRECATED_DECLARATIONS_PUSH
     154                 :          0 : ::std::auto_ptr< ReferenceSizeProvider > ChartController::impl_createReferenceSizeProvider()
     155                 :            : {
     156 [ #  # ][ #  # ]:          0 :     awt::Size aPageSize( ChartModelHelper::getPageSize( getModel() ) );
     157                 :            : 
     158                 :            :     return ::std::auto_ptr< ReferenceSizeProvider >(
     159                 :            :         new ReferenceSizeProvider( aPageSize,
     160 [ #  # ][ #  # ]:          0 :             Reference< chart2::XChartDocument >( getModel(), uno::UNO_QUERY )));
         [ #  # ][ #  # ]
                 [ #  # ]
     161                 :            : }
     162                 :            : SAL_WNODEPRECATED_DECLARATIONS_POP
     163                 :            : 
     164                 :          0 : void ChartController::impl_adaptDataSeriesAutoResize()
     165                 :            : {
     166                 :            :     SAL_WNODEPRECATED_DECLARATIONS_PUSH
     167                 :            :     ::std::auto_ptr< ReferenceSizeProvider > apRefSizeProvider(
     168 [ #  # ][ #  # ]:          0 :         impl_createReferenceSizeProvider());
     169                 :            :     SAL_WNODEPRECATED_DECLARATIONS_POP
     170         [ #  # ]:          0 :     if( apRefSizeProvider.get())
     171 [ #  # ][ #  # ]:          0 :         apRefSizeProvider->setValuesAtAllDataSeries();
     172                 :          0 : }
     173                 :            : 
     174                 :          0 : void ChartController::executeDispatch_NewArrangement()
     175                 :            : {
     176                 :            :     // remove manual positions at titles, legend and the diagram, remove manual
     177                 :            :     // size at the diagram
     178                 :            : 
     179                 :            :     try
     180                 :            :     {
     181         [ #  # ]:          0 :         Reference< frame::XModel > xModel( getModel() );
     182         [ #  # ]:          0 :         Reference< chart2::XDiagram > xDiagram( ChartModelHelper::findDiagram( xModel ));
     183         [ #  # ]:          0 :         if( xDiagram.is())
     184                 :            :         {
     185                 :            :             // using assignment for broken gcc 3.3
     186                 :            :             UndoGuard aUndoGuard = UndoGuard(
     187                 :            :                 String( SchResId( STR_ACTION_REARRANGE_CHART )),
     188 [ #  # ][ #  # ]:          0 :                 m_xUndoManager );
         [ #  # ][ #  # ]
                 [ #  # ]
     189         [ #  # ]:          0 :             ControllerLockGuard aCtlLockGuard( xModel );
     190                 :            : 
     191                 :            :             // diagram
     192         [ #  # ]:          0 :             Reference< beans::XPropertyState > xState( xDiagram, uno::UNO_QUERY_THROW );
     193 [ #  # ][ #  # ]:          0 :             xState->setPropertyToDefault( C2U("RelativeSize"));
                 [ #  # ]
     194 [ #  # ][ #  # ]:          0 :             xState->setPropertyToDefault( C2U("RelativePosition"));
                 [ #  # ]
     195 [ #  # ][ #  # ]:          0 :             xState->setPropertyToDefault( C2U("PosSizeExcludeAxes"));
                 [ #  # ]
     196                 :            : 
     197                 :            :             // 3d rotation
     198 [ #  # ][ #  # ]:          0 :             ThreeDHelper::set3DSettingsToDefault( uno::Reference< beans::XPropertySet >( xDiagram, uno::UNO_QUERY ) );
     199                 :            : 
     200                 :            :             // legend
     201 [ #  # ][ #  # ]:          0 :             Reference< beans::XPropertyState > xLegendState( xDiagram->getLegend(), uno::UNO_QUERY );
                 [ #  # ]
     202         [ #  # ]:          0 :             if( xLegendState.is())
     203                 :            :             {
     204 [ #  # ][ #  # ]:          0 :                 xLegendState->setPropertyToDefault( C2U("RelativePosition"));
                 [ #  # ]
     205 [ #  # ][ #  # ]:          0 :                 xLegendState->setPropertyToDefault( C2U("RelativeSize"));
                 [ #  # ]
     206 [ #  # ][ #  # ]:          0 :                 xLegendState->setPropertyToDefault( C2U("AnchorPosition"));
                 [ #  # ]
     207                 :            :             }
     208                 :            : 
     209                 :            :             // titles
     210         [ #  # ]:          0 :             for( sal_Int32 eType = TitleHelper::TITLE_BEGIN;
     211                 :            :                  eType < TitleHelper::NORMAL_TITLE_END;
     212                 :            :                  ++eType )
     213                 :            :             {
     214                 :            :                 Reference< beans::XPropertyState > xTitleState(
     215                 :            :                     TitleHelper::getTitle(
     216 [ #  # ][ #  # ]:          0 :                         static_cast< TitleHelper::eTitleType >( eType ), xModel ), uno::UNO_QUERY );
     217         [ #  # ]:          0 :                 if( xTitleState.is())
     218 [ #  # ][ #  # ]:          0 :                     xTitleState->setPropertyToDefault( C2U("RelativePosition"));
                 [ #  # ]
     219                 :          0 :             }
     220                 :            : 
     221                 :            :             // regression curve equations
     222                 :            :             ::std::vector< Reference< chart2::XRegressionCurve > > aRegressionCurves(
     223         [ #  # ]:          0 :                 RegressionCurveHelper::getAllRegressionCurvesNotMeanValueLine( xDiagram ));
     224                 :            :             ::std::for_each( aRegressionCurves.begin(), aRegressionCurves.end(),
     225         [ #  # ]:          0 :                       RegressionCurveHelper::resetEquationPosition );
     226                 :            : 
     227 [ #  # ][ #  # ]:          0 :             aUndoGuard.commit();
                 [ #  # ]
     228         [ #  # ]:          0 :         }
     229                 :            :     }
     230                 :          0 :     catch( const uno::RuntimeException & ex )
     231                 :            :     {
     232                 :            :         ASSERT_EXCEPTION( ex );
     233                 :            :     }
     234                 :          0 : }
     235                 :            : 
     236                 :          0 : void ChartController::executeDispatch_ScaleText()
     237                 :            : {
     238         [ #  # ]:          0 :     SolarMutexGuard aSolarGuard;
     239                 :            :     // using assignment for broken gcc 3.3
     240                 :            :     UndoGuard aUndoGuard = UndoGuard(
     241                 :            :         String( SchResId( STR_ACTION_SCALE_TEXT )),
     242 [ #  # ][ #  # ]:          0 :         m_xUndoManager );
         [ #  # ][ #  # ]
                 [ #  # ]
     243 [ #  # ][ #  # ]:          0 :     ControllerLockGuard aCtlLockGuard( getModel() );
     244                 :            :     SAL_WNODEPRECATED_DECLARATIONS_PUSH
     245 [ #  # ][ #  # ]:          0 :     ::std::auto_ptr< ReferenceSizeProvider > apRefSizeProv( impl_createReferenceSizeProvider());
     246                 :            :     SAL_WNODEPRECATED_DECLARATIONS_POP
     247                 :            :     OSL_ASSERT( apRefSizeProv.get());
     248         [ #  # ]:          0 :     if( apRefSizeProv.get())
     249         [ #  # ]:          0 :         apRefSizeProv->toggleAutoResizeState();
     250 [ #  # ][ #  # ]:          0 :     aUndoGuard.commit();
         [ #  # ][ #  # ]
                 [ #  # ]
     251                 :          0 : }
     252                 :            : 
     253                 :          0 : void ChartController::executeDispatch_Paste()
     254                 :            : {
     255         [ #  # ]:          0 :     SolarMutexGuard aGuard;
     256         [ #  # ]:          0 :     if( m_pChartWindow )
     257                 :            :     {
     258         [ #  # ]:          0 :         Graphic aGraphic;
     259                 :            :         // paste location: center of window
     260                 :          0 :         Point aPos;
     261 [ #  # ][ #  # ]:          0 :         aPos = m_pChartWindow->PixelToLogic( Rectangle( aPos, m_pChartWindow->GetSizePixel()).Center());
         [ #  # ][ #  # ]
     262                 :            : 
     263                 :            :         // handle different formats
     264         [ #  # ]:          0 :         TransferableDataHelper aDataHelper( TransferableDataHelper::CreateFromSystemClipboard( m_pChartWindow ));
     265         [ #  # ]:          0 :         if( aDataHelper.GetTransferable().is())
     266                 :            :         {
     267 [ #  # ][ #  # ]:          0 :             if ( aDataHelper.HasFormat( SOT_FORMATSTR_ID_DRAWING ) )
     268                 :            :             {
     269                 :          0 :                 SotStorageStreamRef xStm;
     270 [ #  # ][ #  # ]:          0 :                 if ( aDataHelper.GetSotStorageStream( SOT_FORMATSTR_ID_DRAWING, xStm ) )
     271                 :            :                 {
     272         [ #  # ]:          0 :                     xStm->Seek( 0 );
     273 [ #  # ][ #  # ]:          0 :                     Reference< io::XInputStream > xInputStream( new utl::OInputStreamWrapper( *xStm ) );
                 [ #  # ]
     274 [ #  # ][ #  # ]:          0 :                     ::boost::scoped_ptr< SdrModel > spModel( new SdrModel() );
     275 [ #  # ][ #  # ]:          0 :                     if ( SvxDrawingLayerImport( spModel.get(), xInputStream ) )
     276                 :            :                     {
     277         [ #  # ]:          0 :                         impl_PasteShapes( spModel.get() );
     278         [ #  # ]:          0 :                     }
     279         [ #  # ]:          0 :                 }
     280                 :            :             }
     281 [ #  # ][ #  # ]:          0 :             else if ( aDataHelper.HasFormat( SOT_FORMATSTR_ID_SVXB ) )
     282                 :            :             {
     283                 :            :                 // graphic exchange format (graphic manager bitmap format?)
     284                 :          0 :                 SotStorageStreamRef xStm;
     285 [ #  # ][ #  # ]:          0 :                 if( aDataHelper.GetSotStorageStream( SOT_FORMATSTR_ID_SVXB, xStm ))
     286 [ #  # ][ #  # ]:          0 :                     (*xStm) >> aGraphic;
     287                 :            :             }
     288 [ #  # ][ #  # ]:          0 :             else if( aDataHelper.HasFormat( FORMAT_GDIMETAFILE ))
     289                 :            :             {
     290                 :            :                 // meta file
     291         [ #  # ]:          0 :                 GDIMetaFile aMetafile;
     292 [ #  # ][ #  # ]:          0 :                 if( aDataHelper.GetGDIMetaFile( FORMAT_GDIMETAFILE, aMetafile ))
     293 [ #  # ][ #  # ]:          0 :                     aGraphic = Graphic( aMetafile );
         [ #  # ][ #  # ]
     294                 :            :             }
     295 [ #  # ][ #  # ]:          0 :             else if( aDataHelper.HasFormat( FORMAT_BITMAP ))
     296                 :            :             {
     297                 :            :                 // bitmap (non-graphic-manager)
     298         [ #  # ]:          0 :                 Bitmap aBmp;
     299 [ #  # ][ #  # ]:          0 :                 if( aDataHelper.GetBitmap( FORMAT_BITMAP, aBmp ))
     300 [ #  # ][ #  # ]:          0 :                     aGraphic = Graphic( aBmp );
         [ #  # ][ #  # ]
     301                 :            :             }
     302 [ #  # ][ #  # ]:          0 :             else if( aDataHelper.HasFormat( FORMAT_STRING ))
     303                 :            :             {
     304                 :          0 :                 OUString aString;
     305 [ #  # ][ #  # ]:          0 :                 if( aDataHelper.GetString( FORMAT_STRING, aString ) && m_pDrawModelWrapper )
         [ #  # ][ #  # ]
     306                 :            :                 {
     307         [ #  # ]:          0 :                     if( m_pDrawViewWrapper )
     308                 :            :                     {
     309                 :          0 :                         OutlinerView* pOutlinerView = m_pDrawViewWrapper->GetTextEditOutlinerView();
     310         [ #  # ]:          0 :                         if( pOutlinerView )//in case of edit mode insert into edited string
     311 [ #  # ][ #  # ]:          0 :                             pOutlinerView->InsertText( aString );
                 [ #  # ]
     312                 :            :                         else
     313                 :            :                         {
     314         [ #  # ]:          0 :                             impl_PasteStringAsTextShape( aString, awt::Point( 0, 0 ) );
     315                 :            :                         }
     316                 :            :                     }
     317                 :          0 :                 }
     318                 :            :             }
     319                 :            :         }
     320                 :            : 
     321 [ #  # ][ #  # ]:          0 :         if( aGraphic.GetType() != GRAPHIC_NONE )
     322                 :            :         {
     323         [ #  # ]:          0 :             Reference< graphic::XGraphic > xGraphic( aGraphic.GetXGraphic());
     324         [ #  # ]:          0 :             if( xGraphic.is())
     325         [ #  # ]:          0 :                 impl_PasteGraphic( xGraphic, aPos );
     326 [ #  # ][ #  # ]:          0 :         }
     327         [ #  # ]:          0 :     }
     328                 :          0 : }
     329                 :            : 
     330                 :            : // note: aPosition is ignored for now. The object is always pasted centered to
     331                 :            : // the page
     332                 :          0 : void ChartController::impl_PasteGraphic(
     333                 :            :     uno::Reference< graphic::XGraphic > & xGraphic,
     334                 :            :     const ::Point & /* aPosition */ )
     335                 :            : {
     336                 :            :     // note: the XPropertySet of the model is the old API. Also the property
     337                 :            :     // "AdditionalShapes" that is used there.
     338 [ #  # ][ #  # ]:          0 :     uno::Reference< beans::XPropertySet > xModelProp( getModel(), uno::UNO_QUERY );
     339         [ #  # ]:          0 :     DrawModelWrapper * pDrawModelWrapper( this->GetDrawModelWrapper());
     340 [ #  # ][ #  # ]:          0 :     if( ! (xGraphic.is() && xModelProp.is()))
                 [ #  # ]
     341                 :          0 :         return;
     342         [ #  # ]:          0 :     uno::Reference< lang::XMultiServiceFactory > xFact( pDrawModelWrapper->getShapeFactory());
     343                 :            :     uno::Reference< drawing::XShape > xGraphicShape(
     344 [ #  # ][ #  # ]:          0 :         xFact->createInstance( C2U( "com.sun.star.drawing.GraphicObjectShape" )), uno::UNO_QUERY );
         [ #  # ][ #  # ]
     345         [ #  # ]:          0 :     uno::Reference< beans::XPropertySet > xGraphicShapeProp( xGraphicShape, uno::UNO_QUERY );
     346 [ #  # ][ #  # ]:          0 :     if( xGraphicShapeProp.is() && xGraphicShape.is())
                 [ #  # ]
     347                 :            :     {
     348 [ #  # ][ #  # ]:          0 :         uno::Reference< drawing::XShapes > xPage( pDrawModelWrapper->getMainDrawPage(), uno::UNO_QUERY );
     349         [ #  # ]:          0 :         if( xPage.is())
     350                 :            :         {
     351 [ #  # ][ #  # ]:          0 :             xPage->add( xGraphicShape );
     352                 :            :             //need to change the model state manually
     353                 :            :             {
     354 [ #  # ][ #  # ]:          0 :                 uno::Reference< util::XModifiable > xModifiable( getModel(), uno::UNO_QUERY );
     355         [ #  # ]:          0 :                 if( xModifiable.is() )
     356 [ #  # ][ #  # ]:          0 :                     xModifiable->setModified( true );
     357                 :            :             }
     358                 :            :             //select new shape
     359         [ #  # ]:          0 :             m_aSelection.setSelection( xGraphicShape );
     360         [ #  # ]:          0 :             m_aSelection.applySelection( m_pDrawViewWrapper );
     361                 :            :         }
     362 [ #  # ][ #  # ]:          0 :         xGraphicShapeProp->setPropertyValue( C2U("Graphic"), uno::makeAny( xGraphic ));
         [ #  # ][ #  # ]
     363         [ #  # ]:          0 :         uno::Reference< beans::XPropertySet > xGraphicProp( xGraphic, uno::UNO_QUERY );
     364                 :            : 
     365                 :          0 :         awt::Size aGraphicSize( 1000, 1000 );
     366                 :            :         // first try size in 100th mm, then pixel size
     367 [ #  # ][ #  # ]:          0 :         if( ! ( xGraphicProp->getPropertyValue( C2U("Size100thMM")) >>= aGraphicSize ) &&
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
           [ #  #  #  #  
           #  # ][ #  # ]
     368 [ #  # ][ #  # ]:          0 :             ( ( xGraphicProp->getPropertyValue( C2U("SizePixel")) >>= aGraphicSize ) && m_pChartWindow ))
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
           [ #  #  #  # ]
     369                 :            :         {
     370         [ #  # ]:          0 :             ::Size aVCLSize( m_pChartWindow->PixelToLogic( Size( aGraphicSize.Width, aGraphicSize.Height )));
     371                 :          0 :             aGraphicSize.Width = aVCLSize.getWidth();
     372                 :          0 :             aGraphicSize.Height = aVCLSize.getHeight();
     373                 :            :         }
     374 [ #  # ][ #  # ]:          0 :         xGraphicShape->setSize( aGraphicSize );
     375 [ #  # ][ #  # ]:          0 :         xGraphicShape->setPosition( awt::Point( 0, 0 ) );
     376         [ #  # ]:          0 :     }
     377                 :            : }
     378                 :            : 
     379                 :          0 : void ChartController::impl_PasteShapes( SdrModel* pModel )
     380                 :            : {
     381                 :          0 :     DrawModelWrapper* pDrawModelWrapper( this->GetDrawModelWrapper() );
     382 [ #  # ][ #  # ]:          0 :     if ( pDrawModelWrapper && m_pDrawViewWrapper )
     383                 :            :     {
     384         [ #  # ]:          0 :         Reference< drawing::XDrawPage > xDestPage( pDrawModelWrapper->getMainDrawPage() );
     385                 :          0 :         SdrPage* pDestPage = GetSdrPageFromXDrawPage( xDestPage );
     386         [ #  # ]:          0 :         if ( pDestPage )
     387                 :            :         {
     388                 :          0 :             Reference< drawing::XShape > xSelShape;
     389 [ #  # ][ #  # ]:          0 :             m_pDrawViewWrapper->BegUndo( SVX_RESSTR( RID_SVX_3D_UNDO_EXCHANGE_PASTE ) );
         [ #  # ][ #  # ]
                 [ #  # ]
     390         [ #  # ]:          0 :             sal_uInt16 nCount = pModel->GetPageCount();
     391         [ #  # ]:          0 :             for ( sal_uInt16 i = 0; i < nCount; ++i )
     392                 :            :             {
     393         [ #  # ]:          0 :                 const SdrPage* pPage = pModel->GetPage( i );
     394         [ #  # ]:          0 :                 SdrObjListIter aIter( *pPage, IM_DEEPNOGROUPS );
     395         [ #  # ]:          0 :                 while ( aIter.IsMore() )
     396                 :            :                 {
     397         [ #  # ]:          0 :                     SdrObject* pObj = aIter.Next();
     398 [ #  # ][ #  # ]:          0 :                     SdrObject* pNewObj = ( pObj ? pObj->Clone() : NULL );
     399         [ #  # ]:          0 :                     if ( pNewObj )
     400                 :            :                     {
     401 [ #  # ][ #  # ]:          0 :                         pNewObj->SetModel( &pDrawModelWrapper->getSdrModel() );
     402         [ #  # ]:          0 :                         pNewObj->SetPage( pDestPage );
     403                 :            : 
     404                 :            :                         // set position
     405 [ #  # ][ #  # ]:          0 :                         Reference< drawing::XShape > xShape( pNewObj->getUnoShape(), uno::UNO_QUERY );
     406         [ #  # ]:          0 :                         if ( xShape.is() )
     407                 :            :                         {
     408 [ #  # ][ #  # ]:          0 :                             xShape->setPosition( awt::Point( 0, 0 ) );
     409                 :            :                         }
     410                 :            : 
     411         [ #  # ]:          0 :                         pDestPage->InsertObject( pNewObj );
     412 [ #  # ][ #  # ]:          0 :                         m_pDrawViewWrapper->AddUndo( new SdrUndoInsertObj( *pNewObj ) );
                 [ #  # ]
     413         [ #  # ]:          0 :                         xSelShape = xShape;
     414                 :            :                     }
     415                 :            :                 }
     416                 :          0 :             }
     417                 :            : 
     418 [ #  # ][ #  # ]:          0 :             Reference< util::XModifiable > xModifiable( getModel(), uno::UNO_QUERY );
     419         [ #  # ]:          0 :             if ( xModifiable.is() )
     420                 :            :             {
     421 [ #  # ][ #  # ]:          0 :                 xModifiable->setModified( true );
     422                 :            :             }
     423                 :            : 
     424                 :            :             // select last inserted shape
     425         [ #  # ]:          0 :             m_aSelection.setSelection( xSelShape );
     426         [ #  # ]:          0 :             m_aSelection.applySelection( m_pDrawViewWrapper );
     427                 :            : 
     428         [ #  # ]:          0 :             m_pDrawViewWrapper->EndUndo();
     429                 :            : 
     430         [ #  # ]:          0 :             impl_switchDiagramPositioningToExcludingPositioning();
     431                 :          0 :         }
     432                 :            :     }
     433                 :          0 : }
     434                 :            : 
     435                 :          0 : void ChartController::impl_PasteStringAsTextShape( const OUString& rString, const awt::Point& rPosition )
     436                 :            : {
     437                 :          0 :     DrawModelWrapper* pDrawModelWrapper( this->GetDrawModelWrapper() );
     438 [ #  # ][ #  # ]:          0 :     if ( pDrawModelWrapper && m_pDrawViewWrapper )
     439                 :            :     {
     440                 :          0 :         const Reference< lang::XMultiServiceFactory >& xShapeFactory( pDrawModelWrapper->getShapeFactory() );
     441         [ #  # ]:          0 :         const Reference< drawing::XDrawPage >& xDrawPage( pDrawModelWrapper->getMainDrawPage() );
     442                 :            :         OSL_ASSERT( xShapeFactory.is() && xDrawPage.is() );
     443                 :            : 
     444 [ #  # ][ #  # ]:          0 :         if ( xShapeFactory.is() && xDrawPage.is() )
                 [ #  # ]
     445                 :            :         {
     446                 :            :             try
     447                 :            :             {
     448                 :            :                 Reference< drawing::XShape > xTextShape(
     449 [ #  # ][ #  # ]:          0 :                     xShapeFactory->createInstance( C2U( "com.sun.star.drawing.TextShape" ) ), uno::UNO_QUERY_THROW );
         [ #  # ][ #  # ]
     450 [ #  # ][ #  # ]:          0 :                 xDrawPage->add( xTextShape );
     451                 :            : 
     452         [ #  # ]:          0 :                 Reference< text::XTextRange > xRange( xTextShape, uno::UNO_QUERY_THROW );
     453 [ #  # ][ #  # ]:          0 :                 xRange->setString( rString );
     454                 :            : 
     455                 :          0 :                 float fCharHeight = 10.0;
     456         [ #  # ]:          0 :                 Reference< beans::XPropertySet > xProperties( xTextShape, uno::UNO_QUERY_THROW );
     457 [ #  # ][ #  # ]:          0 :                 xProperties->setPropertyValue( C2U( "TextAutoGrowHeight" ), uno::makeAny( true ) );
         [ #  # ][ #  # ]
     458 [ #  # ][ #  # ]:          0 :                 xProperties->setPropertyValue( C2U( "TextAutoGrowWidth" ), uno::makeAny( true ) );
         [ #  # ][ #  # ]
     459 [ #  # ][ #  # ]:          0 :                 xProperties->setPropertyValue( C2U( "CharHeight" ), uno::makeAny( fCharHeight ) );
         [ #  # ][ #  # ]
     460 [ #  # ][ #  # ]:          0 :                 xProperties->setPropertyValue( C2U( "CharHeightAsian" ), uno::makeAny( fCharHeight ) );
         [ #  # ][ #  # ]
     461 [ #  # ][ #  # ]:          0 :                 xProperties->setPropertyValue( C2U( "CharHeightComplex" ), uno::makeAny( fCharHeight ) );
         [ #  # ][ #  # ]
     462 [ #  # ][ #  # ]:          0 :                 xProperties->setPropertyValue( C2U( "TextVerticalAdjust" ), uno::makeAny( drawing::TextVerticalAdjust_CENTER ) );
         [ #  # ][ #  # ]
     463 [ #  # ][ #  # ]:          0 :                 xProperties->setPropertyValue( C2U( "TextHorizontalAdjust" ), uno::makeAny( drawing::TextHorizontalAdjust_CENTER ) );
         [ #  # ][ #  # ]
     464 [ #  # ][ #  # ]:          0 :                 xProperties->setPropertyValue( C2U( "CharFontName" ), uno::makeAny( C2U( "Albany" ) ) );
         [ #  # ][ #  # ]
                 [ #  # ]
     465                 :            : 
     466 [ #  # ][ #  # ]:          0 :                 xTextShape->setPosition( rPosition );
     467                 :            : 
     468         [ #  # ]:          0 :                 m_aSelection.setSelection( xTextShape );
     469         [ #  # ]:          0 :                 m_aSelection.applySelection( m_pDrawViewWrapper );
     470                 :            : 
     471         [ #  # ]:          0 :                 SdrObject* pObj = DrawViewWrapper::getSdrObject( xTextShape );
     472         [ #  # ]:          0 :                 if ( pObj )
     473                 :            :                 {
     474 [ #  # ][ #  # ]:          0 :                     m_pDrawViewWrapper->BegUndo( SVX_RESSTR( RID_SVX_3D_UNDO_EXCHANGE_PASTE ) );
         [ #  # ][ #  # ]
                 [ #  # ]
     475 [ #  # ][ #  # ]:          0 :                     m_pDrawViewWrapper->AddUndo( new SdrUndoInsertObj( *pObj ) );
                 [ #  # ]
     476         [ #  # ]:          0 :                     m_pDrawViewWrapper->EndUndo();
     477                 :            : 
     478         [ #  # ]:          0 :                     impl_switchDiagramPositioningToExcludingPositioning();
     479         [ #  # ]:          0 :                 }
     480                 :            :             }
     481         [ #  # ]:          0 :             catch ( const uno::Exception& ex )
     482                 :            :             {
     483                 :            :                 ASSERT_EXCEPTION( ex );
     484                 :            :             }
     485                 :          0 :         }
     486                 :            :     }
     487                 :          0 : }
     488                 :            : 
     489                 :          0 : void ChartController::executeDispatch_Copy()
     490                 :            : {
     491         [ #  # ]:          0 :     if ( m_pDrawViewWrapper )
     492                 :            :     {
     493                 :          0 :         OutlinerView* pOutlinerView = m_pDrawViewWrapper->GetTextEditOutlinerView();
     494         [ #  # ]:          0 :         if ( pOutlinerView )
     495                 :            :         {
     496                 :          0 :             pOutlinerView->Copy();
     497                 :            :         }
     498                 :            :         else
     499                 :            :         {
     500                 :          0 :             Reference< datatransfer::XTransferable > xTransferable;
     501                 :            :             {
     502         [ #  # ]:          0 :                 SolarMutexGuard aSolarGuard;
     503                 :          0 :                 SdrObject* pSelectedObj = 0;
     504         [ #  # ]:          0 :                 if ( m_pDrawModelWrapper )
     505                 :            :                 {
     506         [ #  # ]:          0 :                     ObjectIdentifier aSelOID( m_aSelection.getSelectedOID() );
     507 [ #  # ][ #  # ]:          0 :                     if ( aSelOID.isAutoGeneratedObject() )
     508                 :            :                     {
     509 [ #  # ][ #  # ]:          0 :                         pSelectedObj = m_pDrawModelWrapper->getNamedSdrObject( aSelOID.getObjectCID() );
     510                 :            :                     }
     511 [ #  # ][ #  # ]:          0 :                     else if ( aSelOID.isAdditionalShape() )
     512                 :            :                     {
     513 [ #  # ][ #  # ]:          0 :                         pSelectedObj = DrawViewWrapper::getSdrObject( aSelOID.getAdditionalShape() );
     514                 :            :                     }
     515         [ #  # ]:          0 :                     if ( pSelectedObj )
     516                 :            :                     {
     517                 :            :                         xTransferable = Reference< datatransfer::XTransferable >( new ChartTransferable(
     518 [ #  # ][ #  # ]:          0 :                                 &m_pDrawModelWrapper->getSdrModel(), pSelectedObj, aSelOID.isAdditionalShape() ) );
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
     519         [ #  # ]:          0 :                     }
     520         [ #  # ]:          0 :                 }
     521                 :            :             }
     522         [ #  # ]:          0 :             if ( xTransferable.is() )
     523                 :            :             {
     524         [ #  # ]:          0 :                 Reference< datatransfer::clipboard::XClipboard > xClipboard( TransferableHelper::GetSystemClipboard() );
     525         [ #  # ]:          0 :                 if ( xClipboard.is() )
     526                 :            :                 {
     527 [ #  # ][ #  # ]:          0 :                     xClipboard->setContents( xTransferable, Reference< datatransfer::clipboard::XClipboardOwner >() );
     528                 :          0 :                 }
     529                 :          0 :             }
     530                 :            :         }
     531                 :            :     }
     532                 :          0 : }
     533                 :            : 
     534                 :          0 : void ChartController::executeDispatch_Cut()
     535                 :            : {
     536                 :          0 :     executeDispatch_Copy();
     537                 :          0 :     executeDispatch_Delete();
     538                 :          0 : }
     539                 :            : 
     540                 :       2361 : bool ChartController::isObjectDeleteable( const uno::Any& rSelection )
     541                 :            : {
     542         [ +  - ]:       2361 :     ObjectIdentifier aSelOID( rSelection );
     543 [ +  - ][ +  + ]:       2361 :     if ( aSelOID.isAutoGeneratedObject() )
     544                 :            :     {
     545         [ +  - ]:       2327 :         OUString aSelObjCID( aSelOID.getObjectCID() );
     546         [ +  - ]:       2327 :         ObjectType aObjectType(ObjectIdentifier::getObjectType( aSelObjCID ));
     547                 :            : 
     548         [ -  + ]:       2327 :         switch(aObjectType)
     549                 :            :         {
     550                 :            :         case OBJECTTYPE_TITLE:
     551                 :            :         case OBJECTTYPE_LEGEND:
     552                 :            :         case OBJECTTYPE_DATA_SERIES:
     553                 :            :         case OBJECTTYPE_LEGEND_ENTRY:
     554                 :            :         case OBJECTTYPE_DATA_CURVE_EQUATION:
     555                 :            :         case OBJECTTYPE_DATA_CURVE:
     556                 :            :         case OBJECTTYPE_DATA_AVERAGE_LINE:
     557                 :            :         case OBJECTTYPE_DATA_ERRORS_X:
     558                 :            :         case OBJECTTYPE_DATA_ERRORS_Y:
     559                 :            :         case OBJECTTYPE_DATA_ERRORS_Z:
     560                 :            :         case OBJECTTYPE_DATA_LABELS:
     561                 :            :         case OBJECTTYPE_DATA_LABEL:
     562                 :            :         case OBJECTTYPE_AXIS:
     563                 :            :         case OBJECTTYPE_GRID:
     564                 :            :         case OBJECTTYPE_SUBGRID:
     565                 :          0 :             return true;
     566                 :            :         default:
     567                 :       2327 :             break;
     568         [ +  - ]:       2327 :         }
     569                 :            :     }
     570 [ +  - ][ -  + ]:         34 :     else if ( aSelOID.isAdditionalShape() )
     571                 :            :     {
     572                 :          0 :         return true;
     573                 :            :     }
     574                 :            : 
     575         [ +  - ]:       2361 :     return false;
     576                 :            : }
     577                 :            : 
     578                 :       2361 : bool ChartController::isShapeContext() const
     579                 :            : {
     580 [ +  - ][ +  +  :       6903 :     if ( m_aSelection.isAdditionalShapeSelected() ||
             +  +  -  + ]
                 [ -  + ]
     581                 :       2293 :          ( m_pDrawViewWrapper && m_pDrawViewWrapper->AreObjectsMarked() &&
     582                 :       2249 :            ( m_pDrawViewWrapper->GetCurrentObjIdentifier() == OBJ_TEXT ) ) )
     583                 :            :     {
     584                 :          0 :         return true;
     585                 :            :     }
     586                 :            : 
     587                 :       2361 :     return false;
     588                 :            : }
     589                 :            : 
     590                 :          0 : void ChartController::impl_ClearSelection()
     591                 :            : {
     592         [ #  # ]:          0 :     if( m_aSelection.hasSelection())
     593                 :            :     {
     594                 :          0 :         m_aSelection.clearSelection();
     595                 :          0 :         impl_notifySelectionChangeListeners();
     596                 :            :     }
     597                 :          0 : }
     598                 :            : 
     599                 :          0 : bool ChartController::executeDispatch_Delete()
     600                 :            : {
     601                 :          0 :     bool bReturn = false;
     602                 :            : 
     603                 :            :     // remove the selected object
     604         [ #  # ]:          0 :     rtl::OUString aCID( m_aSelection.getSelectedCID() );
     605         [ #  # ]:          0 :     if( !aCID.isEmpty() )
     606                 :            :     {
     607 [ #  # ][ #  # ]:          0 :         if( !isObjectDeleteable( uno::Any( aCID ) ) )
                 [ #  # ]
     608                 :          0 :             return false;
     609                 :            : 
     610                 :            :         //remove chart object
     611 [ #  # ][ #  # ]:          0 :         uno::Reference< chart2::XChartDocument > xChartDoc( getModel(), uno::UNO_QUERY );
     612         [ #  # ]:          0 :         if( !xChartDoc.is() )
     613                 :          0 :             return false;
     614                 :            : 
     615         [ #  # ]:          0 :         ObjectType aObjectType( ObjectIdentifier::getObjectType( aCID ));
     616   [ #  #  #  #  :          0 :         switch( aObjectType )
          #  #  #  #  #  
             #  #  #  # ]
     617                 :            :         {
     618                 :            :             case OBJECTTYPE_TITLE:
     619                 :            :             {
     620                 :            :                 // using assignment for broken gcc 3.3
     621                 :            :                 UndoGuard aUndoGuard = UndoGuard(
     622                 :            :                     ActionDescriptionProvider::createDescription(
     623                 :            :                         ActionDescriptionProvider::DELETE, String( SchResId( STR_OBJECT_TITLE ))),
     624 [ #  # ][ #  # ]:          0 :                     m_xUndoManager );
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
     625                 :            :                 TitleHelper::removeTitle(
     626 [ #  # ][ #  # ]:          0 :                     ObjectIdentifier::getTitleTypeForCID( aCID ), getModel() );
                 [ #  # ]
     627                 :          0 :                 bReturn = true;
     628         [ #  # ]:          0 :                 aUndoGuard.commit();
     629         [ #  # ]:          0 :                 break;
     630                 :            :             }
     631                 :            :             case OBJECTTYPE_LEGEND:
     632                 :            :             {
     633 [ #  # ][ #  # ]:          0 :                 uno::Reference< chart2::XDiagram > xDiagram( xChartDoc->getFirstDiagram());
     634         [ #  # ]:          0 :                 if( xDiagram.is())
     635                 :            :                 {
     636 [ #  # ][ #  # ]:          0 :                     uno::Reference< beans::XPropertySet > xLegendProp( xDiagram->getLegend(), uno::UNO_QUERY );
                 [ #  # ]
     637         [ #  # ]:          0 :                     if( xLegendProp.is())
     638                 :            :                     {
     639                 :            :                         // using assignment for broken gcc 3.3
     640                 :            :                         UndoGuard aUndoGuard = UndoGuard(
     641                 :            :                             ActionDescriptionProvider::createDescription(
     642                 :            :                                 ActionDescriptionProvider::DELETE, String( SchResId( STR_OBJECT_LEGEND ))),
     643 [ #  # ][ #  # ]:          0 :                             m_xUndoManager );
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
     644 [ #  # ][ #  # ]:          0 :                         xLegendProp->setPropertyValue( C2U("Show"), uno::makeAny( false ));
         [ #  # ][ #  # ]
     645                 :          0 :                         bReturn = true;
     646 [ #  # ][ #  # ]:          0 :                         aUndoGuard.commit();
     647                 :          0 :                     }
     648                 :            :                 }
     649                 :          0 :                 break;
     650                 :            :             }
     651                 :            : 
     652                 :            :             case OBJECTTYPE_DATA_SERIES:
     653 [ #  # ][ #  # ]:          0 :                 bReturn = lcl_deleteDataSeries( aCID, getModel(), m_xUndoManager );
     654                 :          0 :                 break;
     655                 :            : 
     656                 :            :             case OBJECTTYPE_LEGEND_ENTRY:
     657                 :            :             {
     658                 :            :                 ObjectType eParentObjectType = ObjectIdentifier::getObjectType(
     659 [ #  # ][ #  # ]:          0 :                     ObjectIdentifier::getFullParentParticle( aCID ));
     660         [ #  # ]:          0 :                 if( eParentObjectType == OBJECTTYPE_DATA_SERIES )
     661 [ #  # ][ #  # ]:          0 :                     bReturn = lcl_deleteDataSeries( aCID, getModel(), m_xUndoManager );
     662         [ #  # ]:          0 :                 else if( eParentObjectType == OBJECTTYPE_DATA_CURVE )
     663 [ #  # ][ #  # ]:          0 :                     bReturn = lcl_deleteDataCurve( aCID, getModel(), m_xUndoManager );
     664         [ #  # ]:          0 :                 else if( eParentObjectType == OBJECTTYPE_DATA_AVERAGE_LINE )
     665                 :            :                 {
     666         [ #  # ]:          0 :                     executeDispatch_DeleteMeanValue();
     667                 :          0 :                     bReturn = true;
     668                 :            :                 }
     669                 :          0 :                 break;
     670                 :            :             }
     671                 :            : 
     672                 :            :             case OBJECTTYPE_DATA_AVERAGE_LINE:
     673                 :            :             {
     674                 :            :                 uno::Reference< chart2::XRegressionCurveContainer > xRegCurveCnt(
     675                 :            :                     ObjectIdentifier::getObjectPropertySet(
     676 [ #  # ][ #  # ]:          0 :                         ObjectIdentifier::getFullParentParticle( aCID ), getModel()), uno::UNO_QUERY );
         [ #  # ][ #  # ]
     677         [ #  # ]:          0 :                 if( xRegCurveCnt.is())
     678                 :            :                 {
     679                 :            :                     // using assignment for broken gcc 3.3
     680                 :            :                     UndoGuard aUndoGuard = UndoGuard(
     681                 :            :                         ActionDescriptionProvider::createDescription(
     682                 :            :                             ActionDescriptionProvider::DELETE, String( SchResId( STR_OBJECT_AVERAGE_LINE ))),
     683 [ #  # ][ #  # ]:          0 :                         m_xUndoManager );
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
     684         [ #  # ]:          0 :                     RegressionCurveHelper::removeMeanValueLine( xRegCurveCnt );
     685                 :          0 :                     bReturn = true;
     686 [ #  # ][ #  # ]:          0 :                     aUndoGuard.commit();
     687                 :            :                 }
     688                 :          0 :                 break;
     689                 :            :             }
     690                 :            : 
     691                 :            :             case OBJECTTYPE_DATA_CURVE:
     692 [ #  # ][ #  # ]:          0 :                 bReturn = lcl_deleteDataCurve( aCID, getModel(), m_xUndoManager );
     693                 :          0 :                 break;
     694                 :            : 
     695                 :            :             case OBJECTTYPE_DATA_CURVE_EQUATION:
     696                 :            :             {
     697                 :            :                 uno::Reference< beans::XPropertySet > xEqProp(
     698 [ #  # ][ #  # ]:          0 :                     ObjectIdentifier::getObjectPropertySet( aCID, getModel()));
     699         [ #  # ]:          0 :                 if( xEqProp.is())
     700                 :            :                 {
     701         [ #  # ]:          0 :                     uno::Reference< frame::XModel > xModel( getModel() );
     702                 :            :                     // using assignment for broken gcc 3.3
     703                 :            :                     UndoGuard aUndoGuard = UndoGuard(
     704                 :            :                         ActionDescriptionProvider::createDescription(
     705                 :            :                             ActionDescriptionProvider::DELETE, String( SchResId( STR_OBJECT_CURVE_EQUATION ))),
     706 [ #  # ][ #  # ]:          0 :                         m_xUndoManager );
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
     707                 :            :                     {
     708         [ #  # ]:          0 :                         ControllerLockGuard aCtlLockGuard( xModel );
     709 [ #  # ][ #  # ]:          0 :                         xEqProp->setPropertyValue( C2U("ShowEquation"), uno::makeAny( false ));
         [ #  # ][ #  # ]
     710 [ #  # ][ #  # ]:          0 :                         xEqProp->setPropertyValue( C2U("ShowCorrelationCoefficient"), uno::makeAny( false ));
         [ #  # ][ #  # ]
                 [ #  # ]
     711                 :            :                     }
     712                 :          0 :                     bReturn = true;
     713 [ #  # ][ #  # ]:          0 :                     aUndoGuard.commit();
     714                 :            :                 }
     715                 :          0 :                 break;
     716                 :            :             }
     717                 :            : 
     718                 :            :             case OBJECTTYPE_DATA_ERRORS_X:
     719                 :            :             case OBJECTTYPE_DATA_ERRORS_Y:
     720                 :            :             case OBJECTTYPE_DATA_ERRORS_Z:
     721                 :            :             {
     722                 :            :                 uno::Reference< beans::XPropertySet > xErrorBarProp(
     723 [ #  # ][ #  # ]:          0 :                     ObjectIdentifier::getObjectPropertySet( aCID, getModel() ));
     724         [ #  # ]:          0 :                 if( xErrorBarProp.is())
     725                 :            :                 {
     726                 :            :                     sal_Int16 nId;
     727                 :            : 
     728         [ #  # ]:          0 :                     if ( aObjectType == OBJECTTYPE_DATA_ERRORS_X )
     729                 :          0 :                         nId = STR_OBJECT_ERROR_BARS_X;
     730         [ #  # ]:          0 :                     else if ( aObjectType == OBJECTTYPE_DATA_ERRORS_Y )
     731                 :          0 :                         nId = STR_OBJECT_ERROR_BARS_Y;
     732                 :            :                     else
     733                 :          0 :                         nId = STR_OBJECT_ERROR_BARS_Z;
     734                 :            : 
     735         [ #  # ]:          0 :                     uno::Reference< frame::XModel > xModel( getModel() );
     736                 :            :                     // using assignment for broken gcc 3.3
     737                 :            :                     UndoGuard aUndoGuard = UndoGuard(
     738                 :            :                         ActionDescriptionProvider::createDescription(
     739                 :            :                             ActionDescriptionProvider::DELETE, String( SchResId( nId ))),
     740 [ #  # ][ #  # ]:          0 :                         m_xUndoManager );
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
     741                 :            :                     {
     742         [ #  # ]:          0 :                         ControllerLockGuard aCtlLockGuard( xModel );
     743         [ #  # ]:          0 :                         xErrorBarProp->setPropertyValue(
     744                 :            :                             C2U("ErrorBarStyle"),
     745 [ #  # ][ #  # ]:          0 :                             uno::makeAny( ::com::sun::star::chart::ErrorBarStyle::NONE ));
         [ #  # ][ #  # ]
     746                 :            :                     }
     747                 :          0 :                     bReturn = true;
     748 [ #  # ][ #  # ]:          0 :                     aUndoGuard.commit();
     749                 :            :                 }
     750                 :          0 :                 break;
     751                 :            :             }
     752                 :            : 
     753                 :            :             case OBJECTTYPE_DATA_LABELS:
     754                 :            :             case OBJECTTYPE_DATA_LABEL:
     755                 :            :             {
     756                 :            :                 uno::Reference< beans::XPropertySet > xObjectProperties =
     757 [ #  # ][ #  # ]:          0 :                     ObjectIdentifier::getObjectPropertySet( aCID, getModel() );
     758         [ #  # ]:          0 :                 if( xObjectProperties.is() )
     759                 :            :                 {
     760                 :            :                     UndoGuard aUndoGuard = UndoGuard(
     761                 :            :                         ActionDescriptionProvider::createDescription(
     762                 :            :                         ActionDescriptionProvider::DELETE, ::rtl::OUString( String(
     763                 :            :                             SchResId( aObjectType == OBJECTTYPE_DATA_LABEL ? STR_OBJECT_LABEL : STR_OBJECT_DATALABELS )))),
     764 [ #  # ][ #  # ]:          0 :                                 m_xUndoManager );
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     765                 :          0 :                     chart2::DataPointLabel aLabel;
     766 [ #  # ][ #  # ]:          0 :                     xObjectProperties->getPropertyValue( C2U( "Label" ) ) >>= aLabel;
         [ #  # ][ #  # ]
     767                 :          0 :                     aLabel.ShowNumber = false;
     768                 :          0 :                     aLabel.ShowNumberInPercent = false;
     769                 :          0 :                     aLabel.ShowCategoryName = false;
     770                 :          0 :                     aLabel.ShowLegendSymbol = false;
     771         [ #  # ]:          0 :                     if( aObjectType == OBJECTTYPE_DATA_LABELS )
     772                 :            :                     {
     773 [ #  # ][ #  # ]:          0 :                         uno::Reference< chart2::XDataSeries > xSeries( ObjectIdentifier::getDataSeriesForCID( aCID, getModel() ));
     774 [ #  # ][ #  # ]:          0 :                         ::chart::DataSeriesHelper::setPropertyAlsoToAllAttributedDataPoints( xSeries, C2U( "Label" ), uno::makeAny(aLabel) );
                 [ #  # ]
     775                 :            :                     }
     776                 :            :                     else
     777 [ #  # ][ #  # ]:          0 :                         xObjectProperties->setPropertyValue( C2U( "Label" ), uno::makeAny(aLabel) );
         [ #  # ][ #  # ]
     778                 :          0 :                     bReturn = true;
     779 [ #  # ][ #  # ]:          0 :                     aUndoGuard.commit();
     780                 :            :                 }
     781                 :          0 :                 break;
     782                 :            :             }
     783                 :            :             case OBJECTTYPE_AXIS:
     784                 :            :             {
     785         [ #  # ]:          0 :                 executeDispatch_DeleteAxis();
     786                 :          0 :                 bReturn = true;
     787                 :          0 :                 break;
     788                 :            :             }
     789                 :            :             case OBJECTTYPE_GRID:
     790                 :            :             {
     791         [ #  # ]:          0 :                 executeDispatch_DeleteMajorGrid();
     792                 :          0 :                 bReturn = true;
     793                 :          0 :                 break;
     794                 :            :             }
     795                 :            :             case OBJECTTYPE_SUBGRID:
     796                 :            :             {
     797         [ #  # ]:          0 :                 executeDispatch_DeleteMinorGrid();
     798                 :          0 :                 bReturn = true;
     799                 :          0 :                 break;
     800                 :            :             }
     801                 :            : 
     802                 :            :             default:
     803                 :            :             {
     804                 :          0 :                 break;
     805                 :            :             }
     806         [ #  # ]:          0 :         }
     807                 :            :     }
     808                 :            :     else
     809                 :            :     {
     810                 :            :         //remove additional shape
     811         [ #  # ]:          0 :         impl_ClearSelection();
     812                 :            :         {
     813         [ #  # ]:          0 :             SolarMutexGuard aSolarGuard;
     814         [ #  # ]:          0 :             if ( m_pDrawViewWrapper )
     815                 :            :             {
     816         [ #  # ]:          0 :                 m_pDrawViewWrapper->DeleteMarked();
     817                 :          0 :                 bReturn = true;
     818         [ #  # ]:          0 :             }
     819                 :            :         }
     820                 :            :     }
     821                 :          0 :     return bReturn;
     822                 :            : }
     823                 :            : 
     824                 :          0 : void ChartController::executeDispatch_ToggleLegend()
     825                 :            : {
     826         [ #  # ]:          0 :     Reference< frame::XModel > xModel( getModel() );
     827                 :            :     UndoGuard aUndoGuard = UndoGuard(
     828 [ #  # ][ #  # ]:          0 :         String( SchResId( STR_ACTION_TOGGLE_LEGEND )), m_xUndoManager );
         [ #  # ][ #  # ]
                 [ #  # ]
     829 [ #  # ][ #  # ]:          0 :     Reference< beans::XPropertySet > xLegendProp( LegendHelper::getLegend( xModel ), uno::UNO_QUERY );
                 [ #  # ]
     830                 :          0 :     bool bChanged = false;
     831         [ #  # ]:          0 :     if( xLegendProp.is())
     832                 :            :     {
     833                 :            :         try
     834                 :            :         {
     835                 :          0 :             bool bShow = false;
     836 [ #  # ][ #  # ]:          0 :             if( xLegendProp->getPropertyValue( C2U("Show")) >>= bShow )
         [ #  # ][ #  # ]
     837                 :            :             {
     838 [ #  # ][ #  # ]:          0 :                 xLegendProp->setPropertyValue( C2U("Show"), uno::makeAny( ! bShow ));
         [ #  # ][ #  # ]
                 [ #  # ]
     839                 :          0 :                 bChanged = true;
     840                 :            :             }
     841                 :            :         }
     842         [ #  # ]:          0 :         catch( const uno::Exception & ex )
     843                 :            :         {
     844                 :            :             ASSERT_EXCEPTION( ex );
     845                 :            :         }
     846                 :            :     }
     847                 :            :     else
     848                 :            :     {
     849 [ #  # ][ #  # ]:          0 :         xLegendProp.set( LegendHelper::getLegend( xModel, m_xCC, true ), uno::UNO_QUERY );
     850         [ #  # ]:          0 :         if( xLegendProp.is())
     851                 :          0 :             bChanged = true;
     852                 :            :     }
     853                 :            : 
     854         [ #  # ]:          0 :     if( bChanged )
     855 [ #  # ][ #  # ]:          0 :         aUndoGuard.commit();
     856                 :          0 : }
     857                 :            : 
     858                 :          0 : void ChartController::executeDispatch_ToggleGridHorizontal()
     859                 :            : {
     860         [ #  # ]:          0 :     Reference< frame::XModel > xModel( getModel() );
     861                 :            :     UndoGuard aUndoGuard = UndoGuard(
     862 [ #  # ][ #  # ]:          0 :         String( SchResId( STR_ACTION_TOGGLE_GRID_HORZ )), m_xUndoManager );
         [ #  # ][ #  # ]
                 [ #  # ]
     863 [ #  # ][ #  # ]:          0 :     Reference< chart2::XDiagram > xDiagram( ChartModelHelper::findDiagram( getModel() ));
     864         [ #  # ]:          0 :     if( xDiagram.is())
     865                 :            :     {
     866                 :          0 :         sal_Int32 nDimensionIndex = 1;
     867                 :          0 :         sal_Int32 nCooSysIndex = 0;
     868                 :          0 :         bool bIsMainGrid = true;
     869                 :            : 
     870         [ #  # ]:          0 :         bool bHasMainYGrid = AxisHelper::isGridShown( nDimensionIndex, nCooSysIndex, bIsMainGrid, xDiagram );
     871                 :            : 
     872         [ #  # ]:          0 :         if( bHasMainYGrid )
     873         [ #  # ]:          0 :             AxisHelper::hideGrid( nDimensionIndex, nCooSysIndex, bIsMainGrid, xDiagram );
     874                 :            :         else
     875         [ #  # ]:          0 :             AxisHelper::showGrid( nDimensionIndex, nCooSysIndex, bIsMainGrid, xDiagram, m_xCC );
     876                 :            : 
     877         [ #  # ]:          0 :         aUndoGuard.commit();
     878         [ #  # ]:          0 :     }
     879                 :          0 : }
     880                 :            : 
     881                 :          0 : void ChartController::impl_ShapeControllerDispatch( const util::URL& rURL, const Sequence< beans::PropertyValue >& rArgs )
     882                 :            : {
     883 [ #  # ][ #  # ]:          0 :     Reference< frame::XDispatch > xDispatch( m_aDispatchContainer.getShapeController() );
     884         [ #  # ]:          0 :     if ( xDispatch.is() )
     885                 :            :     {
     886 [ #  # ][ #  # ]:          0 :         xDispatch->dispatch( rURL, rArgs );
     887                 :          0 :     }
     888                 :          0 : }
     889                 :            : 
     890                 :          0 : void ChartController::impl_switchDiagramPositioningToExcludingPositioning()
     891                 :            : {
     892                 :            :     UndoGuard aUndoGuard( ActionDescriptionProvider::createDescription(
     893                 :            :         ActionDescriptionProvider::POS_SIZE,
     894                 :            :         ObjectNameProvider::getName( OBJECTTYPE_DIAGRAM)),
     895 [ #  # ][ #  # ]:          0 :         m_xUndoManager );
                 [ #  # ]
     896 [ #  # ][ #  # ]:          0 :     if( DiagramHelper::switchDiagramPositioningToExcludingPositioning( m_aModel->getModel(), true, true ) )
                 [ #  # ]
     897 [ #  # ][ #  # ]:          0 :         aUndoGuard.commit();
     898                 :          0 : }
     899                 :            : 
     900                 :            : } //  namespace chart
     901                 :            : 
     902                 :            : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10