[Libreoffice-commits] core.git: include/svx svx/source
Rishabh Kumar
kris.kr296 at gmail.com
Mon Jul 25 09:22:42 UTC 2016
include/svx/Palette.hxx | 4 +
include/svx/PaletteManager.hxx | 2
svx/source/tbxctrls/Palette.cxx | 15 +++++++
svx/source/tbxctrls/PaletteManager.cxx | 67 +++++++++++++++++----------------
svx/source/tbxctrls/tbcontrl.cxx | 3 -
5 files changed, 59 insertions(+), 32 deletions(-)
New commits:
commit db8ee318293da8967a8294dc558ffae898ba8e6b
Author: Rishabh Kumar <kris.kr296 at gmail.com>
Date: Sun Jul 24 17:23:40 2016 +0530
[GSoC] Fix palette selection in sidebar/toolbar color widget
Remember palette selection after the popup is destroyed
Change-Id: Iecd7fd4aa89cf9d2d6842c5b544d037df6818aaf
Reviewed-on: https://gerrit.libreoffice.org/27474
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt at cib.de>
diff --git a/include/svx/Palette.hxx b/include/svx/Palette.hxx
index fa2c179..1cbb83e 100644
--- a/include/svx/Palette.hxx
+++ b/include/svx/Palette.hxx
@@ -35,6 +35,7 @@ public:
virtual ~Palette();
virtual const OUString& GetName() = 0;
+ virtual const OUString& GetPath() = 0;
virtual void LoadColorSet( SvxColorValueSet& rColorSet ) = 0;
virtual bool IsValid() = 0;
@@ -55,6 +56,7 @@ public:
virtual ~PaletteASE();
virtual const OUString& GetName() override;
+ virtual const OUString& GetPath() override;
virtual void LoadColorSet( SvxColorValueSet& rColorSet ) override;
virtual bool IsValid() override;
@@ -79,6 +81,7 @@ public:
virtual ~PaletteGPL();
virtual const OUString& GetName() override;
+ virtual const OUString& GetPath() override;
virtual void LoadColorSet( SvxColorValueSet& rColorSet ) override;
virtual bool IsValid() override;
@@ -97,6 +100,7 @@ public:
virtual ~PaletteSOC();
virtual const OUString& GetName() override;
+ virtual const OUString& GetPath() override;
virtual void LoadColorSet( SvxColorValueSet& rColorSet ) override;
virtual bool IsValid() override;
diff --git a/include/svx/PaletteManager.hxx b/include/svx/PaletteManager.hxx
index 2d4c528..09adc36 100644
--- a/include/svx/PaletteManager.hxx
+++ b/include/svx/PaletteManager.hxx
@@ -46,6 +46,7 @@ class PaletteManager
long mnColorCount;
svx::ToolboxButtonColorUpdater* mpBtnUpdater;
+ XColorListRef pColorList;
Color mLastColor;
std::deque<Color> maRecentColors;
std::vector<std::unique_ptr<Palette>> m_Palettes;
@@ -61,6 +62,7 @@ public:
std::vector<OUString> GetPaletteList();
void SetPalette( sal_Int32 nPos );
sal_Int32 GetPalette();
+ OUString GetPaletteName();
long GetColorCount();
long GetRecentColorCount();
diff --git a/svx/source/tbxctrls/Palette.cxx b/svx/source/tbxctrls/Palette.cxx
index 9a5c76a..82789e9 100644
--- a/svx/source/tbxctrls/Palette.cxx
+++ b/svx/source/tbxctrls/Palette.cxx
@@ -53,6 +53,11 @@ const OUString& PaletteASE::GetName()
return maASEPaletteName;
}
+const OUString& PaletteASE::GetPath()
+{
+ return maFPath;
+}
+
bool PaletteASE::IsValid()
{
return mbValidPalette;
@@ -186,6 +191,11 @@ const OUString& PaletteGPL::GetName()
return maGPLPaletteName;
}
+const OUString& PaletteGPL::GetPath()
+{
+ return maFPath;
+}
+
void PaletteGPL::LoadColorSet( SvxColorValueSet& rColorSet )
{
LoadPalette();
@@ -327,6 +337,11 @@ const OUString& PaletteSOC::GetName()
return maSOCPaletteName;
}
+const OUString& PaletteSOC::GetPath()
+{
+ return maFPath;
+}
+
void PaletteSOC::LoadColorSet( SvxColorValueSet& rColorSet )
{
if( !mbLoadedPalette )
diff --git a/svx/source/tbxctrls/PaletteManager.cxx b/svx/source/tbxctrls/PaletteManager.cxx
index 535134f..55123aa 100644
--- a/svx/source/tbxctrls/PaletteManager.cxx
+++ b/svx/source/tbxctrls/PaletteManager.cxx
@@ -33,13 +33,22 @@
PaletteManager::PaletteManager() :
mnMaxRecentColors(Application::GetSettings().GetStyleSettings().GetColorValueSetColumnCount()),
- mnNumOfPalettes(2),
+ mnNumOfPalettes(1),
mnCurrentPalette(0),
mnColorCount(0),
mpBtnUpdater(nullptr),
mLastColor(COL_AUTO),
maColorSelectFunction(PaletteManager::DispatchColorCommand)
{
+ SfxObjectShell* pDocSh = SfxObjectShell::Current();
+ if(pDocSh)
+ {
+ const SfxPoolItem* pItem = nullptr;
+ if( nullptr != ( pItem = pDocSh->GetItem(SID_COLOR_TABLE) ) )
+ pColorList = static_cast<const SvxColorListItem*>(pItem)->GetColorList();
+ }
+ if(!pColorList.is())
+ pColorList = XColorList::CreateStdColorList();
LoadPalettes();
mnNumOfPalettes += m_Palettes.size();
}
@@ -82,19 +91,21 @@ void PaletteManager::LoadPalettes()
if(aFileStat.isRegular() || aFileStat.isLink())
{
OUString aFName = aFileStat.getFileName();
+ INetURLObject aURLObj( aFileStat.getFileURL() );
+ OUString aFNameWithoutExt = aURLObj.GetBase();
if (aNames.find(aFName) == aNames.end())
{
std::unique_ptr<Palette> pPalette;
if( aFName.endsWithIgnoreAsciiCase(".gpl") )
- pPalette.reset(new PaletteGPL(aFileStat.getFileURL(), aFName));
+ pPalette.reset(new PaletteGPL(aFileStat.getFileURL(), aFNameWithoutExt));
else if( aFName.endsWithIgnoreAsciiCase(".soc") )
- pPalette.reset(new PaletteSOC(aFileStat.getFileURL(), aFName));
+ pPalette.reset(new PaletteSOC(aFileStat.getFileURL(), aFNameWithoutExt));
else if ( aFName.endsWithIgnoreAsciiCase(".ase") )
- pPalette.reset(new PaletteASE(aFileStat.getFileURL(), aFName));
+ pPalette.reset(new PaletteASE(aFileStat.getFileURL(), aFNameWithoutExt));
if( pPalette && pPalette->IsValid() )
m_Palettes.push_back( std::move(pPalette) );
- aNames.insert(aFName);
+ aNames.insert(aFNameWithoutExt);
}
}
}
@@ -106,29 +117,7 @@ void PaletteManager::ReloadColorSet(SvxColorValueSet &rColorSet)
{
SfxObjectShell* pDocSh = SfxObjectShell::Current();
- if( mnCurrentPalette == 0 )
- {
- XColorListRef pColorList;
-
- if ( pDocSh )
- {
- const SfxPoolItem* pItem = nullptr;
- if ( nullptr != ( pItem = pDocSh->GetItem( SID_COLOR_TABLE ) ) )
- pColorList = static_cast<const SvxColorListItem*>(pItem)->GetColorList();
- }
-
- if ( !pColorList.is() )
- pColorList = XColorList::CreateStdColorList();
-
-
- if ( pColorList.is() )
- {
- mnColorCount = pColorList->Count();
- rColorSet.Clear();
- rColorSet.addEntriesForXColorList(*pColorList);
- }
- }
- else if( mnCurrentPalette == mnNumOfPalettes - 1 )
+ if( mnCurrentPalette == mnNumOfPalettes - 1 )
{
// Add doc colors to palette
std::set<Color> aColors = pDocSh->GetDocColors();
@@ -138,7 +127,7 @@ void PaletteManager::ReloadColorSet(SvxColorValueSet &rColorSet)
}
else
{
- m_Palettes[mnCurrentPalette-1]->LoadColorSet( rColorSet );
+ m_Palettes[mnCurrentPalette]->LoadColorSet( rColorSet );
mnColorCount = rColorSet.GetItemCount();
}
}
@@ -159,8 +148,6 @@ std::vector<OUString> PaletteManager::GetPaletteList()
{
std::vector<OUString> aPaletteNames;
- aPaletteNames.push_back( SVX_RESSTR( RID_SVXSTR_DEFAULT_PAL ) );
-
for (auto const& it : m_Palettes)
{
aPaletteNames.push_back( (*it).GetName() );
@@ -173,6 +160,19 @@ std::vector<OUString> PaletteManager::GetPaletteList()
void PaletteManager::SetPalette( sal_Int32 nPos )
{
+ if( nPos != mnNumOfPalettes - 1 )
+ {
+ pColorList = XPropertyList::AsColorList(
+ XPropertyList::CreatePropertyListFromURL(
+ XCOLOR_LIST, m_Palettes[nPos]->GetPath()));
+ pColorList->SetName(m_Palettes[nPos]->GetName());
+ if(pColorList->Load())
+ {
+ SfxObjectShell* pShell = SfxObjectShell::Current();
+ SvxColorListItem aColorItem(pColorList, SID_COLOR_TABLE);
+ pShell->PutItem( aColorItem );
+ }
+ }
mnCurrentPalette = nPos;
}
@@ -181,6 +181,11 @@ sal_Int32 PaletteManager::GetPalette()
return mnCurrentPalette;
}
+OUString PaletteManager::GetPaletteName()
+{
+ return pColorList->GetName();
+}
+
long PaletteManager::GetColorCount()
{
return mnColorCount;
diff --git a/svx/source/tbxctrls/tbcontrl.cxx b/svx/source/tbxctrls/tbcontrl.cxx
index 9846500..2851dfa 100644
--- a/svx/source/tbxctrls/tbcontrl.cxx
+++ b/svx/source/tbxctrls/tbcontrl.cxx
@@ -1331,7 +1331,8 @@ SvxColorWindow_Impl::SvxColorWindow_Impl( const OUString& rCommand,
{
mpPaletteListBox->InsertEntry( *it );
}
- mpPaletteListBox->SelectEntryPos(mrPaletteManager.GetPalette());
+ mpPaletteListBox->SelectEntry(mrPaletteManager.GetPaletteName());
+ SelectPaletteHdl( *mpPaletteListBox );
mpButtonAutoColor->SetClickHdl( LINK( this, SvxColorWindow_Impl, AutoColorClickHdl ) );
mpButtonPicker->SetClickHdl( LINK( this, SvxColorWindow_Impl, OpenPickerClickHdl ) );
More information about the Libreoffice-commits
mailing list