summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKrisztian Pinter <pin.terminator@gmail.com>2014-07-25 16:45:13 +0200
committerToma┼ż Vajngerl <tomaz.vajngerl@collabora.co.uk>2014-09-17 10:19:41 +0200
commitcfdefe488fedbd12f7a3daf578c889ef82e962fc (patch)
tree49b10153c14dac54448d89e39f585e10e2596585
parentd1d5c9185f9d5231bdaa332d965b31b946411ac3 (diff)
Add loading .soc palettes
Change-Id: Ie0d084a70d9b135658840bb7529f2099a702d280
-rw-r--r--include/svx/Palette.hxx44
-rw-r--r--include/svx/PaletteManager.hxx4
-rw-r--r--include/svx/SvxColorValueSet.hxx2
-rw-r--r--svx/source/tbxctrls/Palette.cxx127
-rw-r--r--svx/source/tbxctrls/PaletteManager.cxx34
-rw-r--r--svx/source/tbxctrls/SvxColorValueSet.cxx14
6 files changed, 152 insertions, 73 deletions
diff --git a/include/svx/Palette.hxx b/include/svx/Palette.hxx
index d31e9580b792..c659e063e696 100644
--- a/include/svx/Palette.hxx
+++ b/include/svx/Palette.hxx
@@ -19,16 +19,30 @@
#ifndef INCLUDED_SVX_PALETTE_HXX
#define INCLUDED_SVX_PALETTE_HXX
+#include <svx/SvxColorValueSet.hxx>
+#include <svx/xtable.hxx>
#include <rtl/ustring.hxx>
#include <tools/color.hxx>
#include <tools/stream.hxx>
+
+typedef std::pair<Color, OString> NamedColor;
+typedef std::vector< NamedColor > ColorList;
+
+
class Palette
{
public:
- typedef std::pair<Color, OString> NamedColor;
- typedef std::vector< NamedColor > ColorList;
-private:
+ virtual ~Palette();
+
+ virtual const OUString& GetName() = 0;
+ virtual void LoadColorSet( SvxColorValueSet& rColorSet ) = 0;
+
+ virtual bool IsValid() = 0;
+};
+
+class PaletteGPL : public Palette
+{
bool mbLoadedPalette;
bool mbValidPalette;
OUString maFName;
@@ -40,12 +54,28 @@ private:
void LoadPaletteHeader();
void LoadPalette();
public:
- Palette( const OUString &rFPath, const OUString &rFName );
+ PaletteGPL( const OUString &rFPath, const OUString &rFName );
+ virtual ~PaletteGPL();
+
+ virtual const OUString& GetName();
+ virtual void LoadColorSet( SvxColorValueSet& rColorSet );
+
+ virtual bool IsValid();
+};
+
+class PaletteSOC : public Palette
+{
+ //TODO add lazy loading
+ OUString maName;
+ XColorListRef mpColorList;
+public:
+ PaletteSOC( const OUString &rFPath, const OUString &rFName );
+ virtual ~PaletteSOC();
- const OUString& GetName();
- const ColorList& GetPaletteColors();
+ virtual const OUString& GetName();
+ virtual void LoadColorSet( SvxColorValueSet& rColorSet );
- bool IsValid();
+ virtual bool IsValid();
};
#endif // INCLUDED_SVX_PALETTE_HXX
diff --git a/include/svx/PaletteManager.hxx b/include/svx/PaletteManager.hxx
index 925f67bf27c9..1bd0bd1fd39d 100644
--- a/include/svx/PaletteManager.hxx
+++ b/include/svx/PaletteManager.hxx
@@ -20,6 +20,7 @@
#define INCLUDED_SVX_PALETTEMANAGER_HXX
#include <svx/SvxColorValueSet.hxx>
+#include <svx/Palette.hxx>
#include <rtl/ustring.hxx>
#include <svx/tbxcolorupdate.hxx>
@@ -32,9 +33,10 @@ class PaletteManager
svx::ToolboxButtonColorUpdater* mpBtnUpdater;
Color mLastColor;
- std::vector<Palette> maPalettes;
+ std::vector<Palette*> maPalettes;
public:
PaletteManager();
+ ~PaletteManager();
void LoadPalettes();
void ReloadColorSet(SvxColorValueSet& rColorSet);
std::vector<OUString> GetPaletteList();
diff --git a/include/svx/SvxColorValueSet.hxx b/include/svx/SvxColorValueSet.hxx
index 7db9f4c38a6e..a3130ed4a731 100644
--- a/include/svx/SvxColorValueSet.hxx
+++ b/include/svx/SvxColorValueSet.hxx
@@ -19,7 +19,6 @@
#ifndef INCLUDED_SVX_SVXCOLORVALUESET_HXX
#define INCLUDED_SVX_SVXCOLORVALUESET_HXX
-#include <svx/Palette.hxx>
#include <svtools/valueset.hxx>
#include <svx/svxdllapi.h>
@@ -41,7 +40,6 @@ public:
void addEntriesForXColorList(const XColorList& rXColorList, sal_uInt32 nStartIndex = 1);
void loadColorVector(const std::vector<Color>& rColorVector, const OUString& rNamePrefix, sal_uInt32 nStartIndex = 1);
- void loadPalette(Palette& rPalette);
Size layoutAllVisible(sal_uInt32 nEntryCount);
Size layoutToGivenHeight(sal_uInt32 nHeight, sal_uInt32 nEntryCount);
};
diff --git a/svx/source/tbxctrls/Palette.cxx b/svx/source/tbxctrls/Palette.cxx
index f84f2d523e7a..f499b987382d 100644
--- a/svx/source/tbxctrls/Palette.cxx
+++ b/svx/source/tbxctrls/Palette.cxx
@@ -19,39 +19,16 @@
#include <svx/Palette.hxx>
-// finds first token in rStr from index, separated by whitespace
-// returns position of next token in index
-OString lcl_getToken(const OString& rStr, sal_Int32& index)
-{
- sal_Int32 substart, toklen = 0;
-
- while(index < rStr.getLength() &&
- (rStr[index] == ' ' || rStr[index] == '\n' || rStr[index] == '\t'))
- ++index;
- if(index == rStr.getLength())
- {
- index = -1;
- return OString();
- }
- substart = index;
- while(index < rStr.getLength() &&
- !(rStr[index] == ' ' || rStr[index] == '\n' || rStr[index] == '\t'))
- {
- ++index;
- ++toklen;
- }
+Palette::~Palette()
+{
+}
- while(index < rStr.getLength() &&
- (rStr[index] == ' ' || rStr[index] == '\n' || rStr[index] == '\t'))
- ++index;
- if(index == rStr.getLength())
- index = -1;
+// PaletteGPL ------------------------------------------------------------------
- return rStr.copy(substart, toklen);
-}
+OString lcl_getToken(const OString& rStr, sal_Int32& index);
-Palette::Palette( const OUString &rFPath, const OUString &rFName ) :
+PaletteGPL::PaletteGPL( const OUString &rFPath, const OUString &rFName ) :
mbLoadedPalette( false ),
mbValidPalette( false ),
maFName( rFName ),
@@ -60,23 +37,36 @@ Palette::Palette( const OUString &rFPath, const OUString &rFName ) :
LoadPaletteHeader();
}
-const OUString& Palette::GetName()
+PaletteGPL::~PaletteGPL()
+{
+}
+
+const OUString& PaletteGPL::GetName()
{
return maName;
}
-const Palette::ColorList& Palette::GetPaletteColors()
+void PaletteGPL::LoadColorSet( SvxColorValueSet& rColorSet )
{
LoadPalette();
- return maColors;
+
+ rColorSet.Clear();
+ int nIx = 1;
+ for(ColorList::const_iterator it = maColors.begin();
+ it != maColors.end(); ++it)
+ {
+ // TODO make it->second OUString
+ rColorSet.InsertItem(nIx, it->first, OStringToOUString(it->second, RTL_TEXTENCODING_ASCII_US));
+ ++nIx;
+ }
}
-bool Palette::IsValid()
+bool PaletteGPL::IsValid()
{
return mbValidPalette;
}
-bool Palette::ReadPaletteHeader(SvFileStream& rFileStream)
+bool PaletteGPL::ReadPaletteHeader(SvFileStream& rFileStream)
{
OString aLine;
OString aName;
@@ -98,14 +88,13 @@ bool Palette::ReadPaletteHeader(SvFileStream& rFileStream)
return true;
}
-//TODO make this LoadPaletteHeader and set a bool if palette is incorrect
-void Palette::LoadPaletteHeader()
+void PaletteGPL::LoadPaletteHeader()
{
SvFileStream aFile(maFPath, STREAM_READ);
mbValidPalette = ReadPaletteHeader( aFile );
}
-void Palette::LoadPalette()
+void PaletteGPL::LoadPalette()
{
if( mbLoadedPalette ) return;
mbLoadedPalette = true;
@@ -145,4 +134,68 @@ void Palette::LoadPalette()
} while (aFile.ReadLine(aLine));
}
+// finds first token in rStr from index, separated by whitespace
+// returns position of next token in index
+OString lcl_getToken(const OString& rStr, sal_Int32& index)
+{
+ sal_Int32 substart, toklen = 0;
+ OUString aWhitespaceChars( " \n\t" );
+
+ while(index < rStr.getLength() &&
+ aWhitespaceChars.indexOf( rStr[index] ) != -1)
+ ++index;
+ if(index == rStr.getLength())
+ {
+ index = -1;
+ return OString();
+ }
+ substart = index;
+
+ //counts length of token
+ while(index < rStr.getLength() &&
+ aWhitespaceChars.indexOf( rStr[index] ) == -1 )
+ {
+ ++index;
+ ++toklen;
+ }
+
+ //counts to position of next token
+ while(index < rStr.getLength() &&
+ aWhitespaceChars.indexOf( rStr[index] ) != -1 )
+ ++index;
+ if(index == rStr.getLength())
+ index = -1;
+
+ return rStr.copy(substart, toklen);
+}
+
+// PaletteSOC ------------------------------------------------------------------
+
+PaletteSOC::PaletteSOC( const OUString &rFPath, const OUString &rFName )
+{
+ maName = rFName;
+ mpColorList = XPropertyList::AsColorList(XPropertyList::CreatePropertyListFromURL(XCOLOR_LIST, rFPath));
+ mpColorList->Load();
+}
+
+PaletteSOC::~PaletteSOC()
+{
+}
+
+const OUString& PaletteSOC::GetName()
+{
+ return maName;
+}
+
+void PaletteSOC::LoadColorSet( SvxColorValueSet& rColorSet )
+{
+ rColorSet.Clear();
+ rColorSet.addEntriesForXColorList( *mpColorList );
+}
+
+bool PaletteSOC::IsValid()
+{
+ return mpColorList.is();
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/source/tbxctrls/PaletteManager.cxx b/svx/source/tbxctrls/PaletteManager.cxx
index 95c351dd24e6..95485ced1a03 100644
--- a/svx/source/tbxctrls/PaletteManager.cxx
+++ b/svx/source/tbxctrls/PaletteManager.cxx
@@ -39,6 +39,16 @@ PaletteManager::PaletteManager() :
mnNumOfPalettes += maPalettes.size();
}
+PaletteManager::~PaletteManager()
+{
+ for( std::vector<Palette*>::iterator it = maPalettes.begin();
+ it != maPalettes.end();
+ ++it)
+ {
+ delete *it;
+ }
+}
+
void PaletteManager::LoadPalettes()
{
OUString aPalPath = SvtPathOptions().GetPalettePath();
@@ -57,12 +67,14 @@ void PaletteManager::LoadPalettes()
if(aFileStat.isRegular() || aFileStat.isLink())
{
OUString aFName = aFileStat.getFileName();
+ Palette* pPalette = 0;
if( aFName.endsWithIgnoreAsciiCase(".gpl") )
- {
- Palette aPalette( aFileStat.getFileURL(), aFName );
- if( aPalette.IsValid() )
- maPalettes.push_back( aPalette );
- }
+ pPalette = new PaletteGPL( aFileStat.getFileURL(), aFName );
+ else if( aFName.endsWithIgnoreAsciiCase(".soc") )
+ pPalette = new PaletteSOC( aFileStat.getFileURL(), aFName );
+
+ if( pPalette && pPalette->IsValid() )
+ maPalettes.push_back( pPalette );
}
}
}
@@ -104,10 +116,8 @@ void PaletteManager::ReloadColorSet(SvxColorValueSet &rColorSet)
}
else
{
- Palette& rPal = maPalettes[mnCurrentPalette-1];
- mnColorCount = rPal.GetPaletteColors().size();
- rColorSet.Clear();
- rColorSet.loadPalette(rPal);
+ maPalettes[mnCurrentPalette-1]->LoadColorSet( rColorSet );
+ mnColorCount = rColorSet.GetItemCount();
}
}
@@ -117,11 +127,11 @@ std::vector<OUString> PaletteManager::GetPaletteList()
aPaletteNames.push_back( STR_DEFAULT_PAL );
- for( std::vector<Palette>::iterator it = maPalettes.begin();
+ for( std::vector<Palette*>::iterator it = maPalettes.begin();
it != maPalettes.end();
++it)
{
- aPaletteNames.push_back( it->GetName() );
+ aPaletteNames.push_back( (*it)->GetName() );
}
aPaletteNames.push_back( STR_DOC_COLORS );
@@ -151,7 +161,7 @@ OUString PaletteManager::GetPaletteName()
else if( mnCurrentPalette == mnNumOfPalettes - 1 )
return OUString( STR_DOC_COLORS );
else
- return maPalettes[mnCurrentPalette - 1].GetName();
+ return maPalettes[mnCurrentPalette - 1]->GetName();
}
const Color& PaletteManager::GetLastColor()
diff --git a/svx/source/tbxctrls/SvxColorValueSet.cxx b/svx/source/tbxctrls/SvxColorValueSet.cxx
index e33810946d3b..2faeb6fde7cf 100644
--- a/svx/source/tbxctrls/SvxColorValueSet.cxx
+++ b/svx/source/tbxctrls/SvxColorValueSet.cxx
@@ -106,20 +106,6 @@ void SvxColorValueSet::loadColorVector(const std::vector<Color>& rColorVector, c
}
}
-
-void SvxColorValueSet::loadPalette(Palette& rPalette)
-{
- const Palette::ColorList &rColors = rPalette.GetPaletteColors();
- Clear();
- int nIx = 1;
- for(Palette::ColorList::const_iterator it = rColors.begin();
- it != rColors.end(); ++it)
- {
- InsertItem(nIx, it->first, OStringToOUString(it->second, RTL_TEXTENCODING_ASCII_US));
- ++nIx;
- }
-}
-
Size SvxColorValueSet::layoutAllVisible(sal_uInt32 nEntryCount)
{
if(!nEntryCount)