diff options
Diffstat (limited to 'chart2/source/controller/main/DrawCommandDispatch.cxx')
-rw-r--r-- | chart2/source/controller/main/DrawCommandDispatch.cxx | 185 |
1 files changed, 91 insertions, 94 deletions
diff --git a/chart2/source/controller/main/DrawCommandDispatch.cxx b/chart2/source/controller/main/DrawCommandDispatch.cxx index 06fcf0ac4e57..01771f1e7763 100644 --- a/chart2/source/controller/main/DrawCommandDispatch.cxx +++ b/chart2/source/controller/main/DrawCommandDispatch.cxx @@ -18,15 +18,14 @@ */ #include "DrawCommandDispatch.hxx" -#include "DrawCommandDispatch.h" #include <ChartController.hxx> #include <DrawViewWrapper.hxx> #include <chartview/DrawModelWrapper.hxx> #include <com/sun/star/frame/CommandGroup.hpp> #include <o3tl/unsafe_downcast.hxx> +#include <o3tl/string_view.hxx> #include <vcl/svapp.hxx> -#include <svl/itempool.hxx> #include <editeng/eeitem.hxx> #include <svx/strings.hrc> #include <svx/dialmgr.hxx> @@ -67,7 +66,7 @@ DrawCommandDispatch::~DrawCommandDispatch() bool DrawCommandDispatch::isFeatureSupported( const OUString& rCommandURL ) { - sal_uInt16 nFeatureId = 0; + ChartCommandID nFeatureId = ChartCommandID::NONE; OUString aBaseCommand; OUString aCustomShapeType; return parseCommandURL( rCommandURL, &nFeatureId, &aBaseCommand, &aCustomShapeType ); @@ -101,7 +100,7 @@ void DrawCommandDispatch::setAttributes( SdrObject* pObj ) DrawModelWrapper* pDrawModelWrapper = m_pChartController->GetDrawModelWrapper(); DrawViewWrapper* pDrawViewWrapper = m_pChartController->GetDrawViewWrapper(); - if ( !(pDrawModelWrapper && pDrawViewWrapper && pDrawViewWrapper->GetCurrentObjIdentifier() == OBJ_CUSTOMSHAPE) ) + if ( !(pDrawModelWrapper && pDrawViewWrapper && pDrawViewWrapper->GetCurrentObjIdentifier() == SdrObjKind::CustomShape) ) return; bool bAttributesAppliedFromGallery = false; @@ -115,8 +114,6 @@ void DrawCommandDispatch::setAttributes( SdrObject* pObj ) if ( aObjList[ i ].equalsIgnoreAsciiCase( m_aCustomShapeType ) ) { FmFormModel aModel; - SfxItemPool& rPool(aModel.GetItemPool()); - rPool.FreezeIdRanges(); if ( GalleryExplorer::GetSdrObj( GALLERY_THEME_POWERPOINT, i, &aModel ) ) { @@ -164,7 +161,7 @@ void DrawCommandDispatch::setAttributes( SdrObject* pObj ) void DrawCommandDispatch::setLineEnds( SfxItemSet& rAttr ) { - if ( !(m_nFeatureId == COMMAND_ID_LINE_ARROW_END && m_pChartController) ) + if ( !(m_nFeatureId == ChartCommandID::DrawLineArrowEnd && m_pChartController) ) return; DrawModelWrapper* pDrawModelWrapper = m_pChartController->GetDrawModelWrapper(); @@ -183,11 +180,11 @@ void DrawCommandDispatch::setLineEnds( SfxItemSet& rAttr ) aArrow.append( aNewArrow ); } - SfxItemSet aSet( pDrawViewWrapper->GetModel()->GetItemPool() ); + SfxItemSet aSet(pDrawViewWrapper->GetModel().GetItemPool()); pDrawViewWrapper->GetAttributes( aSet ); tools::Long nWidth = 300; // (1/100th mm) - if ( aSet.GetItemState( XATTR_LINEWIDTH ) != SfxItemState::DONTCARE ) + if ( aSet.GetItemState( XATTR_LINEWIDTH ) != SfxItemState::INVALID ) { tools::Long nValue = aSet.Get( XATTR_LINEWIDTH ).GetValue(); if ( nValue > 0 ) @@ -201,7 +198,7 @@ void DrawCommandDispatch::setLineEnds( SfxItemSet& rAttr ) } // WeakComponentImplHelperBase -void DrawCommandDispatch::disposing() +void DrawCommandDispatch::disposing(std::unique_lock<std::mutex>& /*rGuard*/) { } @@ -216,27 +213,27 @@ FeatureState DrawCommandDispatch::getState( const OUString& rCommand ) aReturn.bEnabled = false; aReturn.aState <<= false; - sal_uInt16 nFeatureId = 0; + ChartCommandID nFeatureId = ChartCommandID::NONE; OUString aBaseCommand; OUString aCustomShapeType; if ( parseCommandURL( rCommand, &nFeatureId, &aBaseCommand, &aCustomShapeType ) ) { switch ( nFeatureId ) { - case COMMAND_ID_OBJECT_SELECT: - case COMMAND_ID_DRAW_LINE: - case COMMAND_ID_LINE_ARROW_END: - case COMMAND_ID_DRAW_RECT: - case COMMAND_ID_DRAW_ELLIPSE: - case COMMAND_ID_DRAW_FREELINE_NOFILL: - case COMMAND_ID_DRAW_TEXT: - case COMMAND_ID_DRAW_CAPTION: - case COMMAND_ID_DRAWTBX_CS_BASIC: - case COMMAND_ID_DRAWTBX_CS_SYMBOL: - case COMMAND_ID_DRAWTBX_CS_ARROW: - case COMMAND_ID_DRAWTBX_CS_FLOWCHART: - case COMMAND_ID_DRAWTBX_CS_CALLOUT: - case COMMAND_ID_DRAWTBX_CS_STAR: + case ChartCommandID::DrawObjectSelect: + case ChartCommandID::DrawLine: + case ChartCommandID::DrawLineArrowEnd: + case ChartCommandID::DrawRect: + case ChartCommandID::DrawEllipse: + case ChartCommandID::DrawFreelineNoFill: + case ChartCommandID::DrawText: + case ChartCommandID::DrawCaption: + case ChartCommandID::DrawToolboxCsBasic: + case ChartCommandID::DrawToolboxCsSymbol: + case ChartCommandID::DrawToolboxCsArrow: + case ChartCommandID::DrawToolboxCsFlowchart: + case ChartCommandID::DrawToolboxCsCallout: + case ChartCommandID::DrawToolboxCsStar: { aReturn.bEnabled = true; aReturn.aState <<= false; @@ -257,9 +254,9 @@ FeatureState DrawCommandDispatch::getState( const OUString& rCommand ) void DrawCommandDispatch::execute( const OUString& rCommand, const Sequence< beans::PropertyValue>& rArgs ) { ChartDrawMode eDrawMode = CHARTDRAW_SELECT; - SdrObjKind eKind = OBJ_NONE; + SdrObjKind eKind = SdrObjKind::NONE; - sal_uInt16 nFeatureId = 0; + ChartCommandID nFeatureId = ChartCommandID::NONE; OUString aBaseCommand; OUString aCustomShapeType; if ( !parseCommandURL( rCommand, &nFeatureId, &aBaseCommand, &aCustomShapeType ) ) @@ -271,65 +268,65 @@ void DrawCommandDispatch::execute( const OUString& rCommand, const Sequence< bea switch ( nFeatureId ) { - case COMMAND_ID_OBJECT_SELECT: + case ChartCommandID::DrawObjectSelect: { eDrawMode = CHARTDRAW_SELECT; - eKind = OBJ_NONE; + eKind = SdrObjKind::NONE; } break; - case COMMAND_ID_DRAW_LINE: - case COMMAND_ID_LINE_ARROW_END: + case ChartCommandID::DrawLine: + case ChartCommandID::DrawLineArrowEnd: { eDrawMode = CHARTDRAW_INSERT; - eKind = OBJ_LINE; + eKind = SdrObjKind::Line; } break; - case COMMAND_ID_DRAW_RECT: + case ChartCommandID::DrawRect: { eDrawMode = CHARTDRAW_INSERT; - eKind = OBJ_RECT; + eKind = SdrObjKind::Rectangle; } break; - case COMMAND_ID_DRAW_ELLIPSE: + case ChartCommandID::DrawEllipse: { eDrawMode = CHARTDRAW_INSERT; - eKind = OBJ_CIRC; + eKind = SdrObjKind::CircleOrEllipse; } break; - case COMMAND_ID_DRAW_FREELINE_NOFILL: + case ChartCommandID::DrawFreelineNoFill: { eDrawMode = CHARTDRAW_INSERT; - eKind = OBJ_FREELINE; + eKind = SdrObjKind::FreehandLine; } break; - case COMMAND_ID_DRAW_TEXT: + case ChartCommandID::DrawText: { eDrawMode = CHARTDRAW_INSERT; - eKind = OBJ_TEXT; + eKind = SdrObjKind::Text; bCreate = true; } break; - case COMMAND_ID_DRAW_CAPTION: + case ChartCommandID::DrawCaption: { eDrawMode = CHARTDRAW_INSERT; - eKind = OBJ_CAPTION; + eKind = SdrObjKind::Caption; } break; - case COMMAND_ID_DRAWTBX_CS_BASIC: - case COMMAND_ID_DRAWTBX_CS_SYMBOL: - case COMMAND_ID_DRAWTBX_CS_ARROW: - case COMMAND_ID_DRAWTBX_CS_FLOWCHART: - case COMMAND_ID_DRAWTBX_CS_CALLOUT: - case COMMAND_ID_DRAWTBX_CS_STAR: + case ChartCommandID::DrawToolboxCsBasic: + case ChartCommandID::DrawToolboxCsSymbol: + case ChartCommandID::DrawToolboxCsArrow: + case ChartCommandID::DrawToolboxCsFlowchart: + case ChartCommandID::DrawToolboxCsCallout: + case ChartCommandID::DrawToolboxCsStar: { eDrawMode = CHARTDRAW_INSERT; - eKind = OBJ_CUSTOMSHAPE; + eKind = SdrObjKind::CustomShape; } break; default: { eDrawMode = CHARTDRAW_SELECT; - eKind = OBJ_NONE; + eKind = SdrObjKind::NONE; } break; } @@ -361,13 +358,13 @@ void DrawCommandDispatch::execute( const OUString& rCommand, const Sequence< bea if ( eDrawMode != CHARTDRAW_INSERT ) return; - SdrObject* pObj = createDefaultObject( nFeatureId ); + rtl::Reference<SdrObject> pObj = createDefaultObject( nFeatureId ); if ( pObj ) { SdrPageView* pPageView = pDrawViewWrapper->GetSdrPageView(); - if (pDrawViewWrapper->InsertObjectAtView(pObj, *pPageView)) + if (pDrawViewWrapper->InsertObjectAtView(pObj.get(), *pPageView)) m_pChartController->SetAndApplySelection(Reference<drawing::XShape>(pObj->getUnoShape(), uno::UNO_QUERY)); - if ( nFeatureId == COMMAND_ID_DRAW_TEXT ) + if ( nFeatureId == ChartCommandID::DrawText ) { m_pChartController->StartTextEdit(); } @@ -376,20 +373,20 @@ void DrawCommandDispatch::execute( const OUString& rCommand, const Sequence< bea void DrawCommandDispatch::describeSupportedFeatures() { - implDescribeSupportedFeature( ".uno:SelectObject", COMMAND_ID_OBJECT_SELECT, CommandGroup::INSERT ); - implDescribeSupportedFeature( ".uno:Line", COMMAND_ID_DRAW_LINE, CommandGroup::INSERT ); - implDescribeSupportedFeature( ".uno:LineArrowEnd", COMMAND_ID_LINE_ARROW_END, CommandGroup::INSERT ); - implDescribeSupportedFeature( ".uno:Rect", COMMAND_ID_DRAW_RECT, CommandGroup::INSERT ); - implDescribeSupportedFeature( ".uno:Ellipse", COMMAND_ID_DRAW_ELLIPSE, CommandGroup::INSERT ); - implDescribeSupportedFeature( ".uno:Freeline_Unfilled", COMMAND_ID_DRAW_FREELINE_NOFILL, CommandGroup::INSERT ); - implDescribeSupportedFeature( ".uno:DrawText", COMMAND_ID_DRAW_TEXT, CommandGroup::INSERT ); - implDescribeSupportedFeature( ".uno:DrawCaption", COMMAND_ID_DRAW_CAPTION, CommandGroup::INSERT ); - implDescribeSupportedFeature( ".uno:BasicShapes", COMMAND_ID_DRAWTBX_CS_BASIC, CommandGroup::INSERT ); - implDescribeSupportedFeature( ".uno:SymbolShapes", COMMAND_ID_DRAWTBX_CS_SYMBOL, CommandGroup::INSERT ); - implDescribeSupportedFeature( ".uno:ArrowShapes", COMMAND_ID_DRAWTBX_CS_ARROW, CommandGroup::INSERT ); - implDescribeSupportedFeature( ".uno:FlowChartShapes", COMMAND_ID_DRAWTBX_CS_FLOWCHART, CommandGroup::INSERT ); - implDescribeSupportedFeature( ".uno:CalloutShapes", COMMAND_ID_DRAWTBX_CS_CALLOUT, CommandGroup::INSERT ); - implDescribeSupportedFeature( ".uno:StarShapes", COMMAND_ID_DRAWTBX_CS_STAR, CommandGroup::INSERT ); + implDescribeSupportedFeature( ".uno:SelectObject", ChartCommandID::DrawObjectSelect, CommandGroup::INSERT ); + implDescribeSupportedFeature( ".uno:Line", ChartCommandID::DrawLine, CommandGroup::INSERT ); + implDescribeSupportedFeature( ".uno:LineArrowEnd", ChartCommandID::DrawLineArrowEnd, CommandGroup::INSERT ); + implDescribeSupportedFeature( ".uno:Rect", ChartCommandID::DrawRect, CommandGroup::INSERT ); + implDescribeSupportedFeature( ".uno:Ellipse", ChartCommandID::DrawEllipse, CommandGroup::INSERT ); + implDescribeSupportedFeature( ".uno:Freeline_Unfilled", ChartCommandID::DrawFreelineNoFill, CommandGroup::INSERT ); + implDescribeSupportedFeature( ".uno:DrawText", ChartCommandID::DrawText, CommandGroup::INSERT ); + implDescribeSupportedFeature( ".uno:DrawCaption", ChartCommandID::DrawCaption, CommandGroup::INSERT ); + implDescribeSupportedFeature( ".uno:BasicShapes", ChartCommandID::DrawToolboxCsBasic, CommandGroup::INSERT ); + implDescribeSupportedFeature( ".uno:SymbolShapes", ChartCommandID::DrawToolboxCsSymbol, CommandGroup::INSERT ); + implDescribeSupportedFeature( ".uno:ArrowShapes", ChartCommandID::DrawToolboxCsArrow, CommandGroup::INSERT ); + implDescribeSupportedFeature( ".uno:FlowChartShapes", ChartCommandID::DrawToolboxCsFlowchart, CommandGroup::INSERT ); + implDescribeSupportedFeature( ".uno:CalloutShapes", ChartCommandID::DrawToolboxCsCallout, CommandGroup::INSERT ); + implDescribeSupportedFeature( ".uno:StarShapes", ChartCommandID::DrawToolboxCsStar, CommandGroup::INSERT ); } void DrawCommandDispatch::setInsertObj(SdrObjKind eObj) @@ -401,9 +398,9 @@ void DrawCommandDispatch::setInsertObj(SdrObjKind eObj) } } -SdrObject* DrawCommandDispatch::createDefaultObject( const sal_uInt16 nID ) +rtl::Reference<SdrObject> DrawCommandDispatch::createDefaultObject( const ChartCommandID nID ) { - SdrObject* pObj = nullptr; + rtl::Reference<SdrObject> pObj; DrawViewWrapper* pDrawViewWrapper = ( m_pChartController ? m_pChartController->GetDrawViewWrapper() : nullptr ); DrawModelWrapper* pDrawModelWrapper = ( m_pChartController ? m_pChartController->GetDrawModelWrapper() : nullptr ); @@ -431,10 +428,10 @@ SdrObject* DrawCommandDispatch::createDefaultObject( const sal_uInt16 nID ) switch ( nID ) { - case COMMAND_ID_DRAW_LINE: - case COMMAND_ID_LINE_ARROW_END: + case ChartCommandID::DrawLine: + case ChartCommandID::DrawLineArrowEnd: { - if ( auto const pathObj = dynamic_cast<SdrPathObj*>( pObj) ) + if ( auto const pathObj = dynamic_cast<SdrPathObj*>( pObj.get()) ) { Point aStart = aRect.TopLeft(); Point aEnd = aRect.BottomRight(); @@ -449,9 +446,9 @@ SdrObject* DrawCommandDispatch::createDefaultObject( const sal_uInt16 nID ) } } break; - case COMMAND_ID_DRAW_FREELINE_NOFILL: + case ChartCommandID::DrawFreelineNoFill: { - if ( auto const pathObj = dynamic_cast<SdrPathObj*>( pObj) ) + if ( auto const pathObj = dynamic_cast<SdrPathObj*>( pObj.get()) ) { basegfx::B2DPolygon aInnerPoly; aInnerPoly.append( basegfx::B2DPoint( aRect.Left(), aRect.Bottom() ) ); @@ -469,13 +466,13 @@ SdrObject* DrawCommandDispatch::createDefaultObject( const sal_uInt16 nID ) } } break; - case COMMAND_ID_DRAW_TEXT: - case COMMAND_ID_DRAW_TEXT_VERTICAL: + case ChartCommandID::DrawText: + case ChartCommandID::DrawTextVertical: { - if ( SdrTextObj* pTextObj = dynamic_cast<SdrTextObj*>( pObj) ) + if ( SdrTextObj* pTextObj = DynCastSdrTextObj( pObj.get()) ) { pTextObj->SetLogicRect( aRect ); - bool bVertical = ( nID == COMMAND_ID_DRAW_TEXT_VERTICAL ); + bool bVertical = ( nID == ChartCommandID::DrawTextVertical ); pTextObj->SetVerticalWriting( bVertical ); if ( bVertical ) { @@ -489,12 +486,12 @@ SdrObject* DrawCommandDispatch::createDefaultObject( const sal_uInt16 nID ) } } break; - case COMMAND_ID_DRAW_CAPTION: - case COMMAND_ID_DRAW_CAPTION_VERTICAL: + case ChartCommandID::DrawCaption: + case ChartCommandID::DrawCaptionVertical: { - if ( SdrCaptionObj* pCaptionObj = dynamic_cast<SdrCaptionObj*>( pObj) ) + if ( SdrCaptionObj* pCaptionObj = dynamic_cast<SdrCaptionObj*>( pObj.get()) ) { - bool bIsVertical( nID == COMMAND_ID_DRAW_CAPTION_VERTICAL ); + bool bIsVertical( nID == ChartCommandID::DrawCaptionVertical ); pCaptionObj->SetVerticalWriting( bIsVertical ); if ( bIsVertical ) { @@ -513,7 +510,7 @@ SdrObject* DrawCommandDispatch::createDefaultObject( const sal_uInt16 nID ) { pObj->SetLogicRect( aRect ); SfxItemSet aSet( pDrawModelWrapper->GetItemPool() ); - setAttributes( pObj ); + setAttributes( pObj.get() ); pObj->SetMergedItemSet( aSet ); } break; @@ -525,17 +522,17 @@ SdrObject* DrawCommandDispatch::createDefaultObject( const sal_uInt16 nID ) return pObj; } -bool DrawCommandDispatch::parseCommandURL( const OUString& rCommandURL, sal_uInt16* pnFeatureId, +bool DrawCommandDispatch::parseCommandURL( const OUString& rCommandURL, ChartCommandID* pnFeatureId, OUString* pBaseCommand, OUString* pCustomShapeType ) { bool bFound = true; - sal_uInt16 nFeatureId = 0; + ChartCommandID nFeatureId = ChartCommandID::NONE; OUString aBaseCommand; OUString aType; - sal_Int32 nIndex = 1; - OUString aToken = rCommandURL.getToken( 0, '.', nIndex ); - if ( nIndex == -1 || aToken.isEmpty() ) + sal_Int32 nIndex = std::min(sal_Int32(1), rCommandURL.getLength()); + std::u16string_view aToken = o3tl::getToken(rCommandURL, 0, '.', nIndex ); + if ( nIndex == -1 || aToken.empty() ) { aBaseCommand = rCommandURL; SupportedFeatures::const_iterator aIter = m_aSupportedFeatures.find( aBaseCommand ); @@ -545,32 +542,32 @@ bool DrawCommandDispatch::parseCommandURL( const OUString& rCommandURL, sal_uInt switch ( nFeatureId ) { - case COMMAND_ID_DRAWTBX_CS_BASIC: + case ChartCommandID::DrawToolboxCsBasic: { aType = "diamond"; } break; - case COMMAND_ID_DRAWTBX_CS_SYMBOL: + case ChartCommandID::DrawToolboxCsSymbol: { aType = "smiley"; } break; - case COMMAND_ID_DRAWTBX_CS_ARROW: + case ChartCommandID::DrawToolboxCsArrow: { aType = "left-right-arrow"; } break; - case COMMAND_ID_DRAWTBX_CS_FLOWCHART: + case ChartCommandID::DrawToolboxCsFlowchart: { aType = "flowchart-internal-storage"; } break; - case COMMAND_ID_DRAWTBX_CS_CALLOUT: + case ChartCommandID::DrawToolboxCsCallout: { aType = "round-rectangular-callout"; } break; - case COMMAND_ID_DRAWTBX_CS_STAR: + case ChartCommandID::DrawToolboxCsStar: { aType = "star5"; } |