chart2/source/controller/dialogs/ChartTypeDialogController.cxx |  542 
++++++----
 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 
 sc/qa/uitest/chart2/tdf142851.py                               |   10 
 9 files changed, 504 insertions(+), 258 deletions(-)

New commits:
commit 20e561e308e8f2b1a02b354a2901772e40d3783e
Author:     Parth Raiyani <[email protected]>
AuthorDate: Fri Aug 29 19:41:42 2025 +0530
Commit:     Szymon Kłos <[email protected]>
CommitDate: Sun Sep 14 15:30:09 2025 +0200

    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]>

diff --git a/chart2/source/controller/dialogs/ChartTypeDialogController.cxx 
b/chart2/source/controller/dialogs/ChartTypeDialogController.cxx
index 33cf0edc1ffc..a2d4f2918286 100644
--- a/chart2/source/controller/dialogs/ChartTypeDialogController.cxx
+++ b/chart2/source/controller/dialogs/ChartTypeDialogController.cxx
@@ -35,9 +35,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>
 
@@ -346,9 +346,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
 {
@@ -385,6 +389,20 @@ void ChartTypeDialogController::setTemplateProperties( 
const uno::Reference< bea
 {
 }
 
+VclPtr<VirtualDevice> ChartTypeDialogController::getVDev(Image pImage)
+{
+    BitmapEx aPreviewBitmap = pImage.GetBitmapEx();
+    VclPtr<VirtualDevice> pVDev = VclPtr<VirtualDevice>::Create();
+    const Point aNull(0, 0);
+    if (pVDev->GetDPIScaleFactor() > 1)
+        aPreviewBitmap.Scale(pVDev->GetDPIScaleFactor(), 
pVDev->GetDPIScaleFactor());
+    const Size aSize(aPreviewBitmap.GetSizePixel());
+    pVDev->SetOutputSizePixel(aSize);
+    pVDev->DrawBitmapEx(aNull, aPreviewBitmap);
+
+    return pVDev;
+}
+
 ColumnOrBarChartDialogController_Base::ColumnOrBarChartDialogController_Base()
 {
 }
@@ -434,51 +452,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));
+                rSubTypeList.append("1", normalText, 
getVDev(Image(StockImage::Yes, BMP_SAEULE_3D_1)));
+                rSubTypeList.append("2", stackedText, 
getVDev(Image(StockImage::Yes, BMP_SAEULE_3D_2)));
+                rSubTypeList.append("3", percentText, 
getVDev(Image(StockImage::Yes, BMP_SAEULE_3D_3)));
+                rSubTypeList.append("4", deepText, 
getVDev(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));
+                rSubTypeList.append("1", normalText, 
getVDev(Image(StockImage::Yes, BMP_KEGEL_3D_1)));
+                rSubTypeList.append("2", stackedText, 
getVDev(Image(StockImage::Yes, BMP_KEGEL_3D_2)));
+                rSubTypeList.append("3", percentText, 
getVDev(Image(StockImage::Yes, BMP_KEGEL_3D_3)));
+                rSubTypeList.append("4", deepText, 
getVDev(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));
+                rSubTypeList.append("1", normalText, 
getVDev(Image(StockImage::Yes, BMP_PYRAMID_3D_1)));
+                rSubTypeList.append("2", stackedText, 
getVDev(Image(StockImage::Yes, BMP_PYRAMID_3D_2)));
+                rSubTypeList.append("3", percentText, 
getVDev(Image(StockImage::Yes, BMP_PYRAMID_3D_3)));
+                rSubTypeList.append("4", deepText, 
getVDev(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));
+                rSubTypeList.append("1", normalText, 
getVDev(Image(StockImage::Yes, BMP_COLUMNS_3D_1)));
+                rSubTypeList.append("2", stackedText, 
getVDev(Image(StockImage::Yes, BMP_COLUMNS_3D_2)));
+                rSubTypeList.append("3", percentText, 
getVDev(Image(StockImage::Yes, BMP_COLUMNS_3D_3)));
+                rSubTypeList.append("4", deepText, 
getVDev(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));
+        rSubTypeList.append("1", normalText, getVDev(Image(StockImage::Yes, 
BMP_COLUMNS_2D_1)));
+        rSubTypeList.append("2", stackedText, getVDev(Image(StockImage::Yes, 
BMP_COLUMNS_2D_2)));
+        rSubTypeList.append("3", percentText, getVDev(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()
@@ -511,50 +547,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));
+                rSubTypeList.append("1", normalText, 
getVDev(Image(StockImage::Yes, BMP_ROEHRE_3D_1)));
+                rSubTypeList.append("2", stackedText, 
getVDev(Image(StockImage::Yes, BMP_ROEHRE_3D_2)));
+                rSubTypeList.append("3", percentText, 
getVDev(Image(StockImage::Yes, BMP_ROEHRE_3D_3)));
+                rSubTypeList.append("4", deepText, 
getVDev(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));
+                rSubTypeList.append("1", normalText, 
getVDev(Image(StockImage::Yes, BMP_KEGELQ_3D_1)));
+                rSubTypeList.append("2", stackedText, 
getVDev(Image(StockImage::Yes, BMP_KEGELQ_3D_2)));
+                rSubTypeList.append("3", percentText, 
getVDev(Image(StockImage::Yes, BMP_KEGELQ_3D_3)));
+                rSubTypeList.append("4", deepText, 
getVDev(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));
+                rSubTypeList.append("1", normalText, 
getVDev(Image(StockImage::Yes, BMP_PYRAMIDQ_3D_1)));
+                rSubTypeList.append("2", stackedText, 
getVDev(Image(StockImage::Yes, BMP_PYRAMIDQ_3D_2)));
+                rSubTypeList.append("3", percentText, 
getVDev(Image(StockImage::Yes, BMP_PYRAMIDQ_3D_3)));
+                rSubTypeList.append("4", deepText, 
getVDev(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));
+                rSubTypeList.append("1", normalText, 
getVDev(Image(StockImage::Yes, BMP_BARS_3D_1)));
+                rSubTypeList.append("2", stackedText, 
getVDev(Image(StockImage::Yes, BMP_BARS_3D_2)));
+                rSubTypeList.append("3", percentText, 
getVDev(Image(StockImage::Yes, BMP_BARS_3D_3)));
+                rSubTypeList.append("4", deepText, 
getVDev(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));
+        rSubTypeList.append("1", normalText, getVDev(Image(StockImage::Yes, 
BMP_BARS_2D_1)));
+        rSubTypeList.append("2", stackedText, getVDev(Image(StockImage::Yes, 
BMP_BARS_2D_2)));
+        rSubTypeList.append("3", percentText, getVDev(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();
 }
 
 //=========
@@ -592,28 +647,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));
+        rSubTypeList.append("1", normalText, getVDev(Image(StockImage::Yes, 
BMP_CIRCLES_3D)));
+        rSubTypeList.append("2", explodedText, getVDev(Image(StockImage::Yes, 
BMP_CIRCLES_3D_EXPLODED)));
+        rSubTypeList.append("3", donutText, getVDev(Image(StockImage::Yes, 
BMP_DONUT_3D)));
+        rSubTypeList.append("4", donutExplodedText, 
getVDev(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));
+        rSubTypeList.append("1", normalText, getVDev(Image(StockImage::Yes, 
BMP_CIRCLES_2D)));
+        rSubTypeList.append("2", explodedText, getVDev(Image(StockImage::Yes, 
BMP_CIRCLES_2D_EXPLODED)));
+        rSubTypeList.append("3", donutText, getVDev(Image(StockImage::Yes, 
BMP_DONUT_2D)));
+        rSubTypeList.append("4", donutExplodedText, 
getVDev(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
@@ -621,6 +677,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)
@@ -656,14 +730,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.append("1", barOfPieText, getVDev(Image(StockImage::Yes, 
BMP_BAR_OF_PIE)));
+    rSubTypeList.append("2", pieOfPieText, getVDev(Image(StockImage::Yes, 
BMP_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 ) );
+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
@@ -814,9 +903,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 )
     {
@@ -824,17 +918,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));
+                rSubTypeList.append("1", pointsOnlyText, 
getVDev(Image(StockImage::Yes, BMP_POINTS_XCATEGORY)));
+                rSubTypeList.append("2", pointsAndLinesText, 
getVDev(Image(StockImage::Yes, BMP_LINE_P_XCATEGORY_SMOOTH)));
+                rSubTypeList.append("3", linesOnlyText, 
getVDev(Image(StockImage::Yes, BMP_LINE_O_XCATEGORY_SMOOTH)));
+                rSubTypeList.append("4", lines3DText, 
getVDev(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));
+                rSubTypeList.append("1", pointsOnlyText, 
getVDev(Image(StockImage::Yes, BMP_POINTS_STACKED)));
+                rSubTypeList.append("2", pointsAndLinesText, 
getVDev(Image(StockImage::Yes, BMP_LINE_P_STACKED_SMOOTH)));
+                rSubTypeList.append("3", linesOnlyText, 
getVDev(Image(StockImage::Yes, BMP_LINE_O_STACKED_SMOOTH)));
+                rSubTypeList.append("4", lines3DText, 
getVDev(Image(StockImage::Yes, BMP_LINE3D_STACKED_SMOOTH)));
             }
             break;
         case CurveStyle_STEP_START:
@@ -843,41 +937,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));
+                rSubTypeList.append("1", pointsOnlyText, 
getVDev(Image(StockImage::Yes, BMP_POINTS_XCATEGORY)));
+                rSubTypeList.append("2", pointsAndLinesText, 
getVDev(Image(StockImage::Yes, BMP_LINE_P_XCATEGORY_STEPPED)));
+                rSubTypeList.append("3", linesOnlyText, 
getVDev(Image(StockImage::Yes, BMP_LINE_O_XCATEGORY_STEPPED)));
+                rSubTypeList.append("4", lines3DText, 
getVDev(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));
+                rSubTypeList.append("1", pointsOnlyText, 
getVDev(Image(StockImage::Yes, BMP_POINTS_STACKED)));
+                rSubTypeList.append("2", pointsAndLinesText, 
getVDev(Image(StockImage::Yes, BMP_LINE_P_STACKED_STEPPED)));
+                rSubTypeList.append("3", linesOnlyText, 
getVDev(Image(StockImage::Yes, BMP_LINE_O_STACKED_STEPPED)));
+                rSubTypeList.append("4", lines3DText, 
getVDev(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));
+                rSubTypeList.append("1", pointsOnlyText, 
getVDev(Image(StockImage::Yes, BMP_POINTS_XCATEGORY)));
+                rSubTypeList.append("2", pointsAndLinesText, 
getVDev(Image(StockImage::Yes, BMP_LINE_P_XCATEGORY)));
+                rSubTypeList.append("3", linesOnlyText, 
getVDev(Image(StockImage::Yes, BMP_LINE_O_XCATEGORY)));
+                rSubTypeList.append("4", lines3DText, 
getVDev(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));
+                rSubTypeList.append("1", pointsOnlyText, 
getVDev(Image(StockImage::Yes, BMP_POINTS_STACKED)));
+                rSubTypeList.append("2", pointsAndLinesText, 
getVDev(Image(StockImage::Yes, BMP_LINE_P_STACKED)));
+                rSubTypeList.append("3", linesOnlyText, 
getVDev(Image(StockImage::Yes, BMP_LINE_O_STACKED)));
+                rSubTypeList.append("4", lines3DText, 
getVDev(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
 {
@@ -954,19 +1060,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));
+            rSubTypeList.append("1", pointsOnlyText, 
getVDev(Image(StockImage::Yes, BMP_POINTS_XVALUES)));
+            rSubTypeList.append("2", pointsAndLinesText, 
getVDev(Image(StockImage::Yes, BMP_LINE_P_XVALUES_SMOOTH)));
+            rSubTypeList.append("3", linesOnlyText, 
getVDev(Image(StockImage::Yes, BMP_LINE_O_XVALUES_SMOOTH)));
+            rSubTypeList.append("4", lines3DText, 
getVDev(Image(StockImage::Yes, BMP_LINE3D_XVALUES_SMOOTH)));
             break;
         }
         case CurveStyle_STEP_START:
@@ -974,23 +1085,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));
+            rSubTypeList.append("1", pointsOnlyText, 
getVDev(Image(StockImage::Yes, BMP_POINTS_XVALUES)));
+            rSubTypeList.append("2", pointsAndLinesText, 
getVDev(Image(StockImage::Yes, BMP_LINE_P_XVALUES_STEPPED)));
+            rSubTypeList.append("3", linesOnlyText, 
getVDev(Image(StockImage::Yes, BMP_LINE_O_XVALUES_STEPPED)));
+            rSubTypeList.append("4", lines3DText, 
getVDev(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));
+            rSubTypeList.append("1", pointsOnlyText, 
getVDev(Image(StockImage::Yes, BMP_POINTS_XVALUES)));
+            rSubTypeList.append("2", pointsAndLinesText, 
getVDev(Image(StockImage::Yes, BMP_LINE_P_XVALUES)));
+            rSubTypeList.append("3", linesOnlyText, 
getVDev(Image(StockImage::Yes, BMP_LINE_O_XVALUES)));
+            rSubTypeList.append("4", lines3DText, 
getVDev(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
 {
@@ -1064,26 +1187,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));
+        rSubTypeList.append("1", firstText, getVDev(Image(StockImage::Yes, 
BMP_AREAS_3D)));
+        rSubTypeList.append("2", stackedText, getVDev(Image(StockImage::Yes, 
BMP_AREAS_3D_1)));
+        rSubTypeList.append("3", percentText, getVDev(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));
+        rSubTypeList.append("1", firstText, getVDev(Image(StockImage::Yes, 
BMP_AREAS_2D_1)));
+        rSubTypeList.append("2", stackedText, getVDev(Image(StockImage::Yes, 
BMP_AREAS_2D)));
+        rSubTypeList.append("3", percentText, getVDev(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 )
 {
@@ -1160,29 +1299,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));
+        rSubTypeList.append("1", pointsOnlyText, 
getVDev(Image(StockImage::Yes, BMP_NET_SYMB)));
+        rSubTypeList.append("2", pointsAndLinesText, 
getVDev(Image(StockImage::Yes, BMP_NET_LINESYMB)));
+        rSubTypeList.append("3", linesOnlyText, getVDev(Image(StockImage::Yes, 
BMP_NET)));
+        rSubTypeList.append("4", filledText, getVDev(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));
+        rSubTypeList.append("1", pointsOnlyText, 
getVDev(Image(StockImage::Yes, BMP_NET_SYMB_STACK)));
+        rSubTypeList.append("2", pointsAndLinesText, 
getVDev(Image(StockImage::Yes, BMP_NET_LINESYMB_STACK)));
+        rSubTypeList.append("3", linesOnlyText, getVDev(Image(StockImage::Yes, 
BMP_NET_STACK)));
+        rSubTypeList.append("4", filledText, getVDev(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 )
 {
@@ -1239,18 +1395,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();
+
+    OUString stock1Text = SchResId(STR_STOCK_1);
+    OUString stock2Text = SchResId(STR_STOCK_2);
+    OUString stock3Text = SchResId(STR_STOCK_3);
+    OUString stock4Text = SchResId(STR_STOCK_4);
+
+    rSubTypeList.append("1", stock1Text, getVDev(Image(StockImage::Yes, 
BMP_STOCK_1)));
+    rSubTypeList.append("2", stock2Text, getVDev(Image(StockImage::Yes, 
BMP_STOCK_2)));
+    rSubTypeList.append("3", stock3Text, getVDev(Image(StockImage::Yes, 
BMP_STOCK_3)));
+    rSubTypeList.append("4", stock4Text, getVDev(Image(StockImage::Yes, 
BMP_STOCK_4)));
+}
 
-    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 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 )
@@ -1282,14 +1457,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();
+
+    OUString lineColumnText = SchResId(STR_LINE_COLUMN);
+    OUString lineStackedColumnText = SchResId(STR_LINE_STACKEDCOLUMN);
+
+    rSubTypeList.append("1", lineColumnText, getVDev(Image(StockImage::Yes, 
BMP_COLUMN_LINE)));
+    rSubTypeList.append("2", lineStackedColumnText, 
getVDev(Image(StockImage::Yes, BMP_COLUMN_LINE_STACKED)));
+}
 
-    rSubTypeList.SetItemText(1, SchResId(STR_LINE_COLUMN));
-    rSubTypeList.SetItemText(2, SchResId(STR_LINE_STACKEDCOLUMN));
+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)
@@ -1408,12 +1598,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);
+
+    rSubTypeList.append("1", bubble1Text, getVDev(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 f2d854a3ad0b..a2204922107c 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>
@@ -54,12 +52,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();
@@ -72,16 +66,13 @@ ChartTypeTabPage::ChartTypeTabPage(weld::Container* pPage, 
weld::DialogControlle
     SetPageTitle(SchResId(STR_PAGE_CHARTTYPE));
 
     m_xMainTypeList->connect_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 );
@@ -143,14 +134,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 );
@@ -214,7 +204,7 @@ ChartTypeDialogController* 
ChartTypeTabPage::getSelectedMainType()
     return pTypeController;
 }
 
-IMPL_LINK_NOARG(ChartTypeTabPage, SelectSubTypeHdl, ValueSet*, void)
+IMPL_LINK_NOARG(ChartTypeTabPage, SelectSubTypeHdl, weld::IconView&, void)
 {
     if( m_pCurrentMainType )
     {
@@ -225,6 +215,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();
@@ -275,7 +275,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 );
@@ -297,7 +297,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 );
@@ -358,7 +358,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 c01b599f58d5..0f9fbbbccb94 100644
--- a/chart2/source/controller/dialogs/tp_ChartType.hxx
+++ b/chart2/source/controller/dialogs/tp_ChartType.hxx
@@ -30,8 +30,6 @@
 namespace com::sun::star::chart2 { class XChartDocument; }
 namespace weld { class CustomWeld; }
 
-class ValueSet;
-
 namespace chart
 {
 
@@ -66,7 +64,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;
@@ -85,8 +84,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 530d50b1b514..f491fc094924 100644
--- a/chart2/source/inc/ChartTypeDialogController.hxx
+++ b/chart2/source/inc/ChartTypeDialogController.hxx
@@ -29,6 +29,9 @@
 #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;
@@ -42,8 +45,6 @@ namespace com::sun::star::lang
 class XMultiServiceFactory;
 }
 
-class ValueSet;
-
 namespace chart
 {
 class ChartModel;
@@ -103,7 +104,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;
@@ -141,6 +144,7 @@ public:
 protected:
     bool bSupportsXAxisWithValues;
     bool bSupports3D;
+    static VclPtr<VirtualDevice> getVDev(Image pPreview);
 };
 
 class ColumnOrBarChartDialogController_Base : public ChartTypeDialogController
@@ -164,8 +168,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
@@ -177,8 +182,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
@@ -190,8 +196,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;
@@ -206,8 +213,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;
@@ -238,8 +246,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;
 
@@ -256,8 +265,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;
@@ -273,12 +283,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
@@ -290,8 +304,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;
@@ -306,8 +321,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;
 };
 
@@ -319,8 +335,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;
@@ -349,8 +366,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 9d6c348631e1..3c4be91962cf 100644
--- a/chart2/uiconfig/ui/sidebartype.ui
+++ b/chart2/uiconfig/ui/sidebartype.ui
@@ -26,6 +26,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>
@@ -40,26 +48,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 bdd9427768b1..c8858672ffd8 100644
--- a/chart2/uiconfig/ui/tp_ChartType.ui
+++ b/chart2/uiconfig/ui/tp_ChartType.ui
@@ -27,6 +27,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>
@@ -74,26 +82,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)

Reply via email to