summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cui/source/options/cfgchart.cxx12
-rw-r--r--cui/source/options/cfgchart.hxx9
-rw-r--r--cui/source/options/optchart.cxx60
-rw-r--r--cui/source/options/optchart.hxx7
4 files changed, 39 insertions, 49 deletions
diff --git a/cui/source/options/cfgchart.cxx b/cui/source/options/cfgchart.cxx
index 685b6f9db6f2..52ddde097f4c 100644
--- a/cui/source/options/cfgchart.cxx
+++ b/cui/source/options/cfgchart.cxx
@@ -285,16 +285,4 @@ bool SvxChartColorTableItem::operator==( const SfxPoolItem& rAttr ) const
return false;
}
-void SvxChartColorTableItem::SetOptions( SvxChartOptions* pOpts ) const
-{
- if ( pOpts )
- pOpts->SetDefaultColors( m_aColorTable );
-}
-
-
-void SvxChartColorTableItem::ReplaceColorByIndex( size_t _nIndex, const XColorEntry & _rEntry )
-{
- m_aColorTable.replace( _nIndex, _rEntry );
-}
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/cui/source/options/cfgchart.hxx b/cui/source/options/cfgchart.hxx
index 91adbf17cda3..debb2372d81c 100644
--- a/cui/source/options/cfgchart.hxx
+++ b/cui/source/options/cfgchart.hxx
@@ -79,7 +79,11 @@ public:
// items
-
+// Make Item read-only (no non-const access methods). Two reasons:
+// (1) Preparation for Item refactor
+// (2) Dangerous due to SfxItem may not be what you expect (e.g. when
+// ::Set in SfxItemSet, not your instance may be used there, no control
+// about what will happen wothout deep knowledge about SfxItems/SfxItemSets)
class SvxChartColorTableItem : public SfxPoolItem
{
public:
@@ -87,11 +91,8 @@ public:
virtual SfxPoolItem* Clone( SfxItemPool *pPool = nullptr ) const override;
virtual bool operator==( const SfxPoolItem& ) const override;
- void SetOptions( SvxChartOptions* pOpts ) const;
const SvxChartColorTable & GetColorList() const { return m_aColorTable;}
- SvxChartColorTable & GetColorList() { return m_aColorTable;}
- void ReplaceColorByIndex( size_t _nIndex, const XColorEntry & _rEntry );
private:
SvxChartColorTable m_aColorTable;
diff --git a/cui/source/options/optchart.cxx b/cui/source/options/optchart.cxx
index 4645f4ea10d0..0ddd786c71c6 100644
--- a/cui/source/options/optchart.cxx
+++ b/cui/source/options/optchart.cxx
@@ -82,15 +82,14 @@ void SvxDefaultColorOptPage::ModifyColorEntry(const XColorEntry& rEntry, sal_Int
void SvxDefaultColorOptPage::FillBoxChartColorLB()
{
- if (!pColorConfig)
+ if (!m_SvxChartColorTableUniquePtr)
return;
- const SvxChartColorTable & rTab = pColorConfig->GetColorList();
m_pLbChartColors->SetUpdateMode(false);
ClearColorEntries();
- long nCount = rTab.size();
+ const long nCount(m_SvxChartColorTableUniquePtr->size());
for (long i = 0; i < nCount; ++i)
- InsertColorEntry(rTab[i]);
+ InsertColorEntry((*m_SvxChartColorTableUniquePtr)[i]);
m_pLbChartColors->SetUpdateMode(true);
}
@@ -114,19 +113,19 @@ SvxDefaultColorOptPage::SvxDefaultColorOptPage(vcl::Window* pParent, const SfxIt
m_pValSetColorBox->SetStyle( m_pValSetColorBox->GetStyle()
| WB_ITEMBORDER | WB_NAMEFIELD | WB_VSCROLL );
- pChartOptions.reset(new SvxChartOptions);
+ m_SvxChartOptionsUniquePtr.reset(new SvxChartOptions);
const SfxPoolItem* pItem = nullptr;
if ( rInAttrs.GetItemState( SID_SCH_EDITOPTIONS, false, &pItem ) == SfxItemState::SET )
{
- pColorConfig.reset(static_cast< SvxChartColorTableItem* >(pItem->Clone()));
+ m_SvxChartColorTableUniquePtr = std::make_unique<SvxChartColorTable>(
+ static_cast<const SvxChartColorTableItem*>(pItem)->GetColorList());
}
else
{
- SvxChartColorTable aTable;
- aTable.useDefault();
- pColorConfig.reset(new SvxChartColorTableItem( SID_SCH_EDITOPTIONS, aTable ));
- pColorConfig->SetOptions( pChartOptions.get() );
+ m_SvxChartColorTableUniquePtr = std::make_unique<SvxChartColorTable>();
+ m_SvxChartColorTableUniquePtr->useDefault();
+ m_SvxChartOptionsUniquePtr->SetDefaultColors(*m_SvxChartColorTableUniquePtr.get());
}
Construct();
@@ -139,11 +138,8 @@ SvxDefaultColorOptPage::~SvxDefaultColorOptPage()
void SvxDefaultColorOptPage::dispose()
{
- if (pChartOptions)
- {
- pColorConfig.reset();
- pChartOptions.reset();
- }
+ m_SvxChartColorTableUniquePtr.reset();
+ m_SvxChartOptionsUniquePtr.reset();
m_pLbChartColors.clear();
m_pValSetColorBox.clear();
m_pPBDefault.clear();
@@ -169,8 +165,10 @@ VclPtr<SfxTabPage> SvxDefaultColorOptPage::Create( TabPageParent pParent, const
bool SvxDefaultColorOptPage::FillItemSet( SfxItemSet* rOutAttrs )
{
- if( pColorConfig )
- rOutAttrs->Put( *pColorConfig );
+ if( m_SvxChartColorTableUniquePtr )
+ {
+ rOutAttrs->Put(SvxChartColorTableItem(SID_SCH_EDITOPTIONS, *m_SvxChartColorTableUniquePtr.get()));
+ }
return true;
}
@@ -198,10 +196,10 @@ void SvxDefaultColorOptPage::FillPaletteLB()
void SvxDefaultColorOptPage::SaveChartOptions()
{
- if (pChartOptions)
+ if (m_SvxChartOptionsUniquePtr && m_SvxChartColorTableUniquePtr)
{
- pChartOptions->SetDefaultColors( pColorConfig->GetColorList() );
- pChartOptions->Commit();
+ m_SvxChartOptionsUniquePtr->SetDefaultColors(*m_SvxChartColorTableUniquePtr.get());
+ m_SvxChartOptionsUniquePtr->Commit();
}
}
@@ -213,9 +211,9 @@ void SvxDefaultColorOptPage::SaveChartOptions()
IMPL_LINK_NOARG(SvxDefaultColorOptPage, ResetToDefaults, Button*, void)
{
- if( pColorConfig )
+ if( m_SvxChartColorTableUniquePtr )
{
- pColorConfig->GetColorList().useDefault();
+ m_SvxChartColorTableUniquePtr->useDefault();
FillBoxChartColorLB();
@@ -230,16 +228,16 @@ IMPL_LINK_NOARG(SvxDefaultColorOptPage, ResetToDefaults, Button*, void)
IMPL_LINK_NOARG(SvxDefaultColorOptPage, AddChartColor, Button*, void)
{
- if( pColorConfig )
+ if( m_SvxChartColorTableUniquePtr )
{
Color const black( 0x00, 0x00, 0x00 );
- pColorConfig->GetColorList().append (XColorEntry ( black, SvxChartColorTable::getDefaultName(pColorConfig->GetColorList().size())));
+ m_SvxChartColorTableUniquePtr->append(
+ XColorEntry(black, SvxChartColorTable::getDefaultName(m_SvxChartColorTableUniquePtr->size())));
FillBoxChartColorLB();
-
m_pLbChartColors->GetFocus();
- m_pLbChartColors->SelectEntryPos( pColorConfig->GetColorList().size() - 1 );
+ m_pLbChartColors->SelectEntryPos(m_SvxChartColorTableUniquePtr->size() - 1);
m_pPBRemove->Enable();
}
}
@@ -254,23 +252,23 @@ IMPL_LINK_NOARG( SvxDefaultColorOptPage, RemoveChartColor, Button*, void )
if (m_pLbChartColors->GetSelectedEntryCount() == 0)
return;
- if( pColorConfig )
+ if( m_SvxChartColorTableUniquePtr )
{
- OSL_ENSURE(pColorConfig->GetColorList().size() > 1, "don't delete the last chart color");
+ OSL_ENSURE(m_SvxChartColorTableUniquePtr->size() > 1, "don't delete the last chart color");
std::unique_ptr<weld::Builder> xBuilder(Application::CreateBuilder(GetFrameWeld(), "cui/ui/querydeletechartcolordialog.ui"));
std::unique_ptr<weld::MessageDialog> xQuery(xBuilder->weld_message_dialog("QueryDeleteChartColorDialog"));
if (RET_YES == xQuery->run())
{
- pColorConfig->GetColorList().remove( nIndex );
+ m_SvxChartColorTableUniquePtr->remove(nIndex);
FillBoxChartColorLB();
m_pLbChartColors->GetFocus();
if (nIndex == m_pLbChartColors->GetEntryCount() && m_pLbChartColors->GetEntryCount() > 0)
- m_pLbChartColors->SelectEntryPos( pColorConfig->GetColorList().size() - 1 );
+ m_pLbChartColors->SelectEntryPos(m_SvxChartColorTableUniquePtr->size() - 1);
else if (m_pLbChartColors->GetEntryCount() > 0)
m_pLbChartColors->SelectEntryPos( nIndex );
else
@@ -295,7 +293,7 @@ IMPL_LINK_NOARG(SvxDefaultColorOptPage, BoxClickedHdl, ValueSet*, void)
const XColorEntry aEntry( m_pValSetColorBox->GetItemColor( m_pValSetColorBox->GetSelectedItemId() ), m_pLbChartColors->GetSelectedEntry() );
ModifyColorEntry(aEntry, nIdx);
- pColorConfig->ReplaceColorByIndex( nIdx, aEntry );
+ m_SvxChartColorTableUniquePtr->replace(nIdx, aEntry);
m_pLbChartColors->SelectEntryPos( nIdx ); // reselect entry
}
diff --git a/cui/source/options/optchart.hxx b/cui/source/options/optchart.hxx
index f99f0798cf79..321fe0ee4256 100644
--- a/cui/source/options/optchart.hxx
+++ b/cui/source/options/optchart.hxx
@@ -42,8 +42,11 @@ private:
VclPtr<PushButton> m_pPBAdd;
VclPtr<PushButton> m_pPBRemove;
- std::unique_ptr<SvxChartOptions> pChartOptions;
- std::unique_ptr<SvxChartColorTableItem> pColorConfig;
+ std::unique_ptr<SvxChartOptions> m_SvxChartOptionsUniquePtr;
+ // no reason to use a cloned SfxItem here (SvxChartColorTableItem)
+ // that just leads to non-const SfxItem and potential trouble
+ std::unique_ptr<SvxChartColorTable> m_SvxChartColorTableUniquePtr;
+
ImpColorList aColorList;
PaletteManager aPaletteManager;