summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2016-11-04 13:07:44 +0000
committerCaolán McNamara <caolanm@redhat.com>2016-11-04 17:14:26 +0000
commit760a198e697f3070a5e0e029e4eff7be220eb9cd (patch)
treeeb25c9ff7f9066239b9e22912a0010d826637acf
parent8bea644d6117a49405e6426dc97214220fc869d1 (diff)
move ColorListBox beside sole thing that uses it
Change-Id: Ia458ded8881c415badd5d75bddad0daca57a1a25
-rw-r--r--include/svtools/ctrlbox.hxx80
-rw-r--r--include/svtools/svtools.hrc2
-rw-r--r--include/svx/dlgctrl.hxx69
-rw-r--r--svtools/source/control/ctrlbox.cxx212
-rw-r--r--svtools/source/control/ctrlbox.src5
-rw-r--r--svx/source/dialog/dlgctrl.cxx207
6 files changed, 276 insertions, 299 deletions
diff --git a/include/svtools/ctrlbox.hxx b/include/svtools/ctrlbox.hxx
index c1ad071123eb..28d1a3497888 100644
--- a/include/svtools/ctrlbox.hxx
+++ b/include/svtools/ctrlbox.hxx
@@ -42,17 +42,6 @@ typedef ::std::vector< FontMetric > ImplFontList;
/*************************************************************************
-Description
-============
-
-class ColorListBox
-
-Description
-
-Allows color selection
-
---------------------------------------------------------------------------
-
class LineListBox
Description
@@ -141,75 +130,6 @@ FontList; FontNameBox; FontStyleBox; FontSizeMenu
*************************************************************************/
-class SVT_DLLPUBLIC ColorListBox : public ListBox
-{
- ImpColorList* pColorList; // separate liste, in case of user data are required from outside
- Size aImageSize;
-
- using Window::ImplInit;
- SVT_DLLPRIVATE void ImplInit();
- SVT_DLLPRIVATE void ImplDestroyColorEntries();
-
-public:
- ColorListBox( vcl::Window* pParent,
- WinBits nWinStyle = WB_BORDER );
- virtual ~ColorListBox() override;
- virtual void dispose() override;
-
- virtual void UserDraw( const UserDrawEvent& rUDEvt ) override;
-
- using ListBox::InsertEntry;
- sal_Int32 InsertEntry( const OUString& rStr,
- sal_Int32 nPos = LISTBOX_APPEND );
- sal_Int32 InsertEntry( const Color& rColor, const OUString& rStr,
- sal_Int32 nPos = LISTBOX_APPEND );
- void InsertAutomaticEntryColor(const Color &rAutoColorValue);
- bool IsAutomaticSelected() { return !GetSelectEntryPos(); }
- using ListBox::RemoveEntry;
- void RemoveEntry( sal_Int32 nPos );
- void Clear();
- void CopyEntries( const ColorListBox& rBox );
-
- using ListBox::GetEntryPos;
- sal_Int32 GetEntryPos( const Color& rColor ) const;
- Color GetEntryColor( sal_Int32 nPos ) const;
-
- void SelectEntry( const OUString& rStr )
- { ListBox::SelectEntry( rStr ); }
- void SelectEntry( const Color& rColor );
- Color GetSelectEntryColor() const;
- using ListBox::IsEntrySelected;
-
- bool IsEntrySelected(const Color& rColor) const
- {
- sal_Int32 nPos = GetEntryPos( rColor );
- if ( nPos != LISTBOX_ENTRY_NOTFOUND )
- return IsEntryPosSelected( nPos );
- else
- return false;
- }
-
-private:
- ColorListBox( const ColorListBox& ) = delete;
- ColorListBox& operator =( const ColorListBox& ) = delete;
-};
-
-inline void ColorListBox::SelectEntry( const Color& rColor )
-{
- sal_Int32 nPos = GetEntryPos( rColor );
- if ( nPos != LISTBOX_ENTRY_NOTFOUND )
- ListBox::SelectEntryPos( nPos );
-}
-
-inline Color ColorListBox::GetSelectEntryColor() const
-{
- sal_Int32 nPos = GetSelectEntryPos();
- Color aColor;
- if ( nPos != LISTBOX_ENTRY_NOTFOUND )
- aColor = GetEntryColor( nPos );
- return aColor;
-}
-
/**
Class computing border widths shared between Line style listbox and the
SvxBorderLine implementation.
diff --git a/include/svtools/svtools.hrc b/include/svtools/svtools.hrc
index 92cc8092ab7d..c149f8643c31 100644
--- a/include/svtools/svtools.hrc
+++ b/include/svtools/svtools.hrc
@@ -26,8 +26,6 @@
// various unsorted stuff
-#define STR_SVT_AUTOMATIC_COLOR (RID_SVTOOLS_START+16)
-
#define STR_SVT_FILEVIEW_COLUMN_TITLE (RID_SVTOOLS_START + 20)
#define STR_SVT_FILEVIEW_COLUMN_SIZE (RID_SVTOOLS_START + 21)
#define STR_SVT_FILEVIEW_COLUMN_DATE (RID_SVTOOLS_START + 22)
diff --git a/include/svx/dlgctrl.hxx b/include/svx/dlgctrl.hxx
index 5a2c217862bd..64ec881c8112 100644
--- a/include/svx/dlgctrl.hxx
+++ b/include/svx/dlgctrl.hxx
@@ -207,6 +207,75 @@ public:
/************************************************************************/
+class SAL_WARN_UNUSED SVX_DLLPUBLIC ColorListBox : public ListBox
+{
+ ImpColorList* pColorList; // separate liste, in case of user data are required from outside
+ Size aImageSize;
+
+ using Window::ImplInit;
+ SVT_DLLPRIVATE void ImplInit();
+ SVT_DLLPRIVATE void ImplDestroyColorEntries();
+
+public:
+ ColorListBox( vcl::Window* pParent,
+ WinBits nWinStyle = WB_BORDER );
+ virtual ~ColorListBox() override;
+ virtual void dispose() override;
+
+ virtual void UserDraw( const UserDrawEvent& rUDEvt ) override;
+
+ using ListBox::InsertEntry;
+ sal_Int32 InsertEntry( const OUString& rStr,
+ sal_Int32 nPos = LISTBOX_APPEND );
+ sal_Int32 InsertEntry( const Color& rColor, const OUString& rStr,
+ sal_Int32 nPos = LISTBOX_APPEND );
+ bool IsAutomaticSelected() { return !GetSelectEntryPos(); }
+ using ListBox::RemoveEntry;
+ void RemoveEntry( sal_Int32 nPos );
+ void Clear();
+ void CopyEntries( const ColorListBox& rBox );
+
+ using ListBox::GetEntryPos;
+ sal_Int32 GetEntryPos( const Color& rColor ) const;
+ Color GetEntryColor( sal_Int32 nPos ) const;
+
+ void SelectEntry( const OUString& rStr )
+ { ListBox::SelectEntry( rStr ); }
+ void SelectEntry( const Color& rColor );
+ Color GetSelectEntryColor() const;
+ using ListBox::IsEntrySelected;
+
+ bool IsEntrySelected(const Color& rColor) const
+ {
+ sal_Int32 nPos = GetEntryPos( rColor );
+ if ( nPos != LISTBOX_ENTRY_NOTFOUND )
+ return IsEntryPosSelected( nPos );
+ else
+ return false;
+ }
+
+private:
+ ColorListBox( const ColorListBox& ) = delete;
+ ColorListBox& operator =( const ColorListBox& ) = delete;
+};
+
+inline void ColorListBox::SelectEntry( const Color& rColor )
+{
+ sal_Int32 nPos = GetEntryPos( rColor );
+ if ( nPos != LISTBOX_ENTRY_NOTFOUND )
+ ListBox::SelectEntryPos( nPos );
+}
+
+inline Color ColorListBox::GetSelectEntryColor() const
+{
+ sal_Int32 nPos = GetSelectEntryPos();
+ Color aColor;
+ if ( nPos != LISTBOX_ENTRY_NOTFOUND )
+ aColor = GetEntryColor( nPos );
+ return aColor;
+}
+
+
class SAL_WARN_UNUSED SVX_DLLPUBLIC ColorLB : public ColorListBox
{
diff --git a/svtools/source/control/ctrlbox.cxx b/svtools/source/control/ctrlbox.cxx
index b54e54c6396b..ce7234810d16 100644
--- a/svtools/source/control/ctrlbox.cxx
+++ b/svtools/source/control/ctrlbox.cxx
@@ -59,218 +59,6 @@
#define FONTNAMEBOXMRUENTRIESFILE "/user/config/fontnameboxmruentries"
-class ImplColorListData
-{
-public:
- Color aColor;
- bool bColor;
-
- ImplColorListData() : aColor( COL_BLACK ) { bColor = false; }
- explicit ImplColorListData( const Color& rColor ) : aColor( rColor ) { bColor = true; }
-};
-
-void ColorListBox::ImplInit()
-{
- pColorList = new ImpColorList();
-
- const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
- aImageSize = rStyleSettings.GetListBoxPreviewDefaultPixelSize();
- EnableUserDraw( true );
- SetUserItemSize( aImageSize );
-}
-
-void ColorListBox::ImplDestroyColorEntries()
-{
- for ( size_t n = pColorList->size(); n; )
- delete (*pColorList)[ --n ];
- pColorList->clear();
-}
-
-ColorListBox::ColorListBox( vcl::Window* pParent, WinBits nWinStyle ) :
- ListBox( pParent, nWinStyle )
-{
- ImplInit();
- SetEdgeBlending(true);
-}
-
-ColorListBox::~ColorListBox()
-{
- disposeOnce();
-}
-
-void ColorListBox::dispose()
-{
- if ( pColorList )
- {
- ImplDestroyColorEntries();
- delete pColorList;
- pColorList = nullptr;
- }
- ListBox::dispose();
-}
-
-sal_Int32 ColorListBox::InsertEntry( const OUString& rStr, sal_Int32 nPos )
-{
- nPos = ListBox::InsertEntry( rStr, nPos );
- if ( nPos != LISTBOX_ERROR )
- {
- ImplColorListData* pData = new ImplColorListData;
- if ( static_cast<size_t>(nPos) < pColorList->size() )
- {
- ImpColorList::iterator it = pColorList->begin();
- ::std::advance( it, nPos );
- pColorList->insert( it, pData );
- }
- else
- {
- pColorList->push_back( pData );
- nPos = pColorList->size() - 1;
- }
- }
- return nPos;
-}
-
-sal_Int32 ColorListBox::InsertEntry( const Color& rColor, const OUString& rStr,
- sal_Int32 nPos )
-{
- nPos = ListBox::InsertEntry( rStr, nPos );
- if ( nPos != LISTBOX_ERROR )
- {
- ImplColorListData* pData = new ImplColorListData( rColor );
- if ( static_cast<size_t>(nPos) < pColorList->size() )
- {
- ImpColorList::iterator it = pColorList->begin();
- ::std::advance( it, nPos );
- pColorList->insert( it, pData );
- }
- else
- {
- pColorList->push_back( pData );
- nPos = pColorList->size() - 1;
- }
- }
- return nPos;
-}
-
-void ColorListBox::InsertAutomaticEntryColor(const Color &rColor)
-{
- // insert the "Automatic"-entry always on the first position
- InsertEntry( rColor, SVT_RESSTR(STR_SVT_AUTOMATIC_COLOR), 0 );
-}
-
-void ColorListBox::RemoveEntry( sal_Int32 nPos )
-{
- ListBox::RemoveEntry( nPos );
- if ( 0 <= nPos && static_cast<size_t>(nPos) < pColorList->size() )
- {
- ImpColorList::iterator it = pColorList->begin();
- ::std::advance( it, nPos );
- delete *it;
- pColorList->erase( it );
- }
-}
-
-void ColorListBox::Clear()
-{
- ImplDestroyColorEntries();
- ListBox::Clear();
-}
-
-void ColorListBox::CopyEntries( const ColorListBox& rBox )
-{
- // Liste leeren
- ImplDestroyColorEntries();
-
- // Daten kopieren
- size_t nCount = rBox.pColorList->size();
- for ( size_t n = 0; n < nCount; n++ )
- {
- ImplColorListData* pData = (*rBox.pColorList)[ n ];
- sal_Int32 nPos = InsertEntry( rBox.GetEntry( n ) );
- if ( nPos != LISTBOX_ERROR )
- {
- if ( static_cast<size_t>(nPos) < pColorList->size() )
- {
- ImpColorList::iterator it = pColorList->begin();
- ::std::advance( it, nPos );
- pColorList->insert( it, new ImplColorListData( *pData ) );
- }
- else
- {
- pColorList->push_back( new ImplColorListData( *pData ) );
- }
- }
- }
-}
-
-sal_Int32 ColorListBox::GetEntryPos( const Color& rColor ) const
-{
- for( sal_Int32 n = (sal_Int32) pColorList->size(); n; )
- {
- ImplColorListData* pData = (*pColorList)[ --n ];
- if ( pData->bColor && ( pData->aColor == rColor ) )
- return n;
- }
- return LISTBOX_ENTRY_NOTFOUND;
-}
-
-Color ColorListBox::GetEntryColor( sal_Int32 nPos ) const
-{
- Color aColor;
- ImplColorListData* pData = ( 0 <= nPos && static_cast<size_t>(nPos) < pColorList->size() ) ?
- (*pColorList)[ nPos ] : nullptr;
- if ( pData && pData->bColor )
- aColor = pData->aColor;
- return aColor;
-}
-
-void ColorListBox::UserDraw( const UserDrawEvent& rUDEvt )
-{
- size_t nPos = rUDEvt.GetItemId();
- ImplColorListData* pData = ( nPos < pColorList->size() ) ? (*pColorList)[ nPos ] : nullptr;
- if ( pData )
- {
- if ( pData->bColor )
- {
- Point aPos( rUDEvt.GetRect().TopLeft() );
-
- aPos.X() += 2;
- aPos.Y() += ( rUDEvt.GetRect().GetHeight() - aImageSize.Height() ) / 2;
-
- const Rectangle aRect(aPos, aImageSize);
-
- vcl::RenderContext* pRenderContext = rUDEvt.GetRenderContext();
- pRenderContext->Push();
- pRenderContext->SetFillColor(pData->aColor);
- pRenderContext->SetLineColor(pRenderContext->GetTextColor());
- pRenderContext->DrawRect(aRect);
- pRenderContext->Pop();
-
- const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
- const sal_uInt16 nEdgeBlendingPercent(GetEdgeBlending() ? rStyleSettings.GetEdgeBlending() : 0);
-
- if(nEdgeBlendingPercent)
- {
- const Color& rTopLeft(rStyleSettings.GetEdgeBlendingTopLeftColor());
- const Color& rBottomRight(rStyleSettings.GetEdgeBlendingBottomRightColor());
- const sal_uInt8 nAlpha((nEdgeBlendingPercent * 255) / 100);
- const BitmapEx aBlendFrame(createBlendFrame(aRect.GetSize(), nAlpha, rTopLeft, rBottomRight));
-
- if(!aBlendFrame.IsEmpty())
- {
- pRenderContext->DrawBitmapEx(aRect.TopLeft(), aBlendFrame);
- }
- }
-
- ListBox::DrawEntry( rUDEvt, false, false );
- }
- else
- ListBox::DrawEntry( rUDEvt, false, true );
- }
- else
- ListBox::DrawEntry( rUDEvt, true, false );
-}
-
BorderWidthImpl::BorderWidthImpl( BorderWidthImplFlags nFlags, double nRate1, double nRate2, double nRateGap ):
m_nFlags( nFlags ),
m_nRate1( nRate1 ),
diff --git a/svtools/source/control/ctrlbox.src b/svtools/source/control/ctrlbox.src
index 36036d927a47..4d04006cfbcd 100644
--- a/svtools/source/control/ctrlbox.src
+++ b/svtools/source/control/ctrlbox.src
@@ -18,11 +18,6 @@
*/
#include <svtools/svtools.hrc>
-String STR_SVT_AUTOMATIC_COLOR
-{
- Text [ en-US ] = "Automatic";
-};
-
/*
* resources for CollatorResource / CollatorResourceData resp.
*/
diff --git a/svx/source/dialog/dlgctrl.cxx b/svx/source/dialog/dlgctrl.cxx
index 0ee46f77d713..8793cfdf0dc8 100644
--- a/svx/source/dialog/dlgctrl.cxx
+++ b/svx/source/dialog/dlgctrl.cxx
@@ -1117,6 +1117,213 @@ VCL_BUILDER_DECL_FACTORY(ColorLB)
rRet = pListBox;
}
+class ImplColorListData
+{
+public:
+ Color aColor;
+ bool bColor;
+
+ ImplColorListData() : aColor( COL_BLACK ) { bColor = false; }
+ explicit ImplColorListData( const Color& rColor ) : aColor( rColor ) { bColor = true; }
+};
+
+void ColorListBox::ImplInit()
+{
+ pColorList = new ImpColorList();
+
+ const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
+ aImageSize = rStyleSettings.GetListBoxPreviewDefaultPixelSize();
+ EnableUserDraw( true );
+ SetUserItemSize( aImageSize );
+}
+
+void ColorListBox::ImplDestroyColorEntries()
+{
+ for ( size_t n = pColorList->size(); n; )
+ delete (*pColorList)[ --n ];
+ pColorList->clear();
+}
+
+ColorListBox::ColorListBox( vcl::Window* pParent, WinBits nWinStyle ) :
+ ListBox( pParent, nWinStyle )
+{
+ ImplInit();
+ SetEdgeBlending(true);
+}
+
+ColorListBox::~ColorListBox()
+{
+ disposeOnce();
+}
+
+void ColorListBox::dispose()
+{
+ if ( pColorList )
+ {
+ ImplDestroyColorEntries();
+ delete pColorList;
+ pColorList = nullptr;
+ }
+ ListBox::dispose();
+}
+
+sal_Int32 ColorListBox::InsertEntry( const OUString& rStr, sal_Int32 nPos )
+{
+ nPos = ListBox::InsertEntry( rStr, nPos );
+ if ( nPos != LISTBOX_ERROR )
+ {
+ ImplColorListData* pData = new ImplColorListData;
+ if ( static_cast<size_t>(nPos) < pColorList->size() )
+ {
+ ImpColorList::iterator it = pColorList->begin();
+ ::std::advance( it, nPos );
+ pColorList->insert( it, pData );
+ }
+ else
+ {
+ pColorList->push_back( pData );
+ nPos = pColorList->size() - 1;
+ }
+ }
+ return nPos;
+}
+
+sal_Int32 ColorListBox::InsertEntry( const Color& rColor, const OUString& rStr,
+ sal_Int32 nPos )
+{
+ nPos = ListBox::InsertEntry( rStr, nPos );
+ if ( nPos != LISTBOX_ERROR )
+ {
+ ImplColorListData* pData = new ImplColorListData( rColor );
+ if ( static_cast<size_t>(nPos) < pColorList->size() )
+ {
+ ImpColorList::iterator it = pColorList->begin();
+ ::std::advance( it, nPos );
+ pColorList->insert( it, pData );
+ }
+ else
+ {
+ pColorList->push_back( pData );
+ nPos = pColorList->size() - 1;
+ }
+ }
+ return nPos;
+}
+
+void ColorListBox::RemoveEntry( sal_Int32 nPos )
+{
+ ListBox::RemoveEntry( nPos );
+ if ( 0 <= nPos && static_cast<size_t>(nPos) < pColorList->size() )
+ {
+ ImpColorList::iterator it = pColorList->begin();
+ ::std::advance( it, nPos );
+ delete *it;
+ pColorList->erase( it );
+ }
+}
+
+void ColorListBox::Clear()
+{
+ ImplDestroyColorEntries();
+ ListBox::Clear();
+}
+
+void ColorListBox::CopyEntries( const ColorListBox& rBox )
+{
+ // Liste leeren
+ ImplDestroyColorEntries();
+
+ // Daten kopieren
+ size_t nCount = rBox.pColorList->size();
+ for ( size_t n = 0; n < nCount; n++ )
+ {
+ ImplColorListData* pData = (*rBox.pColorList)[ n ];
+ sal_Int32 nPos = InsertEntry( rBox.GetEntry( n ) );
+ if ( nPos != LISTBOX_ERROR )
+ {
+ if ( static_cast<size_t>(nPos) < pColorList->size() )
+ {
+ ImpColorList::iterator it = pColorList->begin();
+ ::std::advance( it, nPos );
+ pColorList->insert( it, new ImplColorListData( *pData ) );
+ }
+ else
+ {
+ pColorList->push_back( new ImplColorListData( *pData ) );
+ }
+ }
+ }
+}
+
+sal_Int32 ColorListBox::GetEntryPos( const Color& rColor ) const
+{
+ for( sal_Int32 n = (sal_Int32) pColorList->size(); n; )
+ {
+ ImplColorListData* pData = (*pColorList)[ --n ];
+ if ( pData->bColor && ( pData->aColor == rColor ) )
+ return n;
+ }
+ return LISTBOX_ENTRY_NOTFOUND;
+}
+
+Color ColorListBox::GetEntryColor( sal_Int32 nPos ) const
+{
+ Color aColor;
+ ImplColorListData* pData = ( 0 <= nPos && static_cast<size_t>(nPos) < pColorList->size() ) ?
+ (*pColorList)[ nPos ] : nullptr;
+ if ( pData && pData->bColor )
+ aColor = pData->aColor;
+ return aColor;
+}
+
+void ColorListBox::UserDraw( const UserDrawEvent& rUDEvt )
+{
+ size_t nPos = rUDEvt.GetItemId();
+ ImplColorListData* pData = ( nPos < pColorList->size() ) ? (*pColorList)[ nPos ] : nullptr;
+ if ( pData )
+ {
+ if ( pData->bColor )
+ {
+ Point aPos( rUDEvt.GetRect().TopLeft() );
+
+ aPos.X() += 2;
+ aPos.Y() += ( rUDEvt.GetRect().GetHeight() - aImageSize.Height() ) / 2;
+
+ const Rectangle aRect(aPos, aImageSize);
+
+ vcl::RenderContext* pRenderContext = rUDEvt.GetRenderContext();
+ pRenderContext->Push();
+ pRenderContext->SetFillColor(pData->aColor);
+ pRenderContext->SetLineColor(pRenderContext->GetTextColor());
+ pRenderContext->DrawRect(aRect);
+ pRenderContext->Pop();
+
+ const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
+ const sal_uInt16 nEdgeBlendingPercent(GetEdgeBlending() ? rStyleSettings.GetEdgeBlending() : 0);
+
+ if(nEdgeBlendingPercent)
+ {
+ const Color& rTopLeft(rStyleSettings.GetEdgeBlendingTopLeftColor());
+ const Color& rBottomRight(rStyleSettings.GetEdgeBlendingBottomRightColor());
+ const sal_uInt8 nAlpha((nEdgeBlendingPercent * 255) / 100);
+ const BitmapEx aBlendFrame(createBlendFrame(aRect.GetSize(), nAlpha, rTopLeft, rBottomRight));
+
+ if(!aBlendFrame.IsEmpty())
+ {
+ pRenderContext->DrawBitmapEx(aRect.TopLeft(), aBlendFrame);
+ }
+ }
+
+ ListBox::DrawEntry( rUDEvt, false, false );
+ }
+ else
+ ListBox::DrawEntry( rUDEvt, false, true );
+ }
+ else
+ ListBox::DrawEntry( rUDEvt, true, false );
+}
+
+
// Fills the Listbox with color and strings
void ColorLB::Fill( const XColorListRef &pColorTab )