chart2/source/controller/dialogs/ChartTypeDialogController.cxx | 545 ++++++---- chart2/source/controller/dialogs/tp_ChartType.cxx | 36 chart2/source/controller/dialogs/tp_ChartType.hxx | 8 chart2/source/controller/sidebar/ChartTypePanel.cxx | 41 chart2/source/controller/sidebar/ChartTypePanel.hxx | 6 chart2/source/inc/ChartTypeDialogController.hxx | 46 chart2/uiconfig/ui/sidebartype.ui | 35 chart2/uiconfig/ui/tp_ChartType.ui | 38 compilerplugins/clang/moveparam.cxx | 6 include/svx/sidebar/LineWidthPopup.hxx | 15 sc/qa/uitest/chart2/tdf142851.py | 10 solenv/clang-format/excludelist | 2 svx/Library_svx.mk | 1 svx/source/sidebar/line/LineWidthPopup.cxx | 225 +++- svx/source/sidebar/line/LineWidthValueSet.cxx | 163 -- svx/source/sidebar/line/LineWidthValueSet.hxx | 55 - svx/uiconfig/ui/floatinglineproperty.ui | 34 17 files changed, 711 insertions(+), 555 deletions(-)
New commits: commit a90322275cc018e35a38f57c62fd91980d8bff5d Author: Parth Raiyani <[email protected]> AuthorDate: Fri Aug 29 19:41:42 2025 +0530 Commit: Caolán McNamara <[email protected]> CommitDate: Wed Feb 25 09:19:26 2026 +0100 Switch to IconView from ValueSet for chart dialogs - Updated UI in sidebartype.ui and tp_ChartType.ui to include GtkIconView - Replaced ValueSet with weld::IconView in ChartTypePanel and tp_ChartType - Update ChartTypeDialogController to work with IconView - added tooltip support - updated relevant test cases Change-Id: If68fd529dcdf320d00fcd16698d0db02ba975a22 Signed-off-by: Parth Raiyani <[email protected]> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/190070 Tested-by: Jenkins CollaboraOffice <[email protected]> Reviewed-by: Szymon Kłos <[email protected]> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/200227 Reviewed-by: Caolán McNamara <[email protected]> diff --git a/chart2/source/controller/dialogs/ChartTypeDialogController.cxx b/chart2/source/controller/dialogs/ChartTypeDialogController.cxx index 8fb90ca9724b..91b31b707af1 100644 --- a/chart2/source/controller/dialogs/ChartTypeDialogController.cxx +++ b/chart2/source/controller/dialogs/ChartTypeDialogController.cxx @@ -34,9 +34,9 @@ #include <com/sun/star/chart2/DataPointGeometry3D.hpp> -#include <svtools/valueset.hxx> #include <vcl/image.hxx> #include <vcl/settings.hxx> +#include <vcl/virdev.hxx> #include <comphelper/diagnose_ex.hxx> @@ -45,6 +45,14 @@ namespace chart using namespace ::com::sun::star; using namespace ::com::sun::star::chart2; +namespace { +void lcl_appendSubType(weld::IconView& rIV, const OUString& rId, const OUString& rText, + Bitmap aBmp) +{ + rIV.append(rId, rText, &aBmp); +} +} + ChartTypeParameter::ChartTypeParameter() : nSubTypeIndex( 1 ) , bXAxisWithValues( false ) @@ -345,9 +353,13 @@ void ChartTypeDialogController::commitToModel( const ChartTypeParameter& rParame } } -void ChartTypeDialogController::fillSubTypeList( ValueSet& rSubTypeList, const ChartTypeParameter& /*rParameter*/ ) +void ChartTypeDialogController::fillSubTypeList( weld::IconView& rSubTypeList, const ChartTypeParameter& /*rParameter*/ ) { - rSubTypeList.Clear(); + rSubTypeList.clear(); +} +OUString ChartTypeDialogController::getChartName( sal_Int32 /*nId*/ ) const +{ + return OUString(); } bool ChartTypeDialogController::shouldShow_3DLookControl() const { @@ -384,6 +396,15 @@ void ChartTypeDialogController::setTemplateProperties( const uno::Reference< bea { } +Bitmap ChartTypeDialogController::getPreviewBitmap(Image pImage) +{ + Bitmap aPreviewBitmap = pImage.GetBitmap(); + VclPtr<VirtualDevice> pVDev = VclPtr<VirtualDevice>::Create(); + if (pVDev->GetDPIScaleFactor() > 1) + aPreviewBitmap.Scale(pVDev->GetDPIScaleFactor(), pVDev->GetDPIScaleFactor()); + return aPreviewBitmap; +} + ColumnOrBarChartDialogController_Base::ColumnOrBarChartDialogController_Base() { } @@ -433,51 +454,69 @@ const tTemplateServiceChartTypeParameterMap& ColumnChartDialogController::getTem {"com.sun.star.chart2.template.ThreeDColumnDeep" , ChartTypeParameter(4,false,true,GlobalStackMode_STACK_Z)}}; return s_aTemplateMap; } -void ColumnChartDialogController::fillSubTypeList( ValueSet& rSubTypeList, const ChartTypeParameter& rParameter ) +void ColumnChartDialogController::fillSubTypeList( weld::IconView& rSubTypeList, const ChartTypeParameter& rParameter ) { - rSubTypeList.Clear(); + rSubTypeList.clear(); + + OUString normalText = SchResId( STR_NORMAL ); + OUString stackedText = SchResId( STR_STACKED ); + OUString percentText = SchResId( STR_PERCENT ); + OUString deepText = SchResId( STR_DEEP ); if( rParameter.b3DLook ) { switch(rParameter.nGeometry3D) { case DataPointGeometry3D::CYLINDER: - rSubTypeList.InsertItem(1, Image(StockImage::Yes, BMP_SAEULE_3D_1)); - rSubTypeList.InsertItem(2, Image(StockImage::Yes, BMP_SAEULE_3D_2)); - rSubTypeList.InsertItem(3, Image(StockImage::Yes, BMP_SAEULE_3D_3)); - rSubTypeList.InsertItem(4, Image(StockImage::Yes, BMP_SAEULE_3D_4)); + lcl_appendSubType(rSubTypeList,"1", normalText, getPreviewBitmap(Image(StockImage::Yes, BMP_SAEULE_3D_1))); + lcl_appendSubType(rSubTypeList,"2", stackedText, getPreviewBitmap(Image(StockImage::Yes, BMP_SAEULE_3D_2))); + lcl_appendSubType(rSubTypeList,"3", percentText, getPreviewBitmap(Image(StockImage::Yes, BMP_SAEULE_3D_3))); + lcl_appendSubType(rSubTypeList,"4", deepText, getPreviewBitmap(Image(StockImage::Yes, BMP_SAEULE_3D_4))); break; case DataPointGeometry3D::CONE: - rSubTypeList.InsertItem(1, Image(StockImage::Yes, BMP_KEGEL_3D_1)); - rSubTypeList.InsertItem(2, Image(StockImage::Yes, BMP_KEGEL_3D_2)); - rSubTypeList.InsertItem(3, Image(StockImage::Yes, BMP_KEGEL_3D_3)); - rSubTypeList.InsertItem(4, Image(StockImage::Yes, BMP_KEGEL_3D_4)); + lcl_appendSubType(rSubTypeList,"1", normalText, getPreviewBitmap(Image(StockImage::Yes, BMP_KEGEL_3D_1))); + lcl_appendSubType(rSubTypeList,"2", stackedText, getPreviewBitmap(Image(StockImage::Yes, BMP_KEGEL_3D_2))); + lcl_appendSubType(rSubTypeList,"3", percentText, getPreviewBitmap(Image(StockImage::Yes, BMP_KEGEL_3D_3))); + lcl_appendSubType(rSubTypeList,"4", deepText, getPreviewBitmap(Image(StockImage::Yes, BMP_KEGEL_3D_4))); break; case DataPointGeometry3D::PYRAMID: - rSubTypeList.InsertItem(1, Image(StockImage::Yes, BMP_PYRAMID_3D_1)); - rSubTypeList.InsertItem(2, Image(StockImage::Yes, BMP_PYRAMID_3D_2)); - rSubTypeList.InsertItem(3, Image(StockImage::Yes, BMP_PYRAMID_3D_3)); - rSubTypeList.InsertItem(4, Image(StockImage::Yes, BMP_PYRAMID_3D_4)); + lcl_appendSubType(rSubTypeList,"1", normalText, getPreviewBitmap(Image(StockImage::Yes, BMP_PYRAMID_3D_1))); + lcl_appendSubType(rSubTypeList,"2", stackedText, getPreviewBitmap(Image(StockImage::Yes, BMP_PYRAMID_3D_2))); + lcl_appendSubType(rSubTypeList,"3", percentText, getPreviewBitmap(Image(StockImage::Yes, BMP_PYRAMID_3D_3))); + lcl_appendSubType(rSubTypeList,"4", deepText, getPreviewBitmap(Image(StockImage::Yes, BMP_PYRAMID_3D_4))); break; default: //DataPointGeometry3D::CUBOID: - rSubTypeList.InsertItem(1, Image(StockImage::Yes, BMP_COLUMNS_3D_1)); - rSubTypeList.InsertItem(2, Image(StockImage::Yes, BMP_COLUMNS_3D_2)); - rSubTypeList.InsertItem(3, Image(StockImage::Yes, BMP_COLUMNS_3D_3)); - rSubTypeList.InsertItem(4, Image(StockImage::Yes, BMP_COLUMNS_3D)); + lcl_appendSubType(rSubTypeList,"1", normalText, getPreviewBitmap(Image(StockImage::Yes, BMP_COLUMNS_3D_1))); + lcl_appendSubType(rSubTypeList,"2", stackedText, getPreviewBitmap(Image(StockImage::Yes, BMP_COLUMNS_3D_2))); + lcl_appendSubType(rSubTypeList,"3", percentText, getPreviewBitmap(Image(StockImage::Yes, BMP_COLUMNS_3D_3))); + lcl_appendSubType(rSubTypeList,"4", deepText, getPreviewBitmap(Image(StockImage::Yes, BMP_COLUMNS_3D))); break; } } else { - rSubTypeList.InsertItem(1, Image(StockImage::Yes, BMP_COLUMNS_2D_1)); - rSubTypeList.InsertItem(2, Image(StockImage::Yes, BMP_COLUMNS_2D_2)); - rSubTypeList.InsertItem(3, Image(StockImage::Yes, BMP_COLUMNS_2D_3)); + lcl_appendSubType(rSubTypeList,"1", normalText, getPreviewBitmap(Image(StockImage::Yes, BMP_COLUMNS_2D_1))); + lcl_appendSubType(rSubTypeList,"2", stackedText, getPreviewBitmap(Image(StockImage::Yes, BMP_COLUMNS_2D_2))); + lcl_appendSubType(rSubTypeList,"3", percentText, getPreviewBitmap(Image(StockImage::Yes, BMP_COLUMNS_2D_3))); } +} - rSubTypeList.SetItemText( 1, SchResId( STR_NORMAL ) ); - rSubTypeList.SetItemText( 2, SchResId( STR_STACKED ) ); - rSubTypeList.SetItemText( 3, SchResId( STR_PERCENT ) ); - rSubTypeList.SetItemText( 4, SchResId( STR_DEEP ) ); +OUString ColumnChartDialogController::getChartName( sal_Int32 nId ) const +{ + switch (nId) + { + case 1: + return SchResId( STR_NORMAL ); + case 2: + return SchResId( STR_STACKED ); + case 3: + return SchResId( STR_PERCENT ); + case 4: + return SchResId( STR_DEEP ); + default: + break; + } + return OUString(); } BarChartDialogController::BarChartDialogController() @@ -510,50 +549,69 @@ const tTemplateServiceChartTypeParameterMap& BarChartDialogController::getTempla {"com.sun.star.chart2.template.ThreeDBarDeep" , ChartTypeParameter(4,false,true,GlobalStackMode_STACK_Z)}}; return s_aTemplateMap; } -void BarChartDialogController::fillSubTypeList( ValueSet& rSubTypeList, const ChartTypeParameter& rParameter ) +void BarChartDialogController::fillSubTypeList( weld::IconView& rSubTypeList, const ChartTypeParameter& rParameter ) { - rSubTypeList.Clear(); + rSubTypeList.clear(); + + OUString normalText = SchResId( STR_NORMAL ); + OUString stackedText = SchResId( STR_STACKED ); + OUString percentText = SchResId( STR_PERCENT ); + OUString deepText = SchResId( STR_DEEP ); if( rParameter.b3DLook ) { switch(rParameter.nGeometry3D) { case DataPointGeometry3D::CYLINDER: - rSubTypeList.InsertItem(1, Image(StockImage::Yes, BMP_ROEHRE_3D_1)); - rSubTypeList.InsertItem(2, Image(StockImage::Yes, BMP_ROEHRE_3D_2)); - rSubTypeList.InsertItem(3, Image(StockImage::Yes, BMP_ROEHRE_3D_3)); - rSubTypeList.InsertItem(4, Image(StockImage::Yes, BMP_ROEHRE_3D_4)); + lcl_appendSubType(rSubTypeList,"1", normalText, getPreviewBitmap(Image(StockImage::Yes, BMP_ROEHRE_3D_1))); + lcl_appendSubType(rSubTypeList,"2", stackedText, getPreviewBitmap(Image(StockImage::Yes, BMP_ROEHRE_3D_2))); + lcl_appendSubType(rSubTypeList,"3", percentText, getPreviewBitmap(Image(StockImage::Yes, BMP_ROEHRE_3D_3))); + lcl_appendSubType(rSubTypeList,"4", deepText, getPreviewBitmap(Image(StockImage::Yes, BMP_ROEHRE_3D_4))); break; case DataPointGeometry3D::CONE: - rSubTypeList.InsertItem(1, Image(StockImage::Yes, BMP_KEGELQ_3D_1)); - rSubTypeList.InsertItem(2, Image(StockImage::Yes, BMP_KEGELQ_3D_2)); - rSubTypeList.InsertItem(3, Image(StockImage::Yes, BMP_KEGELQ_3D_3)); - rSubTypeList.InsertItem(4, Image(StockImage::Yes, BMP_KEGELQ_3D_4)); + lcl_appendSubType(rSubTypeList,"1", normalText, getPreviewBitmap(Image(StockImage::Yes, BMP_KEGELQ_3D_1))); + lcl_appendSubType(rSubTypeList,"2", stackedText, getPreviewBitmap(Image(StockImage::Yes, BMP_KEGELQ_3D_2))); + lcl_appendSubType(rSubTypeList,"3", percentText, getPreviewBitmap(Image(StockImage::Yes, BMP_KEGELQ_3D_3))); + lcl_appendSubType(rSubTypeList,"4", deepText, getPreviewBitmap(Image(StockImage::Yes, BMP_KEGELQ_3D_4))); break; case DataPointGeometry3D::PYRAMID: - rSubTypeList.InsertItem(1, Image(StockImage::Yes, BMP_PYRAMIDQ_3D_1)); - rSubTypeList.InsertItem(2, Image(StockImage::Yes, BMP_PYRAMIDQ_3D_2)); - rSubTypeList.InsertItem(3, Image(StockImage::Yes, BMP_PYRAMIDQ_3D_3)); - rSubTypeList.InsertItem(4, Image(StockImage::Yes, BMP_PYRAMIDQ_3D_4)); + lcl_appendSubType(rSubTypeList,"1", normalText, getPreviewBitmap(Image(StockImage::Yes, BMP_PYRAMIDQ_3D_1))); + lcl_appendSubType(rSubTypeList,"2", stackedText, getPreviewBitmap(Image(StockImage::Yes, BMP_PYRAMIDQ_3D_2))); + lcl_appendSubType(rSubTypeList,"3", percentText, getPreviewBitmap(Image(StockImage::Yes, BMP_PYRAMIDQ_3D_3))); + lcl_appendSubType(rSubTypeList,"4", deepText, getPreviewBitmap(Image(StockImage::Yes, BMP_PYRAMIDQ_3D_4))); break; default: //DataPointGeometry3D::CUBOID: - rSubTypeList.InsertItem(1, Image(StockImage::Yes, BMP_BARS_3D_1)); - rSubTypeList.InsertItem(2, Image(StockImage::Yes, BMP_BARS_3D_2)); - rSubTypeList.InsertItem(3, Image(StockImage::Yes, BMP_BARS_3D_3)); - rSubTypeList.InsertItem(4, Image(StockImage::Yes, BMP_BARS_3D)); + lcl_appendSubType(rSubTypeList,"1", normalText, getPreviewBitmap(Image(StockImage::Yes, BMP_BARS_3D_1))); + lcl_appendSubType(rSubTypeList,"2", stackedText, getPreviewBitmap(Image(StockImage::Yes, BMP_BARS_3D_2))); + lcl_appendSubType(rSubTypeList,"3", percentText, getPreviewBitmap(Image(StockImage::Yes, BMP_BARS_3D_3))); + lcl_appendSubType(rSubTypeList,"4", deepText, getPreviewBitmap(Image(StockImage::Yes, BMP_BARS_3D))); break; } } else { - rSubTypeList.InsertItem(1, Image(StockImage::Yes, BMP_BARS_2D_1)); - rSubTypeList.InsertItem(2, Image(StockImage::Yes, BMP_BARS_2D_2)); - rSubTypeList.InsertItem(3, Image(StockImage::Yes, BMP_BARS_2D_3)); + lcl_appendSubType(rSubTypeList,"1", normalText, getPreviewBitmap(Image(StockImage::Yes, BMP_BARS_2D_1))); + lcl_appendSubType(rSubTypeList,"2", stackedText, getPreviewBitmap(Image(StockImage::Yes, BMP_BARS_2D_2))); + lcl_appendSubType(rSubTypeList,"3", percentText, getPreviewBitmap(Image(StockImage::Yes, BMP_BARS_2D_3))); + } +} + +OUString BarChartDialogController::getChartName( sal_Int32 nId ) const +{ + switch (nId) + { + case 1: + return SchResId( STR_NORMAL ); + case 2: + return SchResId( STR_STACKED ); + case 3: + return SchResId( STR_PERCENT ); + case 4: + return SchResId( STR_DEEP ); + default: + break; } - rSubTypeList.SetItemText( 1, SchResId( STR_NORMAL ) ); - rSubTypeList.SetItemText( 2, SchResId( STR_STACKED ) ); - rSubTypeList.SetItemText( 3, SchResId( STR_PERCENT ) ); - rSubTypeList.SetItemText( 4, SchResId( STR_DEEP ) ); + return OUString(); } //========= @@ -591,28 +649,29 @@ const tTemplateServiceChartTypeParameterMap& PieChartDialogController::getTempla {"com.sun.star.chart2.template.ThreeDDonutAllExploded" , ChartTypeParameter(4,false,true)}}; return s_aTemplateMap; } -void PieChartDialogController::fillSubTypeList( ValueSet& rSubTypeList, const ChartTypeParameter& rParameter ) +void PieChartDialogController::fillSubTypeList( weld::IconView& rSubTypeList, const ChartTypeParameter& rParameter ) { - rSubTypeList.Clear(); + rSubTypeList.clear(); + + OUString normalText = SchResId( STR_NORMAL ); + OUString explodedText = SchResId( STR_PIE_EXPLODED ); + OUString donutText = SchResId( STR_DONUT ); + OUString donutExplodedText = SchResId( STR_DONUT_EXPLODED ); if( rParameter.b3DLook ) { - rSubTypeList.InsertItem(1, Image(StockImage::Yes, BMP_CIRCLES_3D)); - rSubTypeList.InsertItem(2, Image(StockImage::Yes, BMP_CIRCLES_3D_EXPLODED)); - rSubTypeList.InsertItem(3, Image(StockImage::Yes, BMP_DONUT_3D)); - rSubTypeList.InsertItem(4, Image(StockImage::Yes, BMP_DONUT_3D_EXPLODED)); + lcl_appendSubType(rSubTypeList,"1", normalText, getPreviewBitmap(Image(StockImage::Yes, BMP_CIRCLES_3D))); + lcl_appendSubType(rSubTypeList,"2", explodedText, getPreviewBitmap(Image(StockImage::Yes, BMP_CIRCLES_3D_EXPLODED))); + lcl_appendSubType(rSubTypeList,"3", donutText, getPreviewBitmap(Image(StockImage::Yes, BMP_DONUT_3D))); + lcl_appendSubType(rSubTypeList,"4", donutExplodedText, getPreviewBitmap(Image(StockImage::Yes, BMP_DONUT_3D_EXPLODED))); } else { - rSubTypeList.InsertItem(1, Image(StockImage::Yes, BMP_CIRCLES_2D)); - 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)); + lcl_appendSubType(rSubTypeList,"1", normalText, getPreviewBitmap(Image(StockImage::Yes, BMP_CIRCLES_2D))); + lcl_appendSubType(rSubTypeList,"2", explodedText, getPreviewBitmap(Image(StockImage::Yes, BMP_CIRCLES_2D_EXPLODED))); + lcl_appendSubType(rSubTypeList,"3", donutText, getPreviewBitmap(Image(StockImage::Yes, BMP_DONUT_2D))); + lcl_appendSubType(rSubTypeList,"4", donutExplodedText, getPreviewBitmap(Image(StockImage::Yes, BMP_DONUT_2D_EXPLODED))); } - 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 ) ); } bool PieChartDialogController::shouldShow_3DLookControl() const @@ -620,6 +679,24 @@ bool PieChartDialogController::shouldShow_3DLookControl() const return true; } +OUString PieChartDialogController::getChartName( sal_Int32 nId ) const +{ + switch (nId) + { + case 1: + return SchResId( STR_NORMAL ); + case 2: + return SchResId( STR_PIE_EXPLODED ); + case 3: + return SchResId( STR_DONUT ); + case 4: + return SchResId( STR_DONUT_EXPLODED ); + default: + break; + } + return OUString(); +} + void PieChartDialogController::adjustParameterToSubType( ChartTypeParameter& rParameter ) { if(rParameter.eStackMode==GlobalStackMode_STACK_Z) @@ -655,14 +732,29 @@ const tTemplateServiceChartTypeParameterMap& OfPieChartDialogController::getTemp {"com.sun.star.chart2.template.PieOfPie" , ChartTypeParameter(2,false,false)}}; return s_aTemplateMap; } -void OfPieChartDialogController::fillSubTypeList( ValueSet& rSubTypeList, const ChartTypeParameter& /*rParameter*/ ) +void OfPieChartDialogController::fillSubTypeList( weld::IconView& rSubTypeList, const ChartTypeParameter& /*rParameter*/ ) { - rSubTypeList.Clear(); + rSubTypeList.clear(); + + OUString barOfPieText = SchResId( STR_BAR_OF_PIE ); + OUString pieOfPieText = SchResId( STR_PIE_OF_PIE ); - rSubTypeList.InsertItem(1, Image(StockImage::Yes, BMP_BAR_OF_PIE)); - rSubTypeList.InsertItem(2, Image(StockImage::Yes, BMP_PIE_OF_PIE)); - rSubTypeList.SetItemText( 1, SchResId( STR_BAR_OF_PIE ) ); - rSubTypeList.SetItemText( 2, SchResId( STR_PIE_OF_PIE ) ); + lcl_appendSubType(rSubTypeList,"1", barOfPieText, getPreviewBitmap(Image(StockImage::Yes, BMP_BAR_OF_PIE))); + lcl_appendSubType(rSubTypeList,"2", pieOfPieText, getPreviewBitmap(Image(StockImage::Yes, BMP_PIE_OF_PIE))); +} + +OUString OfPieChartDialogController::getChartName( sal_Int32 nId ) const +{ + switch (nId) + { + case 1: + return SchResId( STR_BAR_OF_PIE ); + case 2: + return SchResId( STR_PIE_OF_PIE ); + default: + break; + } + return OUString(); } bool OfPieChartDialogController::shouldShow_3DLookControl() const @@ -815,9 +907,14 @@ const tTemplateServiceChartTypeParameterMap& LineChartDialogController::getTempl {"com.sun.star.chart2.template.ThreeDLineDeep" , ChartTypeParameter(4,false,true,GlobalStackMode_STACK_Z,false,true)}}; return s_aTemplateMap; } -void LineChartDialogController::fillSubTypeList( ValueSet& rSubTypeList, const ChartTypeParameter& rParameter ) +void LineChartDialogController::fillSubTypeList( weld::IconView& rSubTypeList, const ChartTypeParameter& rParameter ) { - rSubTypeList.Clear(); + rSubTypeList.clear(); + + OUString pointsOnlyText = SchResId( STR_POINTS_ONLY ); + OUString pointsAndLinesText = SchResId( STR_POINTS_AND_LINES ); + OUString linesOnlyText = SchResId( STR_LINES_ONLY ); + OUString lines3DText = SchResId( STR_LINES_3D ); switch( rParameter.eCurveStyle ) { @@ -825,17 +922,17 @@ void LineChartDialogController::fillSubTypeList( ValueSet& rSubTypeList, const C case CurveStyle_B_SPLINES: if( rParameter.eStackMode == GlobalStackMode_NONE || rParameter.eStackMode == GlobalStackMode_STACK_Z ) { - rSubTypeList.InsertItem(1, Image(StockImage::Yes, BMP_POINTS_XCATEGORY)); - rSubTypeList.InsertItem(2, Image(StockImage::Yes, BMP_LINE_P_XCATEGORY_SMOOTH)); - rSubTypeList.InsertItem(3, Image(StockImage::Yes, BMP_LINE_O_XCATEGORY_SMOOTH)); - rSubTypeList.InsertItem(4, Image(StockImage::Yes, BMP_LINE3D_XCATEGORY_SMOOTH)); + lcl_appendSubType(rSubTypeList,"1", pointsOnlyText, getPreviewBitmap(Image(StockImage::Yes, BMP_POINTS_XCATEGORY))); + lcl_appendSubType(rSubTypeList,"2", pointsAndLinesText, getPreviewBitmap(Image(StockImage::Yes, BMP_LINE_P_XCATEGORY_SMOOTH))); + lcl_appendSubType(rSubTypeList,"3", linesOnlyText, getPreviewBitmap(Image(StockImage::Yes, BMP_LINE_O_XCATEGORY_SMOOTH))); + lcl_appendSubType(rSubTypeList,"4", lines3DText, getPreviewBitmap(Image(StockImage::Yes, BMP_LINE3D_XCATEGORY_SMOOTH))); } else { - rSubTypeList.InsertItem(1, Image(StockImage::Yes, BMP_POINTS_STACKED)); - rSubTypeList.InsertItem(2, Image(StockImage::Yes, BMP_LINE_P_STACKED_SMOOTH)); - rSubTypeList.InsertItem(3, Image(StockImage::Yes, BMP_LINE_O_STACKED_SMOOTH)); - rSubTypeList.InsertItem(4, Image(StockImage::Yes, BMP_LINE3D_STACKED_SMOOTH)); + lcl_appendSubType(rSubTypeList,"1", pointsOnlyText, getPreviewBitmap(Image(StockImage::Yes, BMP_POINTS_STACKED))); + lcl_appendSubType(rSubTypeList,"2", pointsAndLinesText, getPreviewBitmap(Image(StockImage::Yes, BMP_LINE_P_STACKED_SMOOTH))); + lcl_appendSubType(rSubTypeList,"3", linesOnlyText, getPreviewBitmap(Image(StockImage::Yes, BMP_LINE_O_STACKED_SMOOTH))); + lcl_appendSubType(rSubTypeList,"4", lines3DText, getPreviewBitmap(Image(StockImage::Yes, BMP_LINE3D_STACKED_SMOOTH))); } break; case CurveStyle_STEP_START: @@ -844,41 +941,53 @@ void LineChartDialogController::fillSubTypeList( ValueSet& rSubTypeList, const C case CurveStyle_STEP_CENTER_Y: if( rParameter.eStackMode == GlobalStackMode_NONE || rParameter.eStackMode == GlobalStackMode_STACK_Z ) { - rSubTypeList.InsertItem(1, Image(StockImage::Yes, BMP_POINTS_XCATEGORY)); - rSubTypeList.InsertItem(2, Image(StockImage::Yes, BMP_LINE_P_XCATEGORY_STEPPED)); - rSubTypeList.InsertItem(3, Image(StockImage::Yes, BMP_LINE_O_XCATEGORY_STEPPED)); - rSubTypeList.InsertItem(4, Image(StockImage::Yes, BMP_LINE3D_XCATEGORY_STEPPED)); + lcl_appendSubType(rSubTypeList,"1", pointsOnlyText, getPreviewBitmap(Image(StockImage::Yes, BMP_POINTS_XCATEGORY))); + lcl_appendSubType(rSubTypeList,"2", pointsAndLinesText, getPreviewBitmap(Image(StockImage::Yes, BMP_LINE_P_XCATEGORY_STEPPED))); + lcl_appendSubType(rSubTypeList,"3", linesOnlyText, getPreviewBitmap(Image(StockImage::Yes, BMP_LINE_O_XCATEGORY_STEPPED))); + lcl_appendSubType(rSubTypeList,"4", lines3DText, getPreviewBitmap(Image(StockImage::Yes, BMP_LINE3D_XCATEGORY_STEPPED))); } else { - rSubTypeList.InsertItem(1, Image(StockImage::Yes, BMP_POINTS_STACKED)); - rSubTypeList.InsertItem(2, Image(StockImage::Yes, BMP_LINE_P_STACKED_STEPPED)); - rSubTypeList.InsertItem(3, Image(StockImage::Yes, BMP_LINE_O_STACKED_STEPPED)); - rSubTypeList.InsertItem(4, Image(StockImage::Yes, BMP_LINE3D_STACKED_STEPPED)); + lcl_appendSubType(rSubTypeList,"1", pointsOnlyText, getPreviewBitmap(Image(StockImage::Yes, BMP_POINTS_STACKED))); + lcl_appendSubType(rSubTypeList,"2", pointsAndLinesText, getPreviewBitmap(Image(StockImage::Yes, BMP_LINE_P_STACKED_STEPPED))); + lcl_appendSubType(rSubTypeList,"3", linesOnlyText, getPreviewBitmap(Image(StockImage::Yes, BMP_LINE_O_STACKED_STEPPED))); + lcl_appendSubType(rSubTypeList,"4", lines3DText, getPreviewBitmap(Image(StockImage::Yes, BMP_LINE3D_STACKED_STEPPED))); } break; default: // includes CurveStyle_LINES //direct lines if( rParameter.eStackMode == GlobalStackMode_NONE || rParameter.eStackMode == GlobalStackMode_STACK_Z ) { - rSubTypeList.InsertItem(1, Image(StockImage::Yes, BMP_POINTS_XCATEGORY)); - rSubTypeList.InsertItem(2, Image(StockImage::Yes, BMP_LINE_P_XCATEGORY)); - rSubTypeList.InsertItem(3, Image(StockImage::Yes, BMP_LINE_O_XCATEGORY)); - rSubTypeList.InsertItem(4, Image(StockImage::Yes, BMP_LINE3D_XCATEGORY)); + lcl_appendSubType(rSubTypeList,"1", pointsOnlyText, getPreviewBitmap(Image(StockImage::Yes, BMP_POINTS_XCATEGORY))); + lcl_appendSubType(rSubTypeList,"2", pointsAndLinesText, getPreviewBitmap(Image(StockImage::Yes, BMP_LINE_P_XCATEGORY))); + lcl_appendSubType(rSubTypeList,"3", linesOnlyText, getPreviewBitmap(Image(StockImage::Yes, BMP_LINE_O_XCATEGORY))); + lcl_appendSubType(rSubTypeList,"4", lines3DText, getPreviewBitmap(Image(StockImage::Yes, BMP_LINE3D_XCATEGORY))); } else { - rSubTypeList.InsertItem(1, Image(StockImage::Yes, BMP_POINTS_STACKED)); - rSubTypeList.InsertItem(2, Image(StockImage::Yes, BMP_LINE_P_STACKED)); - rSubTypeList.InsertItem(3, Image(StockImage::Yes, BMP_LINE_O_STACKED)); - rSubTypeList.InsertItem(4, Image(StockImage::Yes, BMP_LINE3D_STACKED)); + lcl_appendSubType(rSubTypeList,"1", pointsOnlyText, getPreviewBitmap(Image(StockImage::Yes, BMP_POINTS_STACKED))); + lcl_appendSubType(rSubTypeList,"2", pointsAndLinesText, getPreviewBitmap(Image(StockImage::Yes, BMP_LINE_P_STACKED))); + lcl_appendSubType(rSubTypeList,"3", linesOnlyText, getPreviewBitmap(Image(StockImage::Yes, BMP_LINE_O_STACKED))); + lcl_appendSubType(rSubTypeList,"4", lines3DText, getPreviewBitmap(Image(StockImage::Yes, BMP_LINE3D_STACKED))); } } - - rSubTypeList.SetItemText( 1, SchResId( STR_POINTS_ONLY ) ); - rSubTypeList.SetItemText( 2, SchResId( STR_POINTS_AND_LINES ) ); - rSubTypeList.SetItemText( 3, SchResId( STR_LINES_ONLY ) ); - rSubTypeList.SetItemText( 4, SchResId( STR_LINES_3D ) ); +} +OUString LineChartDialogController::getChartName( sal_Int32 nId ) const +{ + switch (nId) + { + case 1: + return SchResId( STR_POINTS_ONLY ); + case 2: + return SchResId( STR_POINTS_AND_LINES ); + case 3: + return SchResId( STR_LINES_ONLY ); + case 4: + return SchResId( STR_LINES_3D ); + default: + break; + } + return OUString(); } bool LineChartDialogController::shouldShow_StackingControl() const { @@ -955,19 +1064,24 @@ const tTemplateServiceChartTypeParameterMap& XYChartDialogController::getTemplat return s_aTemplateMap; } -void XYChartDialogController::fillSubTypeList( ValueSet& rSubTypeList, const ChartTypeParameter& rParameter ) +void XYChartDialogController::fillSubTypeList( weld::IconView& rSubTypeList, const ChartTypeParameter& rParameter ) { - rSubTypeList.Clear(); + rSubTypeList.clear(); + + OUString pointsOnlyText = SchResId( STR_POINTS_ONLY ); + OUString pointsAndLinesText = SchResId( STR_POINTS_AND_LINES ); + OUString linesOnlyText = SchResId( STR_LINES_ONLY ); + OUString lines3DText = SchResId( STR_LINES_3D ); switch (rParameter.eCurveStyle) { case CurveStyle_CUBIC_SPLINES: case CurveStyle_B_SPLINES: { - rSubTypeList.InsertItem(1, Image(StockImage::Yes, BMP_POINTS_XVALUES)); - rSubTypeList.InsertItem(2, Image(StockImage::Yes, BMP_LINE_P_XVALUES_SMOOTH)); - rSubTypeList.InsertItem(3, Image(StockImage::Yes, BMP_LINE_O_XVALUES_SMOOTH)); - rSubTypeList.InsertItem(4, Image(StockImage::Yes, BMP_LINE3D_XVALUES_SMOOTH)); + lcl_appendSubType(rSubTypeList,"1", pointsOnlyText, getPreviewBitmap(Image(StockImage::Yes, BMP_POINTS_XVALUES))); + lcl_appendSubType(rSubTypeList,"2", pointsAndLinesText, getPreviewBitmap(Image(StockImage::Yes, BMP_LINE_P_XVALUES_SMOOTH))); + lcl_appendSubType(rSubTypeList,"3", linesOnlyText, getPreviewBitmap(Image(StockImage::Yes, BMP_LINE_O_XVALUES_SMOOTH))); + lcl_appendSubType(rSubTypeList,"4", lines3DText, getPreviewBitmap(Image(StockImage::Yes, BMP_LINE3D_XVALUES_SMOOTH))); break; } case CurveStyle_STEP_START: @@ -975,23 +1089,35 @@ void XYChartDialogController::fillSubTypeList( ValueSet& rSubTypeList, const Cha case CurveStyle_STEP_CENTER_X: case CurveStyle_STEP_CENTER_Y: { - rSubTypeList.InsertItem(1, Image(StockImage::Yes, BMP_POINTS_XVALUES)); - rSubTypeList.InsertItem(2, Image(StockImage::Yes, BMP_LINE_P_XVALUES_STEPPED)); - rSubTypeList.InsertItem(3, Image(StockImage::Yes, BMP_LINE_O_XVALUES_STEPPED)); - rSubTypeList.InsertItem(4, Image(StockImage::Yes, BMP_LINE3D_XVALUES_STEPPED)); + lcl_appendSubType(rSubTypeList,"1", pointsOnlyText, getPreviewBitmap(Image(StockImage::Yes, BMP_POINTS_XVALUES))); + lcl_appendSubType(rSubTypeList,"2", pointsAndLinesText, getPreviewBitmap(Image(StockImage::Yes, BMP_LINE_P_XVALUES_STEPPED))); + lcl_appendSubType(rSubTypeList,"3", linesOnlyText, getPreviewBitmap(Image(StockImage::Yes, BMP_LINE_O_XVALUES_STEPPED))); + lcl_appendSubType(rSubTypeList,"4", lines3DText, getPreviewBitmap(Image(StockImage::Yes, BMP_LINE3D_XVALUES_STEPPED))); break; } default: // includes CurveStyle_LINES - rSubTypeList.InsertItem(1, Image(StockImage::Yes, BMP_POINTS_XVALUES)); - rSubTypeList.InsertItem(2, Image(StockImage::Yes, BMP_LINE_P_XVALUES)); - rSubTypeList.InsertItem(3, Image(StockImage::Yes, BMP_LINE_O_XVALUES)); - rSubTypeList.InsertItem(4, Image(StockImage::Yes, BMP_LINE3D_XVALUES)); + lcl_appendSubType(rSubTypeList,"1", pointsOnlyText, getPreviewBitmap(Image(StockImage::Yes, BMP_POINTS_XVALUES))); + lcl_appendSubType(rSubTypeList,"2", pointsAndLinesText, getPreviewBitmap(Image(StockImage::Yes, BMP_LINE_P_XVALUES))); + lcl_appendSubType(rSubTypeList,"3", linesOnlyText, getPreviewBitmap(Image(StockImage::Yes, BMP_LINE_O_XVALUES))); + lcl_appendSubType(rSubTypeList,"4", lines3DText, getPreviewBitmap(Image(StockImage::Yes, BMP_LINE3D_XVALUES))); } - - rSubTypeList.SetItemText( 1, SchResId( STR_POINTS_ONLY ) ); - rSubTypeList.SetItemText( 2, SchResId( STR_POINTS_AND_LINES ) ); - rSubTypeList.SetItemText( 3, SchResId( STR_LINES_ONLY ) ); - rSubTypeList.SetItemText( 4, SchResId( STR_LINES_3D ) ); +} +OUString XYChartDialogController::getChartName( sal_Int32 nId ) const +{ + switch (nId) + { + case 1: + return SchResId( STR_POINTS_ONLY ); + case 2: + return SchResId( STR_POINTS_AND_LINES ); + case 3: + return SchResId( STR_LINES_ONLY ); + case 4: + return SchResId( STR_LINES_3D ); + default: + break; + } + return OUString(); } bool XYChartDialogController::shouldShow_SplineControl() const { @@ -1065,26 +1191,42 @@ const tTemplateServiceChartTypeParameterMap& AreaChartDialogController::getTempl return s_aTemplateMap; } -void AreaChartDialogController::fillSubTypeList( ValueSet& rSubTypeList, const ChartTypeParameter& rParameter ) +void AreaChartDialogController::fillSubTypeList( weld::IconView& rSubTypeList, const ChartTypeParameter& rParameter ) { - rSubTypeList.Clear(); + rSubTypeList.clear(); + m_b3DLook = rParameter.b3DLook; + + OUString firstText = SchResId( m_b3DLook ? STR_DEEP : STR_NORMAL ); + OUString stackedText = SchResId( STR_STACKED ); + OUString percentText = SchResId( STR_PERCENT ); if( rParameter.b3DLook ) { - rSubTypeList.InsertItem(1, Image(StockImage::Yes, BMP_AREAS_3D)); - rSubTypeList.InsertItem(2, Image(StockImage::Yes, BMP_AREAS_3D_1)); - rSubTypeList.InsertItem(3, Image(StockImage::Yes, BMP_AREAS_3D_2)); + lcl_appendSubType(rSubTypeList,"1", firstText, getPreviewBitmap(Image(StockImage::Yes, BMP_AREAS_3D))); + lcl_appendSubType(rSubTypeList,"2", stackedText, getPreviewBitmap(Image(StockImage::Yes, BMP_AREAS_3D_1))); + lcl_appendSubType(rSubTypeList,"3", percentText, getPreviewBitmap(Image(StockImage::Yes, BMP_AREAS_3D_2))); } else { - rSubTypeList.InsertItem(1, Image(StockImage::Yes, BMP_AREAS_2D_1)); - rSubTypeList.InsertItem(2, Image(StockImage::Yes, BMP_AREAS_2D)); - rSubTypeList.InsertItem(3, Image(StockImage::Yes, BMP_AREAS_2D_3)); + lcl_appendSubType(rSubTypeList,"1", firstText, getPreviewBitmap(Image(StockImage::Yes, BMP_AREAS_2D_1))); + lcl_appendSubType(rSubTypeList,"2", stackedText, getPreviewBitmap(Image(StockImage::Yes, BMP_AREAS_2D))); + lcl_appendSubType(rSubTypeList,"3", percentText, getPreviewBitmap(Image(StockImage::Yes, BMP_AREAS_2D_3))); } - - rSubTypeList.SetItemText( 1, SchResId( rParameter.b3DLook ? STR_DEEP : STR_NORMAL ) ); - rSubTypeList.SetItemText( 2, SchResId( STR_STACKED ) ); - rSubTypeList.SetItemText( 3, SchResId( STR_PERCENT ) ); +} +OUString AreaChartDialogController::getChartName( sal_Int32 nId ) const +{ + switch (nId) + { + case 1: + return SchResId( m_b3DLook ? STR_DEEP : STR_NORMAL ); + case 2: + return SchResId( STR_STACKED ); + case 3: + return SchResId( STR_PERCENT ); + default: + break; + } + return OUString(); } void AreaChartDialogController::adjustParameterToSubType( ChartTypeParameter& rParameter ) { @@ -1161,29 +1303,46 @@ const tTemplateServiceChartTypeParameterMap& NetChartDialogController::getTempla {"com.sun.star.chart2.template.PercentStackedFilledNet" ,ChartTypeParameter(4,false,false,GlobalStackMode_STACK_Y_PERCENT,false,false)}}; return s_aTemplateMap; } -void NetChartDialogController::fillSubTypeList( ValueSet& rSubTypeList, const ChartTypeParameter& rParameter ) +void NetChartDialogController::fillSubTypeList( weld::IconView& rSubTypeList, const ChartTypeParameter& rParameter ) { - rSubTypeList.Clear(); + rSubTypeList.clear(); + + OUString pointsOnlyText = SchResId( STR_POINTS_ONLY ); + OUString pointsAndLinesText = SchResId( STR_POINTS_AND_LINES ); + OUString linesOnlyText = SchResId( STR_LINES_ONLY ); + OUString filledText = SchResId( STR_FILLED ); if( rParameter.eStackMode == GlobalStackMode_NONE ) { - rSubTypeList.InsertItem(1, Image(StockImage::Yes, BMP_NET_SYMB)); - rSubTypeList.InsertItem(2, Image(StockImage::Yes, BMP_NET_LINESYMB)); - rSubTypeList.InsertItem(3, Image(StockImage::Yes, BMP_NET)); - rSubTypeList.InsertItem(4, Image(StockImage::Yes, BMP_NET_FILL)); + lcl_appendSubType(rSubTypeList,"1", pointsOnlyText, getPreviewBitmap(Image(StockImage::Yes, BMP_NET_SYMB))); + lcl_appendSubType(rSubTypeList,"2", pointsAndLinesText, getPreviewBitmap(Image(StockImage::Yes, BMP_NET_LINESYMB))); + lcl_appendSubType(rSubTypeList,"3", linesOnlyText, getPreviewBitmap(Image(StockImage::Yes, BMP_NET))); + lcl_appendSubType(rSubTypeList,"4", filledText, getPreviewBitmap(Image(StockImage::Yes, BMP_NET_FILL))); } else { - rSubTypeList.InsertItem(1, Image(StockImage::Yes, BMP_NET_SYMB_STACK)); - rSubTypeList.InsertItem(2, Image(StockImage::Yes, BMP_NET_LINESYMB_STACK)); - rSubTypeList.InsertItem(3, Image(StockImage::Yes, BMP_NET_STACK)); - rSubTypeList.InsertItem(4, Image(StockImage::Yes, BMP_NET_FILL_STACK)); + lcl_appendSubType(rSubTypeList,"1", pointsOnlyText, getPreviewBitmap(Image(StockImage::Yes, BMP_NET_SYMB_STACK))); + lcl_appendSubType(rSubTypeList,"2", pointsAndLinesText, getPreviewBitmap(Image(StockImage::Yes, BMP_NET_LINESYMB_STACK))); + lcl_appendSubType(rSubTypeList,"3", linesOnlyText, getPreviewBitmap(Image(StockImage::Yes, BMP_NET_STACK))); + lcl_appendSubType(rSubTypeList,"4", filledText, getPreviewBitmap(Image(StockImage::Yes, BMP_NET_FILL_STACK))); } - - rSubTypeList.SetItemText( 1, SchResId( STR_POINTS_ONLY ) ); - rSubTypeList.SetItemText( 2, SchResId( STR_POINTS_AND_LINES ) ); - rSubTypeList.SetItemText( 3, SchResId( STR_LINES_ONLY ) ); - rSubTypeList.SetItemText( 4, SchResId( STR_FILLED ) ); +} +OUString NetChartDialogController::getChartName( sal_Int32 nId ) const +{ + switch (nId) + { + case 1: + return SchResId( STR_POINTS_ONLY ); + case 2: + return SchResId( STR_POINTS_AND_LINES ); + case 3: + return SchResId( STR_LINES_ONLY ); + case 4: + return SchResId( STR_FILLED ); + default: + break; + } + return OUString(); } void NetChartDialogController::adjustParameterToSubType( ChartTypeParameter& rParameter ) { @@ -1240,18 +1399,37 @@ const tTemplateServiceChartTypeParameterMap& StockChartDialogController::getTemp return s_aTemplateMap; } -void StockChartDialogController::fillSubTypeList( ValueSet& rSubTypeList, const ChartTypeParameter& /*rParameter*/ ) +void StockChartDialogController::fillSubTypeList( weld::IconView& rSubTypeList, const ChartTypeParameter& /*rParameter*/ ) { - rSubTypeList.Clear(); - rSubTypeList.InsertItem(1, Image(StockImage::Yes, BMP_STOCK_1)); - rSubTypeList.InsertItem(2, Image(StockImage::Yes, BMP_STOCK_2)); - rSubTypeList.InsertItem(3, Image(StockImage::Yes, BMP_STOCK_3)); - rSubTypeList.InsertItem(4, Image(StockImage::Yes, BMP_STOCK_4)); + rSubTypeList.clear(); - rSubTypeList.SetItemText( 1, SchResId(STR_STOCK_1) ); - rSubTypeList.SetItemText( 2, SchResId(STR_STOCK_2) ); - rSubTypeList.SetItemText( 3, SchResId(STR_STOCK_3) ); - rSubTypeList.SetItemText( 4, SchResId(STR_STOCK_4) ); + OUString stock1Text = SchResId(STR_STOCK_1); + OUString stock2Text = SchResId(STR_STOCK_2); + OUString stock3Text = SchResId(STR_STOCK_3); + OUString stock4Text = SchResId(STR_STOCK_4); + + lcl_appendSubType(rSubTypeList,"1", stock1Text, getPreviewBitmap(Image(StockImage::Yes, BMP_STOCK_1))); + lcl_appendSubType(rSubTypeList,"2", stock2Text, getPreviewBitmap(Image(StockImage::Yes, BMP_STOCK_2))); + lcl_appendSubType(rSubTypeList,"3", stock3Text, getPreviewBitmap(Image(StockImage::Yes, BMP_STOCK_3))); + lcl_appendSubType(rSubTypeList,"4", stock4Text, getPreviewBitmap(Image(StockImage::Yes, BMP_STOCK_4))); +} + +OUString StockChartDialogController::getChartName( sal_Int32 nId ) const +{ + switch (nId) + { + case 1: + return SchResId( STR_STOCK_1 ); + case 2: + return SchResId( STR_STOCK_2 ); + case 3: + return SchResId( STR_STOCK_3 ); + case 4: + return SchResId( STR_STOCK_4 ); + default: + break; + } + return OUString(); } void StockChartDialogController::adjustParameterToSubType( ChartTypeParameter& rParameter ) @@ -1283,14 +1461,29 @@ const tTemplateServiceChartTypeParameterMap& CombiColumnLineChartDialogControlle return s_aTemplateMap; } -void CombiColumnLineChartDialogController::fillSubTypeList( ValueSet& rSubTypeList, const ChartTypeParameter& /*rParameter*/ ) +void CombiColumnLineChartDialogController::fillSubTypeList( weld::IconView& rSubTypeList, const ChartTypeParameter& /*rParameter*/ ) { - rSubTypeList.Clear(); - rSubTypeList.InsertItem(1, Image(StockImage::Yes, BMP_COLUMN_LINE)); - rSubTypeList.InsertItem(2, Image(StockImage::Yes, BMP_COLUMN_LINE_STACKED)); + rSubTypeList.clear(); - rSubTypeList.SetItemText(1, SchResId(STR_LINE_COLUMN)); - rSubTypeList.SetItemText(2, SchResId(STR_LINE_STACKEDCOLUMN)); + OUString lineColumnText = SchResId(STR_LINE_COLUMN); + OUString lineStackedColumnText = SchResId(STR_LINE_STACKEDCOLUMN); + + lcl_appendSubType(rSubTypeList,"1", lineColumnText, getPreviewBitmap(Image(StockImage::Yes, BMP_COLUMN_LINE))); + lcl_appendSubType(rSubTypeList,"2", lineStackedColumnText, getPreviewBitmap(Image(StockImage::Yes, BMP_COLUMN_LINE_STACKED))); +} + +OUString CombiColumnLineChartDialogController::getChartName( sal_Int32 nId ) const +{ + switch (nId) + { + case 1: + return SchResId( STR_LINE_COLUMN ); + case 2: + return SchResId( STR_LINE_STACKEDCOLUMN ); + default: + break; + } + return OUString(); } void CombiColumnLineChartDialogController::showExtraControls(weld::Builder* pBuilder) @@ -1409,12 +1602,24 @@ const tTemplateServiceChartTypeParameterMap& BubbleChartDialogController::getTem {"com.sun.star.chart2.template.Bubble" , ChartTypeParameter(1,true)}}; return s_aTemplateMap; } -void BubbleChartDialogController::fillSubTypeList( ValueSet& rSubTypeList, const ChartTypeParameter& /*rParameter*/ ) +void BubbleChartDialogController::fillSubTypeList( weld::IconView& rSubTypeList, const ChartTypeParameter& /*rParameter*/ ) { - rSubTypeList.Clear(); - rSubTypeList.InsertItem(1, Image(StockImage::Yes, BMP_BUBBLE_1)); + rSubTypeList.clear(); - rSubTypeList.SetItemText( 1, SchResId(STR_BUBBLE_1) ); + OUString bubble1Text = SchResId(STR_BUBBLE_1); + + lcl_appendSubType(rSubTypeList,"1", bubble1Text, getPreviewBitmap(Image(StockImage::Yes, BMP_BUBBLE_1))); +} +OUString BubbleChartDialogController::getChartName( sal_Int32 nId ) const +{ + switch (nId) + { + case 1: + return SchResId( STR_BUBBLE_1 ); + default: + break; + } + return OUString(); } void BubbleChartDialogController::adjustParameterToSubType( ChartTypeParameter& rParameter ) { diff --git a/chart2/source/controller/dialogs/tp_ChartType.cxx b/chart2/source/controller/dialogs/tp_ChartType.cxx index 59f8776a0160..53021ec55d59 100644 --- a/chart2/source/controller/dialogs/tp_ChartType.cxx +++ b/chart2/source/controller/dialogs/tp_ChartType.cxx @@ -27,8 +27,6 @@ #include <Diagram.hxx> #include <unonames.hxx> -#include <svtools/valueset.hxx> - #include <utility> #include <vcl/weld.hxx> #include <vcl/outdev.hxx> @@ -53,12 +51,8 @@ ChartTypeTabPage::ChartTypeTabPage(weld::Container* pPage, weld::DialogControlle , m_aTimerTriggeredControllerLock( m_xChartModel ) , m_xFT_ChooseType(m_xBuilder->weld_label(u"FT_CAPTION_FOR_WIZARD"_ustr)) , m_xMainTypeList(m_xBuilder->weld_tree_view(u"charttype"_ustr)) - , m_xSubTypeList(new ValueSet(m_xBuilder->weld_scrolled_window(u"subtypewin"_ustr, true))) - , m_xSubTypeListWin(new weld::CustomWeld(*m_xBuilder, u"subtype"_ustr, *m_xSubTypeList)) + , m_xSubTypeList(m_xBuilder->weld_icon_view(u"subtype_iconview"_ustr)) { - Size aSize(m_xSubTypeList->GetDrawingArea()->get_ref_device().LogicToPixel(Size(150, 50), MapMode(MapUnit::MapAppFont))); - m_xSubTypeListWin->set_size_request(aSize.Width(), aSize.Height()); - if (bShowDescription) { m_xFT_ChooseType->show(); @@ -71,16 +65,13 @@ ChartTypeTabPage::ChartTypeTabPage(weld::Container* pPage, weld::DialogControlle SetPageTitle(SchResId(STR_PAGE_CHARTTYPE)); m_xMainTypeList->connect_selection_changed(LINK(this, ChartTypeTabPage, SelectMainTypeHdl)); - m_xSubTypeList->SetSelectHdl( LINK( this, ChartTypeTabPage, SelectSubTypeHdl ) ); + m_xSubTypeList->connect_selection_changed( LINK( this, ChartTypeTabPage, SelectSubTypeHdl ) ); + m_xSubTypeList->connect_query_tooltip( LINK(this, ChartTypeTabPage, QueryTooltipHdl) ); - m_xSubTypeList->SetStyle(m_xSubTypeList->GetStyle() | - WB_ITEMBORDER | WB_DOUBLEBORDER | WB_NAMEFIELD | WB_FLATVALUESET | WB_3DLOOK ); // Set number of columns in chart type selector. // TODO: Ideally this would not be hard-coded, but determined // programmatically based on the maximum number of chart types across all // controllers. - m_xSubTypeList->SetColCount(4); - m_xSubTypeList->SetLineCount(1); bool bEnableComplexChartTypes = true; uno::Reference< beans::XPropertySet > xProps( static_cast<cppu::OWeakObject*>(m_xChartModel.get()), uno::UNO_QUERY ); @@ -142,14 +133,13 @@ ChartTypeTabPage::~ChartTypeTabPage() m_pSplineResourceGroup.reset(); m_pGeometryResourceGroup.reset(); m_pSortByXValuesResourceGroup.reset(); - m_xSubTypeListWin.reset(); m_xSubTypeList.reset(); } ChartTypeParameter ChartTypeTabPage::getCurrentParamter() const { ChartTypeParameter aParameter; - aParameter.nSubTypeIndex = static_cast<sal_Int32>(m_xSubTypeList->GetSelectedItemId()); + aParameter.nSubTypeIndex = m_xSubTypeList->get_selected_id().toInt32(); m_pDim3DLookResourceGroup->fillParameter( aParameter ); m_pStackingResourceGroup->fillParameter( aParameter ); m_pSplineResourceGroup->fillParameter( aParameter ); @@ -213,7 +203,7 @@ ChartTypeDialogController* ChartTypeTabPage::getSelectedMainType() return pTypeController; } -IMPL_LINK_NOARG(ChartTypeTabPage, SelectSubTypeHdl, ValueSet*, void) +IMPL_LINK_NOARG(ChartTypeTabPage, SelectSubTypeHdl, weld::IconView&, void) { if( m_pCurrentMainType ) { @@ -224,6 +214,16 @@ IMPL_LINK_NOARG(ChartTypeTabPage, SelectSubTypeHdl, ValueSet*, void) } } +IMPL_LINK(ChartTypeTabPage, QueryTooltipHdl, const weld::TreeIter&, iter, OUString) +{ + const OUString sId = m_xSubTypeList->get_id(iter); + + if(!sId.isEmpty() && m_pCurrentMainType) + return m_pCurrentMainType->getChartName(sId.toInt32()); + + return OUString(); +} + IMPL_LINK_NOARG(ChartTypeTabPage, SelectMainTypeHdl, weld::TreeView&, void) { selectMainType(); @@ -274,7 +274,7 @@ void ChartTypeTabPage::selectMainType() void ChartTypeTabPage::showAllControls( ChartTypeDialogController& rTypeController ) { m_xMainTypeList->show(); - m_xSubTypeList->Show(); + m_xSubTypeList->show(); bool bShow = rTypeController.shouldShow_3DLookControl(); m_pDim3DLookResourceGroup->showControls( bShow ); @@ -296,7 +296,7 @@ void ChartTypeTabPage::fillAllControls( const ChartTypeParameter& rParameter, bo { m_pCurrentMainType->fillSubTypeList(*m_xSubTypeList, rParameter); } - m_xSubTypeList->SelectItem( static_cast<sal_uInt16>( rParameter.nSubTypeIndex) ); + m_xSubTypeList->select( static_cast<sal_uInt16>( rParameter.nSubTypeIndex - 1) ); // Convert 1-based subtype index to 0-based index for selection m_pDim3DLookResourceGroup->fillControls( rParameter ); m_pStackingResourceGroup->fillControls( rParameter ); m_pSplineResourceGroup->fillControls( rParameter ); @@ -357,7 +357,7 @@ void ChartTypeTabPage::initializePage() if( !bFound ) { m_xMainTypeList->show(); - m_xSubTypeList->Show(); + m_xSubTypeList->show(); m_pDim3DLookResourceGroup->showControls( false ); m_pStackingResourceGroup->showControls( false ); m_pSplineResourceGroup->showControls( false ); diff --git a/chart2/source/controller/dialogs/tp_ChartType.hxx b/chart2/source/controller/dialogs/tp_ChartType.hxx index 946beb836e1a..537b03a3aeaa 100644 --- a/chart2/source/controller/dialogs/tp_ChartType.hxx +++ b/chart2/source/controller/dialogs/tp_ChartType.hxx @@ -29,8 +29,6 @@ namespace weld { class CustomWeld; } -class ValueSet; - namespace chart { @@ -65,7 +63,8 @@ private: void selectMainType(); DECL_LINK(SelectMainTypeHdl, weld::TreeView&, void); - DECL_LINK(SelectSubTypeHdl, ValueSet*, void ); + DECL_LINK(SelectSubTypeHdl, weld::IconView&, void ); + DECL_LINK(QueryTooltipHdl, const weld::TreeIter&, OUString); std::unique_ptr<Dim3DLookResourceGroup> m_pDim3DLookResourceGroup; std::unique_ptr<StackingResourceGroup> m_pStackingResourceGroup; @@ -84,8 +83,7 @@ private: std::unique_ptr<weld::Label> m_xFT_ChooseType; std::unique_ptr<weld::TreeView> m_xMainTypeList; - std::unique_ptr<ValueSet> m_xSubTypeList; - std::unique_ptr<weld::CustomWeld> m_xSubTypeListWin; + std::unique_ptr<weld::IconView> m_xSubTypeList; }; } //namespace chart diff --git a/chart2/source/controller/sidebar/ChartTypePanel.cxx b/chart2/source/controller/sidebar/ChartTypePanel.cxx index 74c3423ebe6d..b4393de64526 100644 --- a/chart2/source/controller/sidebar/ChartTypePanel.cxx +++ b/chart2/source/controller/sidebar/ChartTypePanel.cxx @@ -29,7 +29,6 @@ #include <Diagram.hxx> #include <unonames.hxx> -#include <svtools/valueset.hxx> #include <comphelper/diagnose_ex.hxx> using namespace css; @@ -53,20 +52,11 @@ ChartTypePanel::ChartTypePanel(weld::Widget* pParent, ::chart::ChartController* , m_nChangingCalls(0) , m_aTimerTriggeredControllerLock(m_xChartModel) , m_xMainTypeList(m_xBuilder->weld_combo_box(u"cmb_chartType"_ustr)) - , m_xSubTypeList(new ValueSet(m_xBuilder->weld_scrolled_window(u"subtypewin"_ustr, true))) - , m_xSubTypeListWin(new weld::CustomWeld(*m_xBuilder, u"subtype"_ustr, *m_xSubTypeList)) + , m_xSubTypeList(m_xBuilder->weld_icon_view(u"subtype_iconview"_ustr)) { - Size aSize(m_xSubTypeList->GetDrawingArea()->get_ref_device().LogicToPixel( - Size(120, 40), MapMode(MapUnit::MapAppFont))); - m_xSubTypeListWin->set_size_request(aSize.Width(), aSize.Height()); - m_xMainTypeList->connect_changed(LINK(this, ChartTypePanel, SelectMainTypeHdl)); - m_xSubTypeList->SetSelectHdl(LINK(this, ChartTypePanel, SelectSubTypeHdl)); - - m_xSubTypeList->SetStyle(m_xSubTypeList->GetStyle() | WB_ITEMBORDER | WB_DOUBLEBORDER - | WB_NAMEFIELD | WB_FLATVALUESET | WB_3DLOOK); - m_xSubTypeList->SetColCount(4); - m_xSubTypeList->SetLineCount(1); + m_xSubTypeList->connect_selection_changed(LINK(this, ChartTypePanel, SelectSubTypeHdl)); + m_xSubTypeList->connect_query_tooltip(LINK(this, ChartTypePanel, QueryTooltipHdl)); bool bEnableComplexChartTypes = true; uno::Reference<beans::XPropertySet> xProps(static_cast<cppu::OWeakObject*>(m_xChartModel.get()), @@ -130,17 +120,14 @@ ChartTypePanel::~ChartTypePanel() m_pSplineResourceGroup.reset(); m_pGeometryResourceGroup.reset(); m_pSortByXValuesResourceGroup.reset(); - m_xSubTypeListWin.reset(); m_xSubTypeList.reset(); - m_xSubTypeListWin.reset(); - m_xSubTypeList.reset(); m_xMainTypeList.reset(); } IMPL_LINK_NOARG(ChartTypePanel, SelectMainTypeHdl, weld::ComboBox&, void) { selectMainType(); } -IMPL_LINK_NOARG(ChartTypePanel, SelectSubTypeHdl, ValueSet*, void) +IMPL_LINK_NOARG(ChartTypePanel, SelectSubTypeHdl, weld::IconView&, void) { if (m_pCurrentMainType) { @@ -151,6 +138,16 @@ IMPL_LINK_NOARG(ChartTypePanel, SelectSubTypeHdl, ValueSet*, void) } } +IMPL_LINK(ChartTypePanel, QueryTooltipHdl, const weld::TreeIter&, iter, OUString) +{ + const OUString sId = m_xSubTypeList->get_id(iter); + + if (!sId.isEmpty() && m_pCurrentMainType) + return m_pCurrentMainType->getChartName(sId.toInt32()); + + return OUString(); +} + void ChartTypePanel::Initialize() { if (!m_xChartModel.is()) @@ -206,7 +203,7 @@ void ChartTypePanel::Initialize() if (!bFound) { - m_xSubTypeList->Hide(); + m_xSubTypeList->hide(); m_pDim3DLookResourceGroup->showControls(false); m_pStackingResourceGroup->showControls(false); m_pSplineResourceGroup->showControls(false); @@ -309,7 +306,7 @@ ChartTypeDialogController* ChartTypePanel::getSelectedMainType() void ChartTypePanel::showAllControls(ChartTypeDialogController& rTypeController) { m_xMainTypeList->show(); - m_xSubTypeList->Show(); + m_xSubTypeList->show(); bool bShow = rTypeController.shouldShow_3DLookControl(); m_pDim3DLookResourceGroup->showControls(bShow); @@ -332,7 +329,9 @@ void ChartTypePanel::fillAllControls(const ChartTypeParameter& rParameter, { m_pCurrentMainType->fillSubTypeList(*m_xSubTypeList, rParameter); } - m_xSubTypeList->SelectItem(static_cast<sal_uInt16>(rParameter.nSubTypeIndex)); + m_xSubTypeList->select(static_cast<sal_uInt16>( + rParameter.nSubTypeIndex + - 1)); // Convert 1-based subtype index to 0-based index for selection m_pDim3DLookResourceGroup->fillControls(rParameter); m_pStackingResourceGroup->fillControls(rParameter); m_pSplineResourceGroup->fillControls(rParameter); @@ -344,7 +343,7 @@ void ChartTypePanel::fillAllControls(const ChartTypeParameter& rParameter, ChartTypeParameter ChartTypePanel::getCurrentParameter() const { ChartTypeParameter aParameter; - aParameter.nSubTypeIndex = static_cast<sal_Int32>(m_xSubTypeList->GetSelectedItemId()); + aParameter.nSubTypeIndex = m_xSubTypeList->get_selected_id().toInt32(); m_pDim3DLookResourceGroup->fillParameter(aParameter); m_pStackingResourceGroup->fillParameter(aParameter); m_pSplineResourceGroup->fillParameter(aParameter); diff --git a/chart2/source/controller/sidebar/ChartTypePanel.hxx b/chart2/source/controller/sidebar/ChartTypePanel.hxx index 8df0020431db..79aded99acbb 100644 --- a/chart2/source/controller/sidebar/ChartTypePanel.hxx +++ b/chart2/source/controller/sidebar/ChartTypePanel.hxx @@ -85,7 +85,8 @@ private: void selectMainType(); DECL_LINK(SelectMainTypeHdl, weld::ComboBox&, void); - DECL_LINK(SelectSubTypeHdl, ValueSet*, void); + DECL_LINK(SelectSubTypeHdl, weld::IconView&, void); + DECL_LINK(QueryTooltipHdl, const weld::TreeIter&, OUString); vcl::EnumContext maContext; @@ -112,8 +113,7 @@ private: TimerTriggeredControllerLock m_aTimerTriggeredControllerLock; std::unique_ptr<weld::ComboBox> m_xMainTypeList; - std::unique_ptr<ValueSet> m_xSubTypeList; - std::unique_ptr<weld::CustomWeld> m_xSubTypeListWin; + std::unique_ptr<weld::IconView> m_xSubTypeList; }; } } // end of namespace ::chart::sidebar diff --git a/chart2/source/inc/ChartTypeDialogController.hxx b/chart2/source/inc/ChartTypeDialogController.hxx index e55f6dea85dc..6cdce558f206 100644 --- a/chart2/source/inc/ChartTypeDialogController.hxx +++ b/chart2/source/inc/ChartTypeDialogController.hxx @@ -29,13 +29,14 @@ #include <com/sun/star/chart2/CurveStyle.hpp> #include <vcl/weld.hxx> +#include <vcl/image.hxx> +#include <vcl/virdev.hxx> + namespace com::sun::star::beans { class XPropertySet; } -class ValueSet; - namespace chart { class ChartModel; @@ -95,7 +96,9 @@ public: virtual OUString getName() = 0; virtual OUString getImage() = 0; virtual const tTemplateServiceChartTypeParameterMap& getTemplateMap() const = 0; - virtual void fillSubTypeList(ValueSet& rSubTypeList, const ChartTypeParameter& rParameter); + virtual void fillSubTypeList(weld::IconView& rSubTypeList, + const ChartTypeParameter& rParameter); + virtual OUString getChartName(sal_Int32 nId) const; virtual bool shouldShow_3DLookControl() const; virtual bool shouldShow_StackingControl() const; @@ -133,6 +136,7 @@ public: protected: bool bSupportsXAxisWithValues; bool bSupports3D; + static Bitmap getPreviewBitmap(Image pPreview); }; class ColumnOrBarChartDialogController_Base : public ChartTypeDialogController @@ -156,8 +160,9 @@ public: virtual OUString getName() override; virtual OUString getImage() override; virtual const tTemplateServiceChartTypeParameterMap& getTemplateMap() const override; - virtual void fillSubTypeList(ValueSet& rSubTypeList, + virtual void fillSubTypeList(weld::IconView& rSubTypeList, const ChartTypeParameter& rParameter) override; + virtual OUString getChartName(sal_Int32 nId) const override; }; class BarChartDialogController final : public ColumnOrBarChartDialogController_Base @@ -169,8 +174,9 @@ public: virtual OUString getName() override; virtual OUString getImage() override; virtual const tTemplateServiceChartTypeParameterMap& getTemplateMap() const override; - virtual void fillSubTypeList(ValueSet& rSubTypeList, + virtual void fillSubTypeList(weld::IconView& rSubTypeList, const ChartTypeParameter& rParameter) override; + virtual OUString getChartName(sal_Int32 nId) const override; }; class PieChartDialogController final : public ChartTypeDialogController @@ -182,8 +188,9 @@ public: virtual OUString getName() override; virtual OUString getImage() override; virtual const tTemplateServiceChartTypeParameterMap& getTemplateMap() const override; - virtual void fillSubTypeList(ValueSet& rSubTypeList, + virtual void fillSubTypeList(weld::IconView& rSubTypeList, const ChartTypeParameter& rParameter) override; + virtual OUString getChartName(sal_Int32 nId) const override; virtual void adjustParameterToSubType(ChartTypeParameter& rParameter) override; virtual bool shouldShow_3DLookControl() const override; @@ -198,8 +205,9 @@ public: virtual OUString getName() override; virtual OUString getImage() override; virtual const tTemplateServiceChartTypeParameterMap& getTemplateMap() const override; - virtual void fillSubTypeList(ValueSet& rSubTypeList, + virtual void fillSubTypeList(weld::IconView& rSubTypeList, const ChartTypeParameter& rParameter) override; + virtual OUString getChartName(sal_Int32 nId) const override; virtual void adjustParameterToSubType(ChartTypeParameter& rParameter) override; virtual bool shouldShow_3DLookControl() const override; @@ -230,8 +238,9 @@ public: virtual OUString getName() override; virtual OUString getImage() override; virtual const tTemplateServiceChartTypeParameterMap& getTemplateMap() const override; - virtual void fillSubTypeList(ValueSet& rSubTypeList, + virtual void fillSubTypeList(weld::IconView& rSubTypeList, const ChartTypeParameter& rParameter) override; + virtual OUString getChartName(sal_Int32 nId) const override; virtual void adjustParameterToSubType(ChartTypeParameter& rParameter) override; virtual void adjustParameterToMainType(ChartTypeParameter& rParameter) override; @@ -248,8 +257,9 @@ public: virtual OUString getName() override; virtual OUString getImage() override; virtual const tTemplateServiceChartTypeParameterMap& getTemplateMap() const override; - virtual void fillSubTypeList(ValueSet& rSubTypeList, + virtual void fillSubTypeList(weld::IconView& rSubTypeList, const ChartTypeParameter& rParameter) override; + virtual OUString getChartName(sal_Int32 nId) const override; virtual void adjustParameterToSubType(ChartTypeParameter& rParameter) override; virtual bool shouldShow_SplineControl() const override; @@ -265,12 +275,16 @@ public: virtual OUString getName() override; virtual OUString getImage() override; virtual const tTemplateServiceChartTypeParameterMap& getTemplateMap() const override; - virtual void fillSubTypeList(ValueSet& rSubTypeList, + virtual void fillSubTypeList(weld::IconView& rSubTypeList, const ChartTypeParameter& rParameter) override; + virtual OUString getChartName(sal_Int32 nId) const override; virtual void adjustParameterToSubType(ChartTypeParameter& rParameter) override; virtual void adjustParameterToMainType(ChartTypeParameter& rParameter) override; virtual bool shouldShow_3DLookControl() const override; + +private: + bool m_b3DLook = false; }; class NetChartDialogController final : public ChartTypeDialogController @@ -282,8 +296,9 @@ public: virtual OUString getName() override; virtual OUString getImage() override; virtual const tTemplateServiceChartTypeParameterMap& getTemplateMap() const override; - virtual void fillSubTypeList(ValueSet& rSubTypeList, + virtual void fillSubTypeList(weld::IconView& rSubTypeList, const ChartTypeParameter& rParameter) override; + virtual OUString getChartName(sal_Int32 nId) const override; virtual void adjustParameterToSubType(ChartTypeParameter& rParameter) override; virtual bool shouldShow_StackingControl() const override; @@ -298,8 +313,9 @@ public: virtual OUString getName() override; virtual OUString getImage() override; virtual const tTemplateServiceChartTypeParameterMap& getTemplateMap() const override; - virtual void fillSubTypeList(ValueSet& rSubTypeList, + virtual void fillSubTypeList(weld::IconView& rSubTypeList, const ChartTypeParameter& rParameter) override; + virtual OUString getChartName(sal_Int32 nId) const override; virtual void adjustParameterToSubType(ChartTypeParameter& rParameter) override; }; @@ -311,8 +327,9 @@ public: virtual OUString getName() override; virtual OUString getImage() override; virtual const tTemplateServiceChartTypeParameterMap& getTemplateMap() const override; - virtual void fillSubTypeList(ValueSet& rSubTypeList, + virtual void fillSubTypeList(weld::IconView& rSubTypeList, const ChartTypeParameter& rParameter) override; + virtual OUString getChartName(sal_Int32 nId) const override; virtual void adjustParameterToSubType(ChartTypeParameter& rParameter) override; virtual void showExtraControls(weld::Builder* pBuilder) override; @@ -341,8 +358,9 @@ public: virtual OUString getName() override; virtual OUString getImage() override; virtual const tTemplateServiceChartTypeParameterMap& getTemplateMap() const override; - virtual void fillSubTypeList(ValueSet& rSubTypeList, + virtual void fillSubTypeList(weld::IconView& rSubTypeList, const ChartTypeParameter& rParameter) override; + virtual OUString getChartName(sal_Int32 nId) const override; virtual void adjustParameterToSubType(ChartTypeParameter& rParameter) override; }; diff --git a/chart2/uiconfig/ui/sidebartype.ui b/chart2/uiconfig/ui/sidebartype.ui index 557d06563edd..6913c9ec29a9 100644 --- a/chart2/uiconfig/ui/sidebartype.ui +++ b/chart2/uiconfig/ui/sidebartype.ui @@ -32,6 +32,14 @@ <column type="GdkPixbuf"/> </columns> </object> + <object class="GtkTreeStore" id="liststore3"> + <columns> + <!-- column-name pixbuf --> + <column type="GdkPixbuf"/> + <!-- column-name id --> + <column type="gchararray"/> + </columns> + </object> <!-- n-columns=1 n-rows=1 --> <object class="GtkGrid" id="ChartTypePanel"> <property name="visible">True</property> @@ -46,26 +54,29 @@ <property name="row-spacing">3</property> <property name="column-spacing">6</property> <child> - <object class="GtkScrolledWindow" id="subtypewin"> + <object class="GtkScrolledWindow"> <property name="visible">True</property> <property name="can-focus">True</property> <property name="margin-bottom">6</property> - <property name="hexpand">True</property> + <property name="hexpand">False</property> + <property name="vexpand">False</property> <property name="hscrollbar-policy">never</property> <property name="vscrollbar-policy">never</property> <property name="shadow-type">in</property> <child> - <object class="GtkViewport"> + <object class="GtkIconView" id="subtype_iconview"> <property name="visible">True</property> - <property name="can-focus">False</property> - <child> - <object class="GtkDrawingArea" id="subtype"> - <property name="visible">True</property> - <property name="can-focus">False</property> - <property name="events">GDK_BUTTON_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_STRUCTURE_MASK</property> - <property name="hexpand">True</property> - </object> - </child> + <property name="can-focus">True</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <property name="model">liststore3</property> + <property name="pixbuf-column">0</property> + <property name="columns">4</property> + <property name="selection-mode">single</property> + <property name="item-padding">2</property> + <property name="row-spacing">2</property> + <property name="column-spacing">2</property> + <property name="margin">2</property> </object> </child> </object> diff --git a/chart2/uiconfig/ui/tp_ChartType.ui b/chart2/uiconfig/ui/tp_ChartType.ui index 6d1fe5e895e7..ea1661df26c1 100644 --- a/chart2/uiconfig/ui/tp_ChartType.ui +++ b/chart2/uiconfig/ui/tp_ChartType.ui @@ -34,6 +34,14 @@ <column type="gchararray"/> </columns> </object> + <object class="GtkTreeStore" id="liststore3"> + <columns> + <!-- column-name pixbuf --> + <column type="GdkPixbuf"/> + <!-- column-name id --> + <column type="gchararray"/> + </columns> + </object> <object class="GtkBox" id="tp_ChartType"> <property name="visible">True</property> <property name="can-focus">False</property> @@ -81,26 +89,30 @@ <property name="vexpand">True</property> <property name="row-spacing">6</property> <child> - <object class="GtkScrolledWindow" id="subtypewin"> + <object class="GtkScrolledWindow"> <property name="can-focus">True</property> - <property name="hexpand">True</property> + <property name="hexpand">False</property> + <property name="vexpand">False</property> <property name="hscrollbar-policy">never</property> <property name="vscrollbar-policy">never</property> <property name="shadow-type">in</property> <child> - <object class="GtkViewport"> + <object class="GtkIconView" id="subtype_iconview"> <property name="visible">True</property> <property name="can-focus">True</property> - <child> - <object class="GtkDrawingArea" id="subtype"> - <property name="can-focus">True</property> - <property name="events">GDK_BUTTON_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_STRUCTURE_MASK</property> - <property name="hexpand">True</property> - <child internal-child="accessible"> - <object class="AtkObject" id="subtype-atkobject"> - <property name="AtkObject::accessible-description" translatable="yes" context="tp_ChartType|extended_tip|subtype">Select a sub type of the basic chart type.</property> - </object> - </child> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <property name="model">liststore3</property> + <property name="pixbuf-column">0</property> + <property name="columns">4</property> + <property name="selection-mode">single</property> + <property name="item-padding">2</property> + <property name="row-spacing">2</property> + <property name="column-spacing">2</property> + <property name="margin">2</property> + <child internal-child="accessible"> + <object class="AtkObject" id="subtype_iconview-atkobject"> + <property name="AtkObject::accessible-description" translatable="yes" context="tp_ChartType|extended_tip|subtype_iconview">Select a sub type of the basic chart type.</property> </object> </child> </object> diff --git a/sc/qa/uitest/chart2/tdf142851.py b/sc/qa/uitest/chart2/tdf142851.py index e48b9cf46685..3f9b21e97f19 100644 --- a/sc/qa/uitest/chart2/tdf142851.py +++ b/sc/qa/uitest/chart2/tdf142851.py @@ -25,8 +25,14 @@ class tdf142851(UITestCase): xChart = xChartMain.getChild("CID/Page=") with self.ui_test.execute_dialog_through_action(xChart, "COMMAND", mkPropertyValues({"COMMAND" : "DiagramType"})) as xDialog: - chartTypeVisible = get_state_as_dict(xDialog.getChild("charttype"))['Visible'] - subTypeVisible = get_state_as_dict(xDialog.getChild("subtype"))['Visible'] + chartType = xDialog.getChild("charttype") + chartType_element = chartType.getChild("0") + chartType_element.executeAction("SELECT", mkPropertyValues({})) + chartTypeVisible = get_state_as_dict(chartType)['Visible'] + subTypeIconView = xDialog.getChild("subtype_iconview") + subtype_element = subTypeIconView.getChild("0") + subtype_element.executeAction("SELECT", mkPropertyValues({})) + subTypeVisible = get_state_as_dict(subTypeIconView)['Visible'] self.assertEqual('true', chartTypeVisible) self.assertEqual('true', subTypeVisible) commit 2797aa27b001094615e9690fff521c40928b3d42 Author: Parth Raiyani <[email protected]> AuthorDate: Fri Aug 22 19:08:41 2025 +0530 Commit: Caolán McNamara <[email protected]> CommitDate: Wed Feb 25 09:19:13 2026 +0100 Replaces ValueSet with IconView for line width selection - Updated the UI layout to use GtkIconView with better configuration options. - Simplified logic for filling and updating the selection view. - Added tooltip support - Removed obsolete code related to ValueSet including LineWidthValueSet - Fixed potential LibreOffice Kit crash by disabling unnecessary tooltip for popup dialog in Libreoffit Kit Change-Id: I23be48e9931ede35675ff4ed79a3ce9114badbb8 Signed-off-by: Parth Raiyani <[email protected]> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/189966 Tested-by: Jenkins CollaboraOffice <[email protected]> Reviewed-by: Szymon Kłos <[email protected]> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/200226 Reviewed-by: Caolán McNamara <[email protected]> diff --git a/compilerplugins/clang/moveparam.cxx b/compilerplugins/clang/moveparam.cxx index dc7a84b4d64d..93484ef60b5f 100644 --- a/compilerplugins/clang/moveparam.cxx +++ b/compilerplugins/clang/moveparam.cxx @@ -90,12 +90,6 @@ bool MoveParam::VisitCXXOperatorCallExpr(const CXXOperatorCallExpr* callExpr) if (!loplugin::TypeCheck(parmVarDecl->getType()).LvalueReference().Const()) return true; - StringRef aFileName = getFilenameOfLocation( - compiler.getSourceManager().getSpellingLoc(parmVarDecl->getBeginLoc())); - if (loplugin::hasPathnamePrefix(aFileName, - SRCDIR "/svx/source/sidebar/line/LineWidthValueSet.cxx")) - return true; - report(DiagnosticsEngine::Warning, "rather use move && param1", callExpr->getBeginLoc()); return true; diff --git a/include/svx/sidebar/LineWidthPopup.hxx b/include/svx/sidebar/LineWidthPopup.hxx index 262f3540941b..d8e84ffa0f1d 100644 --- a/include/svx/sidebar/LineWidthPopup.hxx +++ b/include/svx/sidebar/LineWidthPopup.hxx @@ -26,12 +26,9 @@ #include <svtools/toolbarmenu.hxx> #include <array> -class ValueSet; - namespace svx::sidebar { class LinePropertyPanelBase; -class LineWidthValueSet; class LineWidthPopup final : public WeldToolbarPopup { @@ -57,11 +54,17 @@ private: Image m_aIMGCusGray; std::unique_ptr<weld::MetricSpinButton> m_xMFWidth; - std::unique_ptr<LineWidthValueSet> m_xVSWidth; - std::unique_ptr<weld::CustomWeld> m_xVSWidthWin; + std::unique_ptr<weld::IconView> m_xIVWidth; + Size aPreviewSize; - DECL_LINK(VSSelectHdl, ValueSet*, void); + DECL_LINK(ItemActivatedHdl, weld::IconView&, bool); + DECL_LINK(QueryTooltipHdl, const weld::TreeIter&, OUString); DECL_LINK(MFModifyHdl, weld::MetricSpinButton&, void); + + VclPtr<VirtualDevice> CreateLinePreview(sal_uInt16 nLineWidth, const OUString& rText); + VclPtr<VirtualDevice> CreateCustomPreview(const Image& rImage, const OUString& rText, + bool bEnabled); + void PopulateIconView(); }; } // end of namespace svx::sidebar diff --git a/solenv/clang-format/excludelist b/solenv/clang-format/excludelist index 1a45aca5b71f..944136b26a4a 100644 --- a/solenv/clang-format/excludelist +++ b/solenv/clang-format/excludelist @@ -11463,8 +11463,6 @@ svx/source/sidebar/graphic/GraphicPropertyPanel.hxx svx/source/sidebar/line/LinePropertyPanel.cxx svx/source/sidebar/line/LinePropertyPanel.hxx svx/source/sidebar/line/LinePropertyPanelBase.cxx -svx/source/sidebar/line/LineWidthValueSet.cxx -svx/source/sidebar/line/LineWidthValueSet.hxx svx/source/sidebar/media/MediaPlaybackPanel.cxx svx/source/sidebar/media/MediaPlaybackPanel.hxx svx/source/sidebar/nbdtmg.cxx diff --git a/svx/Library_svx.mk b/svx/Library_svx.mk index 4a31c95deafa..b63bc55aa3ab 100644 --- a/svx/Library_svx.mk +++ b/svx/Library_svx.mk @@ -244,7 +244,6 @@ $(eval $(call gb_Library_add_exception_objects,svx,\ svx/source/sidebar/graphic/GraphicPropertyPanel \ svx/source/sidebar/line/LinePropertyPanel \ svx/source/sidebar/line/LinePropertyPanelBase \ - svx/source/sidebar/line/LineWidthValueSet \ svx/source/sidebar/line/LineWidthPopup \ $(call gb_Helper_optional,AVMEDIA,svx/source/sidebar/media/MediaPlaybackPanel) \ svx/source/sidebar/possize/PosSizePropertyPanel \ diff --git a/svx/source/sidebar/line/LineWidthPopup.cxx b/svx/source/sidebar/line/LineWidthPopup.cxx index bce334b6dc93..0d0b13c7aa8f 100644 --- a/svx/source/sidebar/line/LineWidthPopup.cxx +++ b/svx/source/sidebar/line/LineWidthPopup.cxx @@ -26,8 +26,10 @@ #include <unotools/viewoptions.hxx> #include <vcl/settings.hxx> #include <vcl/svapp.hxx> -#include "LineWidthValueSet.hxx" #include <bitmaps.hlst> +#include <comphelper/lok.hxx> +#include <vcl/virdev.hxx> +#include <i18nlangtag/mslangid.hxx> namespace svx::sidebar { @@ -43,11 +45,9 @@ LineWidthPopup::LineWidthPopup(weld::Widget* pParent, LinePropertyPanelBase& rPa , m_aIMGCus(StockImage::Yes, RID_SVXBMP_WIDTH_CUSTOM) , m_aIMGCusGray(StockImage::Yes, RID_SVXBMP_WIDTH_CUSTOM_GRAY) , m_xMFWidth(m_xBuilder->weld_metric_spin_button(u"spin"_ustr, FieldUnit::POINT)) - , m_xVSWidth(new LineWidthValueSet()) - , m_xVSWidthWin(new weld::CustomWeld(*m_xBuilder, u"lineset"_ustr, *m_xVSWidth)) + , m_xIVWidth(m_xBuilder->weld_icon_view(u"line_iconview"_ustr)) + , aPreviewSize(300, 20) { - m_xVSWidth->SetStyle(m_xVSWidth->GetStyle() | WB_3DLOOK | WB_NO_DIRECTSELECT); - maStrUnits[0] = "0.5"; maStrUnits[1] = "0.8"; maStrUnits[2] = "1.0"; @@ -68,39 +68,63 @@ LineWidthPopup::LineWidthPopup(weld::Widget* pParent, LinePropertyPanelBase& rPa maStrUnits[i] += m_sPt; } - for (sal_uInt16 i = 1; i <= 9; ++i) - { - m_xVSWidth->InsertItem(i); - m_xVSWidth->SetItemText(i, maStrUnits[i - 1]); - } + PopulateIconView(); - m_xVSWidth->SetUnit(maStrUnits); - m_xVSWidth->SetItemData(1, reinterpret_cast<void*>(5)); - m_xVSWidth->SetItemData(2, reinterpret_cast<void*>(8)); - m_xVSWidth->SetItemData(3, reinterpret_cast<void*>(10)); - m_xVSWidth->SetItemData(4, reinterpret_cast<void*>(15)); - m_xVSWidth->SetItemData(5, reinterpret_cast<void*>(23)); - m_xVSWidth->SetItemData(6, reinterpret_cast<void*>(30)); - m_xVSWidth->SetItemData(7, reinterpret_cast<void*>(45)); - m_xVSWidth->SetItemData(8, reinterpret_cast<void*>(60)); - m_xVSWidth->SetImage(m_aIMGCusGray); + m_xIVWidth->connect_item_activated(LINK(this, LineWidthPopup, ItemActivatedHdl)); - m_xVSWidth->SetSelItem(0); + // Avoid LibreOffice Kit crash: tooltip handlers cause segfault during JSDialog + // serialization when popup widgets are destroyed/recreated during character formatting resets. + // Tooltip event binding is not needed for LibreOffice Kit + if (!comphelper::LibreOfficeKit::isActive()) + { + m_xIVWidth->connect_query_tooltip(LINK(this, LineWidthPopup, QueryTooltipHdl)); + } - m_xVSWidth->SetSelectHdl(LINK(this, LineWidthPopup, VSSelectHdl)); m_xMFWidth->connect_value_changed(LINK(this, LineWidthPopup, MFModifyHdl)); } LineWidthPopup::~LineWidthPopup() {} -IMPL_LINK_NOARG(LineWidthPopup, VSSelectHdl, ValueSet*, void) +IMPL_LINK_NOARG(LineWidthPopup, ItemActivatedHdl, weld::IconView&, bool) { - sal_uInt16 iPos = m_xVSWidth->GetSelectedItemId(); + OUString sSelectedId = m_xIVWidth->get_selected_id(); + if (sSelectedId.isEmpty()) + return false; + + sal_uInt32 iPos = sSelectedId.toUInt32(); + if (iPos >= 1 && iPos <= 8) { - sal_IntPtr nVal = OutputDevice::LogicToLogic( - reinterpret_cast<sal_IntPtr>(m_xVSWidth->GetItemData(iPos)), MapUnit::MapPoint, - m_eMapUnit); + sal_IntPtr nVal = 0; + switch (iPos - 1) + { + case 0: + nVal = 5; + break; // 0.5pt + case 1: + nVal = 8; + break; // 0.8pt + case 2: + nVal = 10; + break; // 1.0pt + case 3: + nVal = 15; + break; // 1.5pt + case 4: + nVal = 23; + break; // 2.3pt + case 5: + nVal = 30; + break; // 3.0pt + case 6: + nVal = 45; + break; // 4.5pt + case 7: + nVal = 60; + break; // 6.0pt + } + + nVal = OutputDevice::LogicToLogic(nVal, MapUnit::MapPoint, m_eMapUnit); nVal = m_xMFWidth->denormalize(nVal); XLineWidthItem aWidthItem(nVal); m_rParent.setLineWidth(aWidthItem); @@ -119,12 +143,6 @@ IMPL_LINK_NOARG(LineWidthPopup, VSSelectHdl, ValueSet*, void) m_rParent.setLineWidth(aWidthItem); m_rParent.SetWidth(nVal); } - else - { - m_xVSWidth->SetNoSelection(); //add , set no selection and keep the last select item - m_xVSWidth->SetFormat(); - m_xVSWidth->Invalidate(); - } //modify end } @@ -132,16 +150,14 @@ IMPL_LINK_NOARG(LineWidthPopup, VSSelectHdl, ValueSet*, void) { m_rParent.EndLineWidthPopup(); } + + return true; } IMPL_LINK_NOARG(LineWidthPopup, MFModifyHdl, weld::MetricSpinButton&, void) { - if (m_xVSWidth->GetSelItem()) - { - m_xVSWidth->SetSelItem(0); - m_xVSWidth->SetFormat(); - m_xVSWidth->Invalidate(); - } + m_xIVWidth->unselect_all(); + tools::Long nTmp = static_cast<tools::Long>(m_xMFWidth->get_value(FieldUnit::NONE)); tools::Long nVal = OutputDevice::LogicToLogic(nTmp, MapUnit::MapPoint, m_eMapUnit); sal_Int32 nNewWidth = static_cast<short>(m_xMFWidth->denormalize(nVal)); @@ -149,11 +165,24 @@ IMPL_LINK_NOARG(LineWidthPopup, MFModifyHdl, weld::MetricSpinButton&, void) m_rParent.setLineWidth(aWidthItem); } +IMPL_LINK(LineWidthPopup, QueryTooltipHdl, const weld::TreeIter&, rIter, OUString) +{ + OUString sId = m_xIVWidth->get_id(rIter); + sal_uInt16 iPos = sId.toUInt32(); + if (iPos >= 1 && iPos <= 8) + return maStrUnits[iPos - 1]; + else if (iPos == 9) + return m_bCustom ? (OUString::number(static_cast<double>(m_nCustomWidth) / 10) + m_sPt) + : maStrUnits[8]; + return OUString(); +} + void LineWidthPopup::SetWidthSelect(tools::Long lValue, bool bValuable, MapUnit eMapUnit) { m_bVSFocus = true; - m_xVSWidth->SetSelItem(0); + m_xIVWidth->unselect_all(); m_eMapUnit = eMapUnit; + SvtViewOptions aWinOpt(EViewType::Window, u"PopupPanel_LineWidth"_ustr); if (aWinOpt.Exists()) { @@ -165,18 +194,19 @@ void LineWidthPopup::SetWidthSelect(tools::Long lValue, bool bValuable, MapUnit OUString aWinData(aTmp); m_nCustomWidth = aWinData.toInt32(); m_bCustom = true; - m_xVSWidth->SetImage(m_aIMGCus); - m_xVSWidth->SetCusEnable(true); OUString aStrTip = OUString::number(static_cast<double>(m_nCustomWidth) / 10) + m_sPt; - m_xVSWidth->SetItemText(9, aStrTip); + VclPtr<VirtualDevice> aCustomVDev = CreateCustomPreview(m_aIMGCus, aStrTip, true); + m_xIVWidth->set_image(8, *aCustomVDev); + m_xIVWidth->set_text(8, aStrTip); } else { m_bCustom = false; - m_xVSWidth->SetImage(m_aIMGCusGray); - m_xVSWidth->SetCusEnable(false); - m_xVSWidth->SetItemText(9, maStrUnits[8]); + VclPtr<VirtualDevice> aCustomVDev + = CreateCustomPreview(m_aIMGCusGray, maStrUnits[8], false); + m_xIVWidth->set_image(8, *aCustomVDev); + m_xIVWidth->set_text(8, maStrUnits[8]); } if (bValuable) @@ -196,7 +226,7 @@ void LineWidthPopup::SetWidthSelect(tools::Long lValue, bool bValuable, MapUnit { if (strCurrValue == maStrUnits[i]) { - m_xVSWidth->SetSelItem(i + 1); + m_xIVWidth->select(i); break; } } @@ -204,21 +234,112 @@ void LineWidthPopup::SetWidthSelect(tools::Long lValue, bool bValuable, MapUnit if (i >= 8) { m_bVSFocus = false; - m_xVSWidth->SetSelItem(0); + m_xIVWidth->unselect_all(); } - - m_xVSWidth->SetFormat(); - m_xVSWidth->Invalidate(); } void LineWidthPopup::GrabFocus() { if (m_bVSFocus) - m_xVSWidth->GrabFocus(); + m_xIVWidth->grab_focus(); else m_xMFWidth->grab_focus(); } +VclPtr<VirtualDevice> LineWidthPopup::CreateLinePreview(sal_uInt16 nLineWidth, + const OUString& rText) +{ + VclPtr<VirtualDevice> pVDev = VclPtr<VirtualDevice>::Create(); + pVDev->SetOutputSizePixel(aPreviewSize); + + // Set background + const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings(); + pVDev->SetFillColor(rStyleSettings.GetWindowColor()); + + // Set font + vcl::Font aFont(OutputDevice::GetDefaultFont(DefaultFontType::UI_SANS, + MsLangId::getConfiguredSystemLanguage(), + GetDefaultFontFlags::OnlyOne)); + Size aFontSize = aFont.GetFontSize(); + aFontSize.setHeight(aPreviewSize.Height() * 3 / 5); + aFont.SetFontSize(aFontSize); + aFont.SetColor(rStyleSettings.GetFieldTextColor()); + pVDev->SetFont(aFont); + + // Draw text + Point aTextStart(aPreviewSize.Width() * 7 / 9, aPreviewSize.Height() / 6); + pVDev->DrawText(aTextStart, rText); + + // Draw line with specified width + pVDev->SetLineColor(rStyleSettings.GetFieldTextColor()); + Point aLineStart(5, (aPreviewSize.Height() - nLineWidth) / 2); + Point aLineEnd(aPreviewSize.Width() * 7 / 9 - 10, (aPreviewSize.Height() - nLineWidth) / 2); + + for (sal_uInt16 i = 1; i <= nLineWidth; i++) + { + pVDev->DrawLine(aLineStart, aLineEnd); + aLineStart.AdjustY(1); + aLineEnd.AdjustY(1); + } + + return pVDev; +} + +VclPtr<VirtualDevice> LineWidthPopup::CreateCustomPreview(const Image& rImage, + const OUString& rText, bool bEnabled) +{ + VclPtr<VirtualDevice> pVDev = VclPtr<VirtualDevice>::Create(); + pVDev->SetOutputSizePixel(aPreviewSize); + + const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings(); + pVDev->SetFillColor(rStyleSettings.GetWindowColor()); + + // Draw image + Point aImgStart(5, (aPreviewSize.Height() - 23) / 2); + pVDev->DrawImage(aImgStart, rImage); + + // Set font and color + vcl::Font aFont(OutputDevice::GetDefaultFont(DefaultFontType::UI_SANS, + MsLangId::getConfiguredSystemLanguage(), + GetDefaultFontFlags::OnlyOne)); + Size aFontSize = aFont.GetFontSize(); + aFontSize.setHeight(aPreviewSize.Height() * 3 / 5); + aFont.SetFontSize(aFontSize); + + if (bEnabled) + aFont.SetColor(rStyleSettings.GetFieldTextColor()); + else + aFont.SetColor(rStyleSettings.GetDisableColor()); + + pVDev->SetFont(aFont); + + // Draw text + tools::Rectangle aStrRect(Point(rImage.GetSizePixel().Width() + 20, aPreviewSize.Height() / 6), + Size(aPreviewSize.Width() - rImage.GetSizePixel().Width() - 25, + aPreviewSize.Height() - aPreviewSize.Height() / 3)); + pVDev->DrawText(aStrRect, rText, DrawTextFlags::EndEllipsis); + + return pVDev; +} + +void LineWidthPopup::PopulateIconView() +{ + m_xIVWidth->clear(); + + for (sal_uInt16 i = 1; i <= 8; ++i) + { + OUString sId = OUString::number(i); + VclPtr<VirtualDevice> aPreview = CreateLinePreview(i, maStrUnits[i - 1]); + Bitmap aBmp = aPreview->GetBitmap(Point(), aPreview->GetOutputSizePixel()); + m_xIVWidth->insert(-1, &maStrUnits[i - 1], &sId, &aBmp, nullptr); + } + + OUString sCustomId = OUString::number(9); + VclPtr<VirtualDevice> aCustomPreview = CreateCustomPreview(m_aIMGCusGray, maStrUnits[8], false); + Bitmap aBmpCustom = aCustomPreview->GetBitmap(Point(), aCustomPreview->GetOutputSizePixel()); + m_xIVWidth->insert(-1, &maStrUnits[8], &sCustomId, &aBmpCustom, nullptr); +} + } // end of namespace svx::sidebar /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svx/source/sidebar/line/LineWidthValueSet.cxx b/svx/source/sidebar/line/LineWidthValueSet.cxx deleted file mode 100644 index 47f7e670279c..000000000000 --- a/svx/source/sidebar/line/LineWidthValueSet.cxx +++ /dev/null @@ -1,163 +0,0 @@ -/* -*- 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/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ -#include "LineWidthValueSet.hxx" - -#include <i18nlangtag/mslangid.hxx> -#include <vcl/event.hxx> -#include <vcl/settings.hxx> -#include <vcl/svapp.hxx> - -namespace svx::sidebar { - -LineWidthValueSet::LineWidthValueSet() - : ValueSet(nullptr) - , nSelItem(0) - , bCusEnable(false) -{ -} - -void LineWidthValueSet::Resize() -{ - SetColCount(); - SetLineCount(9); - ValueSet::Resize(); -} - -LineWidthValueSet::~LineWidthValueSet() -{ -} - -void LineWidthValueSet::SetUnit(std::array<OUString,9> const & strUnits) -{ - maStrUnits = strUnits; -} - -void LineWidthValueSet::SetSelItem(sal_uInt16 nSel) -{ - nSelItem = nSel; - if(nSel == 0) - { - SelectItem(1); // ,false); // 'false' nut supported by AOO - SetNoSelection(); - } - else - { - SelectItem(nSelItem); - GrabFocus(); - } -} - -void LineWidthValueSet::SetImage(const Image& img) -{ - imgCus = img; -} - -void LineWidthValueSet::SetCusEnable(bool bEnable) -{ - bCusEnable = bEnable; -} - -void LineWidthValueSet::UserDraw( const UserDrawEvent& rUDEvt ) -{ - tools::Rectangle aRect = rUDEvt.GetRect(); - vcl::RenderContext* pDev = rUDEvt.GetRenderContext(); - sal_uInt16 nItemId = rUDEvt.GetItemId(); - - tools::Long nRectHeight = aRect.GetHeight(); - tools::Long nRectWidth = aRect.GetWidth(); - Point aBLPos = aRect.TopLeft(); - - //const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings(); - //Color aBackColor(0,0,200); - //const Color aTextColor = rStyleSettings.GetFieldTextColor(); - auto popIt = pDev->ScopedPush(vcl::PushFlags::FONT | vcl::PushFlags::LINECOLOR | vcl::PushFlags::FILLCOLOR); - - vcl::Font aFont(OutputDevice::GetDefaultFont(DefaultFontType::UI_SANS, MsLangId::getConfiguredSystemLanguage(), GetDefaultFontFlags::OnlyOne)); - Size aSize = aFont.GetFontSize(); - aSize.setHeight( nRectHeight*3/5 ); - aFont.SetFontSize( aSize ); - - Point aLineStart(aBLPos.X() + 5, aBLPos.Y() + ( nRectHeight - nItemId )/2); - Point aLineEnd(aBLPos.X() + nRectWidth * 7 / 9 - 10, aBLPos.Y() + ( nRectHeight - nItemId )/2); - if (nItemId == 9) - { - Point aImgStart(aBLPos.X() + 5, aBLPos.Y() + ( nRectHeight - 23 ) / 2); - pDev->DrawImage(aImgStart, imgCus); - - tools::Rectangle aStrRect = aRect; - aStrRect.AdjustTop(nRectHeight/6 ); - aStrRect.AdjustBottom( -(nRectHeight/6) ); - aStrRect.AdjustLeft(imgCus.GetSizePixel().Width() + 20 ); - if(bCusEnable) - aFont.SetColor(Application::GetSettings().GetStyleSettings().GetFieldTextColor()); - else - aFont.SetColor(Application::GetSettings().GetStyleSettings().GetDisableColor()); - - pDev->SetFont(aFont); - pDev->DrawText(aStrRect, maStrUnits[ nItemId - 1 ], DrawTextFlags::EndEllipsis); - } - else - { - if( nSelItem == nItemId ) - { - tools::Rectangle aBackRect = aRect; - aBackRect.AdjustTop(3 ); - aBackRect.AdjustBottom( -2 ); - pDev->SetFillColor(Color(50,107,197)); - pDev->DrawRect(aBackRect); - } - - //draw text - if(nSelItem == nItemId ) - aFont.SetColor(COL_WHITE); - else - aFont.SetColor(Application::GetSettings().GetStyleSettings().GetFieldTextColor()); - pDev->SetFont(aFont); - Point aStart(aBLPos.X() + nRectWidth * 7 / 9 , aBLPos.Y() + nRectHeight/6); - pDev->DrawText(aStart, maStrUnits[ nItemId - 1 ]); //can't set DrawTextFlags::EndEllipsis here ,or the text will disappear - - //draw line - if( nSelItem == nItemId ) - pDev->SetLineColor(COL_WHITE); - else - pDev->SetLineColor(Application::GetSettings().GetStyleSettings().GetFieldTextColor()); - - for(sal_uInt16 i = 1; i <= nItemId; i++) - { - pDev->DrawLine(aLineStart,aLineEnd ); - aLineStart.setY(aLineStart.getY() + 1); - aLineEnd.setY (aLineEnd.getY() + 1); - } - } - - Invalidate( aRect ); -} - -void LineWidthValueSet::SetDrawingArea(weld::DrawingArea* pDrawingArea) -{ - ValueSet::SetDrawingArea(pDrawingArea); - Size aSize(pDrawingArea->get_ref_device().LogicToPixel(Size(80, 12 * 9), MapMode(MapUnit::MapAppFont))); - pDrawingArea->set_size_request(aSize.Width(), aSize.Height()); - SetOutputSizePixel(aSize); - SetColor(Application::GetSettings().GetStyleSettings().GetListBoxWindowBackgroundColor()); -} - -} // end of namespace svx::sidebar - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svx/source/sidebar/line/LineWidthValueSet.hxx b/svx/source/sidebar/line/LineWidthValueSet.hxx deleted file mode 100644 index 225e706a6d6e..000000000000 --- a/svx/source/sidebar/line/LineWidthValueSet.hxx +++ /dev/null @@ -1,55 +0,0 @@ -/* -*- 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/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ -#ifndef INCLUDED_SVX_SOURCE_SIDEBAR_LINE_LINEWIDTHVALUESET_HXX -#define INCLUDED_SVX_SOURCE_SIDEBAR_LINE_LINEWIDTHVALUESET_HXX - -#include <svtools/valueset.hxx> -#include <vcl/image.hxx> -#include <array> - -namespace svx::sidebar { - -class LineWidthValueSet final : public ValueSet -{ -public: - explicit LineWidthValueSet(); - virtual ~LineWidthValueSet() override; - - void SetUnit(std::array<OUString,9> const & strUnits); - void SetSelItem(sal_uInt16 nSel); - sal_uInt16 GetSelItem() const { return nSelItem;} - void SetImage(const Image& img); - void SetCusEnable(bool bEnable); - - virtual void UserDraw( const UserDrawEvent& rUDEvt ) override; - virtual void Resize() override; - virtual void SetDrawingArea(weld::DrawingArea* pDrawingArea) override; - -private: - sal_uInt16 nSelItem; - std::array<OUString,9> maStrUnits; - Image imgCus; - bool bCusEnable; -}; - -} // end of namespace svx::sidebar - -#endif // INCLUDED_SVX_SOURCE_SIDEBAR_LINE_LINEWIDTHVALUESET_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svx/uiconfig/ui/floatinglineproperty.ui b/svx/uiconfig/ui/floatinglineproperty.ui index d005903ff34c..fc8ac7e48acd 100644 --- a/svx/uiconfig/ui/floatinglineproperty.ui +++ b/svx/uiconfig/ui/floatinglineproperty.ui @@ -2,6 +2,14 @@ <!-- Generated with glade 3.22.1 --> <interface domain="svx"> <requires lib="gtk+" version="3.24"/> + <object class="GtkTreeStore" id="liststore1"> + <columns> + <!-- column-name pixbuf --> + <column type="GdkPixbuf"/> + <!-- column-name id --> + <column type="gchararray"/> + </columns> + </object> <object class="GtkPopover" id="FloatingLineProperty"> <property name="can_focus">False</property> <property name="no_show_all">True</property> @@ -16,27 +24,29 @@ <property name="vexpand">True</property> <property name="row_spacing">6</property> <child> - <object class="GtkScrolledWindow" id="valuesetwin"> + <object class="GtkScrolledWindow"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="hexpand">True</property> <property name="vexpand">True</property> <property name="hscrollbar_policy">never</property> <property name="vscrollbar_policy">never</property> + <property name="height-request">240</property> <property name="shadow_type">in</property> <child> - <object class="GtkViewport"> + <object class="GtkIconView" id="line_iconview"> <property name="visible">True</property> - <property name="can_focus">False</property> - <child> - <object class="GtkDrawingArea" id="lineset"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="events">GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_STRUCTURE_MASK</property> - <property name="hexpand">True</property> - <property name="vexpand">True</property> - </object> - </child> + <property name="can-focus">True</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <property name="model">liststore1</property> + <property name="pixbuf-column">0</property> + <property name="selection-mode">single</property> + <property name="activate-on-single-click">True</property> + <property name="item-padding">2</property> + <property name="row-spacing">2</property> + <property name="column-spacing">2</property> + <property name="margin">2</property> </object> </child> </object>
