diff options
Diffstat (limited to 'chart2/source/controller/dialogs')
64 files changed, 1359 insertions, 1167 deletions
diff --git a/chart2/source/controller/dialogs/ChartResourceGroups.cxx b/chart2/source/controller/dialogs/ChartResourceGroups.cxx index 19534aa1e0b0..e1550d2766c7 100644 --- a/chart2/source/controller/dialogs/ChartResourceGroups.cxx +++ b/chart2/source/controller/dialogs/ChartResourceGroups.cxx @@ -205,22 +205,22 @@ SplineResourceGroup::SplineResourceGroup(weld::Builder* pBuilder, weld::Window* m_xLB_LineType->connect_changed(LINK(this, SplineResourceGroup, LineTypeChangeHdl)); } -SplinePropertiesDialog& SplineResourceGroup::getSplinePropertiesDialog() +std::shared_ptr<SplinePropertiesDialog> SplineResourceGroup::getSplinePropertiesDialog() { if (!m_xSplinePropertiesDialog) { m_xSplinePropertiesDialog.reset(new SplinePropertiesDialog(m_pParent)); } - return *m_xSplinePropertiesDialog; + return m_xSplinePropertiesDialog; } -SteppedPropertiesDialog& SplineResourceGroup::getSteppedPropertiesDialog() +std::shared_ptr<SteppedPropertiesDialog> SplineResourceGroup::getSteppedPropertiesDialog() { if (!m_xSteppedPropertiesDialog) { m_xSteppedPropertiesDialog.reset(new SteppedPropertiesDialog(m_pParent)); } - return *m_xSteppedPropertiesDialog; + return m_xSteppedPropertiesDialog; } void SplineResourceGroup::showControls(bool bShow) @@ -245,7 +245,7 @@ void SplineResourceGroup::fillControls(const ChartTypeParameter& rParameter) m_xPB_DetailsDialog->connect_clicked( LINK(this, SplineResourceGroup, SplineDetailsDialogHdl)); m_xPB_DetailsDialog->set_tooltip_text(SchResId(STR_DLG_SMOOTH_LINE_PROPERTIES)); - getSplinePropertiesDialog().fillControls(rParameter); + getSplinePropertiesDialog()->fillControls(rParameter); break; case CurveStyle_STEP_START: case CurveStyle_STEP_END: @@ -256,7 +256,7 @@ void SplineResourceGroup::fillControls(const ChartTypeParameter& rParameter) m_xPB_DetailsDialog->connect_clicked( LINK(this, SplineResourceGroup, SteppedDetailsDialogHdl)); m_xPB_DetailsDialog->set_tooltip_text(SchResId(STR_DLG_STEPPED_LINE_PROPERTIES)); - getSteppedPropertiesDialog().fillControls(rParameter); + getSteppedPropertiesDialog()->fillControls(rParameter); break; default: m_xLB_LineType->set_active(-1); @@ -268,10 +268,10 @@ void SplineResourceGroup::fillParameter(ChartTypeParameter& rParameter) switch (m_xLB_LineType->get_active()) { case POS_LINETYPE_SMOOTH: - getSplinePropertiesDialog().fillParameter(rParameter, true); + getSplinePropertiesDialog()->fillParameter(rParameter, true); break; case POS_LINETYPE_STEPPED: - getSteppedPropertiesDialog().fillParameter(rParameter, true); + getSteppedPropertiesDialog()->fillParameter(rParameter, true); break; default: // includes POS_LINETYPE_STRAIGHT rParameter.eCurveStyle = CurveStyle_LINES; @@ -288,43 +288,65 @@ IMPL_LINK_NOARG(SplineResourceGroup, LineTypeChangeHdl, weld::ComboBox&, void) IMPL_LINK_NOARG(SplineResourceGroup, SplineDetailsDialogHdl, weld::Button&, void) { ChartTypeParameter aOldParameter; - getSplinePropertiesDialog().fillParameter(aOldParameter, - m_xLB_LineType->get_active() == POS_LINETYPE_SMOOTH); + std::shared_ptr<SplinePropertiesDialog> xDlg = getSplinePropertiesDialog(); + xDlg->fillParameter(aOldParameter, m_xLB_LineType->get_active() == POS_LINETYPE_SMOOTH); const sal_Int32 iOldLineTypePos = m_xLB_LineType->get_active(); m_xLB_LineType->set_active(POS_LINETYPE_SMOOTH); - if (getSplinePropertiesDialog().run() == RET_OK) - { - if (m_pChangeListener) - m_pChangeListener->stateChanged(); - } - else - { - //restore old state: - m_xLB_LineType->set_active(iOldLineTypePos); - getSplinePropertiesDialog().fillControls(aOldParameter); - } + weld::GenericDialogController::runAsync(xDlg, [this, xDlg, aOldParameter, + iOldLineTypePos](sal_Int32 nResult) { + m_xSplinePropertiesDialog = nullptr; + auto xNewDlg = getSplinePropertiesDialog(); + + if (nResult == RET_OK) + { + ChartTypeParameter aNewParameter; + xDlg->fillParameter(aNewParameter, m_xLB_LineType->get_active() == POS_LINETYPE_SMOOTH); + xNewDlg->fillControls(aNewParameter); + + if (m_pChangeListener) + m_pChangeListener->stateChanged(); + } + else + { + //restore old state: + m_xLB_LineType->set_active(iOldLineTypePos); + xNewDlg->fillControls(aOldParameter); + } + }); } IMPL_LINK_NOARG(SplineResourceGroup, SteppedDetailsDialogHdl, weld::Button&, void) { ChartTypeParameter aOldParameter; - getSteppedPropertiesDialog().fillParameter(aOldParameter, m_xLB_LineType->get_active() - == POS_LINETYPE_STEPPED); + std::shared_ptr<SteppedPropertiesDialog> xDlg = getSteppedPropertiesDialog(); + xDlg->fillParameter(aOldParameter, m_xLB_LineType->get_active() == POS_LINETYPE_STEPPED); const sal_Int32 iOldLineTypePos = m_xLB_LineType->get_active(); m_xLB_LineType->set_active(POS_LINETYPE_STEPPED); - if (getSteppedPropertiesDialog().run() == RET_OK) - { - if (m_pChangeListener) - m_pChangeListener->stateChanged(); - } - else - { - //restore old state: - m_xLB_LineType->set_active(iOldLineTypePos); - getSteppedPropertiesDialog().fillControls(aOldParameter); - } + + weld::GenericDialogController::runAsync( + xDlg, [this, xDlg, aOldParameter, iOldLineTypePos](sal_Int32 nResult) { + m_xSteppedPropertiesDialog = nullptr; + auto xNewDlg = getSteppedPropertiesDialog(); + + if (nResult == RET_OK) + { + ChartTypeParameter aNewParameter; + xDlg->fillParameter(aNewParameter, + m_xLB_LineType->get_active() == POS_LINETYPE_STEPPED); + xNewDlg->fillControls(aNewParameter); + + if (m_pChangeListener) + m_pChangeListener->stateChanged(); + } + else + { + //restore old state: + m_xLB_LineType->set_active(iOldLineTypePos); + xDlg->fillControls(aOldParameter); + } + }); } GeometryResourceGroup::GeometryResourceGroup(weld::Builder* pBuilder) diff --git a/chart2/source/controller/dialogs/ChartTypeDialogController.cxx b/chart2/source/controller/dialogs/ChartTypeDialogController.cxx index 06d2dd952892..35284fbb6bfc 100644 --- a/chart2/source/controller/dialogs/ChartTypeDialogController.cxx +++ b/chart2/source/controller/dialogs/ChartTypeDialogController.cxx @@ -24,7 +24,7 @@ #include <strings.hrc> #include <bitmaps.hlst> #include <ChartModelHelper.hxx> -#include <DiagramHelper.hxx> +#include <DataSeries.hxx> #include <Diagram.hxx> #include <ControllerLockGuard.hxx> #include <AxisHelper.hxx> @@ -33,14 +33,12 @@ #include <ChartModel.hxx> #include <com/sun/star/chart2/DataPointGeometry3D.hpp> -#include <com/sun/star/chart2/XChartDocument.hpp> #include <svtools/valueset.hxx> #include <vcl/image.hxx> #include <vcl/settings.hxx> -#include <com/sun/star/lang/XMultiServiceFactory.hpp> -#include <tools/diagnose_ex.h> +#include <comphelper/diagnose_ex.hxx> namespace chart { @@ -309,22 +307,23 @@ void ChartTypeDialogController::commitToModel( const ChartTypeParameter& rParame , const rtl::Reference<::chart::ChartModel>& xChartModel ) { rtl::Reference< ::chart::ChartTypeManager > xTemplateManager = xChartModel->getTypeManager(); - uno::Reference< XChartTypeTemplate > xTemplate( getCurrentTemplate( rParameter, xTemplateManager ) ); + rtl::Reference< ::chart::ChartTypeTemplate > xTemplate( getCurrentTemplate( rParameter, xTemplateManager ) ); if(!xTemplate.is()) return; // locked controllers ControllerLockGuardUNO aCtrlLockGuard( xChartModel ); - rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram( xChartModel ); - DiagramHelper::tTemplateWithServiceName aTemplateWithService( - DiagramHelper::getTemplateForDiagram( xDiagram, xTemplateManager )); + rtl::Reference< Diagram > xDiagram = xChartModel->getFirstChartDiagram(); + Diagram::tTemplateWithServiceName aTemplateWithService; + if (xDiagram) + aTemplateWithService = xDiagram->getTemplate( xTemplateManager ); if( aTemplateWithService.xChartTypeTemplate.is()) - aTemplateWithService.xChartTypeTemplate->resetStyles( xDiagram ); + aTemplateWithService.xChartTypeTemplate->resetStyles2( xDiagram ); xTemplate->changeDiagram( xDiagram ); if( AllSettings::GetMathLayoutRTL() ) AxisHelper::setRTLAxisLayout( AxisHelper::getCoordinateSystemByIndex( xDiagram, 0 ) ); if( rParameter.b3DLook ) - ThreeDHelper::setScheme( xDiagram, rParameter.eThreeDLookScheme ); + xDiagram->setScheme( rParameter.eThreeDLookScheme ); if (xDiagram.is()) { @@ -567,6 +566,8 @@ const tTemplateServiceChartTypeParameterMap& PieChartDialogController::getTempla {"com.sun.star.chart2.template.PieAllExploded" , ChartTypeParameter(2,false,false)}, {"com.sun.star.chart2.template.Donut" , ChartTypeParameter(3,false,false)}, {"com.sun.star.chart2.template.DonutAllExploded" , ChartTypeParameter(4,false,false)}, + {"com.sun.star.chart2.template.BarOfPie" , ChartTypeParameter(5,false,false)}, + {"com.sun.star.chart2.template.PieOfPie" , ChartTypeParameter(6,false,false)}, {"com.sun.star.chart2.template.ThreeDPie" , ChartTypeParameter(1,false,true)}, {"com.sun.star.chart2.template.ThreeDPieAllExploded" , ChartTypeParameter(2,false,true)}, {"com.sun.star.chart2.template.ThreeDDonut" , ChartTypeParameter(3,false,true)}, @@ -590,11 +591,15 @@ void PieChartDialogController::fillSubTypeList( ValueSet& rSubTypeList, const Ch rSubTypeList.InsertItem(2, Image(StockImage::Yes, BMP_CIRCLES_2D_EXPLODED)); rSubTypeList.InsertItem(3, Image(StockImage::Yes, BMP_DONUT_2D)); rSubTypeList.InsertItem(4, Image(StockImage::Yes, BMP_DONUT_2D_EXPLODED)); + rSubTypeList.InsertItem(5, Image(StockImage::Yes, BMP_BAR_OF_PIE)); + rSubTypeList.InsertItem(6, Image(StockImage::Yes, BMP_PIE_OF_PIE)); } rSubTypeList.SetItemText( 1, SchResId( STR_NORMAL ) ); rSubTypeList.SetItemText( 2, SchResId( STR_PIE_EXPLODED ) ); rSubTypeList.SetItemText( 3, SchResId( STR_DONUT ) ); rSubTypeList.SetItemText( 4, SchResId( STR_DONUT_EXPLODED ) ); + rSubTypeList.SetItemText( 5, SchResId( STR_BAR_OF_PIE ) ); + rSubTypeList.SetItemText( 6, SchResId( STR_PIE_OF_PIE ) ); } bool PieChartDialogController::shouldShow_3DLookControl() const @@ -1156,7 +1161,7 @@ void CombiColumnLineChartDialogController::fillExtraControls( if (!m_xMF_NumberOfLines) return; - rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram( xChartModel ); + rtl::Reference< Diagram > xDiagram = xChartModel->getFirstChartDiagram(); if(!xDiagram.is()) return; diff --git a/chart2/source/controller/dialogs/DataBrowser.cxx b/chart2/source/controller/dialogs/DataBrowser.cxx index ebe1941010ad..30182b95eeb8 100644 --- a/chart2/source/controller/dialogs/DataBrowser.cxx +++ b/chart2/source/controller/dialogs/DataBrowser.cxx @@ -22,6 +22,7 @@ #include "DataBrowser.hxx" #include "DataBrowserModel.hxx" #include <strings.hrc> +#include <DataSeries.hxx> #include <DataSeriesHelper.hxx> #include <DiagramHelper.hxx> #include <CommonConverters.hxx> @@ -31,6 +32,7 @@ #include <bitmaps.hlst> #include <helpids.h> #include <ChartModel.hxx> +#include <ChartType.hxx> #include <vcl/weld.hxx> #include <vcl/settings.hxx> @@ -41,8 +43,6 @@ #include <svl/numformat.hxx> #include <toolkit/helper/vclunohelper.hxx> -#include <com/sun/star/chart2/XChartDocument.hpp> -#include <com/sun/star/chart2/XChartType.hpp> #include <com/sun/star/container/XIndexReplace.hpp> #include <algorithm> @@ -170,7 +170,7 @@ public: void SetColor( const Color & rCol ); void SetPos(); void SetWidth( sal_Int32 nWidth ); - void SetChartType( const Reference< chart2::XChartType > & xChartType, + void SetChartType( const rtl::Reference< ::chart::ChartType > & xChartType, bool bSwapXAndYAxis ); void SetSeriesName( const OUString & rName ); void SetRange( sal_Int32 nStartCol, sal_Int32 nEndCol ); @@ -222,7 +222,7 @@ private: DECL_LINK( SeriesNameEdited, SeriesHeaderEdit&, void ); static OUString GetChartTypeImage( - const Reference< chart2::XChartType > & xChartType, + const rtl::Reference< ::chart::ChartType > & xChartType, bool bSwapXAndYAxis ); @@ -291,20 +291,15 @@ void SeriesHeader::SetPos() // series name edit field m_spSeriesName->set_margin_start(2); - aSize.setWidth(nSymbolHeight); - aSize.setHeight(12); - aSize = m_xDevice->LogicToPixel(aSize, MapMode(MapUnit::MapAppFont)); - aSize.setWidth(m_nWidth - aSize.Width() - 2); - m_spSeriesName->set_size_request(aSize.Width(), aSize.Height()); + sal_Int32 nHeightPx = m_xDevice->LogicToPixel(Size(0, 12), MapMode(MapUnit::MapAppFont)).Height(); + m_spSeriesName->set_size_request(m_nWidth - aSize.Width() - 2, nHeightPx); // color bar - aSize.setHeight(3); - aSize = m_xDevice->LogicToPixel(aSize, MapMode(MapUnit::MapAppFont)); - aSize.setWidth(m_nWidth); - m_spColorBar->set_size_request(aSize.Width(), aSize.Height()); + nHeightPx = m_xDevice->LogicToPixel(Size(0, 3), MapMode(MapUnit::MapAppFont)).Height(); + m_spColorBar->set_size_request(m_nWidth, nHeightPx); ScopedVclPtr<VirtualDevice> xVirDev(m_spColorBar->create_virtual_device()); - xVirDev->SetOutputSizePixel(aSize); + xVirDev->SetOutputSizePixel(Size(m_nWidth, nHeightPx)); xVirDev->SetFillColor(m_aColor); xVirDev->SetLineColor(m_aColor); xVirDev->DrawRect(tools::Rectangle(Point(0, 0), aSize)); @@ -323,7 +318,7 @@ void SeriesHeader::SetPixelWidth( sal_Int32 nWidth ) } void SeriesHeader::SetChartType( - const Reference< chart2::XChartType > & xChartType, + const rtl::Reference< ChartType > & xChartType, bool bSwapXAndYAxis ) { @@ -381,7 +376,7 @@ bool SeriesHeader::HasFocus() const } OUString SeriesHeader::GetChartTypeImage( - const Reference< chart2::XChartType > & xChartType, + const rtl::Reference< ChartType > & xChartType, bool bSwapXAndYAxis ) { @@ -620,7 +615,7 @@ void DataBrowser::RenewTable() GetDataWindow().LogicToPixel( Size( 42, 0 )).getWidth() )); OUString aDefaultSeriesName(SchResId(STR_COLUMN_LABEL)); - replaceParamterInString( aDefaultSeriesName, "%COLUMNNUMBER", OUString::number( 24 ) ); + replaceParamterInString( aDefaultSeriesName, u"%COLUMNNUMBER", OUString::number( 24 ) ); sal_Int32 nColumnWidth = GetDataWindow().GetTextWidth( aDefaultSeriesName ) + GetDataWindow().LogicToPixel(Point(8 + impl::SeriesHeader::GetRelativeAppFontXPosForNameField(), 0), MapMode(MapUnit::MapAppFont)).X(); sal_Int32 nColumnCount = m_apDataBrowserModel->getColumnCount(); @@ -644,19 +639,17 @@ void DataBrowser::RenewTable() for (auto const& elemHeader : aHeaders) { auto spHeader = std::make_shared<impl::SeriesHeader>( m_pColumnsWin, m_pColorsWin ); - Reference< beans::XPropertySet > xSeriesProp( elemHeader.m_xDataSeries, uno::UNO_QUERY ); Color nColor; // @todo: Set "DraftColor", i.e. interpolated colors for gradients, bitmaps, etc. - if( xSeriesProp.is() && - ( xSeriesProp->getPropertyValue( "Color" ) >>= nColor )) + if( elemHeader.m_xDataSeries.is() && + ( elemHeader.m_xDataSeries->getPropertyValue( "Color" ) >>= nColor )) spHeader->SetColor( nColor ); spHeader->SetChartType( elemHeader.m_xChartType, elemHeader.m_bSwapXAndYAxis ); spHeader->SetSeriesName( - DataSeriesHelper::getDataSeriesLabel( - elemHeader.m_xDataSeries, - (elemHeader.m_xChartType.is() ? + elemHeader.m_xDataSeries->getLabelForRole( + elemHeader.m_xChartType.is() ? elemHeader.m_xChartType->getRoleOfSequenceForSeriesLabel() : - OUString("values-y")))); + OUString("values-y"))); // index is 1-based, as 0 is for the column that contains the row-numbers spHeader->SetRange( elemHeader.m_nStartColumn + 1, elemHeader.m_nEndColumn + 1 ); spHeader->SetGetFocusHdl( aFocusLink ); @@ -832,12 +825,11 @@ void DataBrowser::CellModified() } void DataBrowser::SetDataFromModel( - const rtl::Reference<::chart::ChartModel> & xChartDoc, - const Reference< uno::XComponentContext > & xContext ) + const rtl::Reference<::chart::ChartModel> & xChartDoc ) { m_xChartDoc = xChartDoc; - m_apDataBrowserModel.reset( new DataBrowserModel( m_xChartDoc, xContext )); + m_apDataBrowserModel.reset( new DataBrowserModel( m_xChartDoc )); m_spNumberFormatterWrapper = std::make_shared<NumberFormatterWrapper>(m_xChartDoc); @@ -1272,18 +1264,16 @@ void DataBrowser::RenewSeriesHeaders() for (auto const& elemHeader : aHeaders) { auto spHeader = std::make_shared<impl::SeriesHeader>( m_pColumnsWin, m_pColorsWin ); - Reference< beans::XPropertySet > xSeriesProp(elemHeader.m_xDataSeries, uno::UNO_QUERY); Color nColor; - if( xSeriesProp.is() && - ( xSeriesProp->getPropertyValue( "Color" ) >>= nColor )) + if( elemHeader.m_xDataSeries.is() && + ( elemHeader.m_xDataSeries->getPropertyValue( "Color" ) >>= nColor )) spHeader->SetColor( nColor ); spHeader->SetChartType( elemHeader.m_xChartType, elemHeader.m_bSwapXAndYAxis ); spHeader->SetSeriesName( - DataSeriesHelper::getDataSeriesLabel( - elemHeader.m_xDataSeries, - (elemHeader.m_xChartType.is() ? + elemHeader.m_xDataSeries->getLabelForRole( + elemHeader.m_xChartType.is() ? elemHeader.m_xChartType->getRoleOfSequenceForSeriesLabel() : - OUString( "values-y")))); + OUString( "values-y"))); spHeader->SetRange( elemHeader.m_nStartColumn + 1, elemHeader.m_nEndColumn + 1 ); spHeader->SetGetFocusHdl( aFocusLink ); spHeader->SetEditChangedHdl( aSeriesHeaderChangedLink ); @@ -1360,18 +1350,17 @@ IMPL_LINK( DataBrowser, SeriesHeaderGotFocus, impl::SeriesHeaderEdit&, rEdit, vo IMPL_LINK( DataBrowser, SeriesHeaderChanged, impl::SeriesHeaderEdit&, rEdit, void ) { - Reference< chart2::XDataSeries > xSeries( - m_apDataBrowserModel->getDataSeriesByColumn( rEdit.getStartColumn() - 1 )); - Reference< chart2::data::XDataSource > xSource( xSeries, uno::UNO_QUERY ); - if( !xSource.is()) + rtl::Reference< DataSeries > xSeries = + m_apDataBrowserModel->getDataSeriesByColumn( rEdit.getStartColumn() - 1 ); + if( !xSeries.is()) return; - Reference< chart2::XChartType > xChartType( + rtl::Reference< ChartType > xChartType( m_apDataBrowserModel->getHeaderForSeries( xSeries ).m_xChartType ); if( xChartType.is()) { - Reference< chart2::data::XLabeledDataSequence > xLabeledSeq( - DataSeriesHelper::getDataSequenceByRole( xSource, xChartType->getRoleOfSequenceForSeriesLabel())); + uno::Reference< chart2::data::XLabeledDataSequence > xLabeledSeq = + DataSeriesHelper::getDataSequenceByRole( xSeries, xChartType->getRoleOfSequenceForSeriesLabel()); if( xLabeledSeq.is()) { Reference< container::XIndexReplace > xIndexReplace( xLabeledSeq->getLabel(), uno::UNO_QUERY ); diff --git a/chart2/source/controller/dialogs/DataBrowser.hxx b/chart2/source/controller/dialogs/DataBrowser.hxx index ec85160e4437..c1d6a72e6cf8 100644 --- a/chart2/source/controller/dialogs/DataBrowser.hxx +++ b/chart2/source/controller/dialogs/DataBrowser.hxx @@ -98,8 +98,7 @@ public: void SetReadOnly( bool bNewState ); bool IsReadOnly() const { return m_bIsReadOnly;} - void SetDataFromModel( const rtl::Reference<::chart::ChartModel> & xChartDoc, - const css::uno::Reference< css::uno::XComponentContext > & xContext ); + void SetDataFromModel( const rtl::Reference<::chart::ChartModel> & xChartDoc ); // predicates to determine what actions are possible at the current cursor // position. This depends on the implementation of the according mutators diff --git a/chart2/source/controller/dialogs/DataBrowserModel.cxx b/chart2/source/controller/dialogs/DataBrowserModel.cxx index c73781770549..938da978dd07 100644 --- a/chart2/source/controller/dialogs/DataBrowserModel.cxx +++ b/chart2/source/controller/dialogs/DataBrowserModel.cxx @@ -20,37 +20,34 @@ #include "DataBrowserModel.hxx" #include "DialogModel.hxx" #include <ChartModelHelper.hxx> +#include <ChartType.hxx> #include <ChartTypeManager.hxx> -#include <DiagramHelper.hxx> #include <Diagram.hxx> +#include <DataSeries.hxx> #include <DataSeriesHelper.hxx> #include <ControllerLockGuard.hxx> #include <StatisticsHelper.hxx> #include <ChartTypeHelper.hxx> -#include <ChartTypeTemplate.hxx> #include <chartview/ExplicitValueProvider.hxx> #include <ExplicitCategoriesProvider.hxx> #include <BaseCoordinateSystem.hxx> - #include <ChartModel.hxx> #include <unonames.hxx> #include <com/sun/star/container/XIndexReplace.hpp> -#include <com/sun/star/chart2/XDataSeriesContainer.hpp> #include <com/sun/star/chart2/XInternalDataProvider.hpp> -#include <com/sun/star/chart2/XCoordinateSystemContainer.hpp> -#include <com/sun/star/chart2/XChartTypeContainer.hpp> #include <com/sun/star/chart2/data/XDataSource.hpp> #include <com/sun/star/chart2/data/XLabeledDataSequence.hpp> #include <com/sun/star/chart2/data/XNumericalDataSequence.hpp> #include <com/sun/star/chart2/data/XTextualDataSequence.hpp> -#include <com/sun/star/util/XModifiable.hpp> #include <o3tl/safeint.hxx> -#include <tools/diagnose_ex.h> +#include <comphelper/diagnose_ex.hxx> #include <comphelper/property.hxx> #include <algorithm> +#include <cstddef> #include <limits> +#include <utility> using namespace ::com::sun::star; @@ -99,7 +96,7 @@ void lcl_copyDataSequenceProperties( } bool lcl_SequenceOfSeriesIsShared( - const Reference< chart2::XDataSeries > & xSeries, + const rtl::Reference< ::chart::DataSeries > & xSeries, const Reference< chart2::data::XDataSequence > & xValues ) { bool bResult = false; @@ -109,9 +106,8 @@ bool lcl_SequenceOfSeriesIsShared( { OUString aValuesRole( lcl_getRole( xValues )); OUString aValuesRep( xValues->getSourceRangeRepresentation()); - Reference< chart2::data::XDataSource > xSource( xSeries, uno::UNO_QUERY_THROW ); - const Sequence< Reference< chart2::data::XLabeledDataSequence > > aLSeq( xSource->getDataSequences()); - for( Reference< chart2::data::XLabeledDataSequence > const & labeledDataSeq : aLSeq ) + const std::vector< uno::Reference< chart2::data::XLabeledDataSequence > > & aLSeq( xSeries->getDataSequences2()); + for( uno::Reference< chart2::data::XLabeledDataSequence > const & labeledDataSeq : aLSeq ) if (labeledDataSeq.is() && DataSeriesHelper::getRole(labeledDataSeq) == aValuesRole) { // getValues().is(), because lcl_getRole checked that already @@ -127,24 +123,22 @@ bool lcl_SequenceOfSeriesIsShared( return bResult; } -typedef std::vector< Reference< chart2::data::XLabeledDataSequence > > lcl_tSharedSeqVec; +typedef std::vector< uno::Reference< chart2::data::XLabeledDataSequence > > lcl_tSharedSeqVec; -lcl_tSharedSeqVec lcl_getSharedSequences( const Sequence< Reference< chart2::XDataSeries > > & rSeries ) +lcl_tSharedSeqVec lcl_getSharedSequences( const std::vector< rtl::Reference< DataSeries > > & rSeries ) { // @todo: if only some series share a sequence, those have to be duplicated // and made unshared for all series lcl_tSharedSeqVec aResult; // if we have only one series, we don't want any shared sequences - if( rSeries.getLength() <= 1 ) + if( rSeries.size() <= 1 ) return aResult; - Reference< chart2::data::XDataSource > xSource( rSeries[0], uno::UNO_QUERY ); - const Sequence< Reference< chart2::data::XLabeledDataSequence > > aLSeq( xSource->getDataSequences()); - for( Reference< chart2::data::XLabeledDataSequence > const & labeledDataSeq : aLSeq ) + for( uno::Reference< chart2::data::XLabeledDataSequence > const & labeledDataSeq : rSeries[0]->getDataSequences2() ) { Reference< chart2::data::XDataSequence > xValues( labeledDataSeq->getValues()); bool bShared = true; - for( sal_Int32 nSeriesIdx=1; nSeriesIdx<rSeries.getLength(); ++nSeriesIdx ) + for( std::size_t nSeriesIdx=1; nSeriesIdx<rSeries.size(); ++nSeriesIdx ) { bShared = lcl_SequenceOfSeriesIsShared( rSeries[nSeriesIdx], xValues ); if( !bShared ) @@ -193,10 +187,10 @@ private: struct lcl_RolesOfLSeqMatch { - explicit lcl_RolesOfLSeqMatch( const Reference< chart2::data::XLabeledDataSequence > & xLSeq ) : + explicit lcl_RolesOfLSeqMatch( const uno::Reference< chart2::data::XLabeledDataSequence > & xLSeq ) : m_aRole(DataSeriesHelper::getRole(xLSeq)) {} - bool operator() ( const Reference< chart2::data::XLabeledDataSequence > & xLSeq ) + bool operator() ( const uno::Reference< chart2::data::XLabeledDataSequence > & xLSeq ) { return DataSeriesHelper::getRole(xLSeq) == m_aRole; } @@ -204,16 +198,16 @@ private: OUString m_aRole; }; -bool lcl_ShowCategoriesAsDataLabel( const Reference< chart2::XDiagram > & xDiagram ) +bool lcl_ShowCategoriesAsDataLabel( const rtl::Reference< ::chart::Diagram > & xDiagram ) { - return !DiagramHelper::isCategoryDiagram(xDiagram); + return !xDiagram->isCategory(); } } // anonymous namespace struct DataBrowserModel::tDataColumn { - uno::Reference<chart2::XDataSeries> m_xDataSeries; + rtl::Reference<DataSeries> m_xDataSeries; OUString m_aUIRoleName; uno::Reference<chart2::data::XLabeledDataSequence> m_xLabeledDataSequence; eCellType m_eCellType; @@ -223,14 +217,14 @@ struct DataBrowserModel::tDataColumn tDataColumn() : m_eCellType( TEXT ), m_nNumberFormatKey( 0 ) {} // "full" CTOR tDataColumn( - const uno::Reference<chart2::XDataSeries> & xDataSeries, - const OUString& aUIRoleName, - const uno::Reference<chart2::data::XLabeledDataSequence>& xLabeledDataSequence, + rtl::Reference<DataSeries> xDataSeries, + OUString aUIRoleName, + uno::Reference<chart2::data::XLabeledDataSequence> xLabeledDataSequence, eCellType aCellType, sal_Int32 nNumberFormatKey ) : - m_xDataSeries( xDataSeries ), - m_aUIRoleName( aUIRoleName ), - m_xLabeledDataSequence( xLabeledDataSequence ), + m_xDataSeries(std::move( xDataSeries )), + m_aUIRoleName(std::move( aUIRoleName )), + m_xLabeledDataSequence(std::move( xLabeledDataSequence )), m_eCellType( aCellType ), m_nNumberFormatKey( nNumberFormatKey ) {} @@ -250,10 +244,9 @@ struct DataBrowserModel::implColumnLess }; DataBrowserModel::DataBrowserModel( - const rtl::Reference<::chart::ChartModel> & xChartDoc, - const Reference< uno::XComponentContext > & xContext ) : + const rtl::Reference<::chart::ChartModel> & xChartDoc ) : m_xChartDocument( xChartDoc ), - m_apDialogModel( new DialogModel( xChartDoc, xContext )) + m_apDialogModel( new DialogModel( xChartDoc )) { updateFromModel(); } @@ -266,15 +259,15 @@ namespace struct lcl_DataSeriesOfHeaderMatches { explicit lcl_DataSeriesOfHeaderMatches( - const Reference< chart2::XDataSeries > & xSeriesToCompareWith ) : - m_xSeries( xSeriesToCompareWith ) + rtl::Reference< ::chart::DataSeries > xSeriesToCompareWith ) : + m_xSeries(std::move( xSeriesToCompareWith )) {} bool operator() ( const ::chart::DataBrowserModel::tDataHeader & rHeader ) { return (m_xSeries == rHeader.m_xDataSeries); } private: - Reference< chart2::XDataSeries > m_xSeries; + rtl::Reference< ::chart::DataSeries > m_xSeries; }; } @@ -292,18 +285,18 @@ void DataBrowserModel::insertDataSeries( sal_Int32 nAfterColumnIndex ) nAfterColumnIndex = getCategoryColumnCount()-1; sal_Int32 nStartCol = 0; - rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram(m_xChartDocument); - Reference<chart2::XChartType> xChartType; - Reference<chart2::XDataSeries> xSeries; + rtl::Reference< Diagram > xDiagram = m_xChartDocument->getFirstChartDiagram(); + rtl::Reference<ChartType> xChartType; + rtl::Reference<DataSeries> xSeries; if (o3tl::make_unsigned(nAfterColumnIndex) < m_aColumns.size()) // Get the data series at specific column position (if available). - xSeries.set( m_aColumns[nAfterColumnIndex].m_xDataSeries ); + xSeries = m_aColumns[nAfterColumnIndex].m_xDataSeries; sal_Int32 nSeriesNumberFormat = 0; if( xSeries.is()) { // Use the chart type of the currently selected data series. - xChartType.set( DiagramHelper::getChartTypeOfSeries( xDiagram, xSeries )); + xChartType = xDiagram->getChartTypeOfSeries( xSeries ); // Find the corresponding header and determine the last column of this // data series. @@ -314,14 +307,13 @@ void DataBrowserModel::insertDataSeries( sal_Int32 nAfterColumnIndex ) nStartCol = aIt->m_nEndColumn; // Get the number format too. - Reference< beans::XPropertySet > xSeriesProps( xSeries, uno::UNO_QUERY ); - if( xSeriesProps.is() ) - xSeriesProps->getPropertyValue(CHART_UNONAME_NUMFMT) >>= nSeriesNumberFormat; + if( xSeries.is() ) + xSeries->getPropertyValue(CHART_UNONAME_NUMFMT) >>= nSeriesNumberFormat; } else { // No data series at specified column position. Use the first chart type. - xChartType.set( DiagramHelper::getChartTypeByIndex( xDiagram, 0 )); + xChartType = xDiagram->getChartTypeByIndex( 0 ); nStartCol = nAfterColumnIndex; } @@ -330,68 +322,59 @@ void DataBrowserModel::insertDataSeries( sal_Int32 nAfterColumnIndex ) // Get shared sequences of current series. Normally multiple data series // only share "values-x" sequences. (TODO: simplify this logic). - Reference< chart2::XDataSeriesContainer > xSeriesCnt( xChartType, uno::UNO_QUERY ); - lcl_tSharedSeqVec aSharedSequences; - if( xSeriesCnt.is()) - aSharedSequences = lcl_getSharedSequences( xSeriesCnt->getDataSeries()); + lcl_tSharedSeqVec aSharedSequences = lcl_getSharedSequences( xChartType->getDataSeries2()); - Reference<chart2::XDataSeries> xNewSeries = + rtl::Reference<::chart::DataSeries> xNewSeries = m_apDialogModel->insertSeriesAfter(xSeries, xChartType, true); if (!xNewSeries.is()) // Failed to insert new data series to the model. Bail out. return; - Reference< chart2::data::XDataSource > xSource( xNewSeries, uno::UNO_QUERY ); - if (xSource.is()) + const std::vector<uno::Reference<chart2::data::XLabeledDataSequence> > & aLSequences = xNewSeries->getDataSequences2(); + sal_Int32 nSeqIdx = 0; + sal_Int32 nSeqSize = aLSequences.size(); + for (sal_Int32 nIndex = nStartCol; nSeqIdx < nSeqSize; ++nSeqIdx) { - Sequence<Reference<chart2::data::XLabeledDataSequence> > aLSequences = xSource->getDataSequences(); - sal_Int32 nSeqIdx = 0; - sal_Int32 nSeqSize = aLSequences.getLength(); - for (sal_Int32 nIndex = nStartCol; nSeqIdx < nSeqSize; ++nSeqIdx) - { - lcl_tSharedSeqVec::const_iterator aSharedIt( - std::find_if( aSharedSequences.begin(), aSharedSequences.end(), - lcl_RolesOfLSeqMatch( aLSequences[nSeqIdx] ))); + lcl_tSharedSeqVec::const_iterator aSharedIt( + std::find_if( aSharedSequences.begin(), aSharedSequences.end(), + lcl_RolesOfLSeqMatch( aLSequences[nSeqIdx] ))); - if( aSharedIt != aSharedSequences.end()) - { - // Shared sequence. Most likely "values-x" sequence. Copy it from existing sequence. - aLSequences[nSeqIdx]->setValues( (*aSharedIt)->getValues()); - aLSequences[nSeqIdx]->setLabel( (*aSharedIt)->getLabel()); - } - else - { - // Insert a new column in the internal data for the new sequence. - xDataProvider->insertSequence( nIndex - 1 ); - - // values - Reference< chart2::data::XDataSequence > xNewSeq( - xDataProvider->createDataSequenceByRangeRepresentation( - OUString::number( nIndex ))); - lcl_copyDataSequenceProperties( - aLSequences[nSeqIdx]->getValues(), xNewSeq ); - aLSequences[nSeqIdx]->setValues( xNewSeq ); - - // labels - Reference< chart2::data::XDataSequence > xNewLabelSeq( - xDataProvider->createDataSequenceByRangeRepresentation( - "label " + - OUString::number( nIndex ))); - lcl_copyDataSequenceProperties( - aLSequences[nSeqIdx]->getLabel(), xNewLabelSeq ); - aLSequences[nSeqIdx]->setLabel( xNewLabelSeq ); - ++nIndex; - } + if( aSharedIt != aSharedSequences.end()) + { + // Shared sequence. Most likely "values-x" sequence. Copy it from existing sequence. + aLSequences[nSeqIdx]->setValues( (*aSharedIt)->getValues()); + aLSequences[nSeqIdx]->setLabel( (*aSharedIt)->getLabel()); + } + else + { + // Insert a new column in the internal data for the new sequence. + xDataProvider->insertSequence( nIndex - 1 ); + + // values + Reference< chart2::data::XDataSequence > xNewSeq( + xDataProvider->createDataSequenceByRangeRepresentation( + OUString::number( nIndex ))); + lcl_copyDataSequenceProperties( + aLSequences[nSeqIdx]->getValues(), xNewSeq ); + aLSequences[nSeqIdx]->setValues( xNewSeq ); + + // labels + Reference< chart2::data::XDataSequence > xNewLabelSeq( + xDataProvider->createDataSequenceByRangeRepresentation( + "label " + + OUString::number( nIndex ))); + lcl_copyDataSequenceProperties( + aLSequences[nSeqIdx]->getLabel(), xNewLabelSeq ); + aLSequences[nSeqIdx]->setLabel( xNewLabelSeq ); + ++nIndex; } } if( nSeriesNumberFormat != 0 ) { //give the new series the same number format as the former series especially for bubble charts thus the bubble size values can be edited with same format immediately - Reference< beans::XPropertySet > xNewSeriesProps( xNewSeries, uno::UNO_QUERY ); - if( xNewSeriesProps.is() ) - xNewSeriesProps->setPropertyValue(CHART_UNONAME_NUMFMT , uno::Any(nSeriesNumberFormat)); + xNewSeries->setPropertyValue(CHART_UNONAME_NUMFMT , uno::Any(nSeriesNumberFormat)); } updateFromModel(); @@ -450,7 +433,7 @@ void DataBrowserModel::removeDataSeriesOrComplexCategoryLevel( sal_Int32 nAtColu return; } - const Reference<chart2::XDataSeries>& xSeries = m_aColumns[nAtColumnIndex].m_xDataSeries; + const rtl::Reference<DataSeries>& xSeries = m_aColumns[nAtColumnIndex].m_xDataSeries; m_apDialogModel->deleteSeries(xSeries, getHeaderForSeries(xSeries).m_xChartType); @@ -458,16 +441,14 @@ void DataBrowserModel::removeDataSeriesOrComplexCategoryLevel( sal_Int32 nAtColu //but do not delete sequences that are still in use by the remaining series Reference< chart2::XInternalDataProvider > xDataProvider( m_apDialogModel->getDataProvider(), uno::UNO_QUERY ); - Reference< chart2::data::XDataSource > xSourceOfDeleted( xSeries, uno::UNO_QUERY ); - if (!xDataProvider.is() || !xSourceOfDeleted.is()) + if (!xDataProvider.is() || !xSeries.is()) { // Something went wrong. Bail out. updateFromModel(); return; } - Reference<chart2::XDataSeriesContainer> xSeriesCnt( - getHeaderForSeries(xSeries).m_xChartType, uno::UNO_QUERY); + rtl::Reference<ChartType> xSeriesCnt(getHeaderForSeries(xSeries).m_xChartType); if (!xSeriesCnt.is()) { // Unexpected happened. Bail out. @@ -477,13 +458,13 @@ void DataBrowserModel::removeDataSeriesOrComplexCategoryLevel( sal_Int32 nAtColu // Collect all the remaining data sequences in the same chart type. The // deleted data series is already gone by this point. - std::vector<Reference<chart2::data::XLabeledDataSequence> > aAllDataSeqs = - DataSeriesHelper::getAllDataSequences(xSeriesCnt->getDataSeries()); + std::vector<uno::Reference<chart2::data::XLabeledDataSequence> > aAllDataSeqs = + DataSeriesHelper::getAllDataSequences(xSeriesCnt->getDataSeries2()); // Check if the sequences to be deleted are still referenced by any of // the other data series. If not, mark them for deletion. std::vector<sal_Int32> aSequenceIndexesToDelete; - const Sequence<Reference<chart2::data::XLabeledDataSequence> > aSequencesOfDeleted = xSourceOfDeleted->getDataSequences(); + const std::vector<uno::Reference<chart2::data::XLabeledDataSequence> > & aSequencesOfDeleted = xSeries->getDataSequences2(); for (auto const & labeledDataSeq : aSequencesOfDeleted) { // if not used by the remaining series this sequence can be deleted @@ -511,7 +492,7 @@ void DataBrowserModel::swapDataSeries( sal_Int32 nFirstColumnIndex ) OSL_ASSERT(m_apDialogModel); if( o3tl::make_unsigned( nFirstColumnIndex ) < m_aColumns.size() - 1 ) { - Reference< chart2::XDataSeries > xSeries( m_aColumns[nFirstColumnIndex].m_xDataSeries ); + rtl::Reference< DataSeries > xSeries( m_aColumns[nFirstColumnIndex].m_xDataSeries ); if( xSeries.is()) { m_apDialogModel->moveSeries( xSeries, DialogModel::MoveDirection::Down ); @@ -557,15 +538,17 @@ void DataBrowserModel::removeDataPointForAllSeries( sal_Int32 nAtIndex ) DataBrowserModel::tDataHeader DataBrowserModel::getHeaderForSeries( const Reference< chart2::XDataSeries > & xSeries ) const { + rtl::Reference<DataSeries> pSeries = dynamic_cast<DataSeries*>(xSeries.get()); + assert(!xSeries || pSeries); for (auto const& elemHeader : m_aHeaders) { - if( elemHeader.m_xDataSeries == xSeries ) + if( elemHeader.m_xDataSeries == pSeries ) return elemHeader; } return tDataHeader(); } -Reference< chart2::XDataSeries > +rtl::Reference< DataSeries > DataBrowserModel::getDataSeriesByColumn( sal_Int32 nColumn ) const { tDataColumnVector::size_type nIndex( nColumn ); @@ -765,14 +748,14 @@ void DataBrowserModel::updateFromModel() m_aColumns.clear(); m_aHeaders.clear(); - rtl::Reference< Diagram > xDiagram( ChartModelHelper::findDiagram( m_xChartDocument )); + rtl::Reference< Diagram > xDiagram( m_xChartDocument->getFirstChartDiagram()); if( !xDiagram.is()) return; // set template at DialogModel rtl::Reference< ::chart::ChartTypeManager > xChartTypeManager = m_xChartDocument->getTypeManager(); - DiagramHelper::tTemplateWithServiceName aTemplateAndService = - DiagramHelper::getTemplateForDiagram( xDiagram, xChartTypeManager ); + Diagram::tTemplateWithServiceName aTemplateAndService = + xDiagram->getTemplate( xChartTypeManager ); if( aTemplateAndService.xChartTypeTemplate.is()) m_apDialogModel->setTemplate( aTemplateAndService.xChartTypeTemplate ); @@ -781,8 +764,8 @@ void DataBrowserModel::updateFromModel() { ExplicitCategoriesProvider aExplicitCategoriesProvider( ChartModelHelper::getFirstCoordinateSystem(m_xChartDocument), *m_xChartDocument ); - const Sequence< Reference< chart2::data::XLabeledDataSequence> >& rSplitCategoriesList( aExplicitCategoriesProvider.getSplitCategoriesList() ); - sal_Int32 nLevelCount = rSplitCategoriesList.getLength(); + const std::vector< Reference< chart2::data::XLabeledDataSequence> >& rSplitCategoriesList = aExplicitCategoriesProvider.getSplitCategoriesList(); + sal_Int32 nLevelCount = rSplitCategoriesList.size(); for( sal_Int32 nL = 0; nL<nLevelCount; nL++ ) { Reference< chart2::data::XLabeledDataSequence > xCategories( rSplitCategoriesList[nL] ); @@ -790,7 +773,7 @@ void DataBrowserModel::updateFromModel() continue; tDataColumn aCategories; - aCategories.m_xLabeledDataSequence.set( xCategories ); + aCategories.m_xLabeledDataSequence = xCategories; if( lcl_ShowCategoriesAsDataLabel( xDiagram )) aCategories.m_aUIRoleName = DialogModel::GetRoleDataLabel(); else @@ -806,101 +789,97 @@ void DataBrowserModel::updateFromModel() const std::vector< rtl::Reference< BaseCoordinateSystem > > aCooSysSeq( xDiagram->getBaseCoordinateSystems()); for( rtl::Reference< BaseCoordinateSystem > const & coords : aCooSysSeq ) { - const Sequence< Reference< chart2::XChartType > > aChartTypes( coords->getChartTypes()); + const std::vector< rtl::Reference< ChartType > > aChartTypes( coords->getChartTypes2()); sal_Int32 nXAxisNumberFormat = DataSeriesHelper::getNumberFormatKeyFromAxis( nullptr, coords, 0, 0 ); - for( sal_Int32 nCTIdx=0; nCTIdx<aChartTypes.getLength(); ++nCTIdx ) + for( auto const & CT: aChartTypes ) { - Reference< chart2::XDataSeriesContainer > xSeriesCnt( aChartTypes[nCTIdx], uno::UNO_QUERY ); - if( xSeriesCnt.is()) - { - OUString aRoleForDataLabelNumberFormat = ChartTypeHelper::getRoleOfSequenceForDataLabelNumberFormatDetection( aChartTypes[nCTIdx] ); + rtl::Reference< ChartType > xSeriesCnt( CT ); + OUString aRoleForDataLabelNumberFormat = ChartTypeHelper::getRoleOfSequenceForDataLabelNumberFormatDetection( CT ); - const Sequence< Reference< chart2::XDataSeries > > aSeries( xSeriesCnt->getDataSeries()); - lcl_tSharedSeqVec aSharedSequences( lcl_getSharedSequences( aSeries )); - for (auto const& sharedSequence : aSharedSequences) - { - tDataColumn aSharedSequence; - aSharedSequence.m_xLabeledDataSequence = sharedSequence; - aSharedSequence.m_aUIRoleName = lcl_getUIRoleName(sharedSequence); - aSharedSequence.m_eCellType = NUMBER; - // as the sequences are shared it should be ok to take the first series - // @todo: dimension index 0 for x-values used here. This is just a guess. - // Also, the axis index is 0, as there is usually only one x-axis - aSharedSequence.m_nNumberFormatKey = nXAxisNumberFormat; - m_aColumns.push_back( aSharedSequence ); - ++nHeaderStart; - } - for( Reference< chart2::XDataSeries > const & dataSeries : aSeries ) + const std::vector< rtl::Reference< DataSeries > > & aSeries( xSeriesCnt->getDataSeries2()); + lcl_tSharedSeqVec aSharedSequences( lcl_getSharedSequences( aSeries )); + for (auto const& sharedSequence : aSharedSequences) + { + tDataColumn aSharedSequence; + aSharedSequence.m_xLabeledDataSequence = sharedSequence; + aSharedSequence.m_aUIRoleName = lcl_getUIRoleName(sharedSequence); + aSharedSequence.m_eCellType = NUMBER; + // as the sequences are shared it should be ok to take the first series + // @todo: dimension index 0 for x-values used here. This is just a guess. + // Also, the axis index is 0, as there is usually only one x-axis + aSharedSequence.m_nNumberFormatKey = nXAxisNumberFormat; + m_aColumns.push_back( aSharedSequence ); + ++nHeaderStart; + } + for( rtl::Reference< DataSeries > const & dataSeries : aSeries ) + { + tDataColumnVector::size_type nStartColIndex = m_aColumns.size(); + rtl::Reference< DataSeries > xSeries( dataSeries ); + if( xSeries.is()) { - tDataColumnVector::size_type nStartColIndex = m_aColumns.size(); - Reference< chart2::XDataSeries > xSeries( dataSeries ); - Reference< chart2::data::XDataSource > xSource( xSeries, uno::UNO_QUERY ); - if( xSource.is()) + const std::vector< uno::Reference< chart2::data::XLabeledDataSequence > > & aLSeqs( xSeries->getDataSequences2()); + if( aLSeqs.empty() ) + continue; + nHeaderEnd = nHeaderStart; + + // @todo: dimension index 1 for y-values used here. This is just a guess + sal_Int32 nYAxisNumberFormatKey = + DataSeriesHelper::getNumberFormatKeyFromAxis( + dataSeries, coords, 1 ); + + sal_Int32 nSeqIdx=0; + for( ; nSeqIdx<static_cast<sal_Int32>(aLSeqs.size()); ++nSeqIdx ) { - Sequence< Reference< chart2::data::XLabeledDataSequence > > aLSeqs( xSource->getDataSequences()); - if( !aLSeqs.hasElements() ) - continue; - nHeaderEnd = nHeaderStart; - - // @todo: dimension index 1 for y-values used here. This is just a guess - sal_Int32 nYAxisNumberFormatKey = - DataSeriesHelper::getNumberFormatKeyFromAxis( - dataSeries, coords, 1 ); - - sal_Int32 nSeqIdx=0; - for( ; nSeqIdx<aLSeqs.getLength(); ++nSeqIdx ) + sal_Int32 nSequenceNumberFormatKey = nYAxisNumberFormatKey; + OUString aRole = DataSeriesHelper::getRole(aLSeqs[nSeqIdx]); + + if( aRole == aRoleForDataLabelNumberFormat ) { - sal_Int32 nSequenceNumberFormatKey = nYAxisNumberFormatKey; - OUString aRole = DataSeriesHelper::getRole(aLSeqs[nSeqIdx]); - - if( aRole == aRoleForDataLabelNumberFormat ) - { - nSequenceNumberFormatKey = ExplicitValueProvider::getExplicitNumberFormatKeyForDataLabel( - Reference< beans::XPropertySet >( xSeries, uno::UNO_QUERY )); - } - else if( aRole == "values-x" ) - nSequenceNumberFormatKey = nXAxisNumberFormat; - - if( std::none_of( aSharedSequences.begin(), aSharedSequences.end(), - lcl_RepresentationsOfLSeqMatch( aLSeqs[nSeqIdx] )) ) - { - // no shared sequence - m_aColumns.emplace_back( - dataSeries, - lcl_getUIRoleName( aLSeqs[nSeqIdx] ), - aLSeqs[nSeqIdx], - NUMBER, - nSequenceNumberFormatKey ); - ++nHeaderEnd; - } - // else skip + nSequenceNumberFormatKey = ExplicitValueProvider::getExplicitNumberFormatKeyForDataLabel( + xSeries); } - bool bSwapXAndYAxis = false; - try + else if( aRole == "values-x" ) + nSequenceNumberFormatKey = nXAxisNumberFormat; + + if( std::none_of( aSharedSequences.begin(), aSharedSequences.end(), + lcl_RepresentationsOfLSeqMatch( aLSeqs[nSeqIdx] )) ) { - coords->getPropertyValue( "SwapXAndYAxis" ) >>= bSwapXAndYAxis; + // no shared sequence + m_aColumns.emplace_back( + dataSeries, + lcl_getUIRoleName( aLSeqs[nSeqIdx] ), + aLSeqs[nSeqIdx], + NUMBER, + nSequenceNumberFormatKey ); + ++nHeaderEnd; } - catch( const beans::UnknownPropertyException & ) {} + // else skip + } + bool bSwapXAndYAxis = false; + try + { + coords->getPropertyValue( "SwapXAndYAxis" ) >>= bSwapXAndYAxis; + } + catch( const beans::UnknownPropertyException & ) {} - // add ranges for error bars if present for a series - if( StatisticsHelper::usesErrorBarRanges( dataSeries )) - addErrorBarRanges( dataSeries, nYAxisNumberFormatKey, nSeqIdx, nHeaderEnd, true ); + // add ranges for error bars if present for a series + if( StatisticsHelper::usesErrorBarRanges( dataSeries )) + addErrorBarRanges( dataSeries, nYAxisNumberFormatKey, nSeqIdx, nHeaderEnd, true ); - if( StatisticsHelper::usesErrorBarRanges( dataSeries, /* bYError = */ false )) - addErrorBarRanges( dataSeries, nYAxisNumberFormatKey, nSeqIdx, nHeaderEnd, false ); + if( StatisticsHelper::usesErrorBarRanges( dataSeries, /* bYError = */ false )) + addErrorBarRanges( dataSeries, nYAxisNumberFormatKey, nSeqIdx, nHeaderEnd, false ); - m_aHeaders.emplace_back( - dataSeries, - aChartTypes[nCTIdx], - bSwapXAndYAxis, - nHeaderStart, - nHeaderEnd - 1 ); + m_aHeaders.emplace_back( + dataSeries, + CT, + bSwapXAndYAxis, + nHeaderStart, + nHeaderEnd - 1 ); - nHeaderStart = nHeaderEnd; + nHeaderStart = nHeaderEnd; - std::sort( m_aColumns.begin() + nStartColIndex, m_aColumns.end(), implColumnLess() ); - } + std::sort( m_aColumns.begin() + nStartColIndex, m_aColumns.end(), implColumnLess() ); } } } @@ -908,35 +887,35 @@ void DataBrowserModel::updateFromModel() } void DataBrowserModel::addErrorBarRanges( - const Reference< chart2::XDataSeries > & xDataSeries, + const rtl::Reference< DataSeries > & xDataSeries, sal_Int32 nNumberFormatKey, sal_Int32 & rInOutSequenceIndex, sal_Int32 & rInOutHeaderEnd, bool bYError ) { try { - std::vector< Reference< chart2::data::XLabeledDataSequence > > aSequences; + std::vector< uno::Reference< chart2::data::XLabeledDataSequence > > aSequences; Reference< chart2::data::XDataSource > xErrorSource( StatisticsHelper::getErrorBars( xDataSeries, bYError ), uno::UNO_QUERY ); - Reference< chart2::data::XLabeledDataSequence > xErrorLSequence( + uno::Reference< chart2::data::XLabeledDataSequence > xErrorLSequence = StatisticsHelper::getErrorLabeledDataSequenceFromDataSource( xErrorSource, /* bPositiveValue = */ true, - bYError )); + bYError ); if( xErrorLSequence.is()) aSequences.push_back( xErrorLSequence ); - xErrorLSequence.set( + xErrorLSequence = StatisticsHelper::getErrorLabeledDataSequenceFromDataSource( xErrorSource, /* bPositiveValue = */ false, - bYError )); + bYError ); if( xErrorLSequence.is()) aSequences.push_back( xErrorLSequence ); - for (Reference<chart2::data::XLabeledDataSequence> const & rDataSequence : aSequences) + for (uno::Reference<chart2::data::XLabeledDataSequence> const & rDataSequence : aSequences) { m_aColumns.emplace_back(xDataSeries, lcl_getUIRoleName(rDataSequence), rDataSequence, NUMBER, nNumberFormatKey); diff --git a/chart2/source/controller/dialogs/DataBrowserModel.hxx b/chart2/source/controller/dialogs/DataBrowserModel.hxx index d7c7be071f66..e3254851d002 100644 --- a/chart2/source/controller/dialogs/DataBrowserModel.hxx +++ b/chart2/source/controller/dialogs/DataBrowserModel.hxx @@ -18,10 +18,14 @@ */ #pragma once +#include <DataSeries.hxx> +#include <ChartType.hxx> + #include <com/sun/star/uno/Reference.hxx> #include <rtl/ref.hxx> #include <memory> +#include <utility> #include <vector> namespace com::sun::star::chart2 { class XChartDocument; } @@ -37,13 +41,14 @@ namespace chart class DialogModel; class ChartModel; +class ChartType; +class DataSeries; class DataBrowserModel final { public: explicit DataBrowserModel( - const rtl::Reference<::chart::ChartModel> & xChartDoc, - const css::uno::Reference< css::uno::XComponentContext > & xContext ); + const rtl::Reference<::chart::ChartModel> & xChartDoc ); ~DataBrowserModel(); /** Inserts a new data series after the data series to which the data column @@ -98,8 +103,8 @@ public: struct tDataHeader { - css::uno::Reference< css::chart2::XDataSeries > m_xDataSeries; - css::uno::Reference< css::chart2::XChartType > m_xChartType; + rtl::Reference< ::chart::DataSeries > m_xDataSeries; + rtl::Reference< ::chart::ChartType > m_xChartType; bool m_bSwapXAndYAxis; sal_Int32 m_nStartColumn; sal_Int32 m_nEndColumn; @@ -112,13 +117,13 @@ public: {} // "full" CTOR tDataHeader( - css::uno::Reference< css::chart2::XDataSeries > const & xDataSeries, - css::uno::Reference< css::chart2::XChartType > const &xChartType, + rtl::Reference< ::chart::DataSeries > xDataSeries, + rtl::Reference< ::chart::ChartType > xChartType, bool bSwapXAndYAxis, sal_Int32 nStartColumn, sal_Int32 nEndColumn ) : - m_xDataSeries( xDataSeries ), - m_xChartType( xChartType ), + m_xDataSeries(std::move( xDataSeries )), + m_xChartType(std::move( xChartType )), m_bSwapXAndYAxis( bSwapXAndYAxis ), m_nStartColumn( nStartColumn ), m_nEndColumn( nEndColumn ) @@ -132,7 +137,7 @@ public: tDataHeader getHeaderForSeries( const css::uno::Reference< css::chart2::XDataSeries > &xSeries ) const; - css::uno::Reference< css::chart2::XDataSeries > + rtl::Reference< ::chart::DataSeries > getDataSeriesByColumn( sal_Int32 nColumn ) const; private: @@ -141,7 +146,7 @@ private: void removeComplexCategoryLevel( sal_Int32 nAtColumnIndex ); void addErrorBarRanges( - const css::uno::Reference<css::chart2::XDataSeries > & xDataSeries, + const rtl::Reference<::chart::DataSeries > & xDataSeries, sal_Int32 nNumberFormatKey, sal_Int32 & rInOutSequenceIndex, sal_Int32 & rInOutHeaderEnd, bool bYError ); diff --git a/chart2/source/controller/dialogs/DialogModel.cxx b/chart2/source/controller/dialogs/DialogModel.cxx index 73b438acef92..4c888e8ed5b6 100644 --- a/chart2/source/controller/dialogs/DialogModel.cxx +++ b/chart2/source/controller/dialogs/DialogModel.cxx @@ -19,33 +19,31 @@ #include "DialogModel.hxx" #include <RangeSelectionHelper.hxx> +#include <DataInterpreter.hxx> +#include <DataSeries.hxx> #include <DataSeriesHelper.hxx> #include <DataSourceHelper.hxx> -#include <DiagramHelper.hxx> #include <Diagram.hxx> #include <strings.hrc> #include <ResId.hxx> #include <ControllerLockGuard.hxx> +#include <ChartType.hxx> #include <ChartTypeHelper.hxx> #include <ChartTypeTemplate.hxx> #include <ThreeDHelper.hxx> #include <ChartModel.hxx> #include <BaseCoordinateSystem.hxx> +#include <LabeledDataSequence.hxx> -#include <com/sun/star/uno/XComponentContext.hpp> #include <com/sun/star/chart2/AxisType.hpp> -#include <com/sun/star/chart2/XCoordinateSystemContainer.hpp> -#include <com/sun/star/chart2/XChartDocument.hpp> -#include <com/sun/star/chart2/XChartTypeContainer.hpp> #include <com/sun/star/chart2/XDataSeriesContainer.hpp> -#include <com/sun/star/chart2/data/XDataSink.hpp> -#include <comphelper/sequence.hxx> -#include <tools/diagnose_ex.h> +#include <comphelper/diagnose_ex.hxx> #include <rtl/ustring.hxx> #include <utility> #include <algorithm> +#include <cstddef> #include <iterator> #include <numeric> @@ -57,16 +55,8 @@ using ::com::sun::star::uno::Sequence; namespace { -constexpr OUStringLiteral lcl_aLabelRole( u"label" ); +constexpr OUString lcl_aLabelRole( u"label"_ustr ); -struct lcl_ChartTypeToSeriesCnt -{ - Reference< XDataSeriesContainer > operator() ( - const Reference< XChartType > & xChartType ) - { - return Reference< XDataSeriesContainer >::query( xChartType ); - } -}; OUString lcl_ConvertRole( const OUString & rRoleString ) { @@ -128,53 +118,6 @@ lcl_tRoleIndexMap lcl_createRoleIndexMap() return aMap; } -struct lcl_DataSeriesContainerAppend -{ - typedef Reference< XDataSeriesContainer > value_type; - typedef std::vector< ::chart::DialogModel::tSeriesWithChartTypeByName > tContainerType; - - explicit lcl_DataSeriesContainerAppend( tContainerType * rCnt ) - : m_rDestCnt( rCnt ) - {} - - lcl_DataSeriesContainerAppend & operator= ( const value_type & xVal ) - { - try - { - if( xVal.is()) - { - const Sequence< Reference< XDataSeries > > aSeq( xVal->getDataSeries()); - OUString aRole( "values-y" ); - Reference< XChartType > xCT( xVal, uno::UNO_QUERY ); - if( xCT.is()) - aRole = xCT->getRoleOfSequenceForSeriesLabel(); - for( Reference< XDataSeries > const & dataSeries : aSeq ) - { - m_rDestCnt->push_back( - ::chart::DialogModel::tSeriesWithChartTypeByName( - ::chart::DataSeriesHelper::getDataSeriesLabel( dataSeries, aRole ), - std::make_pair( dataSeries, xCT ))); - } - } - } - catch( const uno::Exception & ) - { - DBG_UNHANDLED_EXCEPTION("chart2"); - } - return *this; - } - - // Implement output operator requirements as required by std::copy (and - // implement prefix increment in terms of postfix increment to avoid unused - // member function warnings for the latter in the common case where - // std::copy would not actually need it): - lcl_DataSeriesContainerAppend & operator* () { return *this; } - lcl_DataSeriesContainerAppend & operator++ () { return operator++(0); } - lcl_DataSeriesContainerAppend & operator++ (int) { return *this; } - -private: - tContainerType * m_rDestCnt; -}; struct lcl_RolesWithRangeAppend { @@ -182,9 +125,9 @@ struct lcl_RolesWithRangeAppend typedef ::chart::DialogModel::tRolesWithRanges tContainerType; explicit lcl_RolesWithRangeAppend( tContainerType * rCnt, - const OUString & aLabelRole ) + OUString aLabelRole ) : m_rDestCnt( rCnt ), - m_aRoleForLabelSeq( aLabelRole ) + m_aRoleForLabelSeq(std::move( aLabelRole )) {} lcl_RolesWithRangeAppend & operator= ( const value_type & xVal ) @@ -240,13 +183,6 @@ private: namespace std { - template<> struct iterator_traits<lcl_DataSeriesContainerAppend> - { - typedef std::output_iterator_tag iterator_category; - typedef Reference< XDataSeriesContainer > value_type; - typedef value_type& reference; - }; - template<> struct iterator_traits<lcl_RolesWithRangeAppend> { typedef std::output_iterator_tag iterator_category; @@ -288,52 +224,43 @@ Sequence< OUString > lcl_CopyExcludingValuesFirst( return aOutput; } -Reference< XDataSeries > lcl_CreateNewSeries( - const Reference< uno::XComponentContext > & xContext, - const Reference< XChartType > & xChartType, +rtl::Reference< ::chart::DataSeries > lcl_CreateNewSeries( + const rtl::Reference< ::chart::ChartType > & xChartType, sal_Int32 nNewSeriesIndex, sal_Int32 nTotalNumberOfSeriesInCTGroup, - const Reference< XDiagram > & xDiagram, - const Reference< XChartTypeTemplate > & xTemplate, + const rtl::Reference< ::chart::Diagram > & xDiagram, + const rtl::Reference< ::chart::ChartTypeTemplate > & xTemplate, bool bCreateDataCachedSequences ) { // create plain series - Reference< XDataSeries > xResult( - xContext->getServiceManager()->createInstanceWithContext( - "com.sun.star.chart2.DataSeries" , - xContext ), uno::UNO_QUERY ); + rtl::Reference< ::chart::DataSeries > xResult = new ::chart::DataSeries(); if( xTemplate.is()) { - Reference< beans::XPropertySet > xResultProp( xResult, uno::UNO_QUERY ); - if( xResultProp.is()) - { - // @deprecated: correct default color should be found by view - // without setting it as hard attribute - Reference< XColorScheme > xColorScheme( xDiagram->getDefaultColorScheme()); - if( xColorScheme.is()) - xResultProp->setPropertyValue( "Color" , uno::Any( xColorScheme->getColorByIndex( nNewSeriesIndex ))); - } - sal_Int32 nGroupIndex=0; + // @deprecated: correct default color should be found by view + // without setting it as hard attribute + Reference< XColorScheme > xColorScheme( xDiagram->getDefaultColorScheme()); + if( xColorScheme.is()) + xResult->setPropertyValue( "Color" , uno::Any( xColorScheme->getColorByIndex( nNewSeriesIndex ))); + std::size_t nGroupIndex=0; if( xChartType.is()) { - Sequence< Reference< XChartType > > aCTs( - ::chart::DiagramHelper::getChartTypesFromDiagram( xDiagram )); - for( ; nGroupIndex<aCTs.getLength(); ++nGroupIndex) + std::vector< rtl::Reference< ::chart::ChartType > > aCTs = + xDiagram->getChartTypes(); + for( ; nGroupIndex < aCTs.size(); ++nGroupIndex) if( aCTs[nGroupIndex] == xChartType ) break; - if( nGroupIndex == aCTs.getLength()) + if( nGroupIndex == aCTs.size()) nGroupIndex = 0; } - xTemplate->applyStyle( xResult, nGroupIndex, nNewSeriesIndex, nTotalNumberOfSeriesInCTGroup ); + xTemplate->applyStyle2( xResult, nGroupIndex, nNewSeriesIndex, nTotalNumberOfSeriesInCTGroup ); } if( bCreateDataCachedSequences ) { // set chart type specific roles - Reference< data::XDataSink > xSink( xResult, uno::UNO_QUERY ); - if( xChartType.is() && xSink.is()) + if( xChartType.is() ) { - std::vector< Reference< data::XLabeledDataSequence > > aNewSequences; + std::vector< uno::Reference< chart2::data::XLabeledDataSequence > > aNewSequences; const OUString aRoleOfSeqForSeriesLabel = xChartType->getRoleOfSequenceForSeriesLabel(); const OUString aLabel(::chart::SchResId(STR_DATA_UNNAMED_SERIES)); Sequence< OUString > aPossibleRoles( xChartType->getSupportedMandatoryRoles()); @@ -342,7 +269,7 @@ Reference< XDataSeries > lcl_CreateNewSeries( //special handling for candlestick type if( xTemplate.is()) { - Reference< XDataInterpreter > xInterpreter( xTemplate->getDataInterpreter()); + rtl::Reference< ::chart::DataInterpreter > xInterpreter( xTemplate->getDataInterpreter2()); if( xInterpreter.is()) { sal_Int32 nStockVariant; @@ -386,7 +313,7 @@ Reference< XDataSeries > lcl_CreateNewSeries( aNewSequences.push_back( ::chart::DataSourceHelper::createLabeledDataSequence( xSeq )); } - xSink->setData( comphelper::containerToSequence( aNewSequences )); + xResult->setData( aNewSequences ); } } @@ -416,10 +343,8 @@ DialogModelTimeBasedInfo::DialogModelTimeBasedInfo(): } DialogModel::DialogModel( - const rtl::Reference<::chart::ChartModel> & xChartDocument, - const Reference< uno::XComponentContext > & xContext ) : - m_xChartDocument( xChartDocument ), - m_xContext( xContext ), + rtl::Reference<::chart::ChartModel> xChartDocument ) : + m_xChartDocument(std::move( xChartDocument )), m_aTimerTriggeredControllerLock( m_xChartDocument ) { } @@ -461,10 +386,10 @@ Reference< data::XDataProvider > DialogModel::getDataProvider() const return xResult; } -std::vector< Reference< XDataSeriesContainer > > +std::vector< rtl::Reference< ChartType > > DialogModel::getAllDataSeriesContainers() const { - std::vector< Reference< XDataSeriesContainer > > aResult; + std::vector< rtl::Reference< ChartType > > aResult; try { @@ -477,11 +402,9 @@ std::vector< Reference< XDataSeriesContainer > > xDiagram->getBaseCoordinateSystems()); for( rtl::Reference< BaseCoordinateSystem > const & coords : aCooSysSeq ) { - const Sequence< Reference< XChartType > > aChartTypeSeq( coords->getChartTypes()); - std::transform( - aChartTypeSeq.begin(), aChartTypeSeq.end(), - std::back_inserter( aResult ), - lcl_ChartTypeToSeriesCnt() ); + + for (const auto & rxChartType : coords->getChartTypes2()) + aResult.push_back(rxChartType); } } } @@ -497,11 +420,29 @@ std::vector< DialogModel::tSeriesWithChartTypeByName > DialogModel::getAllDataSeriesWithLabel() const { std::vector< tSeriesWithChartTypeByName > aResult; - std::vector< Reference< XDataSeriesContainer > > aContainers( + std::vector< rtl::Reference< ChartType > > aContainers( getAllDataSeriesContainers()); - std::copy( aContainers.begin(), aContainers.end(), - lcl_DataSeriesContainerAppend( &aResult )); + for (const auto & rxChartType : aContainers ) + { + try + { + const std::vector< rtl::Reference< DataSeries > > & aSeq = rxChartType->getDataSeries2(); + OUString aRole = rxChartType->getRoleOfSequenceForSeriesLabel(); + for( rtl::Reference< DataSeries > const & dataSeries : aSeq ) + { + aResult.push_back( + ::chart::DialogModel::tSeriesWithChartTypeByName( + dataSeries->getLabelForRole( aRole ), + std::make_pair( dataSeries, rxChartType ))); + } + } + catch( const uno::Exception & ) + { + DBG_UNHANDLED_EXCEPTION("chart2"); + } + } + return aResult; } @@ -526,15 +467,13 @@ void addMissingRoles(DialogModel::tRolesWithRanges& rResult, const uno::Sequence * @param xNewSeries new data series to insert. */ void addNewSeriesToContainer( - const Reference<XChartType>& xChartType, - const Reference<XDataSeries>& xSeries, - const Reference<XDataSeries>& xNewSeries ) + const rtl::Reference<ChartType>& xChartType, + const rtl::Reference<DataSeries>& xSeries, + const rtl::Reference<DataSeries>& xNewSeries ) { - Reference<XDataSeriesContainer> xSeriesCnt(xChartType, uno::UNO_QUERY_THROW); - auto aSeries = comphelper::sequenceToContainer<std::vector<Reference<XDataSeries> >>(xSeriesCnt->getDataSeries()); + auto aSeries = xChartType->getDataSeries2(); - std::vector<Reference<XDataSeries> >::iterator aIt = - std::find( aSeries.begin(), aSeries.end(), xSeries); + auto aIt = std::find( aSeries.begin(), aSeries.end(), xSeries); if( aIt == aSeries.end()) // if we have no series we insert at the first position. @@ -544,7 +483,7 @@ void addNewSeriesToContainer( ++aIt; aSeries.insert(aIt, xNewSeries); - xSeriesCnt->setDataSeries(comphelper::containerToSequence(aSeries)); + xChartType->setDataSeries(aSeries); } } @@ -552,7 +491,7 @@ void addNewSeriesToContainer( DialogModel::tRolesWithRanges DialogModel::getRolesWithRanges( const Reference< XDataSeries > & xSeries, const OUString & aRoleOfSequenceForLabel, - const Reference< chart2::XChartType > & xChartType ) + const rtl::Reference< ::chart::ChartType > & xChartType ) { DialogModel::tRolesWithRanges aResult; try @@ -584,54 +523,54 @@ DialogModel::tRolesWithRanges DialogModel::getRolesWithRanges( } void DialogModel::moveSeries( - const Reference< XDataSeries > & xSeries, + const rtl::Reference< DataSeries > & xSeries, MoveDirection eDirection ) { m_aTimerTriggeredControllerLock.startTimer(); ControllerLockGuardUNO aLockedControllers( m_xChartDocument ); - Reference< XDiagram > xDiagram( m_xChartDocument->getFirstDiagram()); - DiagramHelper::moveSeries( xDiagram, xSeries, eDirection==MoveDirection::Down ); + rtl::Reference< Diagram > xDiagram( m_xChartDocument->getFirstChartDiagram()); + xDiagram->moveSeries( xSeries, eDirection==MoveDirection::Down ); } -Reference< chart2::XDataSeries > DialogModel::insertSeriesAfter( - const Reference< XDataSeries > & xSeries, - const Reference< XChartType > & xChartType, +rtl::Reference< ::chart::DataSeries > DialogModel::insertSeriesAfter( + const Reference< XDataSeries > & xUnoSeries, + const rtl::Reference< ::chart::ChartType > & xChartType, bool bCreateDataCachedSequences /* = false */ ) { m_aTimerTriggeredControllerLock.startTimer(); ControllerLockGuardUNO aLockedControllers( m_xChartDocument ); - Reference< XDataSeries > xNewSeries; + rtl::Reference< ::chart::DataSeries > xNewSeries; + rtl::Reference<DataSeries> xSeries = dynamic_cast<DataSeries*>(xUnoSeries.get()); + assert(xSeries || !xUnoSeries); try { - Reference< chart2::XDiagram > xDiagram( m_xChartDocument->getFirstDiagram() ); - ThreeDLookScheme e3DScheme = ThreeDHelper::detectScheme( xDiagram ); + rtl::Reference< Diagram > xDiagram( m_xChartDocument->getFirstChartDiagram() ); + ThreeDLookScheme e3DScheme = xDiagram->detectScheme(); sal_Int32 nSeriesInChartType = 0; const sal_Int32 nTotalSeries = countSeries(); if( xChartType.is()) { - Reference< XDataSeriesContainer > xCnt( xChartType, uno::UNO_QUERY_THROW ); - nSeriesInChartType = xCnt->getDataSeries().getLength(); + nSeriesInChartType = xChartType->getDataSeries().getLength(); } // create new series - xNewSeries.set( + xNewSeries = lcl_CreateNewSeries( - m_xContext, xChartType, nTotalSeries, // new series' index nSeriesInChartType, xDiagram, m_xTemplate, - bCreateDataCachedSequences )); + bCreateDataCachedSequences ); // add new series to container if( xNewSeries.is()) addNewSeriesToContainer(xChartType, xSeries, xNewSeries); - ThreeDHelper::setScheme( xDiagram, e3DScheme ); + xDiagram->setScheme( e3DScheme ); } catch( const uno::Exception & ) { @@ -641,8 +580,8 @@ Reference< chart2::XDataSeries > DialogModel::insertSeriesAfter( } void DialogModel::deleteSeries( - const Reference< XDataSeries > & xSeries, - const Reference< XChartType > & xChartType ) + const rtl::Reference< DataSeries > & xSeries, + const rtl::Reference< ChartType > & xChartType ) { m_aTimerTriggeredControllerLock.startTimer(); ControllerLockGuardUNO aLockedControllers( m_xChartDocument ); @@ -650,15 +589,16 @@ void DialogModel::deleteSeries( DataSeriesHelper::deleteSeries( xSeries, xChartType ); } -Reference< data::XLabeledDataSequence > DialogModel::getCategories() const +uno::Reference< chart2::data::XLabeledDataSequence > DialogModel::getCategories() const { - Reference< data::XLabeledDataSequence > xResult; + uno::Reference< chart2::data::XLabeledDataSequence > xResult; try { if( m_xChartDocument.is()) { - Reference< chart2::XDiagram > xDiagram( m_xChartDocument->getFirstDiagram()); - xResult.set( DiagramHelper::getCategoriesFromDiagram( xDiagram )); + rtl::Reference< Diagram > xDiagram( m_xChartDocument->getFirstChartDiagram()); + if (xDiagram.is()) + xResult = xDiagram->getCategories(); } } catch( const uno::Exception & ) @@ -673,31 +613,38 @@ void DialogModel::setCategories( const Reference< chart2::data::XLabeledDataSequ if( !m_xChartDocument.is()) return; - Reference< chart2::XDiagram > xDiagram( m_xChartDocument->getFirstDiagram()); + rtl::Reference< Diagram > xDiagram( m_xChartDocument->getFirstChartDiagram()); if( !xDiagram.is()) return; // categories bool bSupportsCategories = true; - Reference< XChartType > xFirstChartType( DiagramHelper::getChartTypeByIndex( xDiagram, 0 ) ); + rtl::Reference< ChartType > xFirstChartType( xDiagram->getChartTypeByIndex( 0 ) ); if( xFirstChartType.is() ) { sal_Int32 nAxisType = ChartTypeHelper::getAxisType( xFirstChartType, 0 ); // x-axis bSupportsCategories = (nAxisType == AxisType::CATEGORY); } - DiagramHelper::setCategoriesToDiagram( xCategories, xDiagram, true, bSupportsCategories ); + xDiagram->setCategories( xCategories, true, bSupportsCategories ); } OUString DialogModel::getCategoriesRange() const { - Reference< data::XLabeledDataSequence > xLSeq( getCategories()); OUString aRange; - if( xLSeq.is()) + try { - Reference< data::XDataSequence > xSeq( xLSeq->getValues()); - if( xSeq.is()) - aRange = xSeq->getSourceRangeRepresentation(); + uno::Reference< chart2::data::XLabeledDataSequence > xLSeq( getCategories()); + if( xLSeq.is()) + { + Reference< data::XDataSequence > xSeq( xLSeq->getValues()); + if( xSeq.is()) + aRange = xSeq->getSourceRangeRepresentation(); + } + } + catch (const lang::DisposedException&) + { + TOOLS_WARN_EXCEPTION( "chart2", "unexpected exception caught" ); } return aRange; } @@ -705,8 +652,8 @@ OUString DialogModel::getCategoriesRange() const bool DialogModel::isCategoryDiagram() const { bool bRet = false; - if( m_xChartDocument.is()) - bRet = DiagramHelper::isCategoryDiagram( m_xChartDocument->getFirstDiagram() ); + if( m_xChartDocument.is() && m_xChartDocument->getFirstChartDiagram()) + bRet = m_xChartDocument->getFirstChartDiagram()->isCategory(); return bRet; } @@ -763,22 +710,22 @@ void DialogModel::setData( Reference< chart2::data::XDataSource > xDataSource( xDataProvider->createDataSource( rArguments ) ); - Reference< chart2::XDataInterpreter > xInterpreter( - m_xTemplate->getDataInterpreter()); + rtl::Reference< ::chart::DataInterpreter > xInterpreter( + m_xTemplate->getDataInterpreter2()); if( xInterpreter.is()) { - Reference< chart2::XDiagram > xDiagram( m_xChartDocument->getFirstDiagram() ); - ThreeDLookScheme e3DScheme = ThreeDHelper::detectScheme( xDiagram ); + rtl::Reference< Diagram > xDiagram( m_xChartDocument->getFirstChartDiagram() ); + ThreeDLookScheme e3DScheme = xDiagram->detectScheme(); - std::vector< Reference< XDataSeries > > aSeriesToReUse( - DiagramHelper::getDataSeriesFromDiagram( xDiagram )); + std::vector< rtl::Reference< DataSeries > > aSeriesToReUse = + xDiagram->getDataSeries(); applyInterpretedData( xInterpreter->interpretDataSource( xDataSource, rArguments, - comphelper::containerToSequence( aSeriesToReUse )), + aSeriesToReUse ), aSeriesToReUse); - ThreeDHelper::setScheme( xDiagram, e3DScheme ); + xDiagram->setScheme( e3DScheme ); } } catch( const uno::Exception & ) @@ -819,13 +766,13 @@ sal_Int32 DialogModel::GetRoleIndexForSorting( const OUString & rInternalRoleStr void DialogModel::applyInterpretedData( const InterpretedData & rNewData, - const std::vector< Reference< XDataSeries > > & rSeriesToReUse ) + const std::vector< rtl::Reference< DataSeries > > & rSeriesToReUse ) { if( ! m_xChartDocument.is()) return; m_aTimerTriggeredControllerLock.startTimer(); - Reference< XDiagram > xDiagram( m_xChartDocument->getFirstDiagram()); + rtl::Reference< Diagram > xDiagram( m_xChartDocument->getFirstChartDiagram()); if( !xDiagram.is()) return; @@ -835,43 +782,40 @@ void DialogModel::applyInterpretedData( sal_Int32 nGroup = 0; sal_Int32 nSeriesCounter = 0; sal_Int32 nNewSeriesIndex = static_cast< sal_Int32 >( rSeriesToReUse.size()); - const sal_Int32 nOuterSize=rNewData.Series.getLength(); + const sal_Int32 nOuterSize=rNewData.Series.size(); for(; nGroup < nOuterSize; ++nGroup) { - Sequence< Reference< XDataSeries > > aSeries( rNewData.Series[ nGroup ] ); - const sal_Int32 nSeriesInGroup = aSeries.getLength(); + const std::vector< rtl::Reference< DataSeries > > & aSeries( rNewData.Series[ nGroup ] ); + const sal_Int32 nSeriesInGroup = aSeries.size(); for( sal_Int32 nSeries=0; nSeries<nSeriesInGroup; ++nSeries, ++nSeriesCounter ) { if( std::find( rSeriesToReUse.begin(), rSeriesToReUse.end(), aSeries[nSeries] ) == rSeriesToReUse.end()) { - Reference< beans::XPropertySet > xSeriesProp( aSeries[nSeries], uno::UNO_QUERY ); - if( xSeriesProp.is()) + if( aSeries[nSeries].is()) { // @deprecated: correct default color should be found by view // without setting it as hard attribute Reference< XColorScheme > xColorScheme( xDiagram->getDefaultColorScheme()); if( xColorScheme.is()) - xSeriesProp->setPropertyValue( "Color" , + aSeries[nSeries]->setPropertyValue( "Color" , uno::Any( xColorScheme->getColorByIndex( nSeriesCounter ))); } - m_xTemplate->applyStyle( aSeries[nSeries], nGroup, nNewSeriesIndex++, nSeriesInGroup ); + m_xTemplate->applyStyle2( aSeries[nSeries], nGroup, nNewSeriesIndex++, nSeriesInGroup ); } } } } // data series - std::vector< Reference< XDataSeriesContainer > > aSeriesCnt( getAllDataSeriesContainers()); - auto aNewSeries( - comphelper::sequenceToContainer<std::vector< Sequence< Reference< XDataSeries > > >>( rNewData.Series )); + std::vector< rtl::Reference< ChartType > > aSeriesCnt = getAllDataSeriesContainers(); - OSL_ASSERT( aSeriesCnt.size() == aNewSeries.size()); + OSL_ASSERT( aSeriesCnt.size() == rNewData.Series.size()); - std::vector< Sequence< Reference< XDataSeries > > >::const_iterator aSrcIt( aNewSeries.begin()); - std::vector< Reference< XDataSeriesContainer > >::iterator aDestIt( aSeriesCnt.begin()); - for(; aSrcIt != aNewSeries.end() && aDestIt != aSeriesCnt.end(); + auto aSrcIt = rNewData.Series.begin(); + auto aDestIt = aSeriesCnt.begin(); + for(; aSrcIt != rNewData.Series.end() && aDestIt != aSeriesCnt.end(); ++aSrcIt, ++aDestIt ) { try @@ -890,16 +834,13 @@ void DialogModel::applyInterpretedData( sal_Int32 DialogModel::countSeries() const { - std::vector< Reference< XDataSeriesContainer > > aCnt( getAllDataSeriesContainers()); + std::vector< rtl::Reference< ChartType > > aCnt( getAllDataSeriesContainers()); return std::accumulate( aCnt.begin(), aCnt.end(), 0, lcl_addSeriesNumber()); } ChartModel& DialogModel::getModel() const { - uno::Reference< frame::XModel > xModel = getChartModel(); - ChartModel* pModel = dynamic_cast<ChartModel*>(xModel.get()); - assert(pModel); - return *pModel; + return *m_xChartDocument; } } // namespace chart diff --git a/chart2/source/controller/dialogs/DialogModel.hxx b/chart2/source/controller/dialogs/DialogModel.hxx index 2bd8d55faf00..24b74d6fab3a 100644 --- a/chart2/source/controller/dialogs/DialogModel.hxx +++ b/chart2/source/controller/dialogs/DialogModel.hxx @@ -21,6 +21,7 @@ #include <TimerTriggeredControllerLock.hxx> #include <rtl/ustring.hxx> #include <rtl/ref.hxx> +#include <ChartTypeTemplate.hxx> #include <map> #include <memory> @@ -37,8 +38,6 @@ namespace com::sun::star::chart2 { class XDataSeriesContainer; class XDataSeries; class XChartType; - class XChartTypeTemplate; - struct InterpretedData; namespace data { class XDataProvider; class XLabeledDataSequence; @@ -47,9 +46,11 @@ namespace com::sun::star::chart2 { namespace chart { - +class ChartType; +class DataSeries; +struct InterpretedData; +class LabeledDataSequence; class RangeSelectionHelper; -class ChartTypeTemplate; struct DialogModelTimeBasedInfo { @@ -63,15 +64,13 @@ struct DialogModelTimeBasedInfo class DialogModel { public: - explicit DialogModel( - const rtl::Reference<::chart::ChartModel> & xChartDocument, - const css::uno::Reference< css::uno::XComponentContext > & xContext ); + explicit DialogModel( rtl::Reference<::chart::ChartModel> xChartDocument ); ~DialogModel(); typedef std::pair< OUString, - std::pair< css::uno::Reference< css::chart2::XDataSeries >, - css::uno::Reference< css::chart2::XChartType > > > + std::pair< rtl::Reference< ::chart::DataSeries >, + rtl::Reference< ::chart::ChartType > > > tSeriesWithChartTypeByName; typedef std::map< OUString, OUString > @@ -89,7 +88,7 @@ public: css::uno::Reference< css::chart2::data::XDataProvider > getDataProvider() const; - std::vector< css::uno::Reference< css::chart2::XDataSeriesContainer > > + std::vector< rtl::Reference< ::chart::ChartType > > getAllDataSeriesContainers() const; std::vector< tSeriesWithChartTypeByName > @@ -98,26 +97,26 @@ public: static tRolesWithRanges getRolesWithRanges( const css::uno::Reference< css::chart2::XDataSeries > & xSeries, const OUString & aRoleOfSequenceForLabel, - const css::uno::Reference< css::chart2::XChartType > & xChartType ); + const rtl::Reference< ::chart::ChartType > & xChartType ); enum class MoveDirection { Down, Up }; - void moveSeries( const css::uno::Reference< css::chart2::XDataSeries > & xSeries, + void moveSeries( const rtl::Reference< DataSeries > & xSeries, MoveDirection eDirection ); /// @return the newly inserted series - css::uno::Reference< - css::chart2::XDataSeries > insertSeriesAfter( + rtl::Reference< + ::chart::DataSeries > insertSeriesAfter( const css::uno::Reference< css::chart2::XDataSeries > & xSeries, - const css::uno::Reference< css::chart2::XChartType > & xChartType, + const rtl::Reference< ::chart::ChartType > & xChartType, bool bCreateDataCachedSequences = false ); void deleteSeries( - const css::uno::Reference< css::chart2::XDataSeries > & xSeries, - const css::uno::Reference< css::chart2::XChartType > & xChartType ); + const rtl::Reference< ::chart::DataSeries > & xSeries, + const rtl::Reference< ::chart::ChartType > & xChartType ); css::uno::Reference< css::chart2::data::XLabeledDataSequence > getCategories() const; @@ -155,11 +154,7 @@ private: rtl::Reference<::chart::ChartModel> m_xChartDocument; - css::uno::Reference< css::chart2::XChartTypeTemplate > - m_xTemplate; - - css::uno::Reference< css::uno::XComponentContext > - m_xContext; + rtl::Reference< ::chart::ChartTypeTemplate > m_xTemplate; mutable std::shared_ptr< RangeSelectionHelper > m_spRangeSelectionHelper; @@ -168,8 +163,8 @@ private: private: void applyInterpretedData( - const css::chart2::InterpretedData & rNewData, - const std::vector< css::uno::Reference< css::chart2::XDataSeries > > & rSeriesToReUse ); + const InterpretedData & rNewData, + const std::vector< rtl::Reference< ::chart::DataSeries > > & rSeriesToReUse ); sal_Int32 countSeries() const; diff --git a/chart2/source/controller/dialogs/ObjectNameProvider.cxx b/chart2/source/controller/dialogs/ObjectNameProvider.cxx index 201671e87bcf..f06c7af5e777 100644 --- a/chart2/source/controller/dialogs/ObjectNameProvider.cxx +++ b/chart2/source/controller/dialogs/ObjectNameProvider.cxx @@ -24,11 +24,12 @@ #include <ObjectNameProvider.hxx> #include <ResId.hxx> #include <strings.hrc> +#include <Axis.hxx> #include <AxisHelper.hxx> #include <ChartModel.hxx> -#include <ChartModelHelper.hxx> -#include <DiagramHelper.hxx> +#include <ChartType.hxx> #include <Diagram.hxx> +#include <DataSeries.hxx> #include <DataSeriesHelper.hxx> #include <TitleHelper.hxx> #include <ExplicitCategoriesProvider.hxx> @@ -36,16 +37,16 @@ #include <NumberFormatterWrapper.hxx> #include <RegressionCurveHelper.hxx> #include <BaseCoordinateSystem.hxx> +#include <RegressionCurveModel.hxx> #include <rtl/math.hxx> #include <rtl/ustring.hxx> #include <vcl/settings.hxx> #include <vcl/svapp.hxx> #include <unotools/localedatawrapper.hxx> -#include <com/sun/star/chart2/XTitle.hpp> #include <com/sun/star/chart2/MovingAverageType.hpp> -#include <com/sun/star/chart2/XRegressionCurveContainer.hpp> -#include <tools/diagnose_ex.h> +#include <comphelper/diagnose_ex.hxx> +#include <o3tl/string_view.hxx> namespace chart { @@ -58,26 +59,26 @@ using ::com::sun::star::uno::Any; namespace { -OUString lcl_getDataSeriesName( const OUString& rObjectCID, const rtl::Reference<::chart::ChartModel>& xChartModel ) +OUString lcl_getDataSeriesName( std::u16string_view rObjectCID, const rtl::Reference<::chart::ChartModel>& xChartModel ) { OUString aRet; - rtl::Reference< Diagram > xDiagram( ChartModelHelper::findDiagram( xChartModel ) ); - Reference< XDataSeries > xSeries = ObjectIdentifier::getDataSeriesForCID( rObjectCID , xChartModel ); + rtl::Reference< Diagram > xDiagram( xChartModel->getFirstChartDiagram() ); + rtl::Reference< DataSeries > xSeries = ObjectIdentifier::getDataSeriesForCID( rObjectCID , xChartModel ); if( xDiagram.is() && xSeries.is() ) { - Reference< XChartType > xChartType( DiagramHelper::getChartTypeOfSeries( xDiagram, xSeries ) ); + rtl::Reference< ChartType > xChartType( xDiagram->getChartTypeOfSeries( xSeries ) ); if( xChartType.is() ) { - aRet = ::chart::DataSeriesHelper::getDataSeriesLabel( - xSeries, xChartType->getRoleOfSequenceForSeriesLabel() ) ; + aRet = xSeries->getLabelForRole( + xChartType->getRoleOfSequenceForSeriesLabel() ) ; } } return aRet; } -OUString lcl_getFullSeriesName( const OUString& rObjectCID, const rtl::Reference<::chart::ChartModel>& xChartModel ) +OUString lcl_getFullSeriesName( std::u16string_view rObjectCID, const rtl::Reference<::chart::ChartModel>& xChartModel ) { OUString aRet(SchResId(STR_TIP_DATASERIES)); OUString aWildcard( "%SERIESNAME" ); @@ -95,19 +96,17 @@ void lcl_addText( OUString& rOut, std::u16string_view rSeparator, std::u16string rOut+=rNext; } -OUString lcl_getDataPointValueText( const Reference< XDataSeries >& xSeries, sal_Int32 nPointIndex, - const Reference< XCoordinateSystem >& xCooSys, +OUString lcl_getDataPointValueText( const rtl::Reference< DataSeries >& xSeries, sal_Int32 nPointIndex, + const rtl::Reference< BaseCoordinateSystem >& xCooSys, const Reference< frame::XModel >& xChartModel ) { OUString aRet; - Reference<data::XDataSource> xDataSource( - uno::Reference<data::XDataSource>( xSeries, uno::UNO_QUERY ) ); - if(!xDataSource.is()) + if(!xSeries.is()) return aRet; - Sequence< Reference< data::XLabeledDataSequence > > aDataSequences( xDataSource->getDataSequences() ); + const std::vector< uno::Reference< chart2::data::XLabeledDataSequence > > & aDataSequences = xSeries->getDataSequences2(); OUString aX, aY, aY_Min, aY_Max, aY_First, aY_Last, a_Size; double fValue = 0; @@ -117,18 +116,20 @@ OUString lcl_getDataPointValueText( const Reference< XDataSeries >& xSeries, sal Color nLabelColor;//dummy bool bColorChanged;//dummy - for(sal_Int32 nN = aDataSequences.getLength();nN--;) + for(sal_Int32 nN = aDataSequences.size();nN--;) { uno::Reference<data::XDataSequence> xDataSequence( aDataSequences[nN]->getValues()); if( !xDataSequence.is() ) continue; - Sequence< Any > aData( xDataSequence->getData() ); - if( nPointIndex >= aData.getLength() ) - continue; - uno::Reference<beans::XPropertySet> xProp(xDataSequence, uno::UNO_QUERY ); - if( xProp.is()) + + try { - try + Sequence< Any > aData( xDataSequence->getData() ); + + if( nPointIndex >= aData.getLength() ) + continue; + uno::Reference<beans::XPropertySet> xProp(xDataSequence, uno::UNO_QUERY ); + if( xProp.is()) { uno::Any aARole = xProp->getPropertyValue( "Role" ); OUString aRole; @@ -177,10 +178,14 @@ OUString lcl_getDataPointValueText( const Reference< XDataSeries >& xSeries, sal a_Size = aNumberFormatterWrapper.getFormattedString( nNumberFormatKey, fValue, nLabelColor, bColorChanged ); } } - catch( const uno::Exception& ) - { - TOOLS_WARN_EXCEPTION("chart2", "" ); - } + } + catch (const lang::DisposedException&) + { + TOOLS_WARN_EXCEPTION( "chart2", "unexpected exception caught" ); + } + catch( const uno::Exception& ) + { + TOOLS_WARN_EXCEPTION("chart2", "" ); } } @@ -312,24 +317,27 @@ OUString ObjectNameProvider::getName( ObjectType eObjectType, bool bPlural ) case OBJECTTYPE_DATA_CURVE_EQUATION: aRet=SchResId(STR_OBJECT_CURVE_EQUATION); break; + case OBJECTTYPE_DATA_TABLE: + aRet=SchResId(STR_DATA_TABLE); + break; default: //OBJECTTYPE_UNKNOWN ; } return aRet; } -OUString ObjectNameProvider::getAxisName( const OUString& rObjectCID +OUString ObjectNameProvider::getAxisName( std::u16string_view rObjectCID , const rtl::Reference<::chart::ChartModel>& xChartModel ) { OUString aRet; - Reference< XAxis > xAxis( - ObjectIdentifier::getObjectPropertySet( rObjectCID , xChartModel ), uno::UNO_QUERY ); + rtl::Reference< ::chart::Axis > xAxis = + dynamic_cast<::chart::Axis*>(ObjectIdentifier::getObjectPropertySet( rObjectCID , xChartModel ).get()); sal_Int32 nCooSysIndex = 0; sal_Int32 nDimensionIndex = 0; sal_Int32 nAxisIndex = 0; - AxisHelper::getIndicesForAxis( xAxis, ChartModelHelper::findDiagram( xChartModel ), nCooSysIndex, nDimensionIndex, nAxisIndex ); + AxisHelper::getIndicesForAxis( xAxis, xChartModel->getFirstChartDiagram(), nCooSysIndex, nDimensionIndex, nAxisIndex ); switch(nDimensionIndex) { @@ -394,14 +402,14 @@ OUString ObjectNameProvider::getTitleNameByType( TitleHelper::eTitleType eType ) return aRet; } -OUString ObjectNameProvider::getTitleName( const OUString& rObjectCID +OUString ObjectNameProvider::getTitleName( std::u16string_view rObjectCID , const rtl::Reference<::chart::ChartModel>& xChartModel ) { OUString aRet; - Reference< XTitle > xTitle( - ObjectIdentifier::getObjectPropertySet( rObjectCID , xChartModel ), uno::UNO_QUERY ); - if( xTitle.is() ) + rtl::Reference<Title> xTitle = + dynamic_cast<Title*>(ObjectIdentifier::getObjectPropertySet( rObjectCID , xChartModel ).get()); + if( xTitle ) { TitleHelper::eTitleType eType; if( TitleHelper::getTitleType( eType, xTitle, xChartModel ) ) @@ -413,7 +421,7 @@ OUString ObjectNameProvider::getTitleName( const OUString& rObjectCID return aRet; } -OUString ObjectNameProvider::getGridName( const OUString& rObjectCID +OUString ObjectNameProvider::getGridName( std::u16string_view rObjectCID , const rtl::Reference<::chart::ChartModel>& xChartModel ) { OUString aRet; @@ -421,8 +429,8 @@ OUString ObjectNameProvider::getGridName( const OUString& rObjectCID sal_Int32 nCooSysIndex = -1; sal_Int32 nDimensionIndex = -1; sal_Int32 nAxisIndex = -1; - Reference< XAxis > xAxis( ObjectIdentifier::getAxisForCID( rObjectCID , xChartModel ) ); - AxisHelper::getIndicesForAxis( xAxis, ChartModelHelper::findDiagram( xChartModel ) + rtl::Reference< Axis > xAxis = ObjectIdentifier::getAxisForCID( rObjectCID , xChartModel ); + AxisHelper::getIndicesForAxis( xAxis, xChartModel->getFirstChartDiagram() , nCooSysIndex , nDimensionIndex, nAxisIndex ); bool bMainGrid = (ObjectIdentifier::getObjectType( rObjectCID ) == OBJECTTYPE_GRID); @@ -466,7 +474,7 @@ OUString ObjectNameProvider::getGridName( const OUString& rObjectCID return aRet; } -OUString ObjectNameProvider::getHelpText( const OUString& rObjectCID, const rtl::Reference<::chart::ChartModel>& xChartModel, bool bVerbose ) +OUString ObjectNameProvider::getHelpText( std::u16string_view rObjectCID, const rtl::Reference<::chart::ChartModel>& xChartModel, bool bVerbose ) { OUString aRet; ObjectType eObjectType( ObjectIdentifier::getObjectType(rObjectCID) ); @@ -498,11 +506,11 @@ OUString ObjectNameProvider::getHelpText( const OUString& rObjectCID, const rtl: else aRet=SchResId(STR_TIP_DATAPOINT); - rtl::Reference< Diagram > xDiagram( ChartModelHelper::findDiagram( xChartModel ) ); - Reference< XDataSeries > xSeries = ObjectIdentifier::getDataSeriesForCID( rObjectCID , xChartModel ); + rtl::Reference< Diagram > xDiagram( xChartModel->getFirstChartDiagram() ); + rtl::Reference< DataSeries > xSeries = ObjectIdentifier::getDataSeriesForCID( rObjectCID , xChartModel ); if( xDiagram.is() && xSeries.is() ) { - sal_Int32 nPointIndex( ObjectIdentifier::getParticleID(rObjectCID).toInt32() ); + sal_Int32 nPointIndex = o3tl::toInt32(ObjectIdentifier::getParticleID(rObjectCID)); //replace data point index OUString aWildcard( "%POINTNUMBER" ); @@ -517,8 +525,8 @@ OUString ObjectNameProvider::getHelpText( const OUString& rObjectCID, const rtl: nIndex = aRet.indexOf( aWildcard ); if( nIndex != -1 ) { - std::vector< Reference< chart2::XDataSeries > > aSeriesVector( - DiagramHelper::getDataSeriesFromDiagram( xDiagram ) ); + std::vector< rtl::Reference< DataSeries > > aSeriesVector = + xDiagram->getDataSeries(); sal_Int32 nSeriesIndex = -1; for( nSeriesIndex=aSeriesVector.size();nSeriesIndex--;) { @@ -551,13 +559,12 @@ OUString ObjectNameProvider::getHelpText( const OUString& rObjectCID, const rtl: if( bVerbose ) { aRet = SchResId( STR_OBJECT_CURVE_WITH_PARAMETERS ); - Reference< chart2::XDataSeries > xSeries( ObjectIdentifier::getDataSeriesForCID( rObjectCID , xChartModel )); - Reference< chart2::XRegressionCurveContainer > xCurveCnt( xSeries, uno::UNO_QUERY ); + rtl::Reference< DataSeries > xSeries( ObjectIdentifier::getDataSeriesForCID( rObjectCID , xChartModel )); - if( xCurveCnt.is()) + if( xSeries.is()) { sal_Int32 nCurveIndex = ObjectIdentifier::getIndexFromParticleOrCID( rObjectCID ); - Reference< chart2::XRegressionCurve > xCurve( RegressionCurveHelper::getRegressionCurveAtIndex(xCurveCnt, nCurveIndex) ); + rtl::Reference< RegressionCurveModel > xCurve = RegressionCurveHelper::getRegressionCurveAtIndex(xSeries, nCurveIndex); if( xCurve.is()) { try @@ -573,60 +580,55 @@ OUString ObjectNameProvider::getHelpText( const OUString& rObjectCID, const rtl: const OUString& aNumDecimalSep = rLocaleDataWrapper.getNumDecimalSep(); sal_Unicode cDecSeparator = aNumDecimalSep[0]; - uno::Reference< beans::XPropertySet > xProperties( xCurve, uno::UNO_QUERY ); - if ( xProperties.is()) + xCurve->getPropertyValue( "PolynomialDegree") >>= aDegree; + xCurve->getPropertyValue( "MovingAveragePeriod") >>= aPeriod; + xCurve->getPropertyValue( "MovingAverageType") >>= aMovingType; + xCurve->getPropertyValue( "ForceIntercept") >>= bForceIntercept; + if (bForceIntercept) + xCurve->getPropertyValue( "InterceptValue") >>= aInterceptValue; + uno::Reference< beans::XPropertySet > xEqProp( xCurve->getEquationProperties()); + if( xEqProp.is()) { - xProperties->getPropertyValue( "PolynomialDegree") >>= aDegree; - xProperties->getPropertyValue( "MovingAveragePeriod") >>= aPeriod; - xProperties->getPropertyValue( "MovingAverageType") >>= aMovingType; - xProperties->getPropertyValue( "ForceIntercept") >>= bForceIntercept; - if (bForceIntercept) - xProperties->getPropertyValue( "InterceptValue") >>= aInterceptValue; - uno::Reference< beans::XPropertySet > xEqProp( xCurve->getEquationProperties()); - if( xEqProp.is()) - { - if ( !(xEqProp->getPropertyValue( "XName") >>= aXName) ) - aXName = "x"; - if ( !(xEqProp->getPropertyValue( "YName") >>= aYName) ) - aYName = "f(x)"; - } + if ( !(xEqProp->getPropertyValue( "XName") >>= aXName) ) + aXName = "x"; + if ( !(xEqProp->getPropertyValue( "YName") >>= aYName) ) + aYName = "f(x)"; } - xCalculator->setRegressionProperties(aDegree, bForceIntercept, aInterceptValue, 2, aMovingType); + xCalculator->setRegressionProperties(aDegree, bForceIntercept, aInterceptValue, aPeriod, aMovingType); xCalculator->setXYNames ( aXName, aYName ); RegressionCurveHelper::initializeCurveCalculator( xCalculator, xSeries, xChartModel ); // change text for Moving Average - OUString aWildcard( "%PERIOD" ); - sal_Int32 nIndex = xCalculator->getRepresentation().indexOf( aWildcard ); - if( nIndex != -1 ) - { // replace period - aRet = xCalculator->getRepresentation(); - aRet = aRet.replaceAt( nIndex, aWildcard.getLength(), OUString::number(aPeriod) ); + if ( RegressionCurveHelper::getRegressionType( xCurve ) == SvxChartRegress::MovingAverage ) + { + aRet = xCalculator->getRepresentation(); } - - // replace formula - aWildcard = "%FORMULA"; - nIndex = aRet.indexOf( aWildcard ); - if( nIndex != -1 ) + else { - OUString aFormula ( xCalculator->getRepresentation() ); - if ( cDecSeparator != '.' ) + // replace formula + OUString aWildcard = "%FORMULA"; + sal_Int32 nIndex = aRet.indexOf( aWildcard ); + if( nIndex != -1 ) { - aFormula = aFormula.replace( '.', cDecSeparator ); + OUString aFormula ( xCalculator->getRepresentation() ); + if ( cDecSeparator != '.' ) + { + aFormula = aFormula.replace( '.', cDecSeparator ); + } + aRet = aRet.replaceAt( nIndex, aWildcard.getLength(), aFormula ); } - aRet = aRet.replaceAt( nIndex, aWildcard.getLength(), aFormula ); - } - // replace r^2 - aWildcard = "%RSQUARED"; - nIndex = aRet.indexOf( aWildcard ); - if( nIndex != -1 ) - { - double fR( xCalculator->getCorrelationCoefficient()); - aRet = aRet.replaceAt( - nIndex, aWildcard.getLength(), - ::rtl::math::doubleToUString( - fR*fR, rtl_math_StringFormat_G, 4, cDecSeparator, true )); + // replace r^2 + aWildcard = "%RSQUARED"; + nIndex = aRet.indexOf( aWildcard ); + if( nIndex != -1 ) + { + double fR( xCalculator->getCorrelationCoefficient()); + aRet = aRet.replaceAt( + nIndex, aWildcard.getLength(), + ::rtl::math::doubleToUString( + fR*fR, rtl_math_StringFormat_G, 4, cDecSeparator, true )); + } } } catch( const uno::Exception & ) @@ -638,14 +640,13 @@ OUString ObjectNameProvider::getHelpText( const OUString& rObjectCID, const rtl: } else { - Reference< chart2::XDataSeries > xSeries( ObjectIdentifier::getDataSeriesForCID(rObjectCID , xChartModel)); - Reference< chart2::XRegressionCurveContainer > xCurveCnt( xSeries, uno::UNO_QUERY ); + rtl::Reference< DataSeries > xSeries( ObjectIdentifier::getDataSeriesForCID(rObjectCID , xChartModel)); aRet += getName(eObjectType); - if( xCurveCnt.is()) + if( xSeries.is()) { sal_Int32 nCurveIndex = ObjectIdentifier::getIndexFromParticleOrCID( rObjectCID ); - Reference< chart2::XRegressionCurve > xCurve( RegressionCurveHelper::getRegressionCurveAtIndex(xCurveCnt, nCurveIndex) ); + rtl::Reference< RegressionCurveModel > xCurve( RegressionCurveHelper::getRegressionCurveAtIndex(xSeries, nCurveIndex) ); if( xCurve.is()) { aRet += " (" + RegressionCurveHelper::getRegressionCurveName(xCurve) + " )"; @@ -658,11 +659,10 @@ OUString ObjectNameProvider::getHelpText( const OUString& rObjectCID, const rtl: if( bVerbose ) { aRet = SchResId(STR_OBJECT_AVERAGE_LINE_WITH_PARAMETERS); - Reference< chart2::XDataSeries > xSeries( ObjectIdentifier::getDataSeriesForCID( rObjectCID , xChartModel )); - Reference< chart2::XRegressionCurveContainer > xCurveCnt( xSeries, uno::UNO_QUERY ); - if( xCurveCnt.is()) + rtl::Reference< DataSeries > xSeries( ObjectIdentifier::getDataSeriesForCID( rObjectCID , xChartModel )); + if( xSeries.is()) { - Reference< chart2::XRegressionCurve > xCurve( RegressionCurveHelper::getMeanValueLine( xCurveCnt )); + rtl::Reference< RegressionCurveModel > xCurve( RegressionCurveHelper::getMeanValueLine( xSeries )); if( xCurve.is()) { try @@ -718,7 +718,7 @@ OUString ObjectNameProvider::getHelpText( const OUString& rObjectCID, const rtl: return aRet; } -OUString ObjectNameProvider::getSelectedObjectText( const OUString & rObjectCID, const rtl::Reference<::chart::ChartModel>& xChartDocument ) +OUString ObjectNameProvider::getSelectedObjectText( std::u16string_view rObjectCID, const rtl::Reference<::chart::ChartModel>& xChartDocument ) { OUString aRet; ObjectType eObjectType( ObjectIdentifier::getObjectType(rObjectCID) ); @@ -727,30 +727,30 @@ OUString ObjectNameProvider::getSelectedObjectText( const OUString & rObjectCID, { aRet = SchResId( STR_STATUS_DATAPOINT_MARKED ); - rtl::Reference< Diagram > xDiagram( ChartModelHelper::findDiagram( xChartDocument ) ); - Reference< XDataSeries > xSeries = ObjectIdentifier::getDataSeriesForCID( rObjectCID , xChartDocument ); + rtl::Reference< Diagram > xDiagram( xChartDocument->getFirstChartDiagram() ); + rtl::Reference< DataSeries > xSeries = ObjectIdentifier::getDataSeriesForCID( rObjectCID , xChartDocument ); if( xDiagram.is() && xSeries.is() ) { - sal_Int32 nPointIndex( ObjectIdentifier::getParticleID(rObjectCID).toInt32() ); + sal_Int32 nPointIndex = o3tl::toInt32( ObjectIdentifier::getParticleID(rObjectCID) ); // replace data point index - replaceParamterInString( aRet, "%POINTNUMBER", OUString::number( nPointIndex + 1 )); + replaceParamterInString( aRet, u"%POINTNUMBER", OUString::number( nPointIndex + 1 )); // replace data series index { - std::vector< Reference< chart2::XDataSeries > > aSeriesVector( - DiagramHelper::getDataSeriesFromDiagram( xDiagram ) ); + std::vector< rtl::Reference< DataSeries > > aSeriesVector( + xDiagram->getDataSeries() ); sal_Int32 nSeriesIndex = -1; for( nSeriesIndex=aSeriesVector.size();nSeriesIndex--;) { if( aSeriesVector[nSeriesIndex] == xSeries ) break; } - replaceParamterInString( aRet, "%SERIESNUMBER", OUString::number( nSeriesIndex + 1 ) ); + replaceParamterInString( aRet, u"%SERIESNUMBER", OUString::number( nSeriesIndex + 1 ) ); } // replace point value - replaceParamterInString( aRet, "%POINTVALUES", lcl_getDataPointValueText( + replaceParamterInString( aRet, u"%POINTVALUES", lcl_getDataPointValueText( xSeries, nPointIndex, DataSeriesHelper::getCoordinateSystemOfSeries(xSeries, xDiagram), xChartDocument ) ); } } @@ -762,7 +762,7 @@ OUString ObjectNameProvider::getSelectedObjectText( const OUString & rObjectCID, if( !aHelpText.isEmpty()) { aRet = SchResId( STR_STATUS_OBJECT_MARKED ); - replaceParamterInString( aRet, "%OBJECTNAME", aHelpText ); + replaceParamterInString( aRet, u"%OBJECTNAME", aHelpText ); } } @@ -770,7 +770,7 @@ OUString ObjectNameProvider::getSelectedObjectText( const OUString & rObjectCID, } OUString ObjectNameProvider::getNameForCID( - const OUString& rObjectCID, + std::u16string_view rObjectCID, const rtl::Reference<::chart::ChartModel>& xChartDocument ) { ObjectType eType( ObjectIdentifier::getObjectType( rObjectCID )); @@ -809,15 +809,14 @@ OUString ObjectNameProvider::getNameForCID( } else if (eType == OBJECTTYPE_DATA_CURVE || eType == OBJECTTYPE_DATA_CURVE_EQUATION) { - Reference< chart2::XDataSeries > xSeries( ObjectIdentifier::getDataSeriesForCID( rObjectCID , xChartDocument )); - Reference< chart2::XRegressionCurveContainer > xCurveCnt( xSeries, uno::UNO_QUERY ); + rtl::Reference< DataSeries > xSeries( ObjectIdentifier::getDataSeriesForCID( rObjectCID , xChartDocument )); aRet += " " + getName(eType); - if( xCurveCnt.is()) + if( xSeries.is()) { sal_Int32 nCurveIndex = ObjectIdentifier::getIndexFromParticleOrCID( rObjectCID ); - Reference< chart2::XRegressionCurve > xCurve( RegressionCurveHelper::getRegressionCurveAtIndex(xCurveCnt, nCurveIndex) ); + rtl::Reference< RegressionCurveModel > xCurve( RegressionCurveHelper::getRegressionCurveAtIndex(xSeries, nCurveIndex) ); if( xCurve.is()) { aRet += " (" + RegressionCurveHelper::getRegressionCurveName(xCurve) + ")"; @@ -839,15 +838,15 @@ OUString ObjectNameProvider::getNameForCID( OUString ObjectNameProvider::getName_ObjectForSeries( ObjectType eObjectType, - const OUString& rSeriesCID, + std::u16string_view rSeriesCID, const rtl::Reference<::chart::ChartModel>& xChartDocument ) { - Reference< XDataSeries > xSeries = ObjectIdentifier::getDataSeriesForCID( rSeriesCID , xChartDocument ); + rtl::Reference< DataSeries > xSeries = ObjectIdentifier::getDataSeriesForCID( rSeriesCID , xChartDocument ); if( xSeries.is() ) { OUString aRet = SchResId(STR_OBJECT_FOR_SERIES); - replaceParamterInString( aRet, "%OBJECTNAME", getName( eObjectType ) ); - replaceParamterInString( aRet, "%SERIESNAME", lcl_getDataSeriesName( rSeriesCID, xChartDocument ) ); + replaceParamterInString( aRet, u"%OBJECTNAME", getName( eObjectType ) ); + replaceParamterInString( aRet, u"%SERIESNAME", lcl_getDataSeriesName( rSeriesCID, xChartDocument ) ); return aRet; } else @@ -857,7 +856,7 @@ OUString ObjectNameProvider::getName_ObjectForSeries( OUString ObjectNameProvider::getName_ObjectForAllSeries( ObjectType eObjectType ) { OUString aRet = SchResId(STR_OBJECT_FOR_ALL_SERIES); - replaceParamterInString( aRet, "%OBJECTNAME", getName( eObjectType, true /*bPlural*/ ) ); + replaceParamterInString( aRet, u"%OBJECTNAME", getName( eObjectType, true /*bPlural*/ ) ); return aRet; } diff --git a/chart2/source/controller/dialogs/RangeSelectionHelper.cxx b/chart2/source/controller/dialogs/RangeSelectionHelper.cxx index 5cbc07f76078..00e9a3cc8a8c 100644 --- a/chart2/source/controller/dialogs/RangeSelectionHelper.cxx +++ b/chart2/source/controller/dialogs/RangeSelectionHelper.cxx @@ -20,10 +20,10 @@ #include <RangeSelectionHelper.hxx> #include <RangeSelectionListener.hxx> #include <com/sun/star/awt/XTopWindow.hpp> -#include <com/sun/star/chart2/XChartDocument.hpp> #include <com/sun/star/chart2/data/XDataProvider.hpp> -#include <tools/diagnose_ex.h> +#include <comphelper/diagnose_ex.hxx> #include <ChartModel.hxx> +#include <utility> using namespace ::com::sun::star; @@ -34,8 +34,8 @@ namespace chart { RangeSelectionHelper::RangeSelectionHelper( - const rtl::Reference<::chart::ChartModel> & xChartDocument ) : - m_xChartDocument( xChartDocument ) + rtl::Reference<::chart::ChartModel> xChartDocument ) : + m_xChartDocument(std::move( xChartDocument )) {} RangeSelectionHelper::~RangeSelectionHelper() diff --git a/chart2/source/controller/dialogs/RangeSelectionListener.cxx b/chart2/source/controller/dialogs/RangeSelectionListener.cxx index 473ad909f8f5..e4974ab30de0 100644 --- a/chart2/source/controller/dialogs/RangeSelectionListener.cxx +++ b/chart2/source/controller/dialogs/RangeSelectionListener.cxx @@ -19,20 +19,19 @@ #include <RangeSelectionListener.hxx> #include <ChartModel.hxx> +#include <utility> using namespace ::com::sun::star; -using ::com::sun::star::uno::Reference; - namespace chart { RangeSelectionListener::RangeSelectionListener( RangeSelectionListenerParent & rParent, - const OUString & rInitialRange, + OUString aInitialRange, const rtl::Reference<::chart::ChartModel>& xModelToLockController ) : m_rParent( rParent ), - m_aRange( rInitialRange ), + m_aRange(std::move( aInitialRange )), m_aControllerLockGuard( xModelToLockController ) {} diff --git a/chart2/source/controller/dialogs/TimerTriggeredControllerLock.cxx b/chart2/source/controller/dialogs/TimerTriggeredControllerLock.cxx index 33fe0ff6955f..cee4af1fb013 100644 --- a/chart2/source/controller/dialogs/TimerTriggeredControllerLock.cxx +++ b/chart2/source/controller/dialogs/TimerTriggeredControllerLock.cxx @@ -17,18 +17,18 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ -#include <com/sun/star/frame/XModel.hpp> #include <TimerTriggeredControllerLock.hxx> #include <ControllerLockGuard.hxx> #include <ChartModel.hxx> +#include <utility> namespace chart { using namespace ::com::sun::star; TimerTriggeredControllerLock::TimerTriggeredControllerLock( - const rtl::Reference<::chart::ChartModel>& xModel) - : m_xModel(xModel) + rtl::Reference<::chart::ChartModel> xModel) + : m_xModel(std::move(xModel)) , m_aTimer("chart2 TimerTriggeredControllerLock") { m_aTimer.SetTimeout(4 * EDIT_UPDATEDATA_TIMEOUT); diff --git a/chart2/source/controller/dialogs/TitleDialogData.cxx b/chart2/source/controller/dialogs/TitleDialogData.cxx index 7f48d90a0b24..75d59bbb43b4 100644 --- a/chart2/source/controller/dialogs/TitleDialogData.cxx +++ b/chart2/source/controller/dialogs/TitleDialogData.cxx @@ -19,11 +19,8 @@ #include <sal/config.h> -#include <com/sun/star/frame/XModel.hpp> - #include <TitleDialogData.hxx> #include <TitleHelper.hxx> -#include <ChartModelHelper.hxx> #include <Diagram.hxx> #include <AxisHelper.hxx> #include <ChartModel.hxx> @@ -31,9 +28,8 @@ namespace chart { using namespace ::com::sun::star; -using namespace ::com::sun::star::chart2; -TitleDialogData::TitleDialogData( std::unique_ptr<ReferenceSizeProvider> pRefSizeProvider ) +TitleDialogData::TitleDialogData( std::optional<ReferenceSizeProvider> pRefSizeProvider ) : aPossibilityList{ true, true, true, true, true, true, true } , aExistenceList{ false, false, false, false, false, false, false } , aTextList(7) @@ -43,7 +39,7 @@ TitleDialogData::TitleDialogData( std::unique_ptr<ReferenceSizeProvider> pRefSiz void TitleDialogData::readFromModel( const rtl::Reference<::chart::ChartModel>& xChartModel ) { - rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram(xChartModel); + rtl::Reference< Diagram > xDiagram = xChartModel->getFirstChartDiagram(); //get possibilities uno::Sequence< sal_Bool > aAxisPossibilityList; @@ -59,11 +55,11 @@ void TitleDialogData::readFromModel( const rtl::Reference<::chart::ChartModel>& auto pTextList = aTextList.getArray(); //find out which title exists and get their text //main title: - for( sal_Int32 nTitleIndex = static_cast< sal_Int32 >( TitleHelper::TITLE_BEGIN); - nTitleIndex < static_cast< sal_Int32 >( TitleHelper::NORMAL_TITLE_END ); + for( auto nTitleIndex = +TitleHelper::TITLE_BEGIN; + nTitleIndex < +TitleHelper::NORMAL_TITLE_END; nTitleIndex++) { - uno::Reference< XTitle > xTitle = TitleHelper::getTitle( + rtl::Reference< Title > xTitle = TitleHelper::getTitle( static_cast< TitleHelper::eTitleType >( nTitleIndex ), xChartModel ); pExistenceList[nTitleIndex] = xTitle.is(); pTextList[nTitleIndex]=TitleHelper::getCompleteString( xTitle ); @@ -73,11 +69,11 @@ void TitleDialogData::readFromModel( const rtl::Reference<::chart::ChartModel>& bool TitleDialogData::writeDifferenceToModel( const rtl::Reference<::chart::ChartModel>& xChartModel , const uno::Reference< uno::XComponentContext >& xContext - , TitleDialogData* pOldState ) + , const TitleDialogData* pOldState ) { bool bChanged = false; - for( sal_Int32 nN = static_cast< sal_Int32 >( TitleHelper::TITLE_BEGIN ); - nN < static_cast< sal_Int32 >( TitleHelper::NORMAL_TITLE_END ); + for( auto nN = +TitleHelper::TITLE_BEGIN; + nN < +TitleHelper::NORMAL_TITLE_END; nN++) { if( !pOldState || ( pOldState->aExistenceList[nN] != aExistenceList[nN] ) ) @@ -86,7 +82,7 @@ bool TitleDialogData::writeDifferenceToModel( { TitleHelper::createTitle( static_cast< TitleHelper::eTitleType >( nN ), aTextList[nN], xChartModel, xContext, - apReferenceSizeProvider.get() ); + apReferenceSizeProvider.has_value() ? &*apReferenceSizeProvider : nullptr ); bChanged = true; } else @@ -98,11 +94,11 @@ bool TitleDialogData::writeDifferenceToModel( else if( !pOldState || ( pOldState->aTextList[nN] != aTextList[nN] ) ) { //change content - uno::Reference< XTitle > xTitle( + rtl::Reference< Title > xTitle( TitleHelper::getTitle( static_cast< TitleHelper::eTitleType >( nN ), xChartModel ) ); if(xTitle.is()) { - TitleHelper::setCompleteString( aTextList[nN], xTitle, xContext ); + TitleHelper::setCompleteString( aTextList[nN], xTitle, xContext, nullptr, true ); bChanged = true; } } diff --git a/chart2/source/controller/dialogs/dlg_ChartType.cxx b/chart2/source/controller/dialogs/dlg_ChartType.cxx index 59ca6be0c99a..a1f52f5169a5 100644 --- a/chart2/source/controller/dialogs/dlg_ChartType.cxx +++ b/chart2/source/controller/dialogs/dlg_ChartType.cxx @@ -19,19 +19,18 @@ #include <dlg_ChartType.hxx> #include "tp_ChartType.hxx" -#include <com/sun/star/chart2/XChartDocument.hpp> #include <ChartModel.hxx> +#include <utility> namespace chart { using namespace ::com::sun::star; -using namespace ::com::sun::star::chart2; ChartTypeDialog::ChartTypeDialog(weld::Window* pParent, - const rtl::Reference<::chart::ChartModel>& xChartModel) + rtl::Reference<::chart::ChartModel> xChartModel) : GenericDialogController(pParent, "modules/schart/ui/charttypedialog.ui", "ChartTypeDialog") - , m_xChartModel(xChartModel) - , m_xContentArea(m_xDialog->weld_content_area()) + , m_xChartModel(std::move(xChartModel)) + , m_xContentArea(m_xBuilder->weld_container("content")) { m_xChartTypeTabPage = std::make_unique<ChartTypeTabPage>( m_xContentArea.get(), this, m_xChartModel, false /*don't show title description*/); diff --git a/chart2/source/controller/dialogs/dlg_ChartType_UNO.cxx b/chart2/source/controller/dialogs/dlg_ChartType_UNO.cxx index 873edbc48ada..0e95cd75c48e 100644 --- a/chart2/source/controller/dialogs/dlg_ChartType_UNO.cxx +++ b/chart2/source/controller/dialogs/dlg_ChartType_UNO.cxx @@ -23,7 +23,6 @@ #include <servicenames.hxx> #include <osl/mutex.hxx> #include <vcl/svapp.hxx> -#include <com/sun/star/frame/XModel.hpp> namespace com::sun::star::awt { class XWindow; } diff --git a/chart2/source/controller/dialogs/dlg_CreationWizard.cxx b/chart2/source/controller/dialogs/dlg_CreationWizard.cxx index e186633c869f..12d22805790f 100644 --- a/chart2/source/controller/dialogs/dlg_CreationWizard.cxx +++ b/chart2/source/controller/dialogs/dlg_CreationWizard.cxx @@ -29,6 +29,7 @@ #include "tp_DataSource.hxx" #include <ChartTypeTemplateProvider.hxx> #include <ChartTypeTemplate.hxx> +#include <utility> #include "DialogModel.hxx" using namespace css; @@ -46,15 +47,15 @@ namespace chart #define STATE_LAST STATE_OBJECTS CreationWizard::CreationWizard(weld::Window* pParent, const rtl::Reference<::chart::ChartModel>& xChartModel, - const uno::Reference<uno::XComponentContext>& xContext) + uno::Reference<uno::XComponentContext> xContext) : vcl::RoadmapWizardMachine(pParent) , m_xChartModel(xChartModel,uno::UNO_QUERY) - , m_xComponentContext(xContext) + , m_xComponentContext(std::move(xContext)) , m_pTemplateProvider(nullptr) , m_aTimerTriggeredControllerLock(xChartModel) , m_bCanTravel(true) { - m_pDialogModel.reset(new DialogModel(m_xChartModel, m_xComponentContext)); + m_pDialogModel.reset(new DialogModel(m_xChartModel)); defaultButton(WizardButtonFlags::FINISH); setTitleBase(SchResId(STR_DLG_CHART_WIZARD)); @@ -94,7 +95,7 @@ std::unique_ptr<BuilderPage> CreationWizard::createPage(WizardState nState) { std::unique_ptr<vcl::OWizardPage> xRet; - OString sIdent(OString::number(nState)); + OUString sIdent(OUString::number(nState)); weld::Container* pPageContainer = m_xAssistant->append_page(sIdent); switch( nState ) diff --git a/chart2/source/controller/dialogs/dlg_CreationWizard_UNO.cxx b/chart2/source/controller/dialogs/dlg_CreationWizard_UNO.cxx index 973b8fa74027..3a1fa1386f7a 100644 --- a/chart2/source/controller/dialogs/dlg_CreationWizard_UNO.cxx +++ b/chart2/source/controller/dialogs/dlg_CreationWizard_UNO.cxx @@ -22,22 +22,25 @@ #include <ChartModel.hxx> #include <servicenames.hxx> #include <TimerTriggeredControllerLock.hxx> +#include <utility> #include <vcl/svapp.hxx> +#include <vcl/weldutils.hxx> #include <cppuhelper/supportsservice.hxx> #include <com/sun/star/awt/Point.hpp> #include <com/sun/star/awt/Size.hpp> #include <com/sun/star/beans/PropertyValue.hpp> #include <com/sun/star/frame/Desktop.hpp> -#include <tools/diagnose_ex.h> +#include <comphelper/diagnose_ex.hxx> #include <sfx2/viewsh.hxx> + namespace chart { using namespace ::com::sun::star; -CreationWizardUnoDlg::CreationWizardUnoDlg(const uno::Reference<uno::XComponentContext>& xContext) +CreationWizardUnoDlg::CreationWizardUnoDlg(uno::Reference<uno::XComponentContext> xContext) : OComponentHelper(m_aMutex) - , m_xCC(xContext) + , m_xCC(std::move(xContext)) , m_bUnlockControllersOnExecute(false) { uno::Reference< frame::XDesktop2 > xDesktop = frame::Desktop::create(m_xCC); @@ -166,10 +169,18 @@ void CreationWizardUnoDlg::createDialogOnDemand() m_xParentWindow = xFrame->getContainerWindow(); } } + + weld::Window* pParent(Application::GetFrameWeld(m_xParentWindow)); + if (!pParent) + { + if (weld::TransportAsXWindow* pTunnel = dynamic_cast<weld::TransportAsXWindow*>(m_xParentWindow.get())) + pParent = dynamic_cast<weld::Window*>(pTunnel->getWidget()); + } + uno::Reference< XComponent > xKeepAlive( this ); if( m_xChartModel.is() ) { - m_xDialog = std::make_shared<CreationWizard>(Application::GetFrameWeld(m_xParentWindow), m_xChartModel, m_xCC); + m_xDialog = std::make_shared<CreationWizard>(pParent, m_xChartModel, m_xCC); } } diff --git a/chart2/source/controller/dialogs/dlg_DataEditor.cxx b/chart2/source/controller/dialogs/dlg_DataEditor.cxx index 1e442a102f09..ee120df76fe7 100644 --- a/chart2/source/controller/dialogs/dlg_DataEditor.cxx +++ b/chart2/source/controller/dialogs/dlg_DataEditor.cxx @@ -20,11 +20,9 @@ #include <dlg_DataEditor.hxx> #include "DataBrowser.hxx" #include <ChartModel.hxx> -#include <comphelper/stl_types.hxx> #include <com/sun/star/awt/XWindow.hpp> -#include <com/sun/star/chart2/XChartDocument.hpp> -#include <com/sun/star/frame/XStorable.hpp> +#include <utility> using namespace ::com::sun::star; using ::com::sun::star::uno::Reference; @@ -33,11 +31,11 @@ namespace chart { DataEditor::DataEditor(weld::Window* pParent, - const rtl::Reference<::chart::ChartModel> & xChartDoc, + rtl::Reference<::chart::ChartModel> xChartDoc, const Reference< uno::XComponentContext > & xContext) : GenericDialogController(pParent, "modules/schart/ui/chartdatadialog.ui", "ChartDataDialog") , m_bReadOnly(false) - , m_xChartDoc(xChartDoc) + , m_xChartDoc(std::move(xChartDoc)) , m_xContext(xContext) , m_xTbxData(m_xBuilder->weld_toolbar("toolbar")) , m_xCloseBtn(m_xBuilder->weld_button("close")) @@ -58,7 +56,7 @@ DataEditor::DataEditor(weld::Window* pParent, m_xBrwData->SetCursorMovedHdl( LINK( this, DataEditor, BrowserCursorMovedHdl )); - m_xBrwData->SetDataFromModel( m_xChartDoc, m_xContext ); + m_xBrwData->SetDataFromModel( m_xChartDoc ); m_xBrwData->GrabFocus(); bool bReadOnly = true; @@ -75,7 +73,7 @@ DataEditor::~DataEditor() } // react on click (or keypress) on toolbar icon -IMPL_LINK(DataEditor, ToolboxHdl, const OString&, rId, void) +IMPL_LINK(DataEditor, ToolboxHdl, const OUString&, rId, void) { if (rId == "InsertRow") m_xBrwData->InsertRow(); @@ -113,8 +111,8 @@ IMPL_LINK_NOARG(DataEditor, BrowserCursorMovedHdl, DataBrowser*, void) m_xTbxData->set_item_sensitive("MoveLeftColumn", bIsDataValid && m_xBrwData->MayMoveLeftColumns() ); m_xTbxData->set_item_sensitive("MoveRightColumn", bIsDataValid && m_xBrwData->MayMoveRightColumns() ); - m_xTbxData->set_item_sensitive("MoveUpRow", bIsDataValid && m_xBrwData->MayMoveDownRows() ); - m_xTbxData->set_item_sensitive("MoveDownRow", bIsDataValid && m_xBrwData->MayMoveUpRows() ); + m_xTbxData->set_item_sensitive("MoveDownRow", bIsDataValid && m_xBrwData->MayMoveDownRows() ); + m_xTbxData->set_item_sensitive("MoveUpRow", bIsDataValid && m_xBrwData->MayMoveUpRows() ); } // disable all modifying controls diff --git a/chart2/source/controller/dialogs/dlg_DataSource.cxx b/chart2/source/controller/dialogs/dlg_DataSource.cxx index 7c804ba8a235..25b0367f8885 100644 --- a/chart2/source/controller/dialogs/dlg_DataSource.cxx +++ b/chart2/source/controller/dialogs/dlg_DataSource.cxx @@ -18,13 +18,11 @@ */ #include <com/sun/star/chart2/XChartDocument.hpp> -#include <com/sun/star/lang/XMultiServiceFactory.hpp> #include <dlg_DataSource.hxx> #include <ChartTypeTemplateProvider.hxx> -#include <ChartTypeManager.hxx> #include <ChartTypeTemplate.hxx> -#include <DiagramHelper.hxx> +#include <Diagram.hxx> #include "DialogModel.hxx" #include <ChartModel.hxx> @@ -32,11 +30,8 @@ #include "tp_DataSource.hxx" using namespace ::com::sun::star; -using namespace ::com::sun::star::chart2; using namespace ::chart; -using ::com::sun::star::uno::Reference; - namespace chart { @@ -63,13 +58,11 @@ DocumentChartTypeTemplateProvider::DocumentChartTypeTemplateProvider( if( !xDoc.is()) return; - Reference< chart2::XDiagram > xDia( xDoc->getFirstDiagram()); + rtl::Reference< Diagram > xDia( xDoc->getFirstChartDiagram()); if( xDia.is()) { - DiagramHelper::tTemplateWithServiceName aResult( - DiagramHelper::getTemplateForDiagram( - xDia, - xDoc->getTypeManager() )); + Diagram::tTemplateWithServiceName aResult( + xDia->getTemplate( xDoc->getTypeManager() )); m_xTemplate = aResult.xChartTypeTemplate; } } @@ -82,12 +75,11 @@ rtl::Reference< ::chart::ChartTypeTemplate > DocumentChartTypeTemplateProvider:: sal_uInt16 DataSourceDialog::m_nLastPageId = 0; DataSourceDialog::DataSourceDialog(weld::Window * pParent, - const rtl::Reference<::chart::ChartModel> & xChartDocument, - const Reference< uno::XComponentContext > & xContext) + const rtl::Reference<::chart::ChartModel> & xChartDocument) : GenericDialogController(pParent, "modules/schart/ui/datarangedialog.ui", "DataRangeDialog") , m_apDocTemplateProvider(new DocumentChartTypeTemplateProvider(xChartDocument)) - , m_apDialogModel(new DialogModel(xChartDocument, xContext)) + , m_apDialogModel(new DialogModel(xChartDocument)) , m_bRangeChooserTabIsValid(true) , m_bDataSourceTabIsValid(true) , m_bTogglingEnabled(true) @@ -130,7 +122,7 @@ short DataSourceDialog::run() return nResult; } -IMPL_LINK(DataSourceDialog, ActivatePageHdl, const OString&, rPage, void) +IMPL_LINK(DataSourceDialog, ActivatePageHdl, const OUString&, rPage, void) { if (rPage == "range") m_xRangeChooserTabPage->Activate(); @@ -139,7 +131,7 @@ IMPL_LINK(DataSourceDialog, ActivatePageHdl, const OString&, rPage, void) } // allow/disallow user to leave page -IMPL_LINK_NOARG(DataSourceDialog, DeactivatePageHdl, const OString&, bool) +IMPL_LINK_NOARG(DataSourceDialog, DeactivatePageHdl, const OUString&, bool) { return m_bTogglingEnabled; } diff --git a/chart2/source/controller/dialogs/dlg_InsertAxis_Grid.cxx b/chart2/source/controller/dialogs/dlg_InsertAxis_Grid.cxx index f20571e22f55..6a79bac4a414 100644 --- a/chart2/source/controller/dialogs/dlg_InsertAxis_Grid.cxx +++ b/chart2/source/controller/dialogs/dlg_InsertAxis_Grid.cxx @@ -37,8 +37,8 @@ SchAxisDlg::SchAxisDlg(weld::Window* pWindow, OUString("modules/schart/ui/insertaxisdlg.ui") : OUString("modules/schart/ui/insertgriddlg.ui"), bAxisDlg ? - OString("InsertAxisDialog") : - OString("InsertGridDialog")) + OUString("InsertAxisDialog") : + OUString("InsertGridDialog")) , m_xCbPrimaryX(m_xBuilder->weld_check_button("primaryX")) , m_xCbPrimaryY(m_xBuilder->weld_check_button("primaryY")) , m_xCbPrimaryZ(m_xBuilder->weld_check_button("primaryZ")) diff --git a/chart2/source/controller/dialogs/dlg_InsertDataTable.cxx b/chart2/source/controller/dialogs/dlg_InsertDataTable.cxx new file mode 100644 index 000000000000..4b5e928db057 --- /dev/null +++ b/chart2/source/controller/dialogs/dlg_InsertDataTable.cxx @@ -0,0 +1,61 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <dlg_InsertDataTable.hxx> + +namespace chart +{ +InsertDataTableDialog::InsertDataTableDialog(weld::Window* pWindow) + : GenericDialogController(pWindow, "modules/schart/ui/dlg_InsertDataTable.ui", + "InsertDataTableDialog") + , m_aDataTablePropertiesResources(*m_xBuilder) + , m_xCbShowDataTable(m_xBuilder->weld_check_button("showDataTable")) +{ + m_xCbShowDataTable->connect_toggled(LINK(this, InsertDataTableDialog, ShowDataTableToggle)); + init(m_aData); +} + +IMPL_LINK_NOARG(InsertDataTableDialog, ShowDataTableToggle, weld::Toggleable&, void) +{ + changeEnabled(); +} + +void InsertDataTableDialog::changeEnabled() +{ + bool bEnable = m_xCbShowDataTable->get_active(); + m_aDataTablePropertiesResources.setChecksSensitive(bEnable); + m_aData.mbShow = bEnable; +} + +void InsertDataTableDialog::init(DataTableDialogData const& rData) +{ + m_aData = rData; + m_aDataTablePropertiesResources.setHorizontalBorder(m_aData.mbHorizontalBorders); + m_aDataTablePropertiesResources.setVerticalBorder(m_aData.mbVerticalBorders); + m_aDataTablePropertiesResources.setOutline(m_aData.mbOutline); + m_aDataTablePropertiesResources.setKeys(m_aData.mbKeys); + m_xCbShowDataTable->set_active(m_aData.mbShow); + changeEnabled(); +} + +DataTableDialogData& InsertDataTableDialog::getDataTableDialogData() +{ + m_aData.mbShow = m_xCbShowDataTable->get_active(); + + m_aData.mbHorizontalBorders = m_aDataTablePropertiesResources.getHorizontalBorder(); + m_aData.mbVerticalBorders = m_aDataTablePropertiesResources.getVerticalBorder(); + m_aData.mbOutline = m_aDataTablePropertiesResources.getOutline(); + m_aData.mbKeys = m_aDataTablePropertiesResources.getKeys(); + + return m_aData; +} + +} //namespace chart + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/chart2/source/controller/dialogs/dlg_InsertErrorBars.cxx b/chart2/source/controller/dialogs/dlg_InsertErrorBars.cxx index ceec42d736e8..8ed2c1d7d650 100644 --- a/chart2/source/controller/dialogs/dlg_InsertErrorBars.cxx +++ b/chart2/source/controller/dialogs/dlg_InsertErrorBars.cxx @@ -21,18 +21,15 @@ #include <res_ErrorBar.hxx> #include <chartview/ExplicitScaleValues.hxx> #include <chartview/ExplicitValueProvider.hxx> -#include <ChartModelHelper.hxx> #include <ChartModel.hxx> +#include <ChartView.hxx> #include <ObjectIdentifier.hxx> -#include <DiagramHelper.hxx> #include <Diagram.hxx> +#include <Axis.hxx> #include <AxisHelper.hxx> #include <ObjectNameProvider.hxx> +#include <DataSeries.hxx> -#include <com/sun/star/frame/XModel.hpp> -#include <comphelper/servicehelper.hxx> - -using ::com::sun::star::uno::Reference; using namespace ::com::sun::star; using namespace ::com::sun::star::chart2; @@ -67,18 +64,17 @@ void InsertErrorBarsDialog::SetAxisMinorStepWidthForErrorBarDecimals( double fMi double InsertErrorBarsDialog::getAxisMinorStepWidthForErrorBarDecimals( const rtl::Reference<::chart::ChartModel>& xChartModel, - const Reference< uno::XInterface >& xChartView, - const OUString& rSelectedObjectCID ) + const rtl::Reference<::chart::ChartView>& xChartView, + std::u16string_view rSelectedObjectCID ) { double fStepWidth = 0.001; - ExplicitValueProvider* pExplicitValueProvider( comphelper::getFromUnoTunnel<ExplicitValueProvider>(xChartView) ); + ExplicitValueProvider* pExplicitValueProvider( xChartView.get() ); if( pExplicitValueProvider ) { - Reference< XAxis > xAxis; - rtl::Reference< Diagram > xDiagram( ChartModelHelper::findDiagram( xChartModel ) ); - Reference< XDataSeries > xSeries = ObjectIdentifier::getDataSeriesForCID( rSelectedObjectCID, xChartModel ); - xAxis = DiagramHelper::getAttachedAxis( xSeries, xDiagram ); + rtl::Reference< Diagram > xDiagram( xChartModel->getFirstChartDiagram() ); + rtl::Reference< DataSeries > xSeries = ObjectIdentifier::getDataSeriesForCID( rSelectedObjectCID, xChartModel ); + rtl::Reference< Axis > xAxis = xDiagram->getAttachedAxis( xSeries ); if(!xAxis.is()) xAxis = AxisHelper::getAxis( 1/*nDimensionIndex*/, true/*bMainAxis*/, xDiagram ); if(xAxis.is()) diff --git a/chart2/source/controller/dialogs/dlg_NumberFormat.cxx b/chart2/source/controller/dialogs/dlg_NumberFormat.cxx index 7750588ccaa7..f5cfe8e3bda4 100644 --- a/chart2/source/controller/dialogs/dlg_NumberFormat.cxx +++ b/chart2/source/controller/dialogs/dlg_NumberFormat.cxx @@ -31,12 +31,13 @@ using namespace ::com::sun::star; NumberFormatDialog::NumberFormatDialog(weld::Window* pParent, const SfxItemSet& rSet) : SfxSingleTabDialogController(pParent, &rSet, "cui/ui/formatnumberdialog.ui", "FormatNumberDialog") + , m_xContent( m_xBuilder->weld_container("content") ) { SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create(); ::CreateTabPage fnCreatePage = pFact->GetTabPageCreatorFunc( RID_SVXPAGE_NUMBERFORMAT ); if (fnCreatePage) { - std::unique_ptr<SfxTabPage> xTabPage = (*fnCreatePage)(get_content_area(), this, &rSet); + std::unique_ptr<SfxTabPage> xTabPage = (*fnCreatePage)(m_xContent.get(), this, &rSet); xTabPage->PageCreated(rSet); SetTabPage(std::move(xTabPage)); } diff --git a/chart2/source/controller/dialogs/dlg_NumberFormat.hxx b/chart2/source/controller/dialogs/dlg_NumberFormat.hxx index 56d5acd20867..be02edeb6257 100644 --- a/chart2/source/controller/dialogs/dlg_NumberFormat.hxx +++ b/chart2/source/controller/dialogs/dlg_NumberFormat.hxx @@ -23,6 +23,7 @@ namespace weld { class Window; +class Container; } class SfxItemSet; class SfxItemPool; @@ -31,6 +32,8 @@ namespace chart { class NumberFormatDialog : public SfxSingleTabDialogController { + std::unique_ptr<weld::Container> m_xContent; + public: NumberFormatDialog(weld::Window* pParent, const SfxItemSet& rSet); diff --git a/chart2/source/controller/dialogs/dlg_ObjectProperties.cxx b/chart2/source/controller/dialogs/dlg_ObjectProperties.cxx index 84740d9bf708..e885fdaef32e 100644 --- a/chart2/source/controller/dialogs/dlg_ObjectProperties.cxx +++ b/chart2/source/controller/dialogs/dlg_ObjectProperties.cxx @@ -17,6 +17,10 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ +#include <sal/config.h> + +#include <cstddef> + #include <dlg_ObjectProperties.hxx> #include <strings.hrc> #include "tp_AxisLabel.hxx" @@ -31,14 +35,18 @@ #include "tp_TitleRotation.hxx" #include "tp_PolarOptions.hxx" #include "tp_DataPointOption.hxx" +#include "tp_DataTable.hxx" #include <ResId.hxx> #include <ViewElementListProvider.hxx> #include <ChartModelHelper.hxx> +#include <ChartType.hxx> #include <ChartTypeHelper.hxx> #include <ObjectNameProvider.hxx> +#include <DataSeries.hxx> #include <DiagramHelper.hxx> #include <Diagram.hxx> #include <NumberFormatterWrapper.hxx> +#include <Axis.hxx> #include <AxisHelper.hxx> #include <ExplicitCategoriesProvider.hxx> #include <ChartModel.hxx> @@ -64,7 +72,8 @@ #include <svx/numinf.hxx> #include <svl/cjkoptions.hxx> -#include <tools/diagnose_ex.h> +#include <utility> +#include <comphelper/diagnose_ex.hxx> namespace com::sun::star::chart2 { class XChartType; } namespace com::sun::star::chart2 { class XDataSeries; } @@ -79,8 +88,8 @@ using ::com::sun::star::uno::Sequence; using ::com::sun::star::uno::Exception; using ::com::sun::star::beans::XPropertySet; -ObjectPropertiesDialogParameter::ObjectPropertiesDialogParameter( const OUString& rObjectCID ) - : m_aObjectCID( rObjectCID ) +ObjectPropertiesDialogParameter::ObjectPropertiesDialogParameter( OUString aObjectCID ) + : m_aObjectCID(std::move( aObjectCID )) , m_eObjectType( ObjectIdentifier::getObjectType( m_aObjectCID ) ) , m_bAffectsMultipleObjects(false) , m_bHasGeometryProperties(false) @@ -103,8 +112,8 @@ ObjectPropertiesDialogParameter::ObjectPropertiesDialogParameter( const OUString , m_bComplexCategoriesAxis( false ) , m_nNbPoints( 0 ) { - OUString aParticleID = ObjectIdentifier::getParticleID( m_aObjectCID ); - m_bAffectsMultipleObjects = (aParticleID == "ALLELEMENTS"); + std::u16string_view aParticleID = ObjectIdentifier::getParticleID( m_aObjectCID ); + m_bAffectsMultipleObjects = (aParticleID == u"ALLELEMENTS"); } ObjectPropertiesDialogParameter::~ObjectPropertiesDialogParameter() { @@ -113,10 +122,12 @@ ObjectPropertiesDialogParameter::~ObjectPropertiesDialogParameter() void ObjectPropertiesDialogParameter::init( const rtl::Reference<::chart::ChartModel>& xChartModel ) { m_xChartDocument = xChartModel; - rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram( xChartModel ); - uno::Reference< XDataSeries > xSeries = ObjectIdentifier::getDataSeriesForCID( m_aObjectCID, xChartModel ); - uno::Reference< XChartType > xChartType = ChartModelHelper::getChartTypeOfSeries( xChartModel, xSeries ); - sal_Int32 nDimensionCount = DiagramHelper::getDimension( xDiagram ); + rtl::Reference< Diagram > xDiagram = xChartModel->getFirstChartDiagram(); + rtl::Reference< DataSeries > xSeries = ObjectIdentifier::getDataSeriesForCID( m_aObjectCID, xChartModel ); + rtl::Reference< ChartType > xChartType = ChartModelHelper::getChartTypeOfSeries( xChartModel, xSeries ); + sal_Int32 nDimensionCount = 0; + if (xDiagram) + nDimensionCount = xDiagram->getDimension(); bool bHasSeriesProperties = (m_eObjectType==OBJECTTYPE_DATA_SERIES); bool bHasDataPointproperties = (m_eObjectType==OBJECTTYPE_DATA_POINT); @@ -153,7 +164,7 @@ void ObjectPropertiesDialogParameter::init( const rtl::Reference<::chart::ChartM if( m_bHasScaleProperties ) { - uno::Reference< XAxis > xAxis( ObjectIdentifier::getAxisForCID( m_aObjectCID, xChartModel ) ); + rtl::Reference< Axis > xAxis = ObjectIdentifier::getAxisForCID( m_aObjectCID, xChartModel ); if( xAxis.is() ) { //no scale page for series axis @@ -211,14 +222,12 @@ void ObjectPropertiesDialogParameter::init( const rtl::Reference<::chart::ChartM if( m_eObjectType == OBJECTTYPE_DATA_CURVE ) { - uno::Reference< data::XDataSource > xSource( xSeries, uno::UNO_QUERY ); - Sequence< Reference< data::XLabeledDataSequence > > aDataSeqs( xSource->getDataSequences()); + const std::vector< uno::Reference< chart2::data::XLabeledDataSequence > > & aDataSeqs( xSeries->getDataSequences2()); Sequence< double > aXValues, aYValues; bool bXValuesFound = false, bYValuesFound = false; m_nNbPoints = 0; - sal_Int32 i = 0; - for( i=0; - ! (bXValuesFound && bYValuesFound) && i<aDataSeqs.getLength(); + for( std::size_t i=0; + ! (bXValuesFound && bYValuesFound) && i<aDataSeqs.size(); ++i ) { try @@ -251,7 +260,7 @@ void ObjectPropertiesDialogParameter::init( const rtl::Reference<::chart::ChartM //first category (index 0) matches with real number 1.0 aXValues.realloc( aYValues.getLength() ); auto pXValues = aXValues.getArray(); - for( i=0; i<aXValues.getLength(); ++i ) + for( sal_Int32 i=0; i<aXValues.getLength(); ++i ) pXValues[i] = i+1; bXValuesFound = true; } @@ -309,10 +318,10 @@ void ObjectPropertiesDialogParameter::init( const rtl::Reference<::chart::ChartM const sal_uInt16 nNoArrowNoShadowDlg = 1101; void SchAttribTabDlg::setSymbolInformation( SfxItemSet&& rSymbolShapeProperties, - std::unique_ptr<Graphic> pAutoSymbolGraphic ) + std::optional<Graphic> oAutoSymbolGraphic ) { m_oSymbolShapeProperties.emplace(std::move(rSymbolShapeProperties)); - m_pAutoSymbolGraphic = std::move(pAutoSymbolGraphic); + m_oAutoSymbolGraphic = std::move(oAutoSymbolGraphic); } void SchAttribTabDlg::SetAxisMinorStepWidthForErrorBarDecimals( double fMinorStepWidth ) @@ -452,6 +461,13 @@ SchAttribTabDlg::SchAttribTabDlg(weld::Window* pParent, case OBJECTTYPE_UNKNOWN: // nothing break; + case OBJECTTYPE_DATA_TABLE: + AddTabPage("datatable", SchResId(STR_DATA_TABLE), DataTableTabPage::Create); + AddTabPage("border", SchResId(STR_PAGE_LINE), RID_SVXPAGE_LINE); + AddTabPage("area", SchResId(STR_PAGE_AREA), RID_SVXPAGE_AREA); + AddTabPage("fontname", SchResId(STR_PAGE_FONT), RID_SVXPAGE_CHAR_NAME); + AddTabPage("effects", SchResId(STR_PAGE_FONT_EFFECTS), RID_SVXPAGE_CHAR_EFFECTS); + break; case OBJECTTYPE_DATA_CURVE_EQUATION: AddTabPage("border", SchResId(STR_PAGE_BORDER), RID_SVXPAGE_LINE); AddTabPage("area", SchResId(STR_PAGE_AREA), RID_SVXPAGE_AREA); @@ -459,7 +475,7 @@ SchAttribTabDlg::SchAttribTabDlg(weld::Window* pParent, AddTabPage("fontname", SchResId(STR_PAGE_FONT), RID_SVXPAGE_CHAR_NAME); AddTabPage("effects", SchResId(STR_PAGE_FONT_EFFECTS), RID_SVXPAGE_CHAR_EFFECTS); AddTabPage("numberformat", SchResId(STR_PAGE_NUMBERS), RID_SVXPAGE_NUMBERFORMAT); - if (SvtCTLOptions().IsCTLFontEnabled()) + if (SvtCTLOptions::IsCTLFontEnabled()) { /* When rotation is supported for equation text boxes, use SchAlignmentTabPage::Create here. The special @@ -481,7 +497,7 @@ SchAttribTabDlg::~SchAttribTabDlg() { } -void SchAttribTabDlg::PageCreated(const OString& rId, SfxTabPage &rPage) +void SchAttribTabDlg::PageCreated(const OUString& rId, SfxTabPage &rPage) { SfxAllItemSet aSet(*(GetInputSetImpl()->GetPool())); if (rId == "border") @@ -497,8 +513,8 @@ void SchAttribTabDlg::PageCreated(const OString& rId, SfxTabPage &rPage) aSet.Put(OfaPtrItem(SID_OBJECT_LIST,m_pViewElementListProvider->GetSymbolList())); if( m_oSymbolShapeProperties ) aSet.Put(SfxTabDialogItem(SID_ATTR_SET, *m_oSymbolShapeProperties)); - if( m_pAutoSymbolGraphic ) - aSet.Put(SvxGraphicItem(*m_pAutoSymbolGraphic)); + if( m_oAutoSymbolGraphic ) + aSet.Put(SvxGraphicItem(*m_oAutoSymbolGraphic)); } rPage.PageCreated(aSet); } @@ -568,7 +584,7 @@ void SchAttribTabDlg::PageCreated(const OString& rId, SfxTabPage &rPage) } else if (rId == "numberformat") { - aSet.Put (SvxNumberInfoItem( m_pNumberFormatter, static_cast<sal_uInt16>(SID_ATTR_NUMBERFORMAT_INFO))); + aSet.Put (SvxNumberInfoItem( m_pNumberFormatter, SID_ATTR_NUMBERFORMAT_INFO)); rPage.PageCreated(aSet); } else if (rId == "xerrorbar") diff --git a/chart2/source/controller/dialogs/dlg_ShapeFont.cxx b/chart2/source/controller/dialogs/dlg_ShapeFont.cxx index f5fc702a2a76..b742e8a22eda 100644 --- a/chart2/source/controller/dialogs/dlg_ShapeFont.cxx +++ b/chart2/source/controller/dialogs/dlg_ShapeFont.cxx @@ -41,7 +41,7 @@ ShapeFontDialog::ShapeFontDialog(weld::Window* pParent, const SfxItemSet* pAttr, AddTabPage("position", RID_SVXPAGE_CHAR_POSITION ); } -void ShapeFontDialog::PageCreated(const OString& rId, SfxTabPage& rPage) +void ShapeFontDialog::PageCreated(const OUString& rId, SfxTabPage& rPage) { SfxAllItemSet aSet( *( GetInputSetImpl()->GetPool() ) ); if (rId == "font") diff --git a/chart2/source/controller/dialogs/dlg_ShapeParagraph.cxx b/chart2/source/controller/dialogs/dlg_ShapeParagraph.cxx index e5b422ceaf16..4c72d4d8126b 100644 --- a/chart2/source/controller/dialogs/dlg_ShapeParagraph.cxx +++ b/chart2/source/controller/dialogs/dlg_ShapeParagraph.cxx @@ -47,7 +47,7 @@ ShapeParagraphDialog::ShapeParagraphDialog(weld::Window* pParent, AddTabPage("labelTP_TABULATOR", RID_SVXPAGE_TABULATOR); } -void ShapeParagraphDialog::PageCreated(const OString& rId, SfxTabPage& rPage) +void ShapeParagraphDialog::PageCreated(const OUString& rId, SfxTabPage& rPage) { if (rId == "labelTP_TABULATOR") { diff --git a/chart2/source/controller/dialogs/dlg_View3D.cxx b/chart2/source/controller/dialogs/dlg_View3D.cxx index 09fc4923bdd9..08a783df5e45 100644 --- a/chart2/source/controller/dialogs/dlg_View3D.cxx +++ b/chart2/source/controller/dialogs/dlg_View3D.cxx @@ -26,15 +26,11 @@ #include <ChartModelHelper.hxx> #include <ChartModel.hxx> #include <Diagram.hxx> -#include <com/sun/star/beans/XPropertySet.hpp> -#include <com/sun/star/chart2/XDiagram.hpp> -#include <com/sun/star/frame/XModel.hpp> namespace chart { using namespace ::com::sun::star; -using namespace ::com::sun::star::chart2; sal_uInt16 View3DDialog::m_nLastPageId = 0; @@ -43,7 +39,7 @@ View3DDialog::View3DDialog(weld::Window* pParent, const rtl::Reference<::chart:: , m_aControllerLocker(xChartModel) , m_xTabControl(m_xBuilder->weld_notebook("tabcontrol")) { - rtl::Reference< Diagram > xSceneProperties = ChartModelHelper::findDiagram( xChartModel ); + rtl::Reference< Diagram > xSceneProperties = xChartModel->getFirstChartDiagram(); m_xTabControl->append_page("geometry", SchResId(STR_PAGE_PERSPECTIVE)); m_xGeometry.reset(new ThreeD_SceneGeometry_TabPage(m_xTabControl->get_page("geometry"), xSceneProperties, m_aControllerLocker)); @@ -60,7 +56,7 @@ View3DDialog::View3DDialog(weld::Window* pParent, const rtl::Reference<::chart:: m_xTabControl->set_current_page(m_nLastPageId); } -IMPL_LINK(View3DDialog, ActivatePageHdl, const OString&, rPage, void) +IMPL_LINK(View3DDialog, ActivatePageHdl, const OUString&, rPage, void) { if (rPage == "appearance") m_xAppearance->ActivatePage(); diff --git a/chart2/source/controller/dialogs/res_BarGeometry.cxx b/chart2/source/controller/dialogs/res_BarGeometry.cxx index 182d391aac33..81d933b208bc 100644 --- a/chart2/source/controller/dialogs/res_BarGeometry.cxx +++ b/chart2/source/controller/dialogs/res_BarGeometry.cxx @@ -27,10 +27,9 @@ BarGeometryResources::BarGeometryResources(weld::Builder* pBuilder) : m_xFT_Geometry(pBuilder->weld_label("shapeft")) , m_xLB_Geometry(pBuilder->weld_tree_view("shape")) { - for (size_t i = 0; i < SAL_N_ELEMENTS(CHART_TYPE); ++i) + for (size_t i = 0; i < std::size(CHART_TYPE); ++i) m_xLB_Geometry->append_text(SchResId(CHART_TYPE[i])); - m_xLB_Geometry->set_size_request(-1, - m_xLB_Geometry->get_height_rows(SAL_N_ELEMENTS(CHART_TYPE))); + m_xLB_Geometry->set_size_request(-1, m_xLB_Geometry->get_height_rows(std::size(CHART_TYPE))); } void BarGeometryResources::connect_changed(const Link<weld::TreeView&, void>& rLink) diff --git a/chart2/source/controller/dialogs/res_DataLabel.cxx b/chart2/source/controller/dialogs/res_DataLabel.cxx index 6bba918d6937..c3d755cf92d6 100644 --- a/chart2/source/controller/dialogs/res_DataLabel.cxx +++ b/chart2/source/controller/dialogs/res_DataLabel.cxx @@ -46,41 +46,36 @@ namespace const std::u16string_view our_aLBEntryMap[] = {u" ", u", ", u"; ", u"\n", u". "}; -bool lcl_ReadNumberFormatFromItemSet( const SfxItemSet& rSet, sal_uInt16 nValueWhich, sal_uInt16 nSourceFormatWhich, sal_uInt32& rnFormatKeyOut, bool& rbSourceFormatOut, bool& rbSourceFormatMixedStateOut ) +bool lcl_ReadNumberFormatFromItemSet( const SfxItemSet& rSet, TypedWhichId<SfxUInt32Item> nValueWhich, TypedWhichId<SfxBoolItem> nSourceFormatWhich, sal_uInt32& rnFormatKeyOut, bool& rbSourceFormatOut, bool& rbSourceFormatMixedStateOut ) { bool bSet = false; - const SfxPoolItem *pItem1 = nullptr; - if( rSet.GetItemState( nValueWhich, true, &pItem1 ) == SfxItemState::SET ) + if( const SfxUInt32Item* pNumItem = rSet.GetItemIfSet( nValueWhich ) ) { - const SfxUInt32Item * pNumItem = dynamic_cast< const SfxUInt32Item * >( pItem1 ); - if( pNumItem ) - { - rnFormatKeyOut = pNumItem->GetValue(); - bSet = true; - } + rnFormatKeyOut = pNumItem->GetValue(); + bSet = true; } rbSourceFormatMixedStateOut=true; - const SfxPoolItem *pItem2 = nullptr; - if( rSet.GetItemState( nSourceFormatWhich, true, &pItem2 ) == SfxItemState::SET ) + if( const SfxBoolItem * pBoolItem = rSet.GetItemIfSet( nSourceFormatWhich ) ) { - const SfxBoolItem * pBoolItem = dynamic_cast< const SfxBoolItem * >( pItem2 ); - if( pBoolItem ) - { - rbSourceFormatOut = pBoolItem->GetValue(); - rbSourceFormatMixedStateOut=false; - } + rbSourceFormatOut = pBoolItem->GetValue(); + rbSourceFormatMixedStateOut=false; } return bSet; } -void lcl_setBoolItemToCheckBox(const SfxItemSet& rInAttrs, sal_uInt16 nWhichId, weld::CheckButton& rCheckbox) +void lcl_setBoolItemToCheckBox(const SfxItemSet& rInAttrs, TypedWhichId<SfxBoolItem> nWhichId, weld::CheckButton& rCheckbox, weld::TriStateEnabled& rTriState) { - const SfxPoolItem *pPoolItem = nullptr; - if( rInAttrs.GetItemState(nWhichId, true, &pPoolItem) == SfxItemState::SET ) - rCheckbox.set_active(static_cast<const SfxBoolItem*>(pPoolItem)->GetValue()); + if( const SfxBoolItem* pPoolItem = rInAttrs.GetItemIfSet(nWhichId) ) + { + rCheckbox.set_active(pPoolItem->GetValue()); + rTriState.bTriStateEnabled = false; + } else + { rCheckbox.set_state(TRISTATE_INDET); + rTriState.bTriStateEnabled = true; + } } }//end anonymous namespace @@ -112,7 +107,7 @@ DataLabelResources::DataLabelResources(weld::Builder* pBuilder, weld::Window* pP , m_xFT_Dial(pBuilder->weld_label("CT_LABEL_DIAL")) , m_xNF_Degrees(pBuilder->weld_metric_spin_button("NF_LABEL_DEGREES", FieldUnit::DEGREE)) , m_xBxTextDirection(pBuilder->weld_widget("boxTXT_DIRECTION")) - , m_xLB_TextDirection(new TextDirectionListBox(pBuilder->weld_combo_box("LB_LABEL_TEXTDIR"))) + , m_aLB_TextDirection(pBuilder->weld_combo_box("LB_LABEL_TEXTDIR")) , m_xDC_Dial(new svx::DialControl) , m_xDC_DialWin(new weld::CustomWeld(*pBuilder, "CT_DIAL", *m_xDC_Dial)) , m_xCBCustomLeaderLines(pBuilder->weld_check_button("CB_CUSTOM_LEADER_LINES")) @@ -126,9 +121,8 @@ DataLabelResources::DataLabelResources(weld::Builder* pBuilder, weld::Window* pP std::vector< sal_Int32 > aAvailablePlacementList; - const SfxPoolItem *pPoolItem = nullptr; - if( rInAttrs.GetItemState(SCHATTR_DATADESCR_AVAILABLE_PLACEMENTS, true, &pPoolItem) == SfxItemState::SET ) - aAvailablePlacementList = static_cast<const SfxIntegerListItem*>(pPoolItem)->GetList(); + if( const SfxIntegerListItem* pPlacementsItem = rInAttrs.GetItemIfSet(SCHATTR_DATADESCR_AVAILABLE_PLACEMENTS) ) + aAvailablePlacementList = pPlacementsItem->GetList(); m_xLB_LabelPlacement->clear(); for( size_t nN=0; nN<aAvailablePlacementList.size(); ++nN ) @@ -154,9 +148,9 @@ DataLabelResources::DataLabelResources(weld::Builder* pBuilder, weld::Window* pP m_bNumberFormatMixedState = !lcl_ReadNumberFormatFromItemSet( rInAttrs, SID_ATTR_NUMBERFORMAT_VALUE, SID_ATTR_NUMBERFORMAT_SOURCE, m_nNumberFormatForValue, m_bSourceFormatForValue, m_bSourceFormatMixedState ); m_bPercentFormatMixedState = !lcl_ReadNumberFormatFromItemSet( rInAttrs, SCHATTR_PERCENT_NUMBERFORMAT_VALUE, SCHATTR_PERCENT_NUMBERFORMAT_SOURCE, m_nNumberFormatForPercent, m_bSourceFormatForPercent , m_bPercentSourceMixedState); - if( rInAttrs.GetItemState(SCHATTR_DATADESCR_NO_PERCENTVALUE, true, &pPoolItem) == SfxItemState::SET ) + if( const SfxBoolItem* pNoPercentValueItem = rInAttrs.GetItemIfSet(SCHATTR_DATADESCR_NO_PERCENTVALUE) ) { - bool bForbidPercentValue = rInAttrs.Get( SCHATTR_DATADESCR_NO_PERCENTVALUE ).GetValue(); + bool bForbidPercentValue = pNoPercentValueItem->GetValue(); if( bForbidPercentValue ) m_xCBPercent->set_sensitive(false); } @@ -182,12 +176,18 @@ IMPL_LINK(DataLabelResources, NumberFormatDialogHdl, weld::Button&, rButton, voi } if (&rButton == m_xPB_NumberFormatForValue.get() && !m_xCBNumber->get_active()) + { m_xCBNumber->set_active(true); + m_aNumberState.bTriStateEnabled = false; + } else if (&rButton == m_xPB_NumberFormatForPercent.get() && !m_xCBPercent->get_active()) + { m_xCBPercent->set_active(true); + m_aPercentState.bTriStateEnabled = false; + } SfxItemSet aNumberSet = NumberFormatDialog::CreateEmptyItemSetForNumberFormatDialog( *m_pPool ); - aNumberSet.Put (SvxNumberInfoItem( m_pNumberFormatter, static_cast<sal_uInt16>(SID_ATTR_NUMBERFORMAT_INFO))); + aNumberSet.Put (SvxNumberInfoItem( m_pNumberFormatter, SID_ATTR_NUMBERFORMAT_INFO)); bool bPercent = (&rButton == m_xPB_NumberFormatForPercent.get()); @@ -221,8 +221,22 @@ IMPL_LINK(DataLabelResources, NumberFormatDialogHdl, weld::Button&, rButton, voi } } -IMPL_LINK_NOARG(DataLabelResources, CheckHdl, weld::Toggleable&, void) +IMPL_LINK(DataLabelResources, CheckHdl, weld::Toggleable&, rToggle, void) { + if (&rToggle == m_xCBNumber.get()) + m_aNumberState.ButtonToggled(rToggle); + else if (&rToggle == m_xCBPercent.get()) + m_aPercentState.ButtonToggled(rToggle); + else if (&rToggle == m_xCBCategory.get()) + m_aCategoryState.ButtonToggled(rToggle); + else if (&rToggle == m_xCBSymbol.get()) + m_aSymbolState.ButtonToggled(rToggle); + else if (&rToggle == m_xCBDataSeries.get()) + m_aDataSeriesState.ButtonToggled(rToggle); + else if (&rToggle == m_xCBWrapText.get()) + m_aWrapTextState.ButtonToggled(rToggle); + else if (&rToggle == m_xCBCustomLeaderLines.get()) + m_aCustomLeaderLinesState.ButtonToggled(rToggle); EnableControls(); } @@ -305,8 +319,8 @@ void DataLabelResources::FillItemSet( SfxItemSet* rOutAttrs ) const rOutAttrs->Put( SfxInt32Item( SCHATTR_DATADESCR_PLACEMENT, nValue ) ); } - if (m_xLB_TextDirection->get_active() != -1) - rOutAttrs->Put( SvxFrameDirectionItem( m_xLB_TextDirection->get_active_id(), EE_PARA_WRITINGDIR ) ); + if (m_aLB_TextDirection.get_active() != -1) + rOutAttrs->Put( SvxFrameDirectionItem( m_aLB_TextDirection.get_active_id(), EE_PARA_WRITINGDIR ) ); if( m_xDC_Dial->IsVisible() ) { @@ -320,30 +334,29 @@ void DataLabelResources::Reset(const SfxItemSet& rInAttrs) // default state m_xCBSymbol->set_sensitive( false ); - lcl_setBoolItemToCheckBox( rInAttrs, SCHATTR_DATADESCR_SHOW_NUMBER, *m_xCBNumber ); - lcl_setBoolItemToCheckBox( rInAttrs, SCHATTR_DATADESCR_SHOW_PERCENTAGE, *m_xCBPercent ); - lcl_setBoolItemToCheckBox( rInAttrs, SCHATTR_DATADESCR_SHOW_CATEGORY, *m_xCBCategory ); - lcl_setBoolItemToCheckBox( rInAttrs, SCHATTR_DATADESCR_SHOW_SYMBOL, *m_xCBSymbol ); - lcl_setBoolItemToCheckBox( rInAttrs, SCHATTR_DATADESCR_SHOW_DATA_SERIES_NAME, *m_xCBDataSeries ); - lcl_setBoolItemToCheckBox( rInAttrs, SCHATTR_DATADESCR_WRAP_TEXT, *m_xCBWrapText ); - lcl_setBoolItemToCheckBox( rInAttrs, SCHATTR_DATADESCR_CUSTOM_LEADER_LINES, *m_xCBCustomLeaderLines ); + lcl_setBoolItemToCheckBox( rInAttrs, SCHATTR_DATADESCR_SHOW_NUMBER, *m_xCBNumber, m_aNumberState ); + lcl_setBoolItemToCheckBox( rInAttrs, SCHATTR_DATADESCR_SHOW_PERCENTAGE, *m_xCBPercent, m_aPercentState ); + lcl_setBoolItemToCheckBox( rInAttrs, SCHATTR_DATADESCR_SHOW_CATEGORY, *m_xCBCategory, m_aCategoryState ); + lcl_setBoolItemToCheckBox( rInAttrs, SCHATTR_DATADESCR_SHOW_SYMBOL, *m_xCBSymbol, m_aSymbolState ); + lcl_setBoolItemToCheckBox( rInAttrs, SCHATTR_DATADESCR_SHOW_DATA_SERIES_NAME, *m_xCBDataSeries, m_aDataSeriesState ); + lcl_setBoolItemToCheckBox( rInAttrs, SCHATTR_DATADESCR_WRAP_TEXT, *m_xCBWrapText, m_aWrapTextState ); + lcl_setBoolItemToCheckBox( rInAttrs, SCHATTR_DATADESCR_CUSTOM_LEADER_LINES, *m_xCBCustomLeaderLines, m_aCustomLeaderLinesState ); m_bNumberFormatMixedState = !lcl_ReadNumberFormatFromItemSet( rInAttrs, SID_ATTR_NUMBERFORMAT_VALUE, SID_ATTR_NUMBERFORMAT_SOURCE, m_nNumberFormatForValue, m_bSourceFormatForValue, m_bSourceFormatMixedState ); m_bPercentFormatMixedState = !lcl_ReadNumberFormatFromItemSet( rInAttrs, SCHATTR_PERCENT_NUMBERFORMAT_VALUE, SCHATTR_PERCENT_NUMBERFORMAT_SOURCE, m_nNumberFormatForPercent, m_bSourceFormatForPercent , m_bPercentSourceMixedState); - const SfxPoolItem *pPoolItem = nullptr; - if( rInAttrs.GetItemState(SCHATTR_DATADESCR_SEPARATOR, true, &pPoolItem) == SfxItemState::SET ) - for(size_t i=0; i < SAL_N_ELEMENTS(our_aLBEntryMap); ++i ) + if( const SfxStringItem* pSeparatorItem = rInAttrs.GetItemIfSet(SCHATTR_DATADESCR_SEPARATOR) ) + for(size_t i=0; i < std::size(our_aLBEntryMap); ++i ) { - if( our_aLBEntryMap[i] == static_cast<const SfxStringItem*>(pPoolItem)->GetValue()) + if( our_aLBEntryMap[i] == pSeparatorItem->GetValue()) m_xLB_Separator->set_active( i ); } else m_xLB_Separator->set_active( 0 ); - if( rInAttrs.GetItemState(SCHATTR_DATADESCR_PLACEMENT, true, &pPoolItem) == SfxItemState::SET ) + if( const SfxInt32Item* pPlacementItem = rInAttrs.GetItemIfSet(SCHATTR_DATADESCR_PLACEMENT) ) { - sal_Int32 nPlacement = static_cast<const SfxInt32Item*>(pPoolItem)->GetValue(); + sal_Int32 nPlacement = pPlacementItem->GetValue(); std::map< sal_Int32, sal_uInt16 >::const_iterator aIt( m_aPlacementToListBoxMap.find(nPlacement) ); if(aIt!=m_aPlacementToListBoxMap.end()) { @@ -356,12 +369,12 @@ void DataLabelResources::Reset(const SfxItemSet& rInAttrs) else m_xLB_LabelPlacement->set_active(-1); - if( rInAttrs.GetItemState(EE_PARA_WRITINGDIR, true, &pPoolItem ) == SfxItemState::SET ) - m_xLB_TextDirection->set_active_id( static_cast<const SvxFrameDirectionItem*>(pPoolItem)->GetValue() ); + if( const SvxFrameDirectionItem* pDirectionItem = rInAttrs.GetItemIfSet(EE_PARA_WRITINGDIR) ) + m_aLB_TextDirection.set_active_id( pDirectionItem->GetValue() ); - if( rInAttrs.GetItemState( SCHATTR_TEXT_DEGREES, true, &pPoolItem ) == SfxItemState::SET ) + if( const SdrAngleItem* pAngleItem = rInAttrs.GetItemIfSet( SCHATTR_TEXT_DEGREES ) ) { - Degree100 nDegrees = static_cast< const SdrAngleItem * >( pPoolItem )->GetValue(); + Degree100 nDegrees = pAngleItem->GetValue(); m_xDC_Dial->SetRotation( nDegrees ); } else diff --git a/chart2/source/controller/dialogs/res_DataLabel.hxx b/chart2/source/controller/dialogs/res_DataLabel.hxx index 56115b2a779c..66a062d2ca24 100644 --- a/chart2/source/controller/dialogs/res_DataLabel.hxx +++ b/chart2/source/controller/dialogs/res_DataLabel.hxx @@ -20,11 +20,11 @@ #include <svl/itemset.hxx> #include <svx/dialcontrol.hxx> +#include <TextDirectionListBox.hxx> #include <map> class SvNumberFormatter; -namespace chart { class TextDirectionListBox; } namespace chart { @@ -58,6 +58,14 @@ private: weld::Window* m_pWindow; SfxItemPool* m_pPool; + weld::TriStateEnabled m_aNumberState; + weld::TriStateEnabled m_aPercentState; + weld::TriStateEnabled m_aCategoryState; + weld::TriStateEnabled m_aSymbolState; + weld::TriStateEnabled m_aDataSeriesState; + weld::TriStateEnabled m_aWrapTextState; + weld::TriStateEnabled m_aCustomLeaderLinesState; + std::unique_ptr<weld::CheckButton> m_xCBNumber; std::unique_ptr<weld::Button> m_xPB_NumberFormatForValue; std::unique_ptr<weld::CheckButton> m_xCBPercent; @@ -77,7 +85,7 @@ private: std::unique_ptr<weld::Widget> m_xBxTextDirection; - std::unique_ptr<TextDirectionListBox> m_xLB_TextDirection; + TextDirectionListBox m_aLB_TextDirection; std::unique_ptr<svx::DialControl> m_xDC_Dial; std::unique_ptr<weld::CustomWeld> m_xDC_DialWin; diff --git a/chart2/source/controller/dialogs/res_DataTableProperties.cxx b/chart2/source/controller/dialogs/res_DataTableProperties.cxx new file mode 100644 index 000000000000..327298e312d9 --- /dev/null +++ b/chart2/source/controller/dialogs/res_DataTableProperties.cxx @@ -0,0 +1,111 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <res_DataTableProperties.hxx> + +#include <chartview/ChartSfxItemIds.hxx> +#include <svl/eitem.hxx> + +using namespace css; + +namespace chart +{ +DataTablePropertiesResources::DataTablePropertiesResources(weld::Builder& rBuilder) + : m_xCbHorizontalBorder(rBuilder.weld_check_button("horizontalBorderCB")) + , m_xCbVerticalBorder(rBuilder.weld_check_button("verticalBorderCB")) + , m_xCbOutilne(rBuilder.weld_check_button("outlineCB")) + , m_xCbKeys(rBuilder.weld_check_button("keysCB")) +{ +} + +void DataTablePropertiesResources::setChecksSensitive(bool bSensitive) +{ + m_xCbHorizontalBorder->set_sensitive(bSensitive); + m_xCbVerticalBorder->set_sensitive(bSensitive); + m_xCbOutilne->set_sensitive(bSensitive); + m_xCbKeys->set_sensitive(bSensitive); +} + +void DataTablePropertiesResources::initFromItemSet(const SfxItemSet& rInAttrs) +{ + const SfxPoolItem* pPoolItem = nullptr; + SfxItemState aState; + + aState = rInAttrs.GetItemState(SCHATTR_DATA_TABLE_HORIZONTAL_BORDER, false, &pPoolItem); + if (aState == SfxItemState::INVALID) + { + m_xCbHorizontalBorder->set_state(TRISTATE_INDET); + } + else + { + if (aState == SfxItemState::SET) + m_xCbHorizontalBorder->set_active( + static_cast<const SfxBoolItem*>(pPoolItem)->GetValue()); + } + + aState = rInAttrs.GetItemState(SCHATTR_DATA_TABLE_VERTICAL_BORDER, false, &pPoolItem); + if (aState == SfxItemState::INVALID) + { + m_xCbVerticalBorder->set_state(TRISTATE_INDET); + } + else + { + if (aState == SfxItemState::SET) + m_xCbVerticalBorder->set_active(static_cast<const SfxBoolItem*>(pPoolItem)->GetValue()); + } + + aState = rInAttrs.GetItemState(SCHATTR_DATA_TABLE_OUTLINE, false, &pPoolItem); + if (aState == SfxItemState::INVALID) + { + m_xCbOutilne->set_state(TRISTATE_INDET); + } + else + { + if (aState == SfxItemState::SET) + m_xCbOutilne->set_active(static_cast<const SfxBoolItem*>(pPoolItem)->GetValue()); + } + + aState = rInAttrs.GetItemState(SCHATTR_DATA_TABLE_KEYS, false, &pPoolItem); + if (aState == SfxItemState::INVALID) + { + m_xCbKeys->set_state(TRISTATE_INDET); + } + else + { + if (aState == SfxItemState::SET) + m_xCbKeys->set_active(static_cast<const SfxBoolItem*>(pPoolItem)->GetValue()); + } +} + +bool DataTablePropertiesResources::writeToItemSet(SfxItemSet& rOutAttrs) const +{ + if (m_xCbHorizontalBorder->get_state() != TRISTATE_INDET) + { + rOutAttrs.Put( + SfxBoolItem(SCHATTR_DATA_TABLE_HORIZONTAL_BORDER, m_xCbHorizontalBorder->get_active())); + } + if (m_xCbVerticalBorder->get_state() != TRISTATE_INDET) + { + rOutAttrs.Put( + SfxBoolItem(SCHATTR_DATA_TABLE_VERTICAL_BORDER, m_xCbVerticalBorder->get_active())); + } + if (m_xCbOutilne->get_state() != TRISTATE_INDET) + { + rOutAttrs.Put(SfxBoolItem(SCHATTR_DATA_TABLE_OUTLINE, m_xCbOutilne->get_active())); + } + if (m_xCbKeys->get_state() != TRISTATE_INDET) + { + rOutAttrs.Put(SfxBoolItem(SCHATTR_DATA_TABLE_KEYS, m_xCbKeys->get_active())); + } + return true; +} + +} //namespace chart + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/chart2/source/controller/dialogs/res_ErrorBar.cxx b/chart2/source/controller/dialogs/res_ErrorBar.cxx index 1e5078a301fc..ae8e7cd28e2e 100644 --- a/chart2/source/controller/dialogs/res_ErrorBar.cxx +++ b/chart2/source/controller/dialogs/res_ErrorBar.cxx @@ -22,12 +22,11 @@ #include <RangeSelectionHelper.hxx> #include <helpids.h> #include <chartview/ChartSfxItemIds.hxx> -#include <com/sun/star/chart2/XChartDocument.hpp> #include <vcl/weld.hxx> #include <ChartModel.hxx> #include <rtl/math.hxx> -#include <tools/diagnose_ex.h> +#include <comphelper/diagnose_ex.hxx> #include <osl/diagnose.h> #include <svl/stritem.hxx> @@ -476,7 +475,7 @@ void ErrorBarResources::Reset(const SfxItemSet& rInAttrs) // category m_eErrorKind = SvxChartKindError::NONE; SfxItemState aState = rInAttrs.GetItemState( SCHATTR_STAT_KIND_ERROR, true, &pPoolItem ); - m_bErrorKindUnique = ( aState != SfxItemState::DONTCARE ); + m_bErrorKindUnique = ( aState != SfxItemState::INVALID ); if( aState == SfxItemState::SET ) m_eErrorKind = static_cast<const SvxChartKindErrorItem*>(pPoolItem)->GetValue(); @@ -516,16 +515,14 @@ void ErrorBarResources::Reset(const SfxItemSet& rInAttrs) } // parameters - aState = rInAttrs.GetItemState( SCHATTR_STAT_CONSTPLUS, true, &pPoolItem ); - if( aState == SfxItemState::SET ) + if( const SvxDoubleItem* pDoubleItem = rInAttrs.GetItemIfSet( SCHATTR_STAT_CONSTPLUS ) ) { - m_fPlusValue = static_cast<const SvxDoubleItem*>(pPoolItem)->GetValue(); + m_fPlusValue = pDoubleItem->GetValue(); } - aState = rInAttrs.GetItemState( SCHATTR_STAT_CONSTMINUS, true, &pPoolItem ); - if( aState == SfxItemState::SET ) + if( const SvxDoubleItem* pStatItem = rInAttrs.GetItemIfSet( SCHATTR_STAT_CONSTMINUS ) ) { - m_fMinusValue = static_cast<const SvxDoubleItem*>(pPoolItem)->GetValue(); + m_fMinusValue = pStatItem->GetValue(); if( m_eErrorKind != SvxChartKindError::Range && m_fPlusValue == m_fMinusValue ) @@ -534,7 +531,7 @@ void ErrorBarResources::Reset(const SfxItemSet& rInAttrs) // indicator aState = rInAttrs.GetItemState( SCHATTR_STAT_INDICATE, true, &pPoolItem ); - m_bIndicatorUnique = ( aState != SfxItemState::DONTCARE ); + m_bIndicatorUnique = ( aState != SfxItemState::INVALID ); if( aState == SfxItemState::SET) m_eIndicate = static_cast<const SvxChartIndicateItem *>(pPoolItem)->GetValue(); @@ -563,7 +560,7 @@ void ErrorBarResources::Reset(const SfxItemSet& rInAttrs) // ranges aState = rInAttrs.GetItemState( SCHATTR_STAT_RANGE_POS, true, &pPoolItem ); - m_bRangePosUnique = ( aState != SfxItemState::DONTCARE ); + m_bRangePosUnique = ( aState != SfxItemState::INVALID ); if( aState == SfxItemState::SET ) { OUString sRangePositive = static_cast< const SfxStringItem * >( pPoolItem )->GetValue(); @@ -571,7 +568,7 @@ void ErrorBarResources::Reset(const SfxItemSet& rInAttrs) } aState = rInAttrs.GetItemState( SCHATTR_STAT_RANGE_NEG, true, &pPoolItem ); - m_bRangeNegUnique = ( aState != SfxItemState::DONTCARE ); + m_bRangeNegUnique = ( aState != SfxItemState::INVALID ); if( aState == SfxItemState::SET ) { OUString sRangeNegative = static_cast< const SfxStringItem * >( pPoolItem )->GetValue(); diff --git a/chart2/source/controller/dialogs/res_LegendPosition.cxx b/chart2/source/controller/dialogs/res_LegendPosition.cxx index aac0a11368a1..92cb4399e563 100644 --- a/chart2/source/controller/dialogs/res_LegendPosition.cxx +++ b/chart2/source/controller/dialogs/res_LegendPosition.cxx @@ -18,7 +18,7 @@ */ #include <res_LegendPosition.hxx> -#include <ChartModelHelper.hxx> +#include <Legend.hxx> #include <LegendHelper.hxx> #include <ChartModel.hxx> #include <Diagram.hxx> @@ -30,7 +30,8 @@ #include <chartview/ChartSfxItemIds.hxx> #include <svl/intitem.hxx> #include <svl/eitem.hxx> -#include <tools/diagnose_ex.h> +#include <comphelper/diagnose_ex.hxx> +#include <utility> #include <vcl/weld.hxx> namespace chart @@ -49,8 +50,8 @@ LegendPositionResources::LegendPositionResources(weld::Builder& rBuilder) } LegendPositionResources::LegendPositionResources(weld::Builder& rBuilder, - const uno::Reference< uno::XComponentContext >& xCC) - : m_xCC(xCC) + uno::Reference< uno::XComponentContext > xCC) + : m_xCC(std::move(xCC)) , m_xCbxShow(rBuilder.weld_check_button("show")) , m_xRbtLeft(rBuilder.weld_radio_button("left")) , m_xRbtRight(rBuilder.weld_radio_button("right")) @@ -77,20 +78,20 @@ void LegendPositionResources::writeToResources( const rtl::Reference<::chart::Ch { try { - rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram( xChartModel ); - uno::Reference< beans::XPropertySet > xProp( xDiagram->getLegend(), uno::UNO_QUERY ); - if( xProp.is() ) + rtl::Reference< Diagram > xDiagram = xChartModel->getFirstChartDiagram(); + rtl::Reference< Legend > xLegend = xDiagram->getLegend2(); + if( xLegend.is() ) { //show bool bShowLegend = false; - xProp->getPropertyValue( "Show" ) >>= bShowLegend; + xLegend->getPropertyValue( "Show" ) >>= bShowLegend; if (m_xCbxShow) m_xCbxShow->set_active( bShowLegend ); - PositionEnableHdl(*m_xCbxShow); + PositionEnable(); //position chart2::LegendPosition ePos; - xProp->getPropertyValue( "AnchorPosition" ) >>= ePos; + xLegend->getPropertyValue( "AnchorPosition" ) >>= ePos; switch( ePos ) { case chart2::LegendPosition_LINE_START: @@ -121,7 +122,7 @@ void LegendPositionResources::writeToModel( const rtl::Reference<::chart::ChartM { bool bShowLegend = m_xCbxShow && m_xCbxShow->get_active(); ChartModel& rModel = *xChartModel; - uno::Reference< beans::XPropertySet > xProp(LegendHelper::getLegend(rModel, m_xCC, bShowLegend), uno::UNO_QUERY); + rtl::Reference< Legend > xProp = LegendHelper::getLegend(rModel, m_xCC, bShowLegend); if( xProp.is() ) { //show @@ -161,6 +162,11 @@ void LegendPositionResources::writeToModel( const rtl::Reference<::chart::ChartM IMPL_LINK_NOARG(LegendPositionResources, PositionEnableHdl, weld::Toggleable&, void) { + PositionEnable(); +} + +void LegendPositionResources::PositionEnable() +{ bool bEnable = !m_xCbxShow || m_xCbxShow->get_active(); m_xRbtLeft->set_sensitive( bEnable ); @@ -173,10 +179,9 @@ IMPL_LINK_NOARG(LegendPositionResources, PositionEnableHdl, weld::Toggleable&, v void LegendPositionResources::initFromItemSet( const SfxItemSet& rInAttrs ) { - const SfxPoolItem* pPoolItem = nullptr; - if( rInAttrs.GetItemState( SCHATTR_LEGEND_POS, true, &pPoolItem ) == SfxItemState::SET ) + if( const SfxInt32Item* pPosItem = rInAttrs.GetItemIfSet( SCHATTR_LEGEND_POS ) ) { - chart2::LegendPosition nLegendPosition = static_cast<chart2::LegendPosition>(static_cast<const SfxInt32Item*>(pPoolItem)->GetValue()); + chart2::LegendPosition nLegendPosition = static_cast<chart2::LegendPosition>(pPosItem->GetValue()); switch( nLegendPosition ) { case chart2::LegendPosition_LINE_START: @@ -196,10 +201,10 @@ void LegendPositionResources::initFromItemSet( const SfxItemSet& rInAttrs ) } } - if( m_xCbxShow && rInAttrs.GetItemState( SCHATTR_LEGEND_SHOW, true, &pPoolItem ) == SfxItemState::SET ) + const SfxBoolItem* pShowItem; + if( m_xCbxShow && (pShowItem = rInAttrs.GetItemIfSet( SCHATTR_LEGEND_SHOW )) ) { - bool bShow = static_cast< const SfxBoolItem * >( pPoolItem )->GetValue(); - m_xCbxShow->set_active(bShow); + m_xCbxShow->set_active(pShowItem->GetValue()); } } diff --git a/chart2/source/controller/dialogs/res_Trendline.cxx b/chart2/source/controller/dialogs/res_Trendline.cxx index ca1fe7bcfb83..3cbba1e59a28 100644 --- a/chart2/source/controller/dialogs/res_Trendline.cxx +++ b/chart2/source/controller/dialogs/res_Trendline.cxx @@ -126,29 +126,27 @@ IMPL_LINK_NOARG(TrendlineResources, SelectTrendLine, weld::Toggleable&, void) void TrendlineResources::Reset( const SfxItemSet& rInAttrs ) { - const SfxPoolItem *pPoolItem = nullptr; - - if( rInAttrs.GetItemState( SCHATTR_REGRESSION_CURVE_NAME, true, &pPoolItem ) == SfxItemState::SET ) + if( const SfxStringItem* pCurveNameItem = rInAttrs.GetItemIfSet( SCHATTR_REGRESSION_CURVE_NAME ) ) { - OUString aName = static_cast< const SfxStringItem* >(pPoolItem)->GetValue(); + OUString aName = pCurveNameItem->GetValue(); m_xEE_Name->set_text(aName); } else { m_xEE_Name->set_text(""); } - if( rInAttrs.GetItemState( SCHATTR_REGRESSION_XNAME, true, &pPoolItem ) == SfxItemState::SET ) + if( const SfxStringItem* pRegressionXNameItem = rInAttrs.GetItemIfSet( SCHATTR_REGRESSION_XNAME ) ) { - OUString aName = static_cast< const SfxStringItem* >(pPoolItem)->GetValue(); + OUString aName = pRegressionXNameItem->GetValue(); m_xEE_XName->set_text(aName); } else { m_xEE_XName->set_text("x"); } - if( rInAttrs.GetItemState( SCHATTR_REGRESSION_YNAME, true, &pPoolItem ) == SfxItemState::SET ) + if( const SfxStringItem* pRegressionYNameItem = rInAttrs.GetItemIfSet( SCHATTR_REGRESSION_YNAME ) ) { - OUString aName = static_cast< const SfxStringItem* >(pPoolItem)->GetValue(); + OUString aName = pRegressionYNameItem->GetValue(); m_xEE_YName->set_text(aName); } else @@ -156,8 +154,9 @@ void TrendlineResources::Reset( const SfxItemSet& rInAttrs ) m_xEE_YName->set_text("f(x)"); } + const SfxPoolItem* pPoolItem = nullptr; SfxItemState aState = rInAttrs.GetItemState( SCHATTR_REGRESSION_TYPE, true, &pPoolItem ); - m_bTrendLineUnique = ( aState != SfxItemState::DONTCARE ); + m_bTrendLineUnique = ( aState != SfxItemState::INVALID ); if( aState == SfxItemState::SET ) { const SvxChartRegressItem * pItem = dynamic_cast< const SvxChartRegressItem * >( pPoolItem ); @@ -167,9 +166,9 @@ void TrendlineResources::Reset( const SfxItemSet& rInAttrs ) } } - if( rInAttrs.GetItemState( SCHATTR_REGRESSION_DEGREE, true, &pPoolItem ) == SfxItemState::SET ) + if( const SfxInt32Item* pDegreeItem = rInAttrs.GetItemIfSet( SCHATTR_REGRESSION_DEGREE ) ) { - sal_Int32 nDegree = static_cast< const SfxInt32Item * >( pPoolItem )->GetValue(); + sal_Int32 nDegree = pDegreeItem->GetValue(); m_xNF_Degree->set_value( nDegree ); } else @@ -179,9 +178,9 @@ void TrendlineResources::Reset( const SfxItemSet& rInAttrs ) m_xNF_Degree->save_value(); - if( rInAttrs.GetItemState( SCHATTR_REGRESSION_PERIOD, true, &pPoolItem ) == SfxItemState::SET ) + if( const SfxInt32Item* pPeriodItem = rInAttrs.GetItemIfSet( SCHATTR_REGRESSION_PERIOD ) ) { - sal_Int32 nPeriod = static_cast< const SfxInt32Item * >( pPoolItem )->GetValue(); + sal_Int32 nPeriod = pPeriodItem->GetValue(); m_xNF_Period->set_value( nPeriod ); } else @@ -192,28 +191,28 @@ void TrendlineResources::Reset( const SfxItemSet& rInAttrs ) m_xNF_Period->save_value(); double nValue = 0.0; - if( rInAttrs.GetItemState( SCHATTR_REGRESSION_EXTRAPOLATE_FORWARD, true, &pPoolItem ) == SfxItemState::SET ) + if( const SvxDoubleItem* pForwardItem = rInAttrs.GetItemIfSet( SCHATTR_REGRESSION_EXTRAPOLATE_FORWARD ) ) { - nValue = static_cast<const SvxDoubleItem*>(pPoolItem)->GetValue() ; + nValue = pForwardItem->GetValue() ; } lcl_setValue(*m_xFmtFld_ExtrapolateForward, nValue); nValue = 0.0; - if( rInAttrs.GetItemState( SCHATTR_REGRESSION_EXTRAPOLATE_BACKWARD, true, &pPoolItem ) == SfxItemState::SET ) + if( const SvxDoubleItem* pBackwardItem = rInAttrs.GetItemIfSet( SCHATTR_REGRESSION_EXTRAPOLATE_BACKWARD ) ) { - nValue = static_cast<const SvxDoubleItem*>(pPoolItem)->GetValue() ; + nValue = pBackwardItem->GetValue() ; } lcl_setValue(*m_xFmtFld_ExtrapolateBackward, nValue); nValue = 0.0; - if( rInAttrs.GetItemState( SCHATTR_REGRESSION_INTERCEPT_VALUE, true, &pPoolItem ) == SfxItemState::SET ) + if( const SvxDoubleItem* pValueItem = rInAttrs.GetItemIfSet( SCHATTR_REGRESSION_INTERCEPT_VALUE ) ) { - nValue = static_cast<const SvxDoubleItem*>(pPoolItem)->GetValue() ; + nValue = pValueItem->GetValue() ; } lcl_setValue(*m_xFmtFld_InterceptValue, nValue); aState = rInAttrs.GetItemState( SCHATTR_REGRESSION_SET_INTERCEPT, true, &pPoolItem ); - if( aState == SfxItemState::DONTCARE ) + if( aState == SfxItemState::INVALID ) { m_xCB_SetIntercept->set_state(TRISTATE_INDET); } @@ -224,7 +223,7 @@ void TrendlineResources::Reset( const SfxItemSet& rInAttrs ) } aState = rInAttrs.GetItemState( SCHATTR_REGRESSION_SHOW_EQUATION, true, &pPoolItem ); - if( aState == SfxItemState::DONTCARE ) + if( aState == SfxItemState::INVALID ) { m_xCB_ShowEquation->set_state(TRISTATE_INDET); } @@ -235,7 +234,7 @@ void TrendlineResources::Reset( const SfxItemSet& rInAttrs ) } aState = rInAttrs.GetItemState( SCHATTR_REGRESSION_SHOW_COEFF, true, &pPoolItem ); - if( aState == SfxItemState::DONTCARE ) + if( aState == SfxItemState::INVALID ) { m_xCB_ShowCorrelationCoeff->set_state(TRISTATE_INDET); } @@ -245,9 +244,9 @@ void TrendlineResources::Reset( const SfxItemSet& rInAttrs ) m_xCB_ShowCorrelationCoeff->set_active( static_cast< const SfxBoolItem * >( pPoolItem )->GetValue()); } - if( rInAttrs.GetItemState( SCHATTR_REGRESSION_MOVING_TYPE, true, &pPoolItem ) == SfxItemState::SET ) + if( const SfxInt32Item* pMovingTypeItem = rInAttrs.GetItemIfSet( SCHATTR_REGRESSION_MOVING_TYPE ) ) { - sal_Int32 nMovingType = static_cast< const SfxInt32Item * >( pPoolItem )->GetValue(); + sal_Int32 nMovingType = pMovingTypeItem->GetValue(); if (nMovingType == MovingAverageType::Prior) m_xCB_RegressionMovingType->set_active(0); else if (nMovingType == MovingAverageType::Central) @@ -373,10 +372,8 @@ void TrendlineResources::UpdateControlStates() m_xFmtFld_InterceptValue->set_sensitive( bInterceptAvailable ); if( bMovingAverage ) { - m_xCB_ShowEquation->set_state(TRISTATE_FALSE); m_xCB_ShowCorrelationCoeff->set_state(TRISTATE_FALSE); } - m_xCB_ShowEquation->set_sensitive( !bMovingAverage ); m_xCB_ShowCorrelationCoeff->set_sensitive( !bMovingAverage ); m_xCB_RegressionMovingType->set_sensitive(bMovingAverage); m_xNF_Period->set_sensitive(bMovingAverage); @@ -429,8 +426,6 @@ void TrendlineResources::SetNbPoints( sal_Int32 nNbPoints ) IMPL_LINK_NOARG(TrendlineResources, ShowEquation, weld::Toggleable&, void) { - m_xEE_XName->set_sensitive(m_xCB_ShowEquation->get_active()); - m_xEE_YName->set_sensitive(m_xCB_ShowEquation->get_active()); UpdateControlStates(); } diff --git a/chart2/source/controller/dialogs/tp_3D_SceneAppearance.cxx b/chart2/source/controller/dialogs/tp_3D_SceneAppearance.cxx index 40dd7b9cd493..adeb27a02501 100644 --- a/chart2/source/controller/dialogs/tp_3D_SceneAppearance.cxx +++ b/chart2/source/controller/dialogs/tp_3D_SceneAppearance.cxx @@ -18,16 +18,13 @@ */ #include "tp_3D_SceneAppearance.hxx" -#include <ChartModelHelper.hxx> #include <ChartModel.hxx> #include <ThreeDHelper.hxx> #include <ControllerLockGuard.hxx> #include <Diagram.hxx> -#include <com/sun/star/beans/XPropertySet.hpp> -#include <com/sun/star/chart2/XDiagram.hpp> #include <com/sun/star/drawing/ShadeMode.hpp> -#include <com/sun/star/frame/XModel.hpp> -#include <tools/diagnose_ex.h> +#include <comphelper/diagnose_ex.hxx> +#include <utility> #include <vcl/svapp.hxx> using namespace ::com::sun::star; @@ -55,10 +52,10 @@ lcl_ModelProperties lcl_getPropertiesFromModel( rtl::Reference<::chart::ChartMod lcl_ModelProperties aProps; try { - rtl::Reference< ::chart::Diagram > xDiagram( ::chart::ChartModelHelper::findDiagram( xModel ) ); + rtl::Reference< ::chart::Diagram > xDiagram( xModel->getFirstChartDiagram() ); xDiagram->getPropertyValue( "D3DSceneShadeMode" ) >>= aProps.m_aShadeMode; ::chart::ThreeDHelper::getRoundedEdgesAndObjectLines( xDiagram, aProps.m_nRoundedEdges, aProps.m_nObjectLines ); - aProps.m_eScheme = ::chart::ThreeDHelper::detectScheme( xDiagram ); + aProps.m_eScheme = xDiagram->detectScheme(); } catch( const uno::Exception & ) { @@ -71,7 +68,7 @@ void lcl_setShadeModeAtModel( rtl::Reference<::chart::ChartModel> const & xModel { try { - rtl::Reference< ::chart::Diagram > xDiaProp = ::chart::ChartModelHelper::findDiagram( xModel ); + rtl::Reference< ::chart::Diagram > xDiaProp = xModel->getFirstChartDiagram(); xDiaProp->setPropertyValue( "D3DSceneShadeMode" , uno::Any( aShadeMode )); } catch( const uno::Exception & ) @@ -90,9 +87,9 @@ namespace chart #define POS_3DSCHEME_CUSTOM 2 ThreeD_SceneAppearance_TabPage::ThreeD_SceneAppearance_TabPage(weld::Container* pParent, - const rtl::Reference<::chart::ChartModel>& xChartModel, + rtl::Reference<::chart::ChartModel> xChartModel, ControllerLockHelper& rControllerLockHelper) - : m_xChartModel(xChartModel) + : m_xChartModel(std::move(xChartModel)) , m_bUpdateOtherControls(true) , m_bCommitToModel(true) , m_rControllerLockHelper(rControllerLockHelper) @@ -161,7 +158,7 @@ void ThreeD_SceneAppearance_TabPage::applyRoundedEdgeAndObjectLinesToModel() // locked controllers ControllerLockHelperGuard aGuard( m_rControllerLockHelper ); ThreeDHelper::setRoundedEdgesAndObjectLines( - ::chart::ChartModelHelper::findDiagram( m_xChartModel ), nCurrentRoundedEdges, nObjectLines ); + m_xChartModel->getFirstChartDiagram(), nCurrentRoundedEdges, nObjectLines ); } void ThreeD_SceneAppearance_TabPage::applyShadeModeToModel() @@ -272,12 +269,12 @@ IMPL_LINK_NOARG(ThreeD_SceneAppearance_TabPage, SelectSchemeHdl, weld::ComboBox& // locked controllers ControllerLockHelperGuard aGuard( m_rControllerLockHelper ); - rtl::Reference< Diagram > xDiagram = ::chart::ChartModelHelper::findDiagram( m_xChartModel ); + rtl::Reference< Diagram > xDiagram = m_xChartModel->getFirstChartDiagram(); if( m_xLB_Scheme->get_active() == POS_3DSCHEME_REALISTIC ) - ThreeDHelper::setScheme( xDiagram, ThreeDLookScheme::ThreeDLookScheme_Realistic ); + xDiagram->setScheme( ThreeDLookScheme::ThreeDLookScheme_Realistic ); else if( m_xLB_Scheme->get_active() == POS_3DSCHEME_SIMPLE ) - ThreeDHelper::setScheme( xDiagram, ThreeDLookScheme::ThreeDLookScheme_Simple ); + xDiagram->setScheme( ThreeDLookScheme::ThreeDLookScheme_Simple ); else { OSL_FAIL( "Invalid Entry selected" ); diff --git a/chart2/source/controller/dialogs/tp_3D_SceneAppearance.hxx b/chart2/source/controller/dialogs/tp_3D_SceneAppearance.hxx index 9d255c076e28..41366251729f 100644 --- a/chart2/source/controller/dialogs/tp_3D_SceneAppearance.hxx +++ b/chart2/source/controller/dialogs/tp_3D_SceneAppearance.hxx @@ -32,7 +32,7 @@ class ThreeD_SceneAppearance_TabPage public: ThreeD_SceneAppearance_TabPage( weld::Container* pParent, - const rtl::Reference<::chart::ChartModel> & xChartModel, + rtl::Reference<::chart::ChartModel> xChartModel, ControllerLockHelper & rControllerLockHelper ); void ActivatePage(); ~ThreeD_SceneAppearance_TabPage(); diff --git a/chart2/source/controller/dialogs/tp_3D_SceneGeometry.cxx b/chart2/source/controller/dialogs/tp_3D_SceneGeometry.cxx index 3a76aa57f6dd..f368a8193a58 100644 --- a/chart2/source/controller/dialogs/tp_3D_SceneGeometry.cxx +++ b/chart2/source/controller/dialogs/tp_3D_SceneGeometry.cxx @@ -19,13 +19,15 @@ #include "tp_3D_SceneGeometry.hxx" -#include <DiagramHelper.hxx> +#include <Diagram.hxx> +#include <ChartType.hxx> #include <ChartTypeHelper.hxx> #include <ThreeDHelper.hxx> #include <ControllerLockGuard.hxx> #include <com/sun/star/drawing/ProjectionMode.hpp> -#include <tools/diagnose_ex.h> +#include <comphelper/diagnose_ex.hxx> #include <tools/helpers.hxx> +#include <utility> #include <vcl/svapp.hxx> namespace chart @@ -44,9 +46,9 @@ void lcl_SetMetricFieldLimits(weld::MetricSpinButton& rField, sal_Int64 nLimit) } ThreeD_SceneGeometry_TabPage::ThreeD_SceneGeometry_TabPage(weld::Container* pParent, - const uno::Reference< beans::XPropertySet > & xSceneProperties, + rtl::Reference< ::chart::Diagram > xDiagram, ControllerLockHelper & rControllerLockHelper) - : m_xSceneProperties( xSceneProperties ) + : m_xDiagram(std::move( xDiagram )) , m_aAngleTimer("chart2 ThreeD_SceneGeometry_TabPage m_aAngleTimer") , m_aPerspectiveTimer("chart2 ThreeD_SceneGeometry_TabPage m_aPerspectiveTimer") , m_nXRotation(0) @@ -66,7 +68,7 @@ ThreeD_SceneGeometry_TabPage::ThreeD_SceneGeometry_TabPage(weld::Container* pPar , m_xMFPerspective(m_xBuilder->weld_metric_spin_button("MTR_FLD_PERSPECTIVE", FieldUnit::PERCENT)) { double fXAngle, fYAngle, fZAngle; - ThreeDHelper::getRotationAngleFromDiagram( m_xSceneProperties, fXAngle, fYAngle, fZAngle ); + m_xDiagram->getRotationAngle( fXAngle, fYAngle, fZAngle ); fXAngle = basegfx::rad2deg(fXAngle); fYAngle = basegfx::rad2deg(fYAngle); @@ -97,12 +99,12 @@ ThreeD_SceneGeometry_TabPage::ThreeD_SceneGeometry_TabPage(weld::Container* pPar m_xMFZRotation->connect_value_changed( aAngleEditedLink ); drawing::ProjectionMode aProjectionMode = drawing::ProjectionMode_PERSPECTIVE; - m_xSceneProperties->getPropertyValue( "D3DScenePerspective" ) >>= aProjectionMode; + m_xDiagram->getPropertyValue( "D3DScenePerspective" ) >>= aProjectionMode; m_xCbxPerspective->set_active( aProjectionMode == drawing::ProjectionMode_PERSPECTIVE ); m_xCbxPerspective->connect_toggled( LINK( this, ThreeD_SceneGeometry_TabPage, PerspectiveToggled )); sal_Int32 nPerspectivePercentage = 20; - m_xSceneProperties->getPropertyValue( "Perspective" ) >>= nPerspectivePercentage; + m_xDiagram->getPropertyValue( "Perspective" ) >>= nPerspectivePercentage; m_xMFPerspective->set_value(nPerspectivePercentage, FieldUnit::PERCENT); m_aPerspectiveTimer.SetTimeout(nTimeout); @@ -111,11 +113,10 @@ ThreeD_SceneGeometry_TabPage::ThreeD_SceneGeometry_TabPage(weld::Container* pPar m_xMFPerspective->set_sensitive( m_xCbxPerspective->get_active() ); //RightAngledAxes - uno::Reference< chart2::XDiagram > xDiagram( m_xSceneProperties, uno::UNO_QUERY ); - if (ChartTypeHelper::isSupportingRightAngledAxes(DiagramHelper::getChartTypeByIndex(xDiagram, 0))) + if (ChartTypeHelper::isSupportingRightAngledAxes(m_xDiagram->getChartTypeByIndex(0))) { bool bRightAngledAxes = false; - m_xSceneProperties->getPropertyValue( "RightAngledAxes" ) >>= bRightAngledAxes; + m_xDiagram->getPropertyValue( "RightAngledAxes" ) >>= bRightAngledAxes; m_xCbxRightAngledAxes->connect_toggled( LINK( this, ThreeD_SceneGeometry_TabPage, RightAngledAxesToggled )); m_xCbxRightAngledAxes->set_active( bRightAngledAxes ); RightAngledAxesToggled(*m_xCbxRightAngledAxes); @@ -157,7 +158,7 @@ void ThreeD_SceneGeometry_TabPage::applyAnglesToModel() fYAngle = basegfx::deg2rad(fYAngle); fZAngle = basegfx::deg2rad(fZAngle); - ThreeDHelper::setRotationAngleToDiagram( m_xSceneProperties, fXAngle, fYAngle, fZAngle ); + m_xDiagram->setRotationAngle( fXAngle, fYAngle, fZAngle ); m_bAngleChangePending = false; m_aAngleTimer.Stop(); @@ -188,8 +189,8 @@ void ThreeD_SceneGeometry_TabPage::applyPerspectiveToModel() try { - m_xSceneProperties->setPropertyValue( "D3DScenePerspective" , uno::Any( aMode )); - m_xSceneProperties->setPropertyValue( "Perspective" , uno::Any( static_cast<sal_Int32>(m_xMFPerspective->get_value(FieldUnit::PERCENT)) )); + m_xDiagram->setPropertyValue( "D3DScenePerspective" , uno::Any( aMode )); + m_xDiagram->setPropertyValue( "Perspective" , uno::Any( static_cast<sal_Int32>(m_xMFPerspective->get_value(FieldUnit::PERCENT)) )); } catch( const uno::Exception & ) { @@ -247,7 +248,8 @@ IMPL_LINK_NOARG(ThreeD_SceneGeometry_TabPage, RightAngledAxesToggled, weld::Togg m_xMFZRotation->set_value(m_nZRotation, FieldUnit::DEGREE); } - ThreeDHelper::switchRightAngledAxes( m_xSceneProperties, m_xCbxRightAngledAxes->get_active() ); + if (m_xDiagram) + m_xDiagram->switchRightAngledAxes( m_xCbxRightAngledAxes->get_active() ); } } //namespace chart diff --git a/chart2/source/controller/dialogs/tp_3D_SceneGeometry.hxx b/chart2/source/controller/dialogs/tp_3D_SceneGeometry.hxx index ca7f75ebea0d..d0fc8a69d667 100644 --- a/chart2/source/controller/dialogs/tp_3D_SceneGeometry.hxx +++ b/chart2/source/controller/dialogs/tp_3D_SceneGeometry.hxx @@ -20,18 +20,20 @@ #include <vcl/timer.hxx> #include <vcl/weld.hxx> +#include <rtl/ref.hxx> namespace com::sun::star::beans { class XPropertySet; } namespace chart { class ControllerLockHelper; } namespace chart { +class Diagram; class ThreeD_SceneGeometry_TabPage { public: ThreeD_SceneGeometry_TabPage(weld::Container* pWindow, - const css::uno::Reference< css::beans::XPropertySet > & xSceneProperties, + rtl::Reference< ::chart::Diagram > xDiagram, ControllerLockHelper & rControllerLockHelper); ~ThreeD_SceneGeometry_TabPage(); @@ -54,7 +56,7 @@ private: void applyAnglesToModel(); void applyPerspectiveToModel(); - css::uno::Reference< css::beans::XPropertySet > m_xSceneProperties; + rtl::Reference< ::chart::Diagram > m_xDiagram; Timer m_aAngleTimer; Timer m_aPerspectiveTimer; diff --git a/chart2/source/controller/dialogs/tp_3D_SceneIllumination.cxx b/chart2/source/controller/dialogs/tp_3D_SceneIllumination.cxx index 56d2d44f9ce6..2650e56fe8a4 100644 --- a/chart2/source/controller/dialogs/tp_3D_SceneIllumination.cxx +++ b/chart2/source/controller/dialogs/tp_3D_SceneIllumination.cxx @@ -29,8 +29,9 @@ #include <svtools/colrdlg.hxx> #include <svx/svx3ditems.hxx> #include <svx/svddef.hxx> +#include <utility> #include <vcl/svapp.hxx> -#include <tools/diagnose_ex.h> +#include <comphelper/diagnose_ex.hxx> #include <com/sun/star/beans/XPropertySet.hpp> @@ -99,7 +100,7 @@ namespace void lcl_selectColor(ColorListBox& rListBox, const Color& rColor) { rListBox.SetNoSelection(); - rListBox.SelectEntry(std::make_pair(rColor, lcl_makeColorName(rColor))); + rListBox.SelectEntry({rColor, lcl_makeColorName(rColor)}); } ::chart::LightSource lcl_getLightSourceFromProperties( @@ -138,7 +139,7 @@ namespace try { xSceneProperties->setPropertyValue( "D3DSceneLightColor" + aIndex, - uno::makeAny( rLightSource.nDiffuseColor )); + uno::Any( rLightSource.nDiffuseColor )); xSceneProperties->setPropertyValue( "D3DSceneLightDirection" + aIndex, uno::Any( rLightSource.aDirection )); xSceneProperties->setPropertyValue( "D3DSceneLightOn" + aIndex, @@ -172,7 +173,7 @@ namespace try { xSceneProperties->setPropertyValue("D3DSceneAmbientColor", - uno::makeAny( rColor )); + uno::Any( rColor )); } catch( const uno::Exception & ) { @@ -183,9 +184,9 @@ namespace ThreeD_SceneIllumination_TabPage::ThreeD_SceneIllumination_TabPage(weld::Container* pParent, weld::Window* pTopLevel, - const uno::Reference< beans::XPropertySet > & xSceneProperties, + uno::Reference< beans::XPropertySet > xSceneProperties, const rtl::Reference<::chart::ChartModel>& xChartModel) - : m_xSceneProperties( xSceneProperties ) + : m_xSceneProperties(std::move( xSceneProperties )) , m_aTimerTriggeredControllerLock( xChartModel ) , m_bInCommitToModel( false ) , m_aModelChangeListener( LINK( this, ThreeD_SceneIllumination_TabPage, fillControlsFromModel ) ) @@ -193,14 +194,14 @@ ThreeD_SceneIllumination_TabPage::ThreeD_SceneIllumination_TabPage(weld::Contain , m_pTopLevel(pTopLevel) , m_xBuilder(Application::CreateBuilder(pParent, "modules/schart/ui/tp_3D_SceneIllumination.ui")) , m_xContainer(m_xBuilder->weld_container("tp_3D_SceneIllumination")) - , m_xBtn_Light1(new LightButton(m_xBuilder->weld_toggle_button("BTN_LIGHT_1"))) - , m_xBtn_Light2(new LightButton(m_xBuilder->weld_toggle_button("BTN_LIGHT_2"))) - , m_xBtn_Light3(new LightButton(m_xBuilder->weld_toggle_button("BTN_LIGHT_3"))) - , m_xBtn_Light4(new LightButton(m_xBuilder->weld_toggle_button("BTN_LIGHT_4"))) - , m_xBtn_Light5(new LightButton(m_xBuilder->weld_toggle_button("BTN_LIGHT_5"))) - , m_xBtn_Light6(new LightButton(m_xBuilder->weld_toggle_button("BTN_LIGHT_6"))) - , m_xBtn_Light7(new LightButton(m_xBuilder->weld_toggle_button("BTN_LIGHT_7"))) - , m_xBtn_Light8(new LightButton(m_xBuilder->weld_toggle_button("BTN_LIGHT_8"))) + , m_aBtn_Light1(m_xBuilder->weld_toggle_button("BTN_LIGHT_1")) + , m_aBtn_Light2(m_xBuilder->weld_toggle_button("BTN_LIGHT_2")) + , m_aBtn_Light3(m_xBuilder->weld_toggle_button("BTN_LIGHT_3")) + , m_aBtn_Light4(m_xBuilder->weld_toggle_button("BTN_LIGHT_4")) + , m_aBtn_Light5(m_xBuilder->weld_toggle_button("BTN_LIGHT_5")) + , m_aBtn_Light6(m_xBuilder->weld_toggle_button("BTN_LIGHT_6")) + , m_aBtn_Light7(m_xBuilder->weld_toggle_button("BTN_LIGHT_7")) + , m_aBtn_Light8(m_xBuilder->weld_toggle_button("BTN_LIGHT_8")) , m_xLB_LightSource(new ColorListBox(m_xBuilder->weld_menu_button("LB_LIGHTSOURCE"), [this]{ return m_pTopLevel; })) , m_xBtn_LightSource_Color(m_xBuilder->weld_button("BTN_LIGHTSOURCE_COLOR")) , m_xLB_AmbientLight(new ColorListBox(m_xBuilder->weld_menu_button("LB_AMBIENTLIGHT"), [this]{ return m_pTopLevel; })) @@ -213,25 +214,25 @@ ThreeD_SceneIllumination_TabPage::ThreeD_SceneIllumination_TabPage(weld::Contain , m_xCtl_Preview(new SvxLightCtl3D(*m_xPreview, *m_xHoriScale, *m_xVertScale, *m_xBtn_Corner)) { m_pLightSourceInfoList.reset(new LightSourceInfo[8]); - m_pLightSourceInfoList[0].pButton = m_xBtn_Light1.get(); - m_pLightSourceInfoList[1].pButton = m_xBtn_Light2.get(); - m_pLightSourceInfoList[2].pButton = m_xBtn_Light3.get(); - m_pLightSourceInfoList[3].pButton = m_xBtn_Light4.get(); - m_pLightSourceInfoList[4].pButton = m_xBtn_Light5.get(); - m_pLightSourceInfoList[5].pButton = m_xBtn_Light6.get(); - m_pLightSourceInfoList[6].pButton = m_xBtn_Light7.get(); - m_pLightSourceInfoList[7].pButton = m_xBtn_Light8.get(); + m_pLightSourceInfoList[0].pButton = &m_aBtn_Light1; + m_pLightSourceInfoList[1].pButton = &m_aBtn_Light2; + m_pLightSourceInfoList[2].pButton = &m_aBtn_Light3; + m_pLightSourceInfoList[3].pButton = &m_aBtn_Light4; + m_pLightSourceInfoList[4].pButton = &m_aBtn_Light5; + m_pLightSourceInfoList[5].pButton = &m_aBtn_Light6; + m_pLightSourceInfoList[6].pButton = &m_aBtn_Light7; + m_pLightSourceInfoList[7].pButton = &m_aBtn_Light8; fillControlsFromModel(nullptr); - m_xBtn_Light1->connect_clicked( LINK( this, ThreeD_SceneIllumination_TabPage, ClickLightSourceButtonHdl ) ); - m_xBtn_Light2->connect_clicked( LINK( this, ThreeD_SceneIllumination_TabPage, ClickLightSourceButtonHdl ) ); - m_xBtn_Light3->connect_clicked( LINK( this, ThreeD_SceneIllumination_TabPage, ClickLightSourceButtonHdl ) ); - m_xBtn_Light4->connect_clicked( LINK( this, ThreeD_SceneIllumination_TabPage, ClickLightSourceButtonHdl ) ); - m_xBtn_Light5->connect_clicked( LINK( this, ThreeD_SceneIllumination_TabPage, ClickLightSourceButtonHdl ) ); - m_xBtn_Light6->connect_clicked( LINK( this, ThreeD_SceneIllumination_TabPage, ClickLightSourceButtonHdl ) ); - m_xBtn_Light7->connect_clicked( LINK( this, ThreeD_SceneIllumination_TabPage, ClickLightSourceButtonHdl ) ); - m_xBtn_Light8->connect_clicked( LINK( this, ThreeD_SceneIllumination_TabPage, ClickLightSourceButtonHdl ) ); + m_aBtn_Light1.connect_clicked( LINK( this, ThreeD_SceneIllumination_TabPage, ClickLightSourceButtonHdl ) ); + m_aBtn_Light2.connect_clicked( LINK( this, ThreeD_SceneIllumination_TabPage, ClickLightSourceButtonHdl ) ); + m_aBtn_Light3.connect_clicked( LINK( this, ThreeD_SceneIllumination_TabPage, ClickLightSourceButtonHdl ) ); + m_aBtn_Light4.connect_clicked( LINK( this, ThreeD_SceneIllumination_TabPage, ClickLightSourceButtonHdl ) ); + m_aBtn_Light5.connect_clicked( LINK( this, ThreeD_SceneIllumination_TabPage, ClickLightSourceButtonHdl ) ); + m_aBtn_Light6.connect_clicked( LINK( this, ThreeD_SceneIllumination_TabPage, ClickLightSourceButtonHdl ) ); + m_aBtn_Light7.connect_clicked( LINK( this, ThreeD_SceneIllumination_TabPage, ClickLightSourceButtonHdl ) ); + m_aBtn_Light8.connect_clicked( LINK( this, ThreeD_SceneIllumination_TabPage, ClickLightSourceButtonHdl ) ); m_xLB_AmbientLight->SetSelectHdl( LINK( this, ThreeD_SceneIllumination_TabPage, SelectColorHdl ) ); m_xLB_LightSource->SetSelectHdl( LINK( this, ThreeD_SceneIllumination_TabPage, SelectColorHdl ) ); @@ -242,13 +243,15 @@ ThreeD_SceneIllumination_TabPage::ThreeD_SceneIllumination_TabPage(weld::Contain m_xCtl_Preview->SetUserInteractiveChangeCallback( LINK( this, ThreeD_SceneIllumination_TabPage, PreviewChangeHdl ) ); m_xCtl_Preview->SetUserSelectionChangeCallback( LINK( this, ThreeD_SceneIllumination_TabPage, PreviewSelectHdl ) ); - ClickLightSourceButtonHdl(*m_xBtn_Light2->get_widget()); + ClickLightSourceButtonHdl(*m_aBtn_Light2.get_widget()); m_aModelChangeListener.startListening( uno::Reference< util::XModifyBroadcaster >(m_xSceneProperties, uno::UNO_QUERY) ); } ThreeD_SceneIllumination_TabPage::~ThreeD_SceneIllumination_TabPage() { + // drop page view before the widget it paints to is destroyed + m_xPreview->ClearPageView(); } IMPL_LINK_NOARG(ThreeD_SceneIllumination_TabPage, fillControlsFromModel, void*, void) diff --git a/chart2/source/controller/dialogs/tp_3D_SceneIllumination.hxx b/chart2/source/controller/dialogs/tp_3D_SceneIllumination.hxx index 7ad91e225d37..98a1f3273620 100644 --- a/chart2/source/controller/dialogs/tp_3D_SceneIllumination.hxx +++ b/chart2/source/controller/dialogs/tp_3D_SceneIllumination.hxx @@ -22,6 +22,7 @@ #include <TimerTriggeredControllerLock.hxx> #include <vcl/weld.hxx> #include <svx/dlgctl3d.hxx> +#include <svx/float3d.hxx> namespace com::sun::star::beans { @@ -29,7 +30,6 @@ class XPropertySet; } class ColorListBox; -class LightButton; namespace chart { @@ -39,10 +39,9 @@ class ChartModel; class ThreeD_SceneIllumination_TabPage { public: - ThreeD_SceneIllumination_TabPage( - weld::Container* pParent, weld::Window* pTopLevel, - const css::uno::Reference<css::beans::XPropertySet>& xSceneProperties, - const rtl::Reference<::chart::ChartModel>& xChartModel); + ThreeD_SceneIllumination_TabPage(weld::Container* pParent, weld::Window* pTopLevel, + css::uno::Reference<css::beans::XPropertySet> xSceneProperties, + const rtl::Reference<::chart::ChartModel>& xChartModel); ~ThreeD_SceneIllumination_TabPage(); private: @@ -74,14 +73,14 @@ private: weld::Window* m_pTopLevel; std::unique_ptr<weld::Builder> m_xBuilder; std::unique_ptr<weld::Container> m_xContainer; - std::unique_ptr<LightButton> m_xBtn_Light1; - std::unique_ptr<LightButton> m_xBtn_Light2; - std::unique_ptr<LightButton> m_xBtn_Light3; - std::unique_ptr<LightButton> m_xBtn_Light4; - std::unique_ptr<LightButton> m_xBtn_Light5; - std::unique_ptr<LightButton> m_xBtn_Light6; - std::unique_ptr<LightButton> m_xBtn_Light7; - std::unique_ptr<LightButton> m_xBtn_Light8; + LightButton m_aBtn_Light1; + LightButton m_aBtn_Light2; + LightButton m_aBtn_Light3; + LightButton m_aBtn_Light4; + LightButton m_aBtn_Light5; + LightButton m_aBtn_Light6; + LightButton m_aBtn_Light7; + LightButton m_aBtn_Light8; std::unique_ptr<ColorListBox> m_xLB_LightSource; std::unique_ptr<weld::Button> m_xBtn_LightSource_Color; std::unique_ptr<ColorListBox> m_xLB_AmbientLight; diff --git a/chart2/source/controller/dialogs/tp_AxisLabel.cxx b/chart2/source/controller/dialogs/tp_AxisLabel.cxx index 1ee392238141..79976618341c 100644 --- a/chart2/source/controller/dialogs/tp_AxisLabel.cxx +++ b/chart2/source/controller/dialogs/tp_AxisLabel.cxx @@ -48,12 +48,11 @@ SchAxisLabelTabPage::SchAxisLabelTabPage(weld::Container* pPage, weld::DialogCon , m_xCbTextOverlap(m_xBuilder->weld_check_button("overlapCB")) , m_xCbTextBreak(m_xBuilder->weld_check_button("breakCB")) , m_xFtABCD(m_xBuilder->weld_label("labelABCD")) - , m_xFlOrient(m_xBuilder->weld_label("labelTextOrient")) , m_xFtRotate(m_xBuilder->weld_label("degreeL")) , m_xNfRotate(m_xBuilder->weld_metric_spin_button("OrientDegree", FieldUnit::DEGREE)) , m_xCbStacked(m_xBuilder->weld_check_button("stackedCB")) , m_xFtTextDirection(m_xBuilder->weld_label("textdirL")) - , m_xLbTextDirection(new TextDirectionListBox(m_xBuilder->weld_combo_box("textdirLB"))) + , m_aLbTextDirection(m_xBuilder->weld_combo_box("textdirLB")) , m_xCtrlDial(new svx::DialControl) , m_xCtrlDialWin(new weld::CustomWeld(*m_xBuilder, "dialCtrl", *m_xCtrlDial)) { @@ -72,7 +71,6 @@ SchAxisLabelTabPage::~SchAxisLabelTabPage() { m_xCtrlDialWin.reset(); m_xCtrlDial.reset(); - m_xLbTextDirection.reset(); } std::unique_ptr<SfxTabPage> SchAxisLabelTabPage::Create(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet* rAttrs) @@ -124,8 +122,8 @@ bool SchAxisLabelTabPage::FillItemSet( SfxItemSet* rOutAttrs ) if( m_xCbShowDescription->get_state() != TRISTATE_INDET ) rOutAttrs->Put( SfxBoolItem( SCHATTR_AXIS_SHOWDESCR, m_xCbShowDescription->get_active() ) ); - if (m_xLbTextDirection->get_active() != -1) - rOutAttrs->Put( SvxFrameDirectionItem( m_xLbTextDirection->get_active_id(), EE_PARA_WRITINGDIR ) ); + if (m_aLbTextDirection.get_active() != -1) + rOutAttrs->Put( SvxFrameDirectionItem( m_aLbTextDirection.get_active_id(), EE_PARA_WRITINGDIR ) ); return true; } @@ -136,7 +134,7 @@ void SchAxisLabelTabPage::Reset( const SfxItemSet* rInAttrs ) // show description SfxItemState aState = rInAttrs->GetItemState( SCHATTR_AXIS_SHOWDESCR, false, &pPoolItem ); - if( aState == SfxItemState::DONTCARE ) + if( aState == SfxItemState::INVALID ) { m_xCbShowDescription->set_state( TRISTATE_INDET ); } @@ -159,7 +157,7 @@ void SchAxisLabelTabPage::Reset( const SfxItemSet* rInAttrs ) if( aState == SfxItemState::SET ) m_nInitialDegrees = static_cast< const SdrAngleItem * >( pPoolItem )->GetValue(); - m_bHasInitialDegrees = aState != SfxItemState::DONTCARE; + m_bHasInitialDegrees = aState != SfxItemState::INVALID; if( m_bHasInitialDegrees ) m_xCtrlDial->SetRotation( m_nInitialDegrees ); else @@ -171,19 +169,19 @@ void SchAxisLabelTabPage::Reset( const SfxItemSet* rInAttrs ) if( aState == SfxItemState::SET ) m_bInitialStacking = static_cast< const SfxBoolItem * >( pPoolItem )->GetValue(); - m_bHasInitialStacking = aState != SfxItemState::DONTCARE; + m_bHasInitialStacking = aState != SfxItemState::INVALID; if( m_bHasInitialDegrees ) m_xCbStacked->set_state(m_bInitialStacking ? TRISTATE_TRUE : TRISTATE_FALSE); else m_xCbStacked->set_state(TRISTATE_INDET); StackedToggleHdl(*m_xCbStacked); - if( rInAttrs->GetItemState( EE_PARA_WRITINGDIR, true, &pPoolItem ) == SfxItemState::SET ) - m_xLbTextDirection->set_active_id( static_cast<const SvxFrameDirectionItem*>(pPoolItem)->GetValue() ); + if( const SvxFrameDirectionItem* pDirectionItem = rInAttrs->GetItemIfSet( EE_PARA_WRITINGDIR ) ) + m_aLbTextDirection.set_active_id( pDirectionItem->GetValue() ); // Text overlap ---------- aState = rInAttrs->GetItemState( SCHATTR_AXIS_LABEL_OVERLAP, false, &pPoolItem ); - if( aState == SfxItemState::DONTCARE ) + if( aState == SfxItemState::INVALID ) { m_xCbTextOverlap->set_state( TRISTATE_INDET ); } @@ -200,7 +198,7 @@ void SchAxisLabelTabPage::Reset( const SfxItemSet* rInAttrs ) // text break ---------- aState = rInAttrs->GetItemState( SCHATTR_AXIS_LABEL_BREAK, false, &pPoolItem ); - if( aState == SfxItemState::DONTCARE ) + if( aState == SfxItemState::INVALID ) { m_xCbTextBreak->set_state( TRISTATE_INDET ); } @@ -222,10 +220,9 @@ void SchAxisLabelTabPage::Reset( const SfxItemSet* rInAttrs ) // text order ---------- if( m_bShowStaggeringControls ) { - aState = rInAttrs->GetItemState( SCHATTR_AXIS_LABEL_ORDER, false, &pPoolItem ); - if( aState == SfxItemState::SET ) + if( const SvxChartTextOrderItem* pOrderItem = rInAttrs->GetItemIfSet( SCHATTR_AXIS_LABEL_ORDER, false ) ) { - SvxChartTextOrder eOrder = static_cast< const SvxChartTextOrderItem * >( pPoolItem )->GetValue(); + SvxChartTextOrder eOrder = pOrderItem->GetValue(); switch( eOrder ) { @@ -296,7 +293,7 @@ IMPL_LINK_NOARG(SchAxisLabelTabPage, ToggleShowLabel, weld::Toggleable&, void) m_xCbTextBreak->set_sensitive( bEnable ); m_xFtTextDirection->set_sensitive( bEnable ); - m_xLbTextDirection->set_sensitive( bEnable ); + m_aLbTextDirection.set_sensitive( bEnable ); } } //namespace chart diff --git a/chart2/source/controller/dialogs/tp_AxisLabel.hxx b/chart2/source/controller/dialogs/tp_AxisLabel.hxx index a94a030fe9a1..75704ec4e4d5 100644 --- a/chart2/source/controller/dialogs/tp_AxisLabel.hxx +++ b/chart2/source/controller/dialogs/tp_AxisLabel.hxx @@ -21,8 +21,8 @@ #include <sfx2/tabdlg.hxx> #include <svx/dialcontrol.hxx> #include <tools/degree.hxx> +#include <TextDirectionListBox.hxx> -namespace chart { class TextDirectionListBox; } namespace weld { class CheckButton; class CustomWeld; @@ -56,12 +56,11 @@ private: std::unique_ptr<weld::CheckButton> m_xCbTextOverlap; std::unique_ptr<weld::CheckButton> m_xCbTextBreak; std::unique_ptr<weld::Label> m_xFtABCD; - std::unique_ptr<weld::Label> m_xFlOrient; std::unique_ptr<weld::Label> m_xFtRotate; std::unique_ptr<weld::MetricSpinButton> m_xNfRotate; std::unique_ptr<weld::CheckButton> m_xCbStacked; std::unique_ptr<weld::Label> m_xFtTextDirection; - std::unique_ptr<TextDirectionListBox> m_xLbTextDirection; + TextDirectionListBox m_aLbTextDirection; std::unique_ptr<svx::DialControl> m_xCtrlDial; std::unique_ptr<weld::CustomWeld> m_xCtrlDialWin; diff --git a/chart2/source/controller/dialogs/tp_AxisPositions.cxx b/chart2/source/controller/dialogs/tp_AxisPositions.cxx index 6812e9f94818..2e3988267c77 100644 --- a/chart2/source/controller/dialogs/tp_AxisPositions.cxx +++ b/chart2/source/controller/dialogs/tp_AxisPositions.cxx @@ -42,13 +42,11 @@ AxisPositionsTabPage::AxisPositionsTabPage(weld::Container* pPage, weld::DialogC , m_xLB_CrossesAt(m_xBuilder->weld_combo_box("LB_CROSSES_OTHER_AXIS_AT")) , m_xED_CrossesAt(m_xBuilder->weld_formatted_spin_button("EDT_CROSSES_OTHER_AXIS_AT")) , m_xED_CrossesAtCategory(m_xBuilder->weld_combo_box( "EDT_CROSSES_OTHER_AXIS_AT_CATEGORY")) - , m_xCB_AxisBetweenCategories(m_xBuilder->weld_check_button("CB_AXIS_BETWEEN_CATEGORIES")) , m_xFL_Position(m_xBuilder->weld_frame("FL_POSITION")) , m_xRB_On(m_xBuilder->weld_radio_button("RB_ON")) , m_xRB_Between(m_xBuilder->weld_radio_button("RB_BETWEEN")) , m_xFL_Labels(m_xBuilder->weld_frame("FL_LABELS")) , m_xLB_PlaceLabels(m_xBuilder->weld_combo_box("LB_PLACE_LABELS")) - , m_xED_LabelDistance(m_xBuilder->weld_formatted_spin_button("EDT_AXIS_LABEL_DISTANCE")) , m_xCB_TicksInner(m_xBuilder->weld_check_button("CB_TICKS_INNER")) , m_xCB_TicksOuter(m_xBuilder->weld_check_button("CB_TICKS_OUTER")) , m_xCB_MinorInner(m_xBuilder->weld_check_button("CB_MINOR_INNER")) @@ -100,8 +98,8 @@ bool AxisPositionsTabPage::FillItemSet(SfxItemSet* rOutAttrs) rOutAttrs->Put( SfxInt32Item( SCHATTR_AXIS_LABEL_POSITION, nLabelPos )); // tick marks - tools::Long nTicks=0; - tools::Long nMinorTicks=0; + sal_Int32 nTicks=0; + sal_Int32 nMinorTicks=0; if(m_xCB_MinorInner->get_active()) nMinorTicks|=CHAXIS_MARK_INNER; @@ -129,7 +127,7 @@ void AxisPositionsTabPage::Reset(const SfxItemSet* rInAttrs) m_xED_CrossesAtCategory->set_visible( m_bCrossingAxisIsCategoryAxis ); if (m_bCrossingAxisIsCategoryAxis) { - for( auto const & cat : std::as_const(m_aCategories) ) + for (auto const& cat : m_aCategories) m_xED_CrossesAtCategory->append_text(cat); } @@ -142,13 +140,12 @@ void AxisPositionsTabPage::Reset(const SfxItemSet* rInAttrs) } //fill controls - const SfxPoolItem *pPoolItem = nullptr; //axis line - if(rInAttrs->GetItemState(SCHATTR_AXIS_POSITION,true, &pPoolItem)== SfxItemState::SET) + if(SfxInt32Item const * pPositionItem = rInAttrs->GetItemIfSet(SCHATTR_AXIS_POSITION)) { bool bZero = false; - sal_Int32 nPos = static_cast< const SfxInt32Item * >( pPoolItem )->GetValue(); + sal_Int32 nPos = pPositionItem->GetValue(); if(nPos==0) { //switch to value @@ -162,11 +159,12 @@ void AxisPositionsTabPage::Reset(const SfxItemSet* rInAttrs) m_xLB_CrossesAt->set_active( nPos ); CrossesAtSelectHdl( *m_xLB_CrossesAt ); - if( rInAttrs->GetItemState(SCHATTR_AXIS_POSITION_VALUE,true, &pPoolItem)== SfxItemState::SET || bZero ) + const SvxDoubleItem* pPosValueItem; + if( (pPosValueItem = rInAttrs->GetItemIfSet(SCHATTR_AXIS_POSITION_VALUE)) || bZero ) { double fCrossover = 0.0; if( !bZero ) - fCrossover = static_cast<const SvxDoubleItem*>(pPoolItem)->GetValue(); + fCrossover = pPosValueItem->GetValue(); if( m_bCrossingAxisIsCategoryAxis ) m_xED_CrossesAtCategory->set_active( static_cast<sal_uInt16>(::rtl::math::round(fCrossover-1.0)) ); else @@ -188,9 +186,10 @@ void AxisPositionsTabPage::Reset(const SfxItemSet* rInAttrs) } // shifted category position - if (m_bSupportCategoryPositioning && rInAttrs->GetItemState(SCHATTR_AXIS_SHIFTED_CATEGORY_POSITION, true, &pPoolItem) == SfxItemState::SET) + const SfxBoolItem* pCatPosItem; + if (m_bSupportCategoryPositioning && (pCatPosItem = rInAttrs->GetItemIfSet(SCHATTR_AXIS_SHIFTED_CATEGORY_POSITION))) { - if (static_cast<const SfxBoolItem*>(pPoolItem)->GetValue()) + if (pCatPosItem->GetValue()) m_xRB_Between->set_active(true); else m_xRB_On->set_active(true); @@ -199,9 +198,9 @@ void AxisPositionsTabPage::Reset(const SfxItemSet* rInAttrs) m_xFL_Position->hide(); // Labels - if( rInAttrs->GetItemState( SCHATTR_AXIS_LABEL_POSITION, false, &pPoolItem ) == SfxItemState::SET ) + if( const SfxInt32Item* pLabelPosItem = rInAttrs->GetItemIfSet( SCHATTR_AXIS_LABEL_POSITION, false) ) { - sal_Int32 nPos = static_cast< const SfxInt32Item * >( pPoolItem )->GetValue(); + sal_Int32 nPos = pLabelPosItem->GetValue(); if( nPos < m_xLB_PlaceLabels->get_count() ) m_xLB_PlaceLabels->set_active( nPos ); } @@ -211,10 +210,10 @@ void AxisPositionsTabPage::Reset(const SfxItemSet* rInAttrs) // Tick marks tools::Long nTicks = 0, nMinorTicks = 0; - if (rInAttrs->GetItemState(SCHATTR_AXIS_TICKS,true, &pPoolItem)== SfxItemState::SET) - nTicks = static_cast<const SfxInt32Item*>(pPoolItem)->GetValue(); - if (rInAttrs->GetItemState(SCHATTR_AXIS_HELPTICKS,true, &pPoolItem)== SfxItemState::SET) - nMinorTicks = static_cast<const SfxInt32Item*>(pPoolItem)->GetValue(); + if (const SfxInt32Item* pTicksItem = rInAttrs->GetItemIfSet(SCHATTR_AXIS_TICKS)) + nTicks = pTicksItem->GetValue(); + if (const SfxInt32Item* pHelpTicksItem = rInAttrs->GetItemIfSet(SCHATTR_AXIS_HELPTICKS)) + nMinorTicks = pHelpTicksItem->GetValue(); m_xCB_TicksInner->set_active(bool(nTicks&CHAXIS_MARK_INNER)); m_xCB_TicksOuter->set_active(bool(nTicks&CHAXIS_MARK_OUTER)); @@ -222,9 +221,9 @@ void AxisPositionsTabPage::Reset(const SfxItemSet* rInAttrs) m_xCB_MinorOuter->set_active(bool(nMinorTicks&CHAXIS_MARK_OUTER)); // Tick position - if( rInAttrs->GetItemState( SCHATTR_AXIS_MARK_POSITION, false, &pPoolItem ) == SfxItemState::SET ) + if( const SfxInt32Item* pMarkPosItem = rInAttrs->GetItemIfSet( SCHATTR_AXIS_MARK_POSITION, false) ) { - sal_Int32 nPos = static_cast< const SfxInt32Item * >( pPoolItem )->GetValue(); + sal_Int32 nPos = pMarkPosItem->GetValue(); if( nPos < m_xLB_PlaceTicks->get_count() ) m_xLB_PlaceTicks->set_active( nPos ); } @@ -261,10 +260,9 @@ void AxisPositionsTabPage::SetNumFormatter( SvNumberFormatter* pFormatter ) rCrossFormatter.SetFormatter(m_pNumFormatter); rCrossFormatter.UseInputStringForFormatting(); - const SfxPoolItem *pPoolItem = nullptr; - if( GetItemSet().GetItemState( SCHATTR_AXIS_CROSSING_MAIN_AXIS_NUMBERFORMAT, true, &pPoolItem ) == SfxItemState::SET ) + if( const SfxUInt32Item* pNumFormatItem = GetItemSet().GetItemIfSet(SCHATTR_AXIS_CROSSING_MAIN_AXIS_NUMBERFORMAT) ) { - sal_uLong nFmt = static_cast<const SfxUInt32Item*>(pPoolItem)->GetValue(); + sal_uInt32 nFmt = pNumFormatItem->GetValue(); rCrossFormatter.SetFormatKey(nFmt); } } @@ -297,7 +295,7 @@ IMPL_LINK_NOARG(AxisPositionsTabPage, CrossesAtSelectHdl, weld::ComboBox&, void) if (m_xED_CrossesAt->get_text().isEmpty()) m_xED_CrossesAt->GetFormatter().SetValue(0.0); - if (m_xED_CrossesAtCategory->get_active() == -1) + if (m_xED_CrossesAtCategory->get_active() == -1 && m_xED_CrossesAtCategory->get_count()) m_xED_CrossesAtCategory->set_active(0); PlaceLabelsSelectHdl(*m_xLB_PlaceLabels); diff --git a/chart2/source/controller/dialogs/tp_AxisPositions.hxx b/chart2/source/controller/dialogs/tp_AxisPositions.hxx index d7f18242dd42..86f749a26850 100644 --- a/chart2/source/controller/dialogs/tp_AxisPositions.hxx +++ b/chart2/source/controller/dialogs/tp_AxisPositions.hxx @@ -60,7 +60,6 @@ private: //member: std::unique_ptr<weld::ComboBox> m_xLB_CrossesAt; std::unique_ptr<weld::FormattedSpinButton> m_xED_CrossesAt; std::unique_ptr<weld::ComboBox> m_xED_CrossesAtCategory; - std::unique_ptr<weld::CheckButton> m_xCB_AxisBetweenCategories; std::unique_ptr<weld::Frame> m_xFL_Position; std::unique_ptr<weld::RadioButton> m_xRB_On; @@ -68,7 +67,6 @@ private: //member: std::unique_ptr<weld::Frame> m_xFL_Labels; std::unique_ptr<weld::ComboBox> m_xLB_PlaceLabels; - std::unique_ptr<weld::FormattedSpinButton> m_xED_LabelDistance; std::unique_ptr<weld::CheckButton> m_xCB_TicksInner; std::unique_ptr<weld::CheckButton> m_xCB_TicksOuter; diff --git a/chart2/source/controller/dialogs/tp_ChartType.cxx b/chart2/source/controller/dialogs/tp_ChartType.cxx index f5eec8625bc7..b301a9794d5d 100644 --- a/chart2/source/controller/dialogs/tp_ChartType.cxx +++ b/chart2/source/controller/dialogs/tp_ChartType.cxx @@ -22,27 +22,24 @@ #include <ChartTypeManager.hxx> #include <strings.hrc> #include <ResId.hxx> -#include <ChartModelHelper.hxx> #include <ChartModel.hxx> #include <ChartTypeTemplate.hxx> -#include <DiagramHelper.hxx> #include <Diagram.hxx> #include <unonames.hxx> -#include <com/sun/star/lang/XMultiServiceFactory.hpp> -#include <com/sun/star/chart2/XChartDocument.hpp> #include <svtools/valueset.hxx> +#include <utility> #include <vcl/weld.hxx> #include <vcl/outdev.hxx> -#include <tools/diagnose_ex.h> +#include <comphelper/diagnose_ex.hxx> namespace chart { using namespace ::com::sun::star; using namespace ::com::sun::star::chart2; -ChartTypeTabPage::ChartTypeTabPage(weld::Container* pPage, weld::DialogController* pController, const rtl::Reference<::chart::ChartModel>& xChartModel, +ChartTypeTabPage::ChartTypeTabPage(weld::Container* pPage, weld::DialogController* pController, rtl::Reference<::chart::ChartModel> xChartModel, bool bShowDescription) : OWizardPage(pPage, pController, "modules/schart/ui/tp_ChartType.ui", "tp_ChartType") , m_pDim3DLookResourceGroup( new Dim3DLookResourceGroup(m_xBuilder.get()) ) @@ -50,7 +47,7 @@ ChartTypeTabPage::ChartTypeTabPage(weld::Container* pPage, weld::DialogControlle , m_pSplineResourceGroup( new SplineResourceGroup(m_xBuilder.get(), pController->getDialog()) ) , m_pGeometryResourceGroup( new GeometryResourceGroup(m_xBuilder.get()) ) , m_pSortByXValuesResourceGroup( new SortByXValuesResourceGroup(m_xBuilder.get()) ) - , m_xChartModel( xChartModel ) + , m_xChartModel(std::move( xChartModel )) , m_aChartTypeDialogControllerList(0) , m_pCurrentMainType(nullptr) , m_nChangingCalls(0) @@ -79,7 +76,7 @@ ChartTypeTabPage::ChartTypeTabPage(weld::Container* pPage, weld::DialogControlle m_xSubTypeList->SetStyle(m_xSubTypeList->GetStyle() | WB_ITEMBORDER | WB_DOUBLEBORDER | WB_NAMEFIELD | WB_FLATVALUESET | WB_3DLOOK ); - m_xSubTypeList->SetColCount(4); + m_xSubTypeList->SetColCount(6); m_xSubTypeList->SetLineCount(1); bool bEnableComplexChartTypes = true; @@ -181,9 +178,9 @@ void ChartTypeTabPage::stateChanged() commitToModel( aParameter ); //detect the new ThreeDLookScheme - rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram(m_xChartModel); + rtl::Reference< Diagram > xDiagram = m_xChartModel->getFirstChartDiagram(); // tdf#124295 - select always a 3D scheme - if (ThreeDLookScheme aThreeDLookScheme = ThreeDHelper::detectScheme(xDiagram); + if (ThreeDLookScheme aThreeDLookScheme = xDiagram->detectScheme(); aThreeDLookScheme != ThreeDLookScheme::ThreeDLookScheme_Unknown) aParameter.eThreeDLookScheme = aThreeDLookScheme; @@ -246,15 +243,18 @@ void ChartTypeTabPage::selectMainType() m_pCurrentMainType->adjustParameterToMainType( aParameter ); commitToModel( aParameter ); //detect the new ThreeDLookScheme - aParameter.eThreeDLookScheme = ThreeDHelper::detectScheme( ChartModelHelper::findDiagram( m_xChartModel ) ); + aParameter.eThreeDLookScheme = ThreeDLookScheme::ThreeDLookScheme_Unknown; + rtl::Reference< Diagram > xDiagram = m_xChartModel->getFirstChartDiagram(); + if (xDiagram) + aParameter.eThreeDLookScheme = m_xChartModel->getFirstChartDiagram()->detectScheme(); if (!aParameter.b3DLook && aParameter.eThreeDLookScheme != ThreeDLookScheme::ThreeDLookScheme_Realistic) aParameter.eThreeDLookScheme = ThreeDLookScheme::ThreeDLookScheme_Realistic; - rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram(m_xChartModel); try { - xDiagram->getPropertyValue(CHART_UNONAME_SORT_BY_XVALUES) >>= aParameter.bSortByXValues; + if (xDiagram) + xDiagram->getPropertyValue(CHART_UNONAME_SORT_BY_XVALUES) >>= aParameter.bSortByXValues; } catch ( const uno::Exception& ) { @@ -305,9 +305,10 @@ void ChartTypeTabPage::initializePage() if( !m_xChartModel.is() ) return; rtl::Reference< ::chart::ChartTypeManager > xChartTypeManager = m_xChartModel->getTypeManager(); - rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram( m_xChartModel ); - DiagramHelper::tTemplateWithServiceName aTemplate = - DiagramHelper::getTemplateForDiagram( xDiagram, xChartTypeManager ); + rtl::Reference< Diagram > xDiagram = m_xChartModel->getFirstChartDiagram(); + Diagram::tTemplateWithServiceName aTemplate; + if (xDiagram) + aTemplate = xDiagram->getTemplate( xChartTypeManager ); OUString aServiceName( aTemplate.sServiceName ); bool bFound = false; @@ -326,7 +327,7 @@ void ChartTypeTabPage::initializePage() m_pCurrentMainType = getSelectedMainType(); //set ThreeDLookScheme - aParameter.eThreeDLookScheme = ThreeDHelper::detectScheme( xDiagram ); + aParameter.eThreeDLookScheme = xDiagram->detectScheme(); if (!aParameter.b3DLook && aParameter.eThreeDLookScheme != ThreeDLookScheme::ThreeDLookScheme_Realistic) aParameter.eThreeDLookScheme = ThreeDLookScheme::ThreeDLookScheme_Realistic; diff --git a/chart2/source/controller/dialogs/tp_ChartType.hxx b/chart2/source/controller/dialogs/tp_ChartType.hxx index 34ed8abf2327..c01b599f58d5 100644 --- a/chart2/source/controller/dialogs/tp_ChartType.hxx +++ b/chart2/source/controller/dialogs/tp_ChartType.hxx @@ -45,7 +45,7 @@ class ChartTypeTabPage final : public ResourceChangeListener, public vcl::OWizar { public: ChartTypeTabPage( weld::Container* pPage, weld::DialogController* pController - , const rtl::Reference<::chart::ChartModel>& xChartModel + , rtl::Reference<::chart::ChartModel> xChartModel , bool bShowDescription = true ); virtual ~ChartTypeTabPage() override; diff --git a/chart2/source/controller/dialogs/tp_DataPointOption.cxx b/chart2/source/controller/dialogs/tp_DataPointOption.cxx index 7fb9f230ed7e..4c824287206c 100644 --- a/chart2/source/controller/dialogs/tp_DataPointOption.cxx +++ b/chart2/source/controller/dialogs/tp_DataPointOption.cxx @@ -53,12 +53,10 @@ bool DataPointOptionTabPage::FillItemSet(SfxItemSet* rOutAttrs) void DataPointOptionTabPage::Reset(const SfxItemSet* rInAttrs) { - const SfxPoolItem* pPoolItem = nullptr; - - if (rInAttrs->GetItemState(SCHATTR_HIDE_DATA_POINT_LEGEND_ENTRY, true, &pPoolItem) - == SfxItemState::SET) + if (const SfxBoolItem* pEntryItem + = rInAttrs->GetItemIfSet(SCHATTR_HIDE_DATA_POINT_LEGEND_ENTRY)) { - bool bVal = static_cast<const SfxBoolItem*>(pPoolItem)->GetValue(); + bool bVal = pEntryItem->GetValue(); m_xCBHideLegendEntry->set_active(bVal); } } diff --git a/chart2/source/controller/dialogs/tp_DataSource.cxx b/chart2/source/controller/dialogs/tp_DataSource.cxx index 45c00bfefb4c..fe4ba0981599 100644 --- a/chart2/source/controller/dialogs/tp_DataSource.cxx +++ b/chart2/source/controller/dialogs/tp_DataSource.cxx @@ -20,36 +20,32 @@ #include "tp_DataSource.hxx" #include <strings.hrc> #include <ResId.hxx> +#include <ChartType.hxx> #include <ChartTypeTemplateProvider.hxx> #include <ChartTypeTemplate.hxx> #include <ChartModel.hxx> #include <RangeSelectionHelper.hxx> +#include <DataSeries.hxx> #include <DataSeriesHelper.hxx> #include <ControllerLockGuard.hxx> #include <DataSourceHelper.hxx> +#include <LabeledDataSequence.hxx> #include "DialogModel.hxx" #include <o3tl/safeint.hxx> #include <TabPageNotifiable.hxx> -#include <com/sun/star/chart2/XChartType.hpp> -#include <com/sun/star/chart2/XDataSeries.hpp> -#include <com/sun/star/chart2/XDataSeriesContainer.hpp> #include <com/sun/star/chart2/data/XDataProvider.hpp> -#include <com/sun/star/frame/XModel.hpp> -#include <com/sun/star/util/XModifiable.hpp> -#include <com/sun/star/chart2/data/XDataSink.hpp> -#include <tools/diagnose_ex.h> +#include <comphelper/diagnose_ex.hxx> using namespace ::com::sun::star; using namespace ::com::sun::star::chart2; using ::com::sun::star::uno::Reference; -using ::com::sun::star::uno::Sequence; namespace { -constexpr OUStringLiteral lcl_aLabelRole( u"label" ); +constexpr OUString lcl_aLabelRole( u"label"_ustr ); void lcl_UpdateCurrentRange(weld::TreeView& rOutListBox, const OUString & rRole, const OUString& rRange) @@ -59,7 +55,7 @@ void lcl_UpdateCurrentRange(weld::TreeView& rOutListBox, const OUString & rRole, { rOutListBox.set_text(nEntry, ::chart::DialogModel::ConvertRoleFromInternalToUI(rRole), 0); rOutListBox.set_text(nEntry, rRange, 1); - ::chart::SeriesEntry* pEntry = reinterpret_cast<::chart::SeriesEntry*>(rOutListBox.get_id(nEntry).toInt64()); + ::chart::SeriesEntry* pEntry = weld::fromId<::chart::SeriesEntry*>(rOutListBox.get_id(nEntry)); pEntry->m_sRole = rRole; } } @@ -71,11 +67,10 @@ bool lcl_UpdateCurrentSeriesName(weld::TreeView& rOutListBox) return false; bool bResult = false; - ::chart::SeriesEntry * pEntry = reinterpret_cast<::chart::SeriesEntry*>(rOutListBox.get_id(nEntry).toInt64()); + ::chart::SeriesEntry * pEntry = weld::fromId<::chart::SeriesEntry*>(rOutListBox.get_id(nEntry)); if (pEntry->m_xDataSeries.is() && pEntry->m_xChartType.is()) { - OUString aLabel(::chart::DataSeriesHelper::getDataSeriesLabel( - pEntry->m_xDataSeries, + OUString aLabel(pEntry->m_xDataSeries->getLabelForRole( pEntry->m_xChartType->getRoleOfSequenceForSeriesLabel())); if (!aLabel.isEmpty()) { @@ -93,7 +88,7 @@ OUString lcl_GetSelectedRole(const weld::TreeView& rRoleListBox, bool bUITransla { if (bUITranslated) return rRoleListBox.get_text(nEntry); - ::chart::SeriesEntry* pEntry = reinterpret_cast<::chart::SeriesEntry*>(rRoleListBox.get_id(nEntry).toInt64()); + ::chart::SeriesEntry* pEntry = weld::fromId<::chart::SeriesEntry*>(rRoleListBox.get_id(nEntry)); return pEntry->m_sRole; } return OUString(); @@ -126,32 +121,29 @@ void lcl_enableRangeChoosing(bool bEnable, weld::DialogController* pDialog) } void lcl_addLSequenceToDataSource( - const Reference< chart2::data::XLabeledDataSequence > & xLSequence, - const Reference< chart2::data::XDataSource > & xSource ) + const uno::Reference< chart2::data::XLabeledDataSequence > & xLSequence, + const Reference< ::chart::DataSeries > & xSource ) { - Reference< data::XDataSink > xSink( xSource, uno::UNO_QUERY ); - if( xSink.is()) + if( xSource.is()) { - Sequence< Reference< chart2::data::XLabeledDataSequence > > aData( xSource->getDataSequences()); - aData.realloc( aData.getLength() + 1 ); - aData.getArray()[ aData.getLength() - 1 ] = xLSequence; - xSink->setData( aData ); + std::vector< uno::Reference< chart2::data::XLabeledDataSequence > > aData = xSource->getDataSequences2(); + aData.push_back( xLSequence ); + xSource->setData( aData ); } } -Reference< chart2::data::XLabeledDataSequence > lcl_findLSequenceWithOnlyLabel( - const Reference< chart2::data::XDataSource > & xDataSource ) +uno::Reference< chart2::data::XLabeledDataSequence > lcl_findLSequenceWithOnlyLabel( + const rtl::Reference< ::chart::DataSeries > & xDataSource ) { - Reference< chart2::data::XLabeledDataSequence > xResult; - const Sequence< Reference< chart2::data::XLabeledDataSequence > > aSequences( xDataSource->getDataSequences()); + uno::Reference< chart2::data::XLabeledDataSequence > xResult; - for( Reference< chart2::data::XLabeledDataSequence > const & labeledDataSeq : aSequences ) + for( uno::Reference< chart2::data::XLabeledDataSequence > const & labeledDataSeq : xDataSource->getDataSequences2() ) { // no values are set but a label exists if( ! labeledDataSeq->getValues().is() && labeledDataSeq->getLabel().is()) { - xResult.set( labeledDataSeq ); + xResult = labeledDataSeq; break; } } @@ -233,7 +225,7 @@ void DataSourceTabPage::InsertRoleLBEntry(const OUString& rRole, const OUString& m_aEntries.emplace_back(new SeriesEntry); SeriesEntry* pEntry = m_aEntries.back().get(); pEntry->m_sRole = rRole; - m_xLB_ROLE->append(OUString::number(reinterpret_cast<sal_Int64>(pEntry)), + m_xLB_ROLE->append(weld::toId(pEntry), ::chart::DialogModel::ConvertRoleFromInternalToUI(rRole)); m_xLB_ROLE->set_text(m_xLB_ROLE->n_children() - 1, rRange, 1); } @@ -327,13 +319,13 @@ void DataSourceTabPage::updateControlsFromDialogModel() void DataSourceTabPage::fillSeriesListBox() { - Reference< XDataSeries > xSelected; + rtl::Reference< DataSeries > xSelected; SeriesEntry* pEntry = nullptr; int nEntry = m_xLB_SERIES->get_selected_index(); if (nEntry != -1) { - pEntry = reinterpret_cast<SeriesEntry*>(m_xLB_SERIES->get_id(nEntry).toInt64()); - xSelected.set(pEntry->m_xDataSeries); + pEntry = weld::fromId<SeriesEntry*>(m_xLB_SERIES->get_id(nEntry)); + xSelected = pEntry->m_xDataSeries; } bool bHasSelectedEntry = (pEntry != nullptr); @@ -357,7 +349,7 @@ void DataSourceTabPage::fillSeriesListBox() OUString aResString(::chart::SchResId( STR_DATA_UNNAMED_SERIES_WITH_INDEX )); // replace index of unnamed series - static const OUStringLiteral aReplacementStr( u"%NUMBER" ); + static constexpr OUString aReplacementStr( u"%NUMBER"_ustr ); sal_Int32 nIndex = aResString.indexOf( aReplacementStr ); if( nIndex != -1 ) aLabel = aResString.replaceAt( @@ -372,9 +364,9 @@ void DataSourceTabPage::fillSeriesListBox() m_aEntries.emplace_back(new SeriesEntry); pEntry = m_aEntries.back().get(); - pEntry->m_xDataSeries.set(series.second.first); - pEntry->m_xChartType.set(series.second.second); - m_xLB_SERIES->append(OUString::number(reinterpret_cast<sal_Int64>(pEntry)), aLabel); + pEntry->m_xDataSeries = series.second.first; + pEntry->m_xChartType = series.second.second; + m_xLB_SERIES->append(weld::toId(pEntry), aLabel); if (bHasSelectedEntry && series.second.first == xSelected) nSelectedEntry = nEntry; ++nEntry; @@ -391,7 +383,7 @@ void DataSourceTabPage::fillRoleListBox() int nSeriesEntry = m_xLB_SERIES->get_selected_index(); SeriesEntry* pSeriesEntry = nullptr; if (nSeriesEntry != -1) - pSeriesEntry = reinterpret_cast<SeriesEntry*>(m_xLB_SERIES->get_id(nSeriesEntry).toInt64()); + pSeriesEntry = weld::fromId<SeriesEntry*>(m_xLB_SERIES->get_id(nSeriesEntry)); bool bHasSelectedEntry = (pSeriesEntry != nullptr); int nRoleIndex = m_xLB_ROLE->get_selected_index(); @@ -487,7 +479,7 @@ IMPL_LINK_NOARG(DataSourceTabPage, RoleSelectionChangedHdl, weld::TreeView&, voi OUString aSelectedRange = lcl_GetSelectedRolesRange( *m_xLB_ROLE ); // replace role in fixed text label - static const OUStringLiteral aReplacementStr( u"%VALUETYPE" ); + static constexpr OUString aReplacementStr( u"%VALUETYPE"_ustr ); sal_Int32 nIndex = m_aFixedTextRange.indexOf( aReplacementStr ); if( nIndex != -1 ) { @@ -559,23 +551,23 @@ IMPL_LINK_NOARG(DataSourceTabPage, AddButtonClickedHdl, weld::Button&, void) { m_rDialogModel.startControllerLockTimer(); int nEntry = m_xLB_SERIES->get_selected_index(); - Reference< XDataSeries > xSeriesToInsertAfter; - Reference< XChartType > xChartTypeForNewSeries; + rtl::Reference< DataSeries > xSeriesToInsertAfter; + rtl::Reference< ChartType > xChartTypeForNewSeries; if( m_pTemplateProvider ) m_rDialogModel.setTemplate( m_pTemplateProvider->getCurrentTemplate()); if (nEntry != -1) { - ::chart::SeriesEntry* pEntry = reinterpret_cast<::chart::SeriesEntry*>(m_xLB_SERIES->get_id(nEntry).toInt64()); - xSeriesToInsertAfter.set(pEntry->m_xDataSeries); - xChartTypeForNewSeries.set(pEntry->m_xChartType); + ::chart::SeriesEntry* pEntry = weld::fromId<::chart::SeriesEntry*>(m_xLB_SERIES->get_id(nEntry)); + xSeriesToInsertAfter = pEntry->m_xDataSeries; + xChartTypeForNewSeries = pEntry->m_xChartType; } else { - std::vector< Reference< XDataSeriesContainer > > aCntVec( + std::vector< rtl::Reference< ChartType > > aCntVec( m_rDialogModel.getAllDataSeriesContainers()); if( ! aCntVec.empty()) - xChartTypeForNewSeries.set( aCntVec.front(), uno::UNO_QUERY ); + xChartTypeForNewSeries = aCntVec.front(); } OSL_ENSURE( xChartTypeForNewSeries.is(), "Cannot insert new series" ); @@ -602,15 +594,15 @@ IMPL_LINK_NOARG(DataSourceTabPage, RemoveButtonClickedHdl, weld::Button&, void) if (nEntry == -1) return; - SeriesEntry* pEntry = reinterpret_cast<::chart::SeriesEntry*>(m_xLB_SERIES->get_id(nEntry).toInt64()); - Reference< XDataSeries > xNewSelSeries; + SeriesEntry* pEntry = weld::fromId<::chart::SeriesEntry*>(m_xLB_SERIES->get_id(nEntry)); + rtl::Reference< DataSeries > xNewSelSeries; SeriesEntry * pNewSelEntry = nullptr; if (nEntry + 1 < m_xLB_SERIES->n_children()) - pNewSelEntry = reinterpret_cast<::chart::SeriesEntry*>(m_xLB_SERIES->get_id(nEntry + 1).toInt64()); + pNewSelEntry = weld::fromId<::chart::SeriesEntry*>(m_xLB_SERIES->get_id(nEntry + 1)); else if (nEntry > 0) - pNewSelEntry = reinterpret_cast<::chart::SeriesEntry*>(m_xLB_SERIES->get_id(nEntry - 1).toInt64()); + pNewSelEntry = weld::fromId<::chart::SeriesEntry*>(m_xLB_SERIES->get_id(nEntry - 1)); if (pNewSelEntry) - xNewSelSeries.set(pNewSelEntry->m_xDataSeries); + xNewSelSeries = pNewSelEntry->m_xDataSeries; m_rDialogModel.deleteSeries( pEntry->m_xDataSeries, pEntry->m_xChartType ); setDirty(); @@ -623,7 +615,7 @@ IMPL_LINK_NOARG(DataSourceTabPage, RemoveButtonClickedHdl, weld::Button&, void) { for (int i = 0; i < m_xLB_SERIES->n_children(); ++i) { - pEntry = reinterpret_cast<::chart::SeriesEntry*>(m_xLB_SERIES->get_id(i).toInt64()); + pEntry = weld::fromId<::chart::SeriesEntry*>(m_xLB_SERIES->get_id(i)); if (pEntry->m_xDataSeries == xNewSelSeries) { m_xLB_SERIES->select(i); @@ -641,7 +633,7 @@ IMPL_LINK_NOARG(DataSourceTabPage, UpButtonClickedHdl, weld::Button&, void) int nEntry = m_xLB_SERIES->get_selected_index(); SeriesEntry* pEntry = nullptr; if (nEntry != -1) - pEntry = reinterpret_cast<SeriesEntry*>(m_xLB_SERIES->get_id(nEntry).toInt64()); + pEntry = weld::fromId<SeriesEntry*>(m_xLB_SERIES->get_id(nEntry)); bool bHasSelectedEntry = (pEntry != nullptr); @@ -661,7 +653,7 @@ IMPL_LINK_NOARG(DataSourceTabPage, DownButtonClickedHdl, weld::Button&, void) int nEntry = m_xLB_SERIES->get_selected_index(); SeriesEntry* pEntry = nullptr; if (nEntry != -1) - pEntry = reinterpret_cast<SeriesEntry*>(m_xLB_SERIES->get_id(nEntry).toInt64()); + pEntry = weld::fromId<SeriesEntry*>(m_xLB_SERIES->get_id(nEntry)); bool bHasSelectedEntry = (pEntry != nullptr); @@ -750,7 +742,7 @@ bool DataSourceTabPage::updateModelFromControl(const weld::Entry* pField) if (bAll || (pField == m_xEDT_CATEGORIES.get())) { - Reference< data::XLabeledDataSequence > xLabeledSeq( m_rDialogModel.getCategories() ); + uno::Reference< chart2::data::XLabeledDataSequence > xLabeledSeq( m_rDialogModel.getCategories() ); if( xDataProvider.is()) { OUString aRange(m_xEDT_CATEGORIES->get_text()); @@ -759,7 +751,7 @@ bool DataSourceTabPage::updateModelFromControl(const weld::Entry* pField) // create or change categories if( !xLabeledSeq.is()) { - xLabeledSeq.set( DataSourceHelper::createLabeledDataSequence() ); + xLabeledSeq = DataSourceHelper::createLabeledDataSequence(); m_rDialogModel.setCategories( xLabeledSeq ); } try @@ -775,7 +767,7 @@ bool DataSourceTabPage::updateModelFromControl(const weld::Entry* pField) else if( xLabeledSeq.is()) { // clear existing categories - xLabeledSeq.set(nullptr); + xLabeledSeq.clear(); m_rDialogModel.setCategories( xLabeledSeq ); } } @@ -784,7 +776,7 @@ bool DataSourceTabPage::updateModelFromControl(const weld::Entry* pField) int nSeriesEntry = m_xLB_SERIES->get_selected_index(); SeriesEntry* pSeriesEntry = nullptr; if (nSeriesEntry != -1) - pSeriesEntry = reinterpret_cast<SeriesEntry*>(m_xLB_SERIES->get_id(nSeriesEntry).toInt64()); + pSeriesEntry = weld::fromId<SeriesEntry*>(m_xLB_SERIES->get_id(nSeriesEntry)); bool bHasSelectedEntry = (pSeriesEntry != nullptr); if( bHasSelectedEntry ) @@ -802,9 +794,8 @@ bool DataSourceTabPage::updateModelFromControl(const weld::Entry* pField) if( bIsLabel ) aSequenceRole = aSequenceNameForLabel; - Reference< data::XDataSource > xSource( pSeriesEntry->m_xDataSeries, uno::UNO_QUERY_THROW ); - Reference< data::XLabeledDataSequence > xLabeledSeq( - DataSeriesHelper::getDataSequenceByRole( xSource, aSequenceRole )); + uno::Reference< chart2::data::XLabeledDataSequence > xLabeledSeq = + DataSeriesHelper::getDataSequenceByRole( pSeriesEntry->m_xDataSeries, aSequenceRole ); if( xDataProvider.is()) { @@ -813,12 +804,12 @@ bool DataSourceTabPage::updateModelFromControl(const weld::Entry* pField) if( ! xLabeledSeq.is()) { // check if there is already an "orphan" label sequence - xLabeledSeq.set( lcl_findLSequenceWithOnlyLabel( xSource )); + xLabeledSeq = lcl_findLSequenceWithOnlyLabel( pSeriesEntry->m_xDataSeries ); if( ! xLabeledSeq.is()) { // no corresponding labeled data sequence for label found - xLabeledSeq.set( DataSourceHelper::createLabeledDataSequence() ); - lcl_addLSequenceToDataSource( xLabeledSeq, xSource ); + xLabeledSeq = DataSourceHelper::createLabeledDataSequence(); + lcl_addLSequenceToDataSource( xLabeledSeq, pSeriesEntry->m_xDataSeries ); } } if( xLabeledSeq.is()) @@ -842,7 +833,7 @@ bool DataSourceTabPage::updateModelFromControl(const weld::Entry* pField) // "$Sheet1.$A$1" aRange = xNewSeq->getSourceRangeRepresentation(); Reference< beans::XPropertySet > xProp( xNewSeq, uno::UNO_QUERY_THROW ); - xProp->setPropertyValue( "Role" , uno::Any( OUString(lcl_aLabelRole) )); + xProp->setPropertyValue( "Role" , uno::Any( lcl_aLabelRole )); //Labels should always include hidden cells, regardless of the setting chosen xProp->setPropertyValue( "IncludeHiddenCells", uno::Any(true)); @@ -881,11 +872,11 @@ bool DataSourceTabPage::updateModelFromControl(const weld::Entry* pField) if( !xLabeledSeq.is()) { if( aSelectedRole == aSequenceNameForLabel ) - xLabeledSeq.set( lcl_findLSequenceWithOnlyLabel( xSource )); + xLabeledSeq = lcl_findLSequenceWithOnlyLabel( pSeriesEntry->m_xDataSeries ); if( ! xLabeledSeq.is()) { - xLabeledSeq.set( DataSourceHelper::createLabeledDataSequence() ); - lcl_addLSequenceToDataSource( xLabeledSeq, xSource ); + xLabeledSeq = DataSourceHelper::createLabeledDataSequence(); + lcl_addLSequenceToDataSource( xLabeledSeq, pSeriesEntry->m_xDataSeries ); } } xLabeledSeq->setValues( xNewSeq ); diff --git a/chart2/source/controller/dialogs/tp_DataSource.hxx b/chart2/source/controller/dialogs/tp_DataSource.hxx index 1b6ba9862168..40219d917f9c 100644 --- a/chart2/source/controller/dialogs/tp_DataSource.hxx +++ b/chart2/source/controller/dialogs/tp_DataSource.hxx @@ -18,6 +18,9 @@ */ #pragma once +#include <DataSeries.hxx> +#include <ChartType.hxx> + #include <vcl/wizardmachine.hxx> #include <RangeSelectionListener.hxx> @@ -29,8 +32,9 @@ namespace chart { class TabPageNotifiable; } namespace chart { - +class ChartType; class ChartTypeTemplateProvider; +class DataSeries; class DialogModel; class SeriesEntry @@ -39,10 +43,10 @@ public: OUString m_sRole; /// the corresponding data series - css::uno::Reference< css::chart2::XDataSeries > m_xDataSeries; + rtl::Reference< ::chart::DataSeries > m_xDataSeries; /// the chart type that contains the series (via XDataSeriesContainer) - css::uno::Reference< css::chart2::XChartType > m_xChartType; + rtl::Reference< ::chart::ChartType > m_xChartType; }; class DataSourceTabPage final : diff --git a/chart2/source/controller/dialogs/tp_DataTable.cxx b/chart2/source/controller/dialogs/tp_DataTable.cxx new file mode 100644 index 000000000000..e6982b4a5067 --- /dev/null +++ b/chart2/source/controller/dialogs/tp_DataTable.cxx @@ -0,0 +1,43 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include "tp_DataTable.hxx" + +namespace chart +{ +DataTableTabPage::DataTableTabPage(weld::Container* pPage, weld::DialogController* pController, + const SfxItemSet& rInAttrs) + : SfxTabPage(pPage, pController, "modules/schart/ui/tp_DataTable.ui", "DataTableTabPage", + &rInAttrs) + , m_aDataTablePropertiesResources(*m_xBuilder) +{ +} + +DataTableTabPage::~DataTableTabPage() = default; + +std::unique_ptr<SfxTabPage> DataTableTabPage::Create(weld::Container* pPage, + weld::DialogController* pController, + const SfxItemSet* rAttrs) +{ + return std::make_unique<DataTableTabPage>(pPage, pController, *rAttrs); +} + +bool DataTableTabPage::FillItemSet(SfxItemSet* pOutAttrs) +{ + return m_aDataTablePropertiesResources.writeToItemSet(*pOutAttrs); +} + +void DataTableTabPage::Reset(const SfxItemSet* pInAttrs) +{ + m_aDataTablePropertiesResources.initFromItemSet(*pInAttrs); +} + +} //namespace chart + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/chart2/source/controller/dialogs/tp_DataTable.hxx b/chart2/source/controller/dialogs/tp_DataTable.hxx new file mode 100644 index 000000000000..00ab64cf89ce --- /dev/null +++ b/chart2/source/controller/dialogs/tp_DataTable.hxx @@ -0,0 +1,37 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include <sfx2/tabdlg.hxx> +#include <res_DataTableProperties.hxx> + +namespace chart +{ +/** Tab page for the data table properties */ +class DataTableTabPage : public SfxTabPage +{ +private: + DataTablePropertiesResources m_aDataTablePropertiesResources; + +public: + DataTableTabPage(weld::Container* pPage, weld::DialogController* pController, + const SfxItemSet& rInAttrs); + virtual ~DataTableTabPage() override; + + static std::unique_ptr<SfxTabPage> + Create(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet* rInAttrs); + + virtual bool FillItemSet(SfxItemSet* rOutAttrs) override; + virtual void Reset(const SfxItemSet* rInAttrs) override; +}; + +} //namespace chart + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/chart2/source/controller/dialogs/tp_LegendPosition.cxx b/chart2/source/controller/dialogs/tp_LegendPosition.cxx index 04697e75efc9..21a889bf854f 100644 --- a/chart2/source/controller/dialogs/tp_LegendPosition.cxx +++ b/chart2/source/controller/dialogs/tp_LegendPosition.cxx @@ -30,14 +30,13 @@ namespace chart SchLegendPosTabPage::SchLegendPosTabPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rInAttrs) : SfxTabPage(pPage, pController, "modules/schart/ui/tp_LegendPosition.ui", "tp_LegendPosition", &rInAttrs) , m_aLegendPositionResources(*m_xBuilder) - , m_xLbTextDirection(new TextDirectionListBox(m_xBuilder->weld_combo_box("LB_LEGEND_TEXTDIR"))) + , m_aLbTextDirection(m_xBuilder->weld_combo_box("LB_LEGEND_TEXTDIR")) , m_xCBLegendNoOverlay(m_xBuilder->weld_check_button("CB_NO_OVERLAY")) { } SchLegendPosTabPage::~SchLegendPosTabPage() { - m_xLbTextDirection.reset(); } std::unique_ptr<SfxTabPage> SchLegendPosTabPage::Create(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet* rOutAttrs) @@ -49,8 +48,8 @@ bool SchLegendPosTabPage::FillItemSet(SfxItemSet* rOutAttrs) { m_aLegendPositionResources.writeToItemSet(*rOutAttrs); - if (m_xLbTextDirection->get_active() != -1) - rOutAttrs->Put(SvxFrameDirectionItem(m_xLbTextDirection->get_active_id(), EE_PARA_WRITINGDIR)); + if (m_aLbTextDirection.get_active() != -1) + rOutAttrs->Put(SvxFrameDirectionItem(m_aLbTextDirection.get_active_id(), EE_PARA_WRITINGDIR)); if (m_xCBLegendNoOverlay->get_visible()) rOutAttrs->Put(SfxBoolItem(SCHATTR_LEGEND_NO_OVERLAY, m_xCBLegendNoOverlay->get_active())); @@ -62,13 +61,12 @@ void SchLegendPosTabPage::Reset(const SfxItemSet* rInAttrs) { m_aLegendPositionResources.initFromItemSet(*rInAttrs); - const SfxPoolItem* pPoolItem = nullptr; - if( rInAttrs->GetItemState( EE_PARA_WRITINGDIR, true, &pPoolItem ) == SfxItemState::SET ) - m_xLbTextDirection->set_active_id( static_cast<const SvxFrameDirectionItem*>(pPoolItem)->GetValue() ); + if( const SvxFrameDirectionItem* pDirectionItem = rInAttrs->GetItemIfSet( EE_PARA_WRITINGDIR ) ) + m_aLbTextDirection.set_active_id( pDirectionItem->GetValue() ); - if (rInAttrs->GetItemState(SCHATTR_LEGEND_NO_OVERLAY, true, &pPoolItem) == SfxItemState::SET) + if (const SfxBoolItem* pNoOverlayItem = rInAttrs->GetItemIfSet(SCHATTR_LEGEND_NO_OVERLAY)) { - bool bVal = static_cast<const SfxBoolItem*>(pPoolItem)->GetValue(); + bool bVal = pNoOverlayItem->GetValue(); m_xCBLegendNoOverlay->set_active(bVal); } } diff --git a/chart2/source/controller/dialogs/tp_LegendPosition.hxx b/chart2/source/controller/dialogs/tp_LegendPosition.hxx index 9e5f32d281a7..4534501b5209 100644 --- a/chart2/source/controller/dialogs/tp_LegendPosition.hxx +++ b/chart2/source/controller/dialogs/tp_LegendPosition.hxx @@ -21,8 +21,7 @@ #include <sfx2/tabdlg.hxx> #include <res_LegendPosition.hxx> - -namespace chart { class TextDirectionListBox; } +#include <TextDirectionListBox.hxx> namespace chart { @@ -32,7 +31,7 @@ class SchLegendPosTabPage : public SfxTabPage private: LegendPositionResources m_aLegendPositionResources; - std::unique_ptr<TextDirectionListBox> m_xLbTextDirection; + TextDirectionListBox m_aLbTextDirection; std::unique_ptr<weld::CheckButton> m_xCBLegendNoOverlay; public: diff --git a/chart2/source/controller/dialogs/tp_PointGeometry.cxx b/chart2/source/controller/dialogs/tp_PointGeometry.cxx index 88116ee890e1..7c2c4d942e66 100644 --- a/chart2/source/controller/dialogs/tp_PointGeometry.cxx +++ b/chart2/source/controller/dialogs/tp_PointGeometry.cxx @@ -62,11 +62,9 @@ bool SchLayoutTabPage::FillItemSet(SfxItemSet* rOutAttrs) void SchLayoutTabPage::Reset(const SfxItemSet* rInAttrs) { - const SfxPoolItem *pPoolItem = nullptr; - - if (rInAttrs->GetItemState(SCHATTR_STYLE_SHAPE,true, &pPoolItem) == SfxItemState::SET) + if (const SfxInt32Item* pShapeItem = rInAttrs->GetItemIfSet(SCHATTR_STYLE_SHAPE)) { - tools::Long nVal = static_cast<const SfxInt32Item*>(pPoolItem)->GetValue(); + tools::Long nVal = pShapeItem->GetValue(); if(m_pGeometryResources) { m_pGeometryResources->select(static_cast<sal_uInt16>(nVal)); diff --git a/chart2/source/controller/dialogs/tp_PolarOptions.cxx b/chart2/source/controller/dialogs/tp_PolarOptions.cxx index ed4172d68110..ad7b2b6f0f3e 100644 --- a/chart2/source/controller/dialogs/tp_PolarOptions.cxx +++ b/chart2/source/controller/dialogs/tp_PolarOptions.cxx @@ -69,11 +69,9 @@ bool PolarOptionsTabPage::FillItemSet( SfxItemSet* rOutAttrs ) void PolarOptionsTabPage::Reset(const SfxItemSet* rInAttrs) { - const SfxPoolItem *pPoolItem = nullptr; - - if (rInAttrs->GetItemState(SCHATTR_STARTING_ANGLE, true, &pPoolItem) == SfxItemState::SET) + if (const SdrAngleItem* pAngleItem = rInAttrs->GetItemIfSet(SCHATTR_STARTING_ANGLE)) { - Degree100 nTmp = static_cast<const SdrAngleItem*>(pPoolItem)->GetValue(); + Degree100 nTmp = pAngleItem->GetValue(); m_xAngleDial->SetRotation( nTmp ); } else @@ -81,18 +79,20 @@ void PolarOptionsTabPage::Reset(const SfxItemSet* rInAttrs) m_xFL_StartingAngle->hide(); } // tdf#108059 Hide clockwise orientation checkbox in OOXML-heavy environments it would be useless anyways - if (!officecfg::Office::Compatibility::View::ClockwisePieChartDirection::get() && rInAttrs->GetItemState(SCHATTR_CLOCKWISE, true, &pPoolItem) == SfxItemState::SET) + const SfxBoolItem* pClockWiseItem = nullptr; + if (!officecfg::Office::Compatibility::View::ClockwisePieChartDirection::get() && + (pClockWiseItem = rInAttrs->GetItemIfSet(SCHATTR_CLOCKWISE))) { - bool bCheck = static_cast< const SfxBoolItem * >( pPoolItem )->GetValue(); + bool bCheck = pClockWiseItem->GetValue(); m_xCB_Clockwise->set_active(bCheck); } else { m_xCB_Clockwise->hide(); } - if (rInAttrs->GetItemState(SCHATTR_INCLUDE_HIDDEN_CELLS, true, &pPoolItem) == SfxItemState::SET) + if (const SfxBoolItem* pHiddenCellsItem = rInAttrs->GetItemIfSet(SCHATTR_INCLUDE_HIDDEN_CELLS)) { - bool bVal = static_cast<const SfxBoolItem*>(pPoolItem)->GetValue(); + bool bVal = pHiddenCellsItem->GetValue(); m_xCB_IncludeHiddenCells->set_active(bVal); } else diff --git a/chart2/source/controller/dialogs/tp_RangeChooser.cxx b/chart2/source/controller/dialogs/tp_RangeChooser.cxx index 05f137f5a7be..a88f6a826e0b 100644 --- a/chart2/source/controller/dialogs/tp_RangeChooser.cxx +++ b/chart2/source/controller/dialogs/tp_RangeChooser.cxx @@ -69,7 +69,6 @@ RangeChooserTabPage::RangeChooserTabPage(weld::Container* pPage, weld::DialogCon , m_rDialogModel( rDialogModel ) , m_pTabPageNotifiable(dynamic_cast<TabPageNotifiable*>(pController)) , m_xFT_Caption(m_xBuilder->weld_label("FT_CAPTION_FOR_WIZARD")) - , m_xFT_Range(m_xBuilder->weld_label("FT_RANGE")) , m_xED_Range(m_xBuilder->weld_entry("ED_RANGE")) , m_xIB_Range(m_xBuilder->weld_button("IB_RANGE")) , m_xRB_Rows(m_xBuilder->weld_radio_button("RB_DATAROWS")) diff --git a/chart2/source/controller/dialogs/tp_RangeChooser.hxx b/chart2/source/controller/dialogs/tp_RangeChooser.hxx index e372b3f159b1..428e8a127dd9 100644 --- a/chart2/source/controller/dialogs/tp_RangeChooser.hxx +++ b/chart2/source/controller/dialogs/tp_RangeChooser.hxx @@ -24,7 +24,6 @@ #include <vcl/wizardmachine.hxx> namespace chart { class TabPageNotifiable; } -namespace com::sun::star::chart2 { class XChartTypeTemplate; } namespace chart { @@ -79,7 +78,6 @@ private: TabPageNotifiable * m_pTabPageNotifiable; std::unique_ptr<weld::Label> m_xFT_Caption; - std::unique_ptr<weld::Label> m_xFT_Range; std::unique_ptr<weld::Entry> m_xED_Range; std::unique_ptr<weld::Button> m_xIB_Range; std::unique_ptr<weld::RadioButton> m_xRB_Rows; diff --git a/chart2/source/controller/dialogs/tp_Scale.cxx b/chart2/source/controller/dialogs/tp_Scale.cxx index 6c7effde6707..b8c9f0598357 100644 --- a/chart2/source/controller/dialogs/tp_Scale.cxx +++ b/chart2/source/controller/dialogs/tp_Scale.cxx @@ -26,6 +26,7 @@ #include <svx/svxids.hrc> #include <osl/diagnose.h> +#include <sfx2/dialoghelper.hxx> #include <svx/chrtitem.hxx> #include <svl/eitem.hxx> #include <svl/intitem.hxx> @@ -271,19 +272,18 @@ void ScaleTabPage::Reset(const SfxItemSet* rInAttrs) if(!pNumFormatter) return; - const SfxPoolItem *pPoolItem = nullptr; - if (rInAttrs->GetItemState(SCHATTR_AXIS_ALLOW_DATEAXIS, true, &pPoolItem) == SfxItemState::SET) - m_bAllowDateAxis = static_cast<const SfxBoolItem*>(pPoolItem)->GetValue(); + if (const SfxBoolItem* pDateAxisItem = rInAttrs->GetItemIfSet(SCHATTR_AXIS_ALLOW_DATEAXIS)) + m_bAllowDateAxis = pDateAxisItem->GetValue(); m_nAxisType=chart2::AxisType::REALNUMBER; - if (rInAttrs->GetItemState(SCHATTR_AXISTYPE, true, &pPoolItem) == SfxItemState::SET) - m_nAxisType = static_cast<int>(static_cast<const SfxInt32Item*>(pPoolItem)->GetValue()); + if (const SfxInt32Item* pAxisTypeItem = rInAttrs->GetItemIfSet(SCHATTR_AXISTYPE)) + m_nAxisType = static_cast<int>(pAxisTypeItem->GetValue()); if( m_nAxisType==chart2::AxisType::DATE && !m_bAllowDateAxis ) m_nAxisType=chart2::AxisType::CATEGORY; if( m_bAllowDateAxis ) { bool bAutoDateAxis = false; - if (rInAttrs->GetItemState(SCHATTR_AXIS_AUTO_DATEAXIS, true, &pPoolItem) == SfxItemState::SET) - bAutoDateAxis = static_cast<const SfxBoolItem*>(pPoolItem)->GetValue(); + if (const SfxBoolItem* pDateAxisItem = rInAttrs->GetItemIfSet(SCHATTR_AXIS_AUTO_DATEAXIS)) + bAutoDateAxis = pDateAxisItem->GetValue(); sal_uInt16 nPos = 0; if( m_nAxisType==chart2::AxisType::DATE ) @@ -302,74 +302,74 @@ void ScaleTabPage::Reset(const SfxItemSet* rInAttrs) m_xCbxAutoOrigin->set_active(true); m_xCbx_AutoTimeResolution->set_active(true); - if (rInAttrs->GetItemState(SCHATTR_AXIS_AUTO_MIN,true,&pPoolItem) == SfxItemState::SET) - m_xCbxAutoMin->set_active(static_cast<const SfxBoolItem*>(pPoolItem)->GetValue()); + if (const SfxBoolItem* pAutoMinItem = rInAttrs->GetItemIfSet(SCHATTR_AXIS_AUTO_MIN)) + m_xCbxAutoMin->set_active(pAutoMinItem->GetValue()); - if (rInAttrs->GetItemState(SCHATTR_AXIS_MIN,true, &pPoolItem) == SfxItemState::SET) + if (const SvxDoubleItem* pAxisMinItem = rInAttrs->GetItemIfSet(SCHATTR_AXIS_MIN)) { - fMin = static_cast<const SvxDoubleItem*>(pPoolItem)->GetValue(); + fMin = pAxisMinItem->GetValue(); lcl_setValue( *m_xFmtFldMin, fMin ); m_xFmtFldMin->save_value(); } - if (rInAttrs->GetItemState(SCHATTR_AXIS_AUTO_MAX,true, &pPoolItem) == SfxItemState::SET) - m_xCbxAutoMax->set_active(static_cast<const SfxBoolItem*>(pPoolItem)->GetValue()); + if (const SfxBoolItem* pAutoMaxItem = rInAttrs->GetItemIfSet(SCHATTR_AXIS_AUTO_MAX)) + m_xCbxAutoMax->set_active(pAutoMaxItem->GetValue()); - if (rInAttrs->GetItemState(SCHATTR_AXIS_MAX,true, &pPoolItem) == SfxItemState::SET) + if (const SvxDoubleItem* pAxisMaxItem = rInAttrs->GetItemIfSet(SCHATTR_AXIS_MAX)) { - fMax = static_cast<const SvxDoubleItem*>(pPoolItem)->GetValue(); + fMax = pAxisMaxItem->GetValue(); lcl_setValue( *m_xFmtFldMax, fMax ); m_xFmtFldMax->save_value(); } - if (rInAttrs->GetItemState(SCHATTR_AXIS_AUTO_STEP_MAIN,true, &pPoolItem) == SfxItemState::SET) - m_xCbxAutoStepMain->set_active(static_cast<const SfxBoolItem*>(pPoolItem)->GetValue()); + if (const SfxBoolItem* pAutoStepMainItem = rInAttrs->GetItemIfSet(SCHATTR_AXIS_AUTO_STEP_MAIN)) + m_xCbxAutoStepMain->set_active(pAutoStepMainItem->GetValue()); - if (rInAttrs->GetItemState(SCHATTR_AXIS_STEP_MAIN,true, &pPoolItem) == SfxItemState::SET) + if (const SvxDoubleItem* pStepMainItem = rInAttrs->GetItemIfSet(SCHATTR_AXIS_STEP_MAIN)) { - fStepMain = static_cast<const SvxDoubleItem*>(pPoolItem)->GetValue(); + fStepMain = pStepMainItem->GetValue(); lcl_setValue( *m_xFmtFldStepMain, fStepMain ); m_xFmtFldStepMain->save_value(); m_xMt_MainDateStep->set_value( static_cast<sal_Int32>(fStepMain) ); m_xMt_MainDateStep->save_value(); } - if (rInAttrs->GetItemState(SCHATTR_AXIS_AUTO_STEP_HELP,true, &pPoolItem) == SfxItemState::SET) - m_xCbxAutoStepHelp->set_active(static_cast<const SfxBoolItem*>(pPoolItem)->GetValue()); - if (rInAttrs->GetItemState(SCHATTR_AXIS_LOGARITHM,true, &pPoolItem) == SfxItemState::SET) - m_xCbxLogarithm->set_active(static_cast<const SfxBoolItem*>(pPoolItem)->GetValue()); - if (rInAttrs->GetItemState(SCHATTR_AXIS_REVERSE,true, &pPoolItem) == SfxItemState::SET) - m_xCbxReverse->set_active(static_cast<const SfxBoolItem*>(pPoolItem)->GetValue()); - if (rInAttrs->GetItemState(SCHATTR_AXIS_STEP_HELP,true, &pPoolItem) == SfxItemState::SET) + if (const SfxBoolItem* pAutoStepHelpItem = rInAttrs->GetItemIfSet(SCHATTR_AXIS_AUTO_STEP_HELP)) + m_xCbxAutoStepHelp->set_active(pAutoStepHelpItem->GetValue()); + if (const SfxBoolItem* pLogItem = rInAttrs->GetItemIfSet(SCHATTR_AXIS_LOGARITHM)) + m_xCbxLogarithm->set_active(pLogItem->GetValue()); + if (const SfxBoolItem* pReverseItem = rInAttrs->GetItemIfSet(SCHATTR_AXIS_REVERSE)) + m_xCbxReverse->set_active(pReverseItem->GetValue()); + if (const SfxInt32Item* pStepHelpItem = rInAttrs->GetItemIfSet(SCHATTR_AXIS_STEP_HELP)) { - nStepHelp = static_cast<const SfxInt32Item*>(pPoolItem)->GetValue(); + nStepHelp = pStepHelpItem->GetValue(); m_xMtStepHelp->set_value( nStepHelp ); m_xMtStepHelp->save_value(); } - if (rInAttrs->GetItemState(SCHATTR_AXIS_AUTO_ORIGIN,true, &pPoolItem) == SfxItemState::SET) - m_xCbxAutoOrigin->set_active(static_cast<const SfxBoolItem*>(pPoolItem)->GetValue()); - if (rInAttrs->GetItemState(SCHATTR_AXIS_ORIGIN,true, &pPoolItem) == SfxItemState::SET) + if (const SfxBoolItem* pOriginItem = rInAttrs->GetItemIfSet(SCHATTR_AXIS_AUTO_ORIGIN)) + m_xCbxAutoOrigin->set_active(pOriginItem->GetValue()); + if (const SvxDoubleItem* pOriginItem = rInAttrs->GetItemIfSet(SCHATTR_AXIS_ORIGIN)) { - fOrigin = static_cast<const SvxDoubleItem*>(pPoolItem)->GetValue(); + fOrigin = pOriginItem->GetValue(); lcl_setValue( *m_xFmtFldOrigin, fOrigin ); m_xFmtFldOrigin->save_value(); } - if (rInAttrs->GetItemState(SCHATTR_AXIS_AUTO_TIME_RESOLUTION,true, &pPoolItem) == SfxItemState::SET) - m_xCbx_AutoTimeResolution->set_active(static_cast<const SfxBoolItem*>(pPoolItem)->GetValue()); - if (rInAttrs->GetItemState(SCHATTR_AXIS_TIME_RESOLUTION,true, &pPoolItem) == SfxItemState::SET) + if (const SfxBoolItem* pAutoTimeResItem = rInAttrs->GetItemIfSet(SCHATTR_AXIS_AUTO_TIME_RESOLUTION)) + m_xCbx_AutoTimeResolution->set_active(pAutoTimeResItem->GetValue()); + if (const SfxInt32Item* pTimeResItem = rInAttrs->GetItemIfSet(SCHATTR_AXIS_TIME_RESOLUTION)) { - m_nTimeResolution = static_cast<const SfxInt32Item*>(pPoolItem)->GetValue(); + m_nTimeResolution = pTimeResItem->GetValue(); m_xLB_TimeResolution->set_active( m_nTimeResolution ); } - if (rInAttrs->GetItemState(SCHATTR_AXIS_MAIN_TIME_UNIT,true, &pPoolItem) == SfxItemState::SET) + if (const SfxInt32Item* pMainTimeUnitItem = rInAttrs->GetItemIfSet(SCHATTR_AXIS_MAIN_TIME_UNIT)) { - m_nMainTimeUnit = static_cast<const SfxInt32Item*>(pPoolItem)->GetValue(); + m_nMainTimeUnit = pMainTimeUnitItem->GetValue(); m_xLB_MainTimeUnit->set_active( m_nMainTimeUnit ); } - if (rInAttrs->GetItemState(SCHATTR_AXIS_HELP_TIME_UNIT,true, &pPoolItem) == SfxItemState::SET) + if (const SfxInt32Item* pHelpTimeUnitItem = rInAttrs->GetItemIfSet(SCHATTR_AXIS_HELP_TIME_UNIT)) { - m_nHelpTimeUnit = static_cast<const SfxInt32Item*>(pPoolItem)->GetValue(); + m_nHelpTimeUnit = pHelpTimeUnitItem->GetValue(); m_xLB_HelpTimeUnit->set_active( m_nHelpTimeUnit ); } @@ -524,12 +524,12 @@ void ScaleTabPage::SetNumFormatter( SvNumberFormatter* pFormatter ) void ScaleTabPage::SetNumFormat() { - const SfxPoolItem *pPoolItem = nullptr; + const SfxUInt32Item *pNumFormatItem = GetItemSet().GetItemIfSet( SID_ATTR_NUMBERFORMAT_VALUE ); - if( GetItemSet().GetItemState( SID_ATTR_NUMBERFORMAT_VALUE, true, &pPoolItem ) != SfxItemState::SET ) + if( !pNumFormatItem ) return; - sal_uLong nFmt = static_cast<const SfxUInt32Item*>(pPoolItem)->GetValue(); + sal_uInt32 nFmt = pNumFormatItem->GetValue(); Formatter& rFmtFldMax = m_xFmtFldMax->GetFormatter(); rFmtFldMax.SetFormatKey(nFmt); @@ -558,6 +558,12 @@ void ScaleTabPage::SetNumFormat() nFmt = pNumFormatter->GetStandardFormat( SvNumFormatType::TIME, pFormat->GetLanguage() ); else nFmt = pNumFormatter->GetStandardFormat( SvNumFormatType::TIME ); + + // tdf#141625 give enough space to see full date+time + int nWidestTime(m_xFmtFldMin->get_pixel_size(getWidestDateTime(Application::GetSettings().GetLocaleDataWrapper(), true)).Width()); + int nWidthChars = std::ceil(nWidestTime / m_xFmtFldMin->get_approximate_digit_width()) + 1; + m_xFmtFldMin->set_width_chars(nWidthChars); + m_xFmtFldMax->set_width_chars(nWidthChars); } if( m_nAxisType == chart2::AxisType::DATE && ( eType != SvNumFormatType::DATE && eType != SvNumFormatType::DATETIME) ) diff --git a/chart2/source/controller/dialogs/tp_SeriesToAxis.cxx b/chart2/source/controller/dialogs/tp_SeriesToAxis.cxx index 15976e89fea8..3ffbc3642e9c 100644 --- a/chart2/source/controller/dialogs/tp_SeriesToAxis.cxx +++ b/chart2/source/controller/dialogs/tp_SeriesToAxis.cxx @@ -113,13 +113,11 @@ bool SchOptionTabPage::FillItemSet(SfxItemSet* rOutAttrs) void SchOptionTabPage::Reset(const SfxItemSet* rInAttrs) { - const SfxPoolItem *pPoolItem = nullptr; - m_xRbtAxis1->set_active(true); m_xRbtAxis2->set_active(false); - if (rInAttrs->GetItemState(SCHATTR_AXIS,true, &pPoolItem) == SfxItemState::SET) + if (const SfxInt32Item* pAxisItem = rInAttrs->GetItemIfSet(SCHATTR_AXIS)) { - tools::Long nVal=static_cast<const SfxInt32Item*>(pPoolItem)->GetValue(); + tools::Long nVal = pAxisItem->GetValue(); if(nVal==CHART_AXIS_SECONDARY_Y) { m_xRbtAxis2->set_active(true); @@ -128,34 +126,34 @@ void SchOptionTabPage::Reset(const SfxItemSet* rInAttrs) } tools::Long nTmp; - if (rInAttrs->GetItemState(SCHATTR_BAR_GAPWIDTH, true, &pPoolItem) == SfxItemState::SET) + if (const SfxInt32Item* pGapWidthItem = rInAttrs->GetItemIfSet(SCHATTR_BAR_GAPWIDTH)) { - nTmp = static_cast<tools::Long>(static_cast<const SfxInt32Item*>(pPoolItem)->GetValue()); + nTmp = static_cast<tools::Long>(pGapWidthItem->GetValue()); m_xMTGap->set_value(nTmp, FieldUnit::PERCENT); } - if (rInAttrs->GetItemState(SCHATTR_BAR_OVERLAP, true, &pPoolItem) == SfxItemState::SET) + if (const SfxInt32Item* pOverlapItem = rInAttrs->GetItemIfSet(SCHATTR_BAR_OVERLAP)) { - nTmp = static_cast<tools::Long>(static_cast<const SfxInt32Item*>(pPoolItem)->GetValue()); + nTmp = static_cast<tools::Long>(pOverlapItem->GetValue()); m_xMTOverlap->set_value(nTmp, FieldUnit::PERCENT); } - if (rInAttrs->GetItemState(SCHATTR_BAR_CONNECT, true, &pPoolItem) == SfxItemState::SET) + if (const SfxBoolItem* pConnectItem = rInAttrs->GetItemIfSet(SCHATTR_BAR_CONNECT)) { - bool bCheck = static_cast< const SfxBoolItem * >( pPoolItem )->GetValue(); + bool bCheck = pConnectItem->GetValue(); m_xCBConnect->set_active(bCheck); } - if (rInAttrs->GetItemState(SCHATTR_AXIS_FOR_ALL_SERIES, true, &pPoolItem) == SfxItemState::SET) + if (const SfxInt32Item* pAllSeriesItem = rInAttrs->GetItemIfSet(SCHATTR_AXIS_FOR_ALL_SERIES)) { - m_nAllSeriesAxisIndex = static_cast< const SfxInt32Item * >( pPoolItem )->GetValue(); + m_nAllSeriesAxisIndex = pAllSeriesItem->GetValue(); m_xCBAxisSideBySide->set_sensitive(false); } - if (rInAttrs->GetItemState(SCHATTR_GROUP_BARS_PER_AXIS, true, &pPoolItem) == SfxItemState::SET) + if (const SfxBoolItem* pPerAxisItem = rInAttrs->GetItemIfSet(SCHATTR_GROUP_BARS_PER_AXIS)) { // model property is "group bars per axis", UI feature is the other way // round: "show bars side by side" - bool bCheck = ! static_cast< const SfxBoolItem * >( pPoolItem )->GetValue(); + bool bCheck = ! pPerAxisItem->GetValue(); m_xCBAxisSideBySide->set_active( bCheck ); } else @@ -166,10 +164,12 @@ void SchOptionTabPage::Reset(const SfxItemSet* rInAttrs) //missing value treatment { std::vector< sal_Int32 > aMissingValueTreatments; - if( rInAttrs->GetItemState(SCHATTR_AVAILABLE_MISSING_VALUE_TREATMENTS, true, &pPoolItem) == SfxItemState::SET ) - aMissingValueTreatments = static_cast<const SfxIntegerListItem*>(pPoolItem)->GetList(); + if (const SfxIntegerListItem* pValueTreatmentsItem = rInAttrs->GetItemIfSet(SCHATTR_AVAILABLE_MISSING_VALUE_TREATMENTS)) + aMissingValueTreatments = pValueTreatmentsItem->GetList(); - if ( aMissingValueTreatments.size()>1 && rInAttrs->GetItemState(SCHATTR_MISSING_VALUE_TREATMENT,true, &pPoolItem) == SfxItemState::SET) + const SfxInt32Item* pMissingValueTreatmentItem; + if ( aMissingValueTreatments.size()>1 && + (pMissingValueTreatmentItem = rInAttrs->GetItemIfSet(SCHATTR_MISSING_VALUE_TREATMENT)) ) { m_xRB_DontPaint->set_sensitive(false); m_xRB_AssumeZero->set_sensitive(false); @@ -185,7 +185,7 @@ void SchOptionTabPage::Reset(const SfxItemSet* rInAttrs) m_xRB_ContinueLine->set_sensitive(true); } - tools::Long nVal=static_cast<const SfxInt32Item*>(pPoolItem)->GetValue(); + tools::Long nVal=pMissingValueTreatmentItem->GetValue(); if(nVal==css::chart::MissingValueTreatment::LEAVE_GAP) m_xRB_DontPaint->set_active(true); else if(nVal==css::chart::MissingValueTreatment::USE_ZERO) @@ -200,9 +200,9 @@ void SchOptionTabPage::Reset(const SfxItemSet* rInAttrs) } // Include hidden cells - if (rInAttrs->GetItemState(SCHATTR_INCLUDE_HIDDEN_CELLS, true, &pPoolItem) == SfxItemState::SET) + if (const SfxBoolItem* pHiddenCellsItem = rInAttrs->GetItemIfSet(SCHATTR_INCLUDE_HIDDEN_CELLS)) { - bool bVal = static_cast<const SfxBoolItem*>(pPoolItem)->GetValue(); + bool bVal = pHiddenCellsItem->GetValue(); m_xCBIncludeHiddenCells->set_active(bVal); } else @@ -215,9 +215,9 @@ void SchOptionTabPage::Reset(const SfxItemSet* rInAttrs) m_xGrpPlotOptions->hide(); } - if (rInAttrs->GetItemState(SCHATTR_HIDE_LEGEND_ENTRY, true, &pPoolItem) == SfxItemState::SET) + if (const SfxBoolItem* pEntryItem = rInAttrs->GetItemIfSet(SCHATTR_HIDE_LEGEND_ENTRY)) { - bool bVal = static_cast<const SfxBoolItem*>(pPoolItem)->GetValue(); + bool bVal = pEntryItem->GetValue(); m_xCBHideLegendEntry->set_active(bVal); } diff --git a/chart2/source/controller/dialogs/tp_TitleRotation.cxx b/chart2/source/controller/dialogs/tp_TitleRotation.cxx index ed99a9a39501..f3380042eb13 100644 --- a/chart2/source/controller/dialogs/tp_TitleRotation.cxx +++ b/chart2/source/controller/dialogs/tp_TitleRotation.cxx @@ -35,9 +35,8 @@ SchAlignmentTabPage::SchAlignmentTabPage(weld::Container* pPage, weld::DialogCon , m_xFtRotate(m_xBuilder->weld_label("degreeL")) , m_xNfRotate(m_xBuilder->weld_metric_spin_button("OrientDegree", FieldUnit::DEGREE)) , m_xCbStacked(m_xBuilder->weld_check_button("stackedCB")) - , m_xFtTextDirection(m_xBuilder->weld_label("textdirL")) , m_xFtABCD(m_xBuilder->weld_label("labelABCD")) - , m_xLbTextDirection(new TextDirectionListBox(m_xBuilder->weld_combo_box("textdirLB"))) + , m_aLbTextDirection(m_xBuilder->weld_combo_box("textdirLB")) , m_xCtrlDial(new svx::DialControl) , m_xCtrlDialWin(new weld::CustomWeld(*m_xBuilder, "dialCtrl", *m_xCtrlDial)) { @@ -72,7 +71,6 @@ SchAlignmentTabPage::~SchAlignmentTabPage() { m_xCtrlDialWin.reset(); m_xCtrlDial.reset(); - m_xLbTextDirection.reset(); } std::unique_ptr<SfxTabPage> SchAlignmentTabPage::Create(weld::Container* pPage, weld::DialogController* pController, @@ -96,7 +94,7 @@ bool SchAlignmentTabPage::FillItemSet(SfxItemSet* rOutAttrs) Degree100 nDegrees = bStacked ? 0_deg100 : m_xCtrlDial->GetRotation(); rOutAttrs->Put( SdrAngleItem( SCHATTR_TEXT_DEGREES, nDegrees ) ); - SvxFrameDirection aDirection( m_xLbTextDirection->get_active_id() ); + SvxFrameDirection aDirection( m_aLbTextDirection.get_active_id() ); rOutAttrs->Put( SvxFrameDirectionItem( aDirection, EE_PARA_WRITINGDIR ) ); return true; @@ -114,8 +112,8 @@ void SchAlignmentTabPage::Reset(const SfxItemSet* rInAttrs) m_xCbStacked->set_active(bStacked); StackedToggleHdl(*m_xCbStacked); - if( rInAttrs->GetItemState(EE_PARA_WRITINGDIR, true, &pItem) == SfxItemState::SET) - m_xLbTextDirection->set_active_id(static_cast<const SvxFrameDirectionItem*>(pItem)->GetValue()); + if( const SvxFrameDirectionItem* pDirectionItem = rInAttrs->GetItemIfSet(EE_PARA_WRITINGDIR) ) + m_aLbTextDirection.set_active_id(pDirectionItem->GetValue()); } } //namespace chart diff --git a/chart2/source/controller/dialogs/tp_TitleRotation.hxx b/chart2/source/controller/dialogs/tp_TitleRotation.hxx index b303e4d3596c..9d59b693f9a8 100644 --- a/chart2/source/controller/dialogs/tp_TitleRotation.hxx +++ b/chart2/source/controller/dialogs/tp_TitleRotation.hxx @@ -20,8 +20,8 @@ #include <sfx2/tabdlg.hxx> #include <svx/dialcontrol.hxx> +#include <TextDirectionListBox.hxx> -namespace chart { class TextDirectionListBox; } namespace weld { class CheckButton; class CustomWeld; @@ -39,9 +39,8 @@ private: std::unique_ptr<weld::Label> m_xFtRotate; std::unique_ptr<weld::MetricSpinButton> m_xNfRotate; std::unique_ptr<weld::CheckButton> m_xCbStacked; - std::unique_ptr<weld::Label> m_xFtTextDirection; std::unique_ptr<weld::Label> m_xFtABCD; - std::unique_ptr<TextDirectionListBox> m_xLbTextDirection; + TextDirectionListBox m_aLbTextDirection; std::unique_ptr<svx::DialControl> m_xCtrlDial; std::unique_ptr<weld::CustomWeld> m_xCtrlDialWin; diff --git a/chart2/source/controller/dialogs/tp_Wizard_TitlesAndObjects.cxx b/chart2/source/controller/dialogs/tp_Wizard_TitlesAndObjects.cxx index 2719874fd66a..4e813b4593fa 100644 --- a/chart2/source/controller/dialogs/tp_Wizard_TitlesAndObjects.cxx +++ b/chart2/source/controller/dialogs/tp_Wizard_TitlesAndObjects.cxx @@ -20,13 +20,11 @@ #include "tp_Wizard_TitlesAndObjects.hxx" #include <res_Titles.hxx> #include <res_LegendPosition.hxx> -#include <ChartModelHelper.hxx> #include <ChartModel.hxx> #include <Diagram.hxx> #include <AxisHelper.hxx> #include <ControllerLockGuard.hxx> -#include <com/sun/star/frame/XModel.hpp> -#include <com/sun/star/chart2/XChartDocument.hpp> +#include <utility> namespace chart { @@ -34,12 +32,12 @@ using namespace ::com::sun::star; using namespace ::com::sun::star::chart2; TitlesAndObjectsTabPage::TitlesAndObjectsTabPage(weld::Container* pPage, weld::DialogController* pController, - const rtl::Reference<::chart::ChartModel>& xChartModel, + rtl::Reference<::chart::ChartModel> xChartModel, const uno::Reference< uno::XComponentContext >& xContext ) : OWizardPage(pPage, pController, "modules/schart/ui/wizelementspage.ui", "WizElementsPage") , m_xTitleResources(new TitleResources(*m_xBuilder, false)) , m_xLegendPositionResources(new LegendPositionResources(*m_xBuilder, xContext)) - , m_xChartModel(xChartModel) + , m_xChartModel(std::move(xChartModel)) , m_xCC(xContext) , m_bCommitToModel(true) , m_aTimerTriggeredControllerLock( m_xChartModel ) @@ -77,7 +75,7 @@ void TitlesAndObjectsTabPage::initializePage() //init grid checkboxes { - rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram( m_xChartModel ); + rtl::Reference< Diagram > xDiagram = m_xChartModel->getFirstChartDiagram(); uno::Sequence< sal_Bool > aPossibilityList; uno::Sequence< sal_Bool > aExistenceList; AxisHelper::getAxisOrGridPossibilities( aPossibilityList, xDiagram, false ); @@ -122,7 +120,7 @@ void TitlesAndObjectsTabPage::commitToModel() //commit grid changes to model { - rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram( xModel ); + rtl::Reference< Diagram > xDiagram = xModel->getFirstChartDiagram(); uno::Sequence< sal_Bool > aOldExistenceList; AxisHelper::getAxisOrGridExistence( aOldExistenceList, xDiagram, false ); uno::Sequence< sal_Bool > aNewExistenceList(aOldExistenceList); diff --git a/chart2/source/controller/dialogs/tp_Wizard_TitlesAndObjects.hxx b/chart2/source/controller/dialogs/tp_Wizard_TitlesAndObjects.hxx index f06a3e7ec589..d2c30d8b4363 100644 --- a/chart2/source/controller/dialogs/tp_Wizard_TitlesAndObjects.hxx +++ b/chart2/source/controller/dialogs/tp_Wizard_TitlesAndObjects.hxx @@ -39,7 +39,7 @@ class TitlesAndObjectsTabPage final : public vcl::OWizardPage { public: TitlesAndObjectsTabPage(weld::Container* pPage, weld::DialogController* pController, - const rtl::Reference<::chart::ChartModel>& xChartModel, + rtl::Reference<::chart::ChartModel> xChartModel, const css::uno::Reference< css::uno::XComponentContext >& xContext); virtual ~TitlesAndObjectsTabPage() override; |