Date: prev next · Thread: first prev next last
2011 Archives by date, by thread · List index


Hi

I have created a patch that enables users to add and remove Color Charts.

--
Greetings,
Rob Snelders
From 4188ad2d7911a898a283d6dccdfe84bb1f0ef1ad Mon Sep 17 00:00:00 2001
From: Rob Snelders <programming@ertai.nl>
Date: Thu, 24 Mar 2011 21:33:46 +0100
Subject: [PATCH] Added the Adding and removing of color charts

---
 cui/source/options/cfgchart.cxx |   50 +++++++++++++++++++++++++++-----------
 cui/source/options/cfgchart.hxx |    9 +++++-
 cui/source/options/optchart.cxx |   44 +++++++++++++++++++++++++++++++++-
 cui/source/options/optchart.hrc |    3 +-
 cui/source/options/optchart.hxx |   14 +++++++----
 cui/source/options/optchart.src |   24 ++++++++++++++----
 6 files changed, 115 insertions(+), 29 deletions(-)

diff --git a/cui/source/options/cfgchart.cxx b/cui/source/options/cfgchart.cxx
index 4b449a0..0d406cd 100644
--- a/cui/source/options/cfgchart.cxx
+++ b/cui/source/options/cfgchart.cxx
@@ -43,7 +43,8 @@ SvxChartColorTable::SvxChartColorTable()
 {}
 
 SvxChartColorTable::SvxChartColorTable( const SvxChartColorTable & _rSource ) :
-        m_aColorEntries( _rSource.m_aColorEntries )
+        m_aColorEntries( _rSource.m_aColorEntries ),
+        nNextElementNumber( m_aColorEntries.size() + 1 )
 {}
 
 // accessors
@@ -79,6 +80,7 @@ ColorData SvxChartColorTable::getColorData( size_t _nIndex ) const
 void SvxChartColorTable::clear()
 {
     m_aColorEntries.clear();
+    nNextElementNumber = 1;
 }
 
 void SvxChartColorTable::append( const XColorEntry & _rEntry )
@@ -86,6 +88,12 @@ void SvxChartColorTable::append( const XColorEntry & _rEntry )
     m_aColorEntries.push_back( _rEntry );
 }
 
+void SvxChartColorTable::remove( size_t _nIndex )
+{
+    if (m_aColorEntries.size() > 0)
+        m_aColorEntries.erase( m_aColorEntries.begin() + _nIndex);
+}
+
 void SvxChartColorTable::replace( size_t _nIndex, const XColorEntry & _rEntry )
 {
     DBG_ASSERT( _nIndex <= m_aColorEntries.size(),
@@ -113,25 +121,37 @@ void SvxChartColorTable::useDefault()
 
     clear();
 
-    String aResName( CUI_RES( RID_SVXSTR_DIAGRAM_ROW ) );
-    String aPrefix, aPostfix, aName;
-    xub_StrLen nPos = aResName.SearchAscii( "$(ROW)" );
-    if( nPos != STRING_NOTFOUND )
+    for( sal_Int32 i=0; i<ROW_COLOR_COUNT; i++ )
     {
-        aPrefix = String( aResName, 0, nPos );
-        aPostfix = String( aResName, nPos + sizeof( "$(ROW)" ) - 1, STRING_LEN );
+        append( XColorEntry( aColors[ i % sizeof( aColors ) ], getNextDefaultName() ));
     }
-    else
-        aPrefix = aResName;
+}
 
-    for( sal_Int32 i=0; i<ROW_COLOR_COUNT; i++ )
-    {
-        aName = aPrefix;
-        aName.Append( String::CreateFromInt32( i + 1 ));
-        aName.Append( aPostfix );
+String SvxChartColorTable::getNextDefaultName()
+{
+    String aName;
 
-        append( XColorEntry( aColors[ i % sizeof( aColors ) ], aName ));
+    if (sDefaultNamePrefix.Len() == 0)
+    {
+        String aResName( CUI_RES( RID_SVXSTR_DIAGRAM_ROW ) );
+        xub_StrLen nPos = aResName.SearchAscii( "$(ROW)" );
+        if( nPos != STRING_NOTFOUND )
+        {
+            sDefaultNamePrefix = String( aResName, 0, nPos );
+            sDefaultNamePostfix = String( aResName, nPos + sizeof( "$(ROW)" ) - 1, STRING_LEN );
+        }
+        else
+        {
+            sDefaultNamePrefix = aResName;
+        }
     }
+
+    aName = sDefaultNamePrefix;
+    aName.Append( String::CreateFromInt32 ( nNextElementNumber ) );
+    aName.Append( sDefaultNamePostfix );
+    nNextElementNumber++;
+
+    return aName;
 }
 
 // comparison
diff --git a/cui/source/options/cfgchart.hxx b/cui/source/options/cfgchart.hxx
index b9f7ee4..918f81a 100644
--- a/cui/source/options/cfgchart.hxx
+++ b/cui/source/options/cfgchart.hxx
@@ -44,6 +44,9 @@ class SvxChartColorTable
 {
 private:
     ::std::vector< XColorEntry >     m_aColorEntries;
+    int                              nNextElementNumber;
+    String                           sDefaultNamePrefix;
+    String                           sDefaultNamePostfix;
 
 public:
     SvxChartColorTable();
@@ -57,8 +60,10 @@ public:
     // mutators
     void clear();
     void append( const XColorEntry & _rEntry );
+    void remove( size_t _nIndex );
     void replace( size_t _nIndex, const XColorEntry & _rEntry );
     void useDefault();
+    String getNextDefaultName();
 
     // comparison
     bool operator==( const SvxChartColorTable & _rOther ) const;
@@ -70,8 +75,8 @@ public:
 class SvxChartOptions : public ::utl::ConfigItem
 {
 private:
-    SvxChartColorTable         maDefColors;
-    sal_Bool                                   mbIsInitialized;
+    SvxChartColorTable          maDefColors;
+    sal_Bool                    mbIsInitialized;
 
     ::com::sun::star::uno::Sequence< ::rtl::OUString >
                             maPropertyNames;
diff --git a/cui/source/options/optchart.cxx b/cui/source/options/optchart.cxx
index dc3b64a..51d48d4 100644
--- a/cui/source/options/optchart.cxx
+++ b/cui/source/options/optchart.cxx
@@ -60,11 +60,15 @@ SvxDefaultColorOptPage::SvxDefaultColorOptPage( Window* pParent, const SfxItemSe
     aLbChartColors     ( this, CUI_RES( LB_CHART_COLOR_LIST ) ),
     aGbColorBox                ( this, CUI_RES( FL_COLOR_BOX ) ),
     aValSetColorBox    ( this, CUI_RES( CT_COLOR_BOX ) ),
-    aPBDefault         ( this, CUI_RES( PB_RESET_TO_DEFAULT ) )
+    aPBDefault         ( this, CUI_RES( PB_RESET_TO_DEFAULT ) ),
+    aPBAdd              ( this, CUI_RES( PB_ADD_CHART_COLOR ) ),
+    aPBRemove           ( this, CUI_RES( PB_REMOVE_CHART_COLOR ) )
 {
     FreeResource();
 
     aPBDefault.SetClickHdl( LINK( this, SvxDefaultColorOptPage, ResetToDefaults ) );
+    aPBAdd.SetClickHdl( LINK( this, SvxDefaultColorOptPage, AddChartColor ) );
+    aPBRemove.SetClickHdl( LINK( this, SvxDefaultColorOptPage, RemoveChartColor ) );
     aLbChartColors.SetSelectHdl( LINK( this, SvxDefaultColorOptPage, ListClickedHdl ) );
     aValSetColorBox.SetSelectHdl( LINK( this, SvxDefaultColorOptPage, BoxClickedHdl ) );
 
@@ -195,6 +199,44 @@ IMPL_LINK( SvxDefaultColorOptPage, ResetToDefaults, void *, EMPTYARG )
     return 0L;
 }
 
+// AddChartColor
+// ------------
+
+IMPL_LINK( SvxDefaultColorOptPage, AddChartColor, void *, EMPTYARG )
+{
+    if( pColorConfig )
+    {
+        ColorData black = RGB_COLORDATA( 0x00, 0x00, 0x00 );
+
+        pColorConfig->GetColorTable().append (XColorEntry ( black, 
pColorConfig->GetColorTable().getNextDefaultName()));
+
+        aLbChartColors.Clear();
+        aLbChartColors.FillBox( pColorConfig->GetColorTable() );
+
+        aLbChartColors.GetFocus();
+    }
+
+    return 0L;
+}
+
+// RemoveChartColor
+// ----------------
+
+IMPL_LINK( SvxDefaultColorOptPage, RemoveChartColor, void *, EMPTYARG )
+{
+    if( pColorConfig )
+    {
+        pColorConfig->GetColorTable().remove( aLbChartColors.GetSelectEntryPos()  );
+
+        aLbChartColors.Clear();
+        aLbChartColors.FillBox( pColorConfig->GetColorTable() );
+
+        aLbChartColors.GetFocus();
+    }
+
+    return 0L;
+}
+
 // ListClickedHdl
 // --------------
 
diff --git a/cui/source/options/optchart.hrc b/cui/source/options/optchart.hrc
index 0fee268..dcf86df 100644
--- a/cui/source/options/optchart.hrc
+++ b/cui/source/options/optchart.hrc
@@ -34,4 +34,5 @@
 #define CT_COLOR_BOX                   4
 
 #define PB_RESET_TO_DEFAULT            5
-
+#define PB_ADD_CHART_COLOR              6
+#define PB_REMOVE_CHART_COLOR           7
diff --git a/cui/source/options/optchart.hxx b/cui/source/options/optchart.hxx
index b0f61c2..71898e9 100644
--- a/cui/source/options/optchart.hxx
+++ b/cui/source/options/optchart.hxx
@@ -56,17 +56,21 @@ public:
 class SvxDefaultColorOptPage : public SfxTabPage
 {
 private:
-    FixedLine                  aGbChartColors;
-    ChartColorLB                       aLbChartColors;
-    FixedLine                  aGbColorBox;
-    ValueSet                           aValSetColorBox;
-    PushButton                         aPBDefault;
+    FixedLine                           aGbChartColors;
+    ChartColorLB                        aLbChartColors;
+    FixedLine                           aGbColorBox;
+    ValueSet                            aValSetColorBox;
+    PushButton                          aPBDefault;
+    PushButton                          aPBAdd;
+    PushButton                          aPBRemove;
 
     SvxChartOptions*           pChartOptions;
     SvxChartColorTableItem*    pColorConfig;
     XColorTable*                       pColorTab;
 
     DECL_LINK( ResetToDefaults, void * );
+    DECL_LINK( AddChartColor, void * );
+    DECL_LINK( RemoveChartColor, void * );
     DECL_LINK( ListClickedHdl, ChartColorLB * );
     DECL_LINK( BoxClickedHdl, ValueSet * );
 
diff --git a/cui/source/options/optchart.src b/cui/source/options/optchart.src
index f9ea2c6..593fafd 100644
--- a/cui/source/options/optchart.src
+++ b/cui/source/options/optchart.src
@@ -39,7 +39,7 @@ TabPage RID_OPTPAGE_CHART_DEFCOLORS
     Text [ en-US ] = "Default Colors";
     FixedLine FL_CHART_COLOR_LIST
     {
-        Pos            = MAP_APPFONT ( 6 , 3  ) ;
+        Pos    = MAP_APPFONT ( 6 , 3  ) ;
         Size    = MAP_APPFONT ( 80 , 8 ) ;
         Text [ en-US ] = "Chart colors";
         Text [ x-comment ] = " ";
@@ -48,7 +48,7 @@ TabPage RID_OPTPAGE_CHART_DEFCOLORS
     {
         HelpID = "cui:ListBox:RID_OPTPAGE_CHART_DEFCOLORS:LB_CHART_COLOR_LIST";
         Border         = TRUE;
-        Pos                    = MAP_APPFONT ( 12 , 15  );
+        Pos            = MAP_APPFONT ( 12 , 15  );
         Size           = MAP_APPFONT ( 68 , 152 );
         DropDown       = FALSE;
         TabStop                = TRUE ;
@@ -56,17 +56,31 @@ TabPage RID_OPTPAGE_CHART_DEFCOLORS
     FixedLine FL_COLOR_BOX
     {
         Pos            = MAP_APPFONT ( 92 , 3  ) ;
-        Size    = MAP_APPFONT ( 106 , 8 ) ;
-        Text [ en-US ] = "Color table" ;
+        Size           = MAP_APPFONT ( 106 , 8 ) ;
+        Text [ en-US ]  = "Color table" ;
         Text [ x-comment ] = " ";
     };
     Control CT_COLOR_BOX
     {
         Border         = TRUE;
-        Pos                    = MAP_APPFONT ( 98 , 15  );
+        Pos            = MAP_APPFONT ( 98 , 15  );
         Size           = MAP_APPFONT ( 94 , 152 );
         TabStop                = TRUE ;
     };
+    PushButton PB_ADD_CHART_COLOR
+    {
+        Pos = MAP_APPFONT ( 204 , 15 ) ;
+        Size = MAP_APPFONT ( 50 , 14 ) ;
+        Text [ en-US ] = "~Add";
+        Text [ x-comment ] = " ";
+    };
+    PushButton PB_REMOVE_CHART_COLOR
+    {
+        Pos = MAP_APPFONT ( 204 , 32 ) ;
+        Size = MAP_APPFONT ( 50 , 14 ) ;
+        Text [ en-US ] = "~Remove";
+        Text [ x-comment ] = " ";
+    };
     PushButton PB_RESET_TO_DEFAULT
     {
         HelpID = "cui:PushButton:RID_OPTPAGE_CHART_DEFCOLORS:PB_RESET_TO_DEFAULT";
-- 
1.7.0.4


Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.