summaryrefslogtreecommitdiff
path: root/cui/source/options/optchart.cxx
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2016-11-05 20:28:27 +0000
committerCaolán McNamara <caolanm@redhat.com>2016-11-07 21:04:50 +0000
commit64a708cba9b954afe3331f63c58218eb53b3d0ce (patch)
treeddc1bea3b63f32a1c6d377c1d1dd7aee0803fb70 /cui/source/options/optchart.cxx
parentf01c49c4a89ecad2376fd0023625186e5cac642e (diff)
Revert "Reverts a commit series that cripple windows ci."
with addition of... - svxlo-SvxColorListBox + svxcorelo-SvxColorListBox This reverts commit db380aab1063e8a5e40111c40ee9f7921aa82601. Change-Id: I3af7aa0abb1a430bce64188244404fcbd480b128 Reviewed-on: https://gerrit.libreoffice.org/30598 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'cui/source/options/optchart.cxx')
-rw-r--r--cui/source/options/optchart.cxx107
1 files changed, 90 insertions, 17 deletions
diff --git a/cui/source/options/optchart.cxx b/cui/source/options/optchart.cxx
index 3d95da759c74..060d3b0b6587 100644
--- a/cui/source/options/optchart.cxx
+++ b/cui/source/options/optchart.cxx
@@ -21,24 +21,99 @@
#include <cuires.hrc>
#include "optchart.hxx"
#include <dialmgr.hxx>
+#include <vcl/builderfactory.hxx>
#include <vcl/msgbox.hxx>
+#include <vcl/svapp.hxx>
#include <svx/svxids.hrc>
-namespace
+Color SvxDefaultColorOptPage::GetSelectEntryColor() const
{
- void FillBoxChartColorLB(ColorLB *pLB, const SvxChartColorTable & rTab)
+ sal_Int32 nPos = m_pLbChartColors->GetSelectEntryPos();
+ Color aColor;
+ if (nPos != LISTBOX_ENTRY_NOTFOUND)
+ aColor = GetEntryColor(nPos);
+ return aColor;
+}
+
+void SvxDefaultColorOptPage::InsertColorEntry(const XColorEntry& rEntry, sal_Int32 nPos)
+{
+ const Color& rColor = rEntry.GetColor();
+ const OUString& rStr = rEntry.GetName();
+
+ const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
+ Size aImageSize = rStyleSettings.GetListBoxPreviewDefaultPixelSize();
+
+ VclPtr<VirtualDevice> xDevice = VclPtr<VirtualDevice>::Create();
+ xDevice->SetOutputSize(aImageSize);
+ const Rectangle aRect(Point(0, 0), aImageSize);
+ xDevice->SetFillColor(rColor);
+ xDevice->SetLineColor(rStyleSettings.GetDisableColor());
+ xDevice->DrawRect(aRect);
+ Bitmap aBitmap(xDevice->GetBitmap(Point(0, 0), xDevice->GetOutputSize()));
+
+ nPos = m_pLbChartColors->InsertEntry(rStr, Image(aBitmap), nPos);
+
+ if (nPos != LISTBOX_ERROR)
{
- pLB->SetUpdateMode(false);
- pLB->Clear();
- long nCount = rTab.size();
- for(long i = 0; i < nCount; ++i)
+ if ( static_cast<size_t>(nPos) < aColorList.size() )
{
- pLB->Append(rTab[i]);
+ ImpColorList::iterator it = aColorList.begin();
+ ::std::advance( it, nPos );
+ aColorList.insert( it, rColor );
+ }
+ else
+ {
+ aColorList.push_back( rColor );
+ nPos = aColorList.size() - 1;
}
- pLB->SetUpdateMode(true);
}
}
+void SvxDefaultColorOptPage::RemoveColorEntry(sal_Int32 nPos)
+{
+ m_pLbChartColors->RemoveEntry(nPos);
+ if ( 0 <= nPos && static_cast<size_t>(nPos) < aColorList.size() )
+ {
+ ImpColorList::iterator it = aColorList.begin();
+ std::advance(it, nPos);
+ aColorList.erase(it);
+ }
+}
+
+void SvxDefaultColorOptPage::ClearColorEntries()
+{
+ aColorList.clear();
+ m_pLbChartColors->Clear();
+}
+
+Color SvxDefaultColorOptPage::GetEntryColor(sal_Int32 nPos) const
+{
+ Color aColor;
+ if (0 <= nPos && static_cast<size_t>(nPos) < aColorList.size())
+ aColor = aColorList[nPos];
+ return aColor;
+}
+
+void SvxDefaultColorOptPage::ModifyColorEntry(const XColorEntry& rEntry, sal_Int32 nPos)
+{
+ RemoveColorEntry(nPos);
+ InsertColorEntry(rEntry, nPos);
+}
+
+void SvxDefaultColorOptPage::FillBoxChartColorLB()
+{
+ if (!pColorConfig)
+ return;
+
+ const SvxChartColorTable & rTab = pColorConfig->GetColorList();
+ m_pLbChartColors->SetUpdateMode(false);
+ ClearColorEntries();
+ long nCount = rTab.size();
+ for (long i = 0; i < nCount; ++i)
+ InsertColorEntry(rTab[i]);
+ m_pLbChartColors->SetUpdateMode(true);
+}
+
SvxDefaultColorOptPage::SvxDefaultColorOptPage(vcl::Window* pParent, const SfxItemSet& rInAttrs)
: SfxTabPage(pParent, "OptChartColorsPage","cui/ui/optchartcolorspage.ui", &rInAttrs)
{
@@ -109,9 +184,7 @@ void SvxDefaultColorOptPage::dispose()
void SvxDefaultColorOptPage::Construct()
{
- if( pColorConfig )
- FillBoxChartColorLB(m_pLbChartColors, pColorConfig->GetColorList());
-
+ FillBoxChartColorLB();
FillColorBox();
m_pLbChartColors->SelectEntryPos( 0 );
@@ -184,7 +257,7 @@ IMPL_LINK_NOARG(SvxDefaultColorOptPage, ResetToDefaults, Button*, void)
{
pColorConfig->GetColorList().useDefault();
- FillBoxChartColorLB(m_pLbChartColors, pColorConfig->GetColorList());
+ FillBoxChartColorLB();
m_pLbChartColors->GetFocus();
m_pLbChartColors->SelectEntryPos( 0 );
@@ -203,7 +276,7 @@ IMPL_LINK_NOARG(SvxDefaultColorOptPage, AddChartColor, Button*, void)
pColorConfig->GetColorList().append (XColorEntry ( black, pColorConfig->GetColorList().getDefaultName(pColorConfig->GetColorList().size())));
- FillBoxChartColorLB(m_pLbChartColors, pColorConfig->GetColorList());
+ FillBoxChartColorLB();
m_pLbChartColors->GetFocus();
m_pLbChartColors->SelectEntryPos( pColorConfig->GetColorList().size() - 1 );
@@ -231,7 +304,7 @@ IMPL_LINK( SvxDefaultColorOptPage, RemoveChartColor, Button*, pButton, void )
{
pColorConfig->GetColorList().remove( nIndex );
- FillBoxChartColorLB(m_pLbChartColors, pColorConfig->GetColorList());
+ FillBoxChartColorLB();
m_pLbChartColors->GetFocus();
@@ -245,9 +318,9 @@ IMPL_LINK( SvxDefaultColorOptPage, RemoveChartColor, Button*, pButton, void )
}
}
-IMPL_LINK( SvxDefaultColorOptPage, ListClickedHdl, ListBox&, _rBox, void )
+IMPL_LINK_NOARG( SvxDefaultColorOptPage, ListClickedHdl, ListBox&, void )
{
- Color aCol = static_cast<ColorLB&>(_rBox).GetSelectEntryColor();
+ Color aCol = GetSelectEntryColor();
long nIndex = GetColorIndex( aCol );
@@ -264,7 +337,7 @@ IMPL_LINK_NOARG(SvxDefaultColorOptPage, BoxClickedHdl, ValueSet*, void)
{
const XColorEntry aEntry( m_pValSetColorBox->GetItemColor( m_pValSetColorBox->GetSelectItemId() ), m_pLbChartColors->GetSelectEntry() );
- m_pLbChartColors->Modify( aEntry, nIdx );
+ ModifyColorEntry(aEntry, nIdx);
pColorConfig->ReplaceColorByIndex( nIdx, aEntry );
m_pLbChartColors->SelectEntryPos( nIdx ); // reselect entry