diff options
Diffstat (limited to 'svx/source/tbxctrls')
-rw-r--r-- | svx/source/tbxctrls/Palette.cxx | 127 | ||||
-rw-r--r-- | svx/source/tbxctrls/PaletteManager.cxx | 34 | ||||
-rw-r--r-- | svx/source/tbxctrls/SvxColorValueSet.cxx | 14 |
3 files changed, 112 insertions, 63 deletions
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) |