cui/source/tabpages/tpcolor.cxx        |   11 +++----
 include/svx/PaletteManager.hxx         |    7 ++++
 include/svx/tbcontrl.hxx               |    2 -
 svx/source/tbxctrls/PaletteManager.cxx |   31 +++++++++++++++++++-
 svx/source/tbxctrls/colorwindow.hxx    |    2 +
 svx/source/tbxctrls/tbcontrl.cxx       |   51 +++++++++++++++++++++------------
 6 files changed, 77 insertions(+), 27 deletions(-)

New commits:
commit 9434885f2f3f0cc6f58a5c28d81b665759fca034
Author: Krisztian Pinter <pin.termina...@gmail.com>
Date:   Tue Jul 8 19:08:38 2014 +0200

    Add color picker to color palette
    
    Change-Id: I651f485598ee57af815780e234031f101b63fa24

diff --git a/include/svx/PaletteManager.hxx b/include/svx/PaletteManager.hxx
index a6b2dfa..e1d7201 100644
--- a/include/svx/PaletteManager.hxx
+++ b/include/svx/PaletteManager.hxx
@@ -21,6 +21,7 @@
 
 #include <svx/SvxColorValueSet.hxx>
 #include <rtl/ustring.hxx>
+#include <svx/tbxcolorupdate.hxx>
 
 class PaletteManager
 {
@@ -28,7 +29,9 @@ class PaletteManager
     sal_uInt16  mnCurrentPalette;
 
     long        mnColorCount;
+    svx::ToolboxButtonColorUpdater* mpBtnUpdater;
 
+    Color       mLastColor;
     std::vector<Palette> maPalettes;
 public:
     PaletteManager();
@@ -38,6 +41,10 @@ public:
     void        NextPalette();
     long        GetColorCount();
     OUString    GetPaletteName();
+    const Color& GetLastColor();
+    void        SetLastColor(const Color& rLastColor);
+    void        SetBtnUpdater(svx::ToolboxButtonColorUpdater* pBtnUpdater);
+    void        PopupColorPicker();
 };
 
 #endif // INCLUDED_SVX_PALETTEMANAGER_HXX
diff --git a/include/svx/tbcontrl.hxx b/include/svx/tbcontrl.hxx
index 1e9c4b1..762f33d 100644
--- a/include/svx/tbcontrl.hxx
+++ b/include/svx/tbcontrl.hxx
@@ -221,7 +221,6 @@ class SVX_DLLPUBLIC SvxColorToolBoxControl : public 
SfxToolBoxControl
     using SfxToolBoxControl::StateChanged;
 
     ::boost::scoped_ptr< ::svx::ToolboxButtonColorUpdater > pBtnUpdater;
-    Color                               mLastColor;
     PaletteManager                      mPaletteManager;
     DECL_LINK( SelectedHdl, Color* );
 public:
@@ -242,7 +241,6 @@ public:
 class SVX_DLLPUBLIC SvxLineColorToolBoxControl : public SfxToolBoxControl
 {
     ::boost::scoped_ptr< ::svx::ToolboxButtonColorUpdater > pBtnUpdater;
-    Color                               mLastColor;
     PaletteManager                      mPaletteManager;
     DECL_LINK( SelectedHdl, Color* );
 public:
diff --git a/svx/source/tbxctrls/PaletteManager.cxx 
b/svx/source/tbxctrls/PaletteManager.cxx
index 88916ee..e9933d4 100644
--- a/svx/source/tbxctrls/PaletteManager.cxx
+++ b/svx/source/tbxctrls/PaletteManager.cxx
@@ -23,11 +23,13 @@
 #include <sfx2/objsh.hxx>
 #include "svx/drawitem.hxx"
 #include <svx/dialogs.hrc>
+#include <svtools/colrdlg.hxx>
 
 PaletteManager::PaletteManager() :
     mnNumOfPalettes(2),
     mnCurrentPalette(0),
-    mnColorCount(0)
+    mnColorCount(0),
+    mLastColor(COL_AUTO)
 {
     LoadPalettes();
     mnNumOfPalettes += maPalettes.size();
@@ -127,4 +129,31 @@ OUString PaletteManager::GetPaletteName()
         return OStringToOUString(maPalettes[mnCurrentPalette - 
1].GetPaletteName(), RTL_TEXTENCODING_ASCII_US);
 }
 
+const Color& PaletteManager::GetLastColor()
+{
+    return mLastColor;
+}
+
+void PaletteManager::SetLastColor(const Color& rLastColor)
+{
+    mLastColor = rLastColor;
+}
+
+void PaletteManager::SetBtnUpdater(svx::ToolboxButtonColorUpdater* pBtnUpdater)
+{
+    mpBtnUpdater = pBtnUpdater;
+}
+
+void PaletteManager::PopupColorPicker()
+{
+    SvColorDialog aColorDlg( 0 );
+    aColorDlg.SetColor ( mLastColor );
+    aColorDlg.SetMode( svtools::ColorPickerMode_MODIFY );
+    if( aColorDlg.Execute() == RET_OK )
+    {
+        mpBtnUpdater->Update( aColorDlg.GetColor() );
+        mLastColor = aColorDlg.GetColor();
+    }
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/source/tbxctrls/colorwindow.hxx 
b/svx/source/tbxctrls/colorwindow.hxx
index 3e19796..fe8fe8d 100644
--- a/svx/source/tbxctrls/colorwindow.hxx
+++ b/svx/source/tbxctrls/colorwindow.hxx
@@ -44,6 +44,7 @@ private:
     SvxColorValueSet aColorSet;
     PushButton aButtonLeft;
     PushButton aButtonRight;
+    PushButton aButtonPicker;
     FixedText  aPaletteName;
     OUString  maCommand;
     Link maSelectedLink;
@@ -57,6 +58,7 @@ private:
     DECL_LINK( SelectHdl, void * );
     DECL_LINK( StepLeftClickHdl, void * );
     DECL_LINK( StepRightClickHdl, void * );
+    DECL_LINK( OpenPickerClickHdl, void * );
 
 protected:
     virtual void    Resize() SAL_OVERRIDE;
diff --git a/svx/source/tbxctrls/tbcontrl.cxx b/svx/source/tbxctrls/tbcontrl.cxx
index d13d2ca..f2141f4 100644
--- a/svx/source/tbxctrls/tbcontrl.cxx
+++ b/svx/source/tbxctrls/tbcontrl.cxx
@@ -1086,6 +1086,7 @@ SvxColorWindow_Impl::SvxColorWindow_Impl( const OUString& 
           rCommand,
     aColorSet   ( this, WinBits( WB_ITEMBORDER | WB_NAMEFIELD | WB_3DLOOK | 
WB_NO_DIRECTSELECT) ),
     aButtonLeft ( this ),
     aButtonRight( this ),
+    aButtonPicker( this ),
     aPaletteName( this ),
     maCommand( rCommand ),
     nNavButtonWidth ( 20 ),
@@ -1125,18 +1126,27 @@ SvxColorWindow_Impl::SvxColorWindow_Impl( const 
OUString&            rCommand,
     }
 
     aButtonLeft.SetText("<");
+    aButtonLeft.SetSizePixel(Size(nNavButtonWidth, nNavButtonHeight));
     aButtonLeft.SetClickHdl( LINK( this, SvxColorWindow_Impl, StepLeftClickHdl 
) );
     aButtonLeft.Show();
 
     aButtonRight.SetText(">");
+    aButtonRight.SetSizePixel(Size(nNavButtonWidth, nNavButtonHeight));
     aButtonRight.SetClickHdl( LINK( this, SvxColorWindow_Impl, 
StepRightClickHdl ) );
     aButtonRight.Show();
 
+    aButtonPicker.SetText("P");
+    aButtonPicker.SetSizePixel(Size(nNavButtonWidth, nNavButtonHeight));
+    aButtonPicker.SetClickHdl( LINK( this, SvxColorWindow_Impl, 
OpenPickerClickHdl ) );
+    aButtonPicker.Show();
+
+    aPaletteName.SetSizePixel(Size(150, nNavButtonHeight));
+    aColorSet.Show();
+
     aColorSet.SetSelectHdl( LINK( this, SvxColorWindow_Impl, SelectHdl ) );
     SetHelpId( HID_POPUP_COLOR );
     aColorSet.SetHelpId( HID_POPUP_COLOR_CTRL );
     SetText( rWndTitle );
-    aColorSet.Show();
 
     aPaletteName.Show();
 
@@ -1158,13 +1168,12 @@ void SvxColorWindow_Impl::UpdateGUI()
     //TODO: Move left/right buttons above the colors
     SetOutputSizePixel(Size(aNewSize.Width() + nAdd, aNewSize.Height() + nAdd 
+ nNavButtonHeight));
 
-    aButtonLeft.SetSizePixel(Size(nNavButtonWidth, nNavButtonHeight));
     aButtonLeft.SetPosPixel(Point(0, aNewSize.Height() + nAdd + 1));
 
-    aButtonRight.SetSizePixel(Size(nNavButtonWidth, nNavButtonHeight));
     aButtonRight.SetPosPixel(Point(aNewSize.Width() + nAdd - nNavButtonWidth, 
aNewSize.Height() + nAdd + 1));
 
-    aPaletteName.SetSizePixel(Size(150, nNavButtonHeight));
+    aButtonPicker.SetPosPixel(Point(aNewSize.Width() + nAdd - 2 * 
nNavButtonWidth, aNewSize.Height() + nAdd + 1));
+
     aPaletteName.SetPosPixel(Point(nNavButtonWidth, aNewSize.Height() + nAdd + 
1));
     aPaletteName.SetText(mrPaletteManager.GetPaletteName());
 }
@@ -1234,6 +1243,12 @@ IMPL_LINK_NOARG(SvxColorWindow_Impl, StepRightClickHdl)
     return 0;
 }
 
+IMPL_LINK_NOARG(SvxColorWindow_Impl, OpenPickerClickHdl)
+{
+    mrPaletteManager.PopupColorPicker();
+    return 0;
+}
+
 void SvxColorWindow_Impl::Resize()
 {
     lcl_ResizeValueSet( *this, aColorSet, nNavButtonHeight + 2);
@@ -2340,8 +2355,7 @@ SvxColorToolBoxControl::SvxColorToolBoxControl(
     sal_uInt16 nId,
     ToolBox& rTbx ) :
 
-    SfxToolBoxControl( nSlotId, nId, rTbx ),
-    mLastColor( COL_AUTO )
+    SfxToolBoxControl( nSlotId, nId, rTbx )
 {
     rTbx.SetItemBits( nId, TIB_DROPDOWN | rTbx.GetItemBits( nId ) );
 
@@ -2350,27 +2364,27 @@ SvxColorToolBoxControl::SvxColorToolBoxControl(
     {
         case SID_ATTR_CHAR_COLOR:
             addStatusListener( OUString( ".uno:Color" ));
-            mLastColor = COL_RED;
+            mPaletteManager.SetLastColor( COL_RED );
             break;
 
         case SID_ATTR_CHAR_COLOR2:
             addStatusListener( OUString( ".uno:CharColorExt" ));
-            mLastColor = COL_RED;
+            mPaletteManager.SetLastColor( COL_RED );
             break;
 
         case SID_BACKGROUND_COLOR:
             addStatusListener( OUString( ".uno:BackgroundColor" ));
-            mLastColor = COL_YELLOW;
+            mPaletteManager.SetLastColor( COL_YELLOW );
             break;
 
         case SID_ATTR_CHAR_COLOR_BACKGROUND:
             addStatusListener( OUString( ".uno:CharBackgroundExt" ));
-            mLastColor = COL_YELLOW;
+            mPaletteManager.SetLastColor( COL_YELLOW );
             break;
 
         case SID_FRAME_LINECOLOR:
             addStatusListener( OUString( ".uno:FrameLineColor" ));
-            mLastColor = COL_BLUE;
+            mPaletteManager.SetLastColor( COL_BLUE );
             break;
 
         case SID_EXTRUSION_3D_COLOR:
@@ -2379,6 +2393,7 @@ SvxColorToolBoxControl::SvxColorToolBoxControl(
     }
 
     pBtnUpdater.reset( new ::svx::ToolboxButtonColorUpdater( nSlotId, nId, 
&GetToolBox() ) );
+    mPaletteManager.SetBtnUpdater( pBtnUpdater.get() );
 }
 
 SvxColorToolBoxControl::~SvxColorToolBoxControl()
@@ -2431,7 +2446,7 @@ SfxPopupWindow* 
SvxColorToolBoxControl::CreatePopupWindow()
 IMPL_LINK(SvxColorToolBoxControl, SelectedHdl, Color*, pColor)
 {
     pBtnUpdater->Update( *pColor );
-    mLastColor = *pColor;
+    mPaletteManager.SetLastColor( *pColor );
     return 0;
 }
 
@@ -2495,11 +2510,10 @@ void SvxColorToolBoxControl::Select(sal_uInt16 
/*nSelectModifier*/)
 
     Sequence< PropertyValue > aArgs( 1 );
     aArgs[0].Name  = aParamName;
-    aArgs[0].Value = makeAny( (sal_uInt32)( mLastColor.GetColor() ));
+    aArgs[0].Value = makeAny( (sal_uInt32)( 
mPaletteManager.GetLastColor().GetColor() ));
     Dispatch( aCommand, aArgs );
 }
 
-
 // class SvxLineColorToolBoxControl ----------------------------------------
 
 SvxLineColorToolBoxControl::SvxLineColorToolBoxControl(
@@ -2507,12 +2521,13 @@ SvxLineColorToolBoxControl::SvxLineColorToolBoxControl(
     sal_uInt16 nId,
     ToolBox& rTbx ) :
 
-    SfxToolBoxControl( nSlotId, nId, rTbx ),
-    mLastColor( COL_BLACK )
+    SfxToolBoxControl( nSlotId, nId, rTbx )
 {
     rTbx.SetItemBits( nId, TIB_DROPDOWN | rTbx.GetItemBits( nId ) );
     addStatusListener( OUString( ".uno:XLineColor" ) );
     pBtnUpdater.reset( new ::svx::ToolboxButtonColorUpdater( nSlotId, nId, 
&GetToolBox() ) );
+    mPaletteManager.SetLastColor( COL_BLACK );
+    mPaletteManager.SetBtnUpdater( pBtnUpdater.get() );
 }
 
 SvxLineColorToolBoxControl::~SvxLineColorToolBoxControl()
@@ -2546,7 +2561,7 @@ SfxPopupWindow* 
SvxLineColorToolBoxControl::CreatePopupWindow()
 IMPL_LINK(SvxLineColorToolBoxControl, SelectedHdl, Color*, pColor)
 {
     pBtnUpdater->Update( *pColor );
-    mLastColor = *pColor;
+    mPaletteManager.SetLastColor( *pColor );
     return 0;
 }
 
@@ -2565,7 +2580,7 @@ void SvxLineColorToolBoxControl::Select(sal_uInt16 
/*nSelectModifier*/)
 {
     Sequence< PropertyValue > aArgs( 1 );
     aArgs[0].Name  = "XLineColor";
-    aArgs[0].Value = makeAny( (sal_uInt32)( mLastColor.GetColor() ));
+    aArgs[0].Value = makeAny( (sal_uInt32)( 
mPaletteManager.GetLastColor().GetColor() ));
     Dispatch( OUString( ".uno:XLineColor" ), aArgs );
 }
 
commit 0ccce7ee28b571e5644d1e6d06fe29c2b54e8458
Author: Krisztian Pinter <pin.termina...@gmail.com>
Date:   Mon Jul 7 13:36:19 2014 +0200

    Make SvColorDialog allocate on stack
    
    Change-Id: Ia47feda85bcde1ed44a2fbbcd28bbb5be0abafc8

diff --git a/cui/source/tabpages/tpcolor.cxx b/cui/source/tabpages/tpcolor.cxx
index c20bb39..5982625 100644
--- a/cui/source/tabpages/tpcolor.cxx
+++ b/cui/source/tabpages/tpcolor.cxx
@@ -803,15 +803,15 @@ IMPL_LINK_NOARG(SvxColorTabPage, ClickModifyHdl_Impl)
 
 IMPL_LINK_NOARG(SvxColorTabPage, ClickWorkOnHdl_Impl)
 {
-    SvColorDialog* pColorDlg = new SvColorDialog( GetParentDialog() );
+    SvColorDialog pColorDlg( GetParentDialog() );
 
-    pColorDlg->SetColor (aCurrentColor);
-    pColorDlg->SetMode( svtools::ColorPickerMode_MODIFY );
+    pColorDlg.SetColor (aCurrentColor);
+    pColorDlg.SetMode( svtools::ColorPickerMode_MODIFY );
 
-    if( pColorDlg->Execute() == RET_OK )
+    if( pColorDlg.Execute() == RET_OK )
     {
         sal_uInt16 nK = 0;
-        Color aPreviewColor = pColorDlg->GetColor();
+        Color aPreviewColor = pColorDlg.GetColor();
         aCurrentColor = aPreviewColor;
         if (eCM != CM_RGB)
         {
@@ -836,7 +836,6 @@ IMPL_LINK_NOARG(SvxColorTabPage, ClickWorkOnHdl_Impl)
 
         m_pCtlPreviewNew->Invalidate();
     }
-    delete( pColorDlg );
 
     return 0;
 }
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to