/************************************************************** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * *************************************************************/ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_svtools.hxx" #include #include #include #include #include #include #include #include #include #include #include //Any2Bool #include #include /* #100822# ---- #include ------------- */ #include #include #include #include #include //----------------------------------------------------------------------------- using namespace utl; using namespace rtl; using namespace com::sun::star; namespace svtools { #define C2U(cChar) OUString::createFromAscii(cChar) sal_Int32 nExtendedColorRefCount_Impl = 0; namespace { struct ColorMutex_Impl : public rtl::Static< ::osl::Mutex, ColorMutex_Impl > {}; } ExtendedColorConfig_Impl* ExtendedColorConfig::m_pImpl = NULL; /* -----------------------------16.01.01 15:36-------------------------------- ---------------------------------------------------------------------------*/ class ExtendedColorConfig_Impl : public utl::ConfigItem, public SfxBroadcaster { DECLARE_STL_USTRINGACCESS_MAP( ::rtl::OUString, TDisplayNames); DECLARE_STL_USTRINGACCESS_MAP(ExtendedColorConfigValue,TConfigValues); typedef ::std::vector TMapPos; typedef ::std::pair< TConfigValues, TMapPos > TComponentMapping; DECLARE_STL_USTRINGACCESS_MAP(TComponentMapping,TComponents); TComponents m_aConfigValues; TDisplayNames m_aComponentDisplayNames; ::std::vector m_aConfigValuesPos; sal_Bool m_bEditMode; rtl::OUString m_sLoadedScheme; sal_Bool m_bIsBroadcastEnabled; static sal_Bool m_bLockBroadcast; static sal_Bool m_bBroadcastWhenUnlocked; uno::Sequence< ::rtl::OUString> GetPropertyNames(const rtl::OUString& rScheme); void FillComponentColors(uno::Sequence < ::rtl::OUString >& _rComponents,const TDisplayNames& _rDisplayNames); public: ExtendedColorConfig_Impl(sal_Bool bEditMode = sal_False); virtual ~ExtendedColorConfig_Impl(); void Load(const rtl::OUString& rScheme); void CommitCurrentSchemeName(); //changes the name of the current scheme but doesn't load it! void SetCurrentSchemeName(const rtl::OUString& rSchemeName) {m_sLoadedScheme = rSchemeName;} sal_Bool ExistsScheme(const ::rtl::OUString& _sSchemeName); virtual void Commit(); virtual void Notify( const uno::Sequence& aPropertyNames); sal_Int32 GetComponentCount() const; ::rtl::OUString GetComponentName(sal_uInt32 _nPos) const; ::rtl::OUString GetComponentDisplayName(const ::rtl::OUString& _sComponentName) const; sal_Int32 GetComponentColorCount(const ::rtl::OUString& _sName) const; ExtendedColorConfigValue GetComponentColorConfigValue(const ::rtl::OUString& _sName,sal_uInt32 _nPos) const; ExtendedColorConfigValue GetColorConfigValue(const ::rtl::OUString& _sComponentName,const ::rtl::OUString& _sName) { TComponents::iterator aFind = m_aConfigValues.find(_sComponentName); if ( aFind != m_aConfigValues.end() ) { TConfigValues::iterator aFind2 = aFind->second.first.find(_sName); if ( aFind2 != aFind->second.first.end() ) return aFind2->second; } #if OSL_DEBUG_LEVEL > 0 ::rtl::OStringBuffer aMessage( "Could find the required config:\n" ); aMessage.append( "component: " ); aMessage.append( ::rtl::OUStringToOString( _sComponentName, RTL_TEXTENCODING_UTF8 ) ); aMessage.append( "\nname: " ); aMessage.append( ::rtl::OUStringToOString( _sName, RTL_TEXTENCODING_UTF8 ) ); OSL_ENSURE( 0, aMessage.makeStringAndClear().getStr() ); #endif return ExtendedColorConfigValue(); } void SetColorConfigValue(const ::rtl::OUString& _sName, const ExtendedColorConfigValue& rValue ); const rtl::OUString& GetLoadedScheme() const {return m_sLoadedScheme;} uno::Sequence< ::rtl::OUString> GetSchemeNames(); sal_Bool AddScheme(const rtl::OUString& rNode); sal_Bool RemoveScheme(const rtl::OUString& rNode); void SetModified(){ConfigItem::SetModified();} void ClearModified(){ConfigItem::ClearModified();} void SettingsChanged(); static void DisableBroadcast(); static void EnableBroadcast(); static sal_Bool IsEnableBroadcast(); static void LockBroadcast(); static void UnlockBroadcast(); // #100822# DECL_LINK( DataChangedEventListener, VclWindowEvent* ); }; /* -----------------------------16.01.01 15:36-------------------------------- ---------------------------------------------------------------------------*/ uno::Sequence< OUString> ExtendedColorConfig_Impl::GetPropertyNames(const rtl::OUString& rScheme) { uno::Sequence< OUString> aNames(GetNodeNames(rScheme)); ::rtl::OUString* pIter = aNames.getArray(); ::rtl::OUString* pEnd = pIter + aNames.getLength(); ::rtl::OUString sSep(RTL_CONSTASCII_USTRINGPARAM("/")); for(;pIter != pEnd;++pIter) { *pIter = rScheme + sSep + *pIter; } return aNames; } // ----------------------------------------------------------------------------- sal_Int32 ExtendedColorConfig_Impl::GetComponentCount() const { return m_aConfigValues.size(); } // ----------------------------------------------------------------------------- sal_Int32 ExtendedColorConfig_Impl::GetComponentColorCount(const ::rtl::OUString& _sName) const { sal_Int32 nSize = 0; TComponents::const_iterator aFind = m_aConfigValues.find(_sName); if ( aFind != m_aConfigValues.end() ) { nSize = aFind->second.first.size(); } return nSize; } // ----------------------------------------------------------------------------- ExtendedColorConfigValue ExtendedColorConfig_Impl::GetComponentColorConfigValue(const ::rtl::OUString& _sName,sal_uInt32 _nPos) const { TComponents::const_iterator aFind = m_aConfigValues.find(_sName); if ( aFind != m_aConfigValues.end() ) { if ( _nPos < aFind->second.second.size() ) { return aFind->second.second[_nPos]->second; } } return ExtendedColorConfigValue(); } // ----------------------------------------------------------------------------- ::rtl::OUString ExtendedColorConfig_Impl::GetComponentDisplayName(const ::rtl::OUString& _sComponentName) const { ::rtl::OUString sRet; TDisplayNames::const_iterator aFind = m_aComponentDisplayNames.find(_sComponentName); if ( aFind != m_aComponentDisplayNames.end() ) sRet = aFind->second; return sRet; } // ----------------------------------------------------------------------------- ::rtl::OUString ExtendedColorConfig_Impl::GetComponentName(sal_uInt32 _nPos) const { ::rtl::OUString sRet; if ( _nPos < m_aConfigValuesPos.size() ) sRet = m_aConfigValuesPos[_nPos]->first; return sRet; } // ----------------------------------------------------------------------------- /* -----------------------------22.03.2002 14:37------------------------------ ---------------------------------------------------------------------------*/ sal_Bool ExtendedColorConfig_Impl::m_bLockBroadcast = sal_False; sal_Bool ExtendedColorConfig_Impl::m_bBroadcastWhenUnlocked = sal_False; ExtendedColorConfig_Impl::ExtendedColorConfig_Impl(sal_Bool bEditMode) : ConfigItem(C2U("Office.ExtendedColorScheme")), m_bEditMode(bEditMode), m_bIsBroadcastEnabled(sal_True) { if(!m_bEditMode) { //try to register on the root node - if possible uno::Sequence < ::rtl::OUString > aNames(1); EnableNotification( aNames ); } Load(::rtl::OUString()); // #100822# ::Application::AddEventListener( LINK(this, ExtendedColorConfig_Impl, DataChangedEventListener) ); } /* -----------------------------25.03.2002 12:28------------------------------ ---------------------------------------------------------------------------*/ ExtendedColorConfig_Impl::~ExtendedColorConfig_Impl() { // #100822# ::Application::RemoveEventListener( LINK(this, ExtendedColorConfig_Impl, DataChangedEventListener) ); } // ----------------------------------------------------------------------------- void ExtendedColorConfig_Impl::DisableBroadcast() { if ( ExtendedColorConfig::m_pImpl ) ExtendedColorConfig::m_pImpl->m_bIsBroadcastEnabled = sal_False; } // ----------------------------------------------------------------------------- void ExtendedColorConfig_Impl::EnableBroadcast() { if ( ExtendedColorConfig::m_pImpl ) ExtendedColorConfig::m_pImpl->m_bIsBroadcastEnabled = sal_True; } // ----------------------------------------------------------------------------- sal_Bool ExtendedColorConfig_Impl::IsEnableBroadcast() { return ExtendedColorConfig::m_pImpl ? ExtendedColorConfig::m_pImpl->m_bIsBroadcastEnabled : sal_False; } /* -----------------------------22.03.2002 14:38------------------------------ ---------------------------------------------------------------------------*/ void lcl_addString(uno::Sequence < ::rtl::OUString >& _rSeq,const ::rtl::OUString& _sAdd) { ::rtl::OUString* pIter = _rSeq.getArray(); ::rtl::OUString* pEnd = pIter + _rSeq.getLength(); for(;pIter != pEnd;++pIter) *pIter += _sAdd; } // ----------------------------------------------------------------------------- void ExtendedColorConfig_Impl::Load(const rtl::OUString& rScheme) { m_aComponentDisplayNames.clear(); m_aConfigValuesPos.clear(); m_aConfigValues.clear(); // fill display names TDisplayNames aDisplayNameMap; ::rtl::OUString sEntryNames(RTL_CONSTASCII_USTRINGPARAM("EntryNames")); uno::Sequence < ::rtl::OUString > aComponentNames = GetPropertyNames(sEntryNames); ::rtl::OUString sDisplayName(RTL_CONSTASCII_USTRINGPARAM("/DisplayName")); ::rtl::OUString* pIter = aComponentNames.getArray(); ::rtl::OUString* pEnd = pIter + aComponentNames.getLength(); for(sal_Int32 i = 0;pIter != pEnd;++pIter,++i) { uno::Sequence < ::rtl::OUString > aComponentDisplayNames(1); aComponentDisplayNames[0] = *pIter; aComponentDisplayNames[0] += sDisplayName; uno::Sequence< uno::Any > aComponentDisplayNamesValue = GetProperties( aComponentDisplayNames ); ::rtl::OUString sComponentDisplayName; if ( aComponentDisplayNamesValue.getLength() && (aComponentDisplayNamesValue[0] >>= sComponentDisplayName) ) { sal_Int32 nIndex = 0; m_aComponentDisplayNames.insert(TDisplayNames::value_type(pIter->getToken(1,'/',nIndex),sComponentDisplayName)); } *pIter += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("/Entries")); uno::Sequence < ::rtl::OUString > aDisplayNames = GetPropertyNames(*pIter); lcl_addString(aDisplayNames,sDisplayName); uno::Sequence< uno::Any > aDisplayNamesValue = GetProperties( aDisplayNames ); const ::rtl::OUString* pDispIter = aDisplayNames.getConstArray(); const ::rtl::OUString* pDispEnd = pDispIter + aDisplayNames.getLength(); for(sal_Int32 j = 0;pDispIter != pDispEnd;++pDispIter,++j) { sal_Int32 nIndex = 0; pDispIter->getToken(0,'/',nIndex); ::rtl::OUString sName = pDispIter->copy(nIndex); sName = sName.copy(0,sName.lastIndexOf(sDisplayName)); ::rtl::OUString sCurrentDisplayName; aDisplayNamesValue[j] >>= sCurrentDisplayName; aDisplayNameMap.insert(TDisplayNames::value_type(sName,sCurrentDisplayName)); } } // load color settings rtl::OUString sScheme(rScheme); if(!sScheme.getLength()) { //detect current scheme name uno::Sequence < ::rtl::OUString > aCurrent(1); aCurrent.getArray()[0] = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ExtendedColorScheme/CurrentColorScheme")); uno::Sequence< uno::Any > aCurrentVal = GetProperties( aCurrent ); aCurrentVal.getConstArray()[0] >>= sScheme; } // if(!sScheme.getLength()) m_sLoadedScheme = sScheme; ::rtl::OUString sBase(RTL_CONSTASCII_USTRINGPARAM("ExtendedColorScheme/ColorSchemes/")); sBase += sScheme; sal_Bool bFound = ExistsScheme(sScheme); if ( bFound ) { aComponentNames = GetPropertyNames(sBase); FillComponentColors(aComponentNames,aDisplayNameMap); } // if ( bFound ) if ( !m_sLoadedScheme.getLength() ) m_sLoadedScheme = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("default")); if ( !sScheme.equalsAscii("default") ) { ::rtl::OUString sDefault(RTL_CONSTASCII_USTRINGPARAM("default")); if ( ExistsScheme(sDefault) ) { ::rtl::OUString sBaseDefault(RTL_CONSTASCII_USTRINGPARAM("ExtendedColorScheme/ColorSchemes/default")); aComponentNames = GetPropertyNames(sBaseDefault); FillComponentColors(aComponentNames,aDisplayNameMap); } } // if ( !sScheme.equalsAscii("default") ) if ( !bFound && sScheme.getLength() ) { AddScheme(sScheme); CommitCurrentSchemeName(); } } // ----------------------------------------------------------------------------- void ExtendedColorConfig_Impl::FillComponentColors(uno::Sequence < ::rtl::OUString >& _rComponents,const TDisplayNames& _rDisplayNames) { const ::rtl::OUString sColorEntries(RTL_CONSTASCII_USTRINGPARAM("/Entries")); ::rtl::OUString* pIter = _rComponents.getArray(); ::rtl::OUString* pEnd = pIter + _rComponents.getLength(); for(;pIter != pEnd;++pIter) { ::rtl::OUString sComponentName = pIter->copy(pIter->lastIndexOf('/')+1); if ( m_aConfigValues.find(sComponentName) == m_aConfigValues.end() ) { ::rtl::OUString sEntry = *pIter; sEntry += sColorEntries; uno::Sequence < ::rtl::OUString > aColorNames = GetPropertyNames(sEntry); uno::Sequence < ::rtl::OUString > aDefaultColorNames = aColorNames; const ::rtl::OUString sColor(RTL_CONSTASCII_USTRINGPARAM("/Color")); const ::rtl::OUString sDefaultColor(RTL_CONSTASCII_USTRINGPARAM("/DefaultColor")); lcl_addString(aColorNames,sColor); lcl_addString(aDefaultColorNames,sDefaultColor); uno::Sequence< uno::Any > aColors = GetProperties( aColorNames ); const uno::Any* pColors = aColors.getConstArray(); uno::Sequence< uno::Any > aDefaultColors = GetProperties( aDefaultColorNames ); bool bDefaultColorFound = aDefaultColors.getLength() != 0; const uno::Any* pDefaultColors = aDefaultColors.getConstArray(); ::rtl::OUString* pColorIter = aColorNames.getArray(); ::rtl::OUString* pColorEnd = pColorIter + aColorNames.getLength(); m_aConfigValuesPos.push_back(m_aConfigValues.insert(TComponents::value_type(sComponentName,TComponentMapping(TConfigValues(),TMapPos()))).first); TConfigValues& aConfigValues = (*m_aConfigValuesPos.rbegin())->second.first; TMapPos& aConfigValuesPos = (*m_aConfigValuesPos.rbegin())->second.second; for(int i = 0; pColorIter != pColorEnd; ++pColorIter ,++i) { if ( aConfigValues.find(*pColorIter) == aConfigValues.end() ) { sal_Int32 nIndex = 0; pColorIter->getToken(2,'/',nIndex); ::rtl::OUString sName(pColorIter->copy(nIndex)),sDisplayName; ::rtl::OUString sTemp = sName.copy(0,sName.lastIndexOf(sColor)); TDisplayNames::const_iterator aFind = _rDisplayNames.find(sTemp); nIndex = 0; sName = sName.getToken(2,'/',nIndex); OSL_ENSURE(aFind != _rDisplayNames.end(),"DisplayName is not in EntryNames config list!"); if ( aFind != _rDisplayNames.end() ) sDisplayName = aFind->second; OSL_ENSURE(pColors[i].hasValue(),"Color config entry has NIL as color value set!"); OSL_ENSURE(pDefaultColors[i].hasValue(),"Color config entry has NIL as color value set!"); sal_Int32 nColor = 0,nDefaultColor = 0; pColors[i] >>= nColor; if ( bDefaultColorFound ) pDefaultColors[i] >>= nDefaultColor; else nDefaultColor = nColor; ExtendedColorConfigValue aValue(sName,sDisplayName,nColor,nDefaultColor); aConfigValuesPos.push_back(aConfigValues.insert(TConfigValues::value_type(sName,aValue)).first); } } // for(int i = 0; pColorIter != pColorEnd; ++pColorIter ,++i) } } } /* -----------------------------22.03.2002 14:38------------------------------ ---------------------------------------------------------------------------*/ void ExtendedColorConfig_Impl::Notify( const uno::Sequence& /*rPropertyNames*/) { //loading via notification always uses the default setting Load(::rtl::OUString()); vos::OGuard aVclGuard( Application::GetSolarMutex() ); if(m_bLockBroadcast) { m_bBroadcastWhenUnlocked = sal_True; } else Broadcast(SfxSimpleHint(SFX_HINT_COLORS_CHANGED)); } /* -----------------------------22.03.2002 14:38------------------------------ ---------------------------------------------------------------------------*/ void ExtendedColorConfig_Impl::Commit() { if ( !m_sLoadedScheme.getLength() ) return; const ::rtl::OUString sColorEntries(RTL_CONSTASCII_USTRINGPARAM("Entries")); const ::rtl::OUString sColor(RTL_CONSTASCII_USTRINGPARAM("/Color")); const ::rtl::OUString sDefaultColor(RTL_CONSTASCII_USTRINGPARAM("/DefaultColor")); ::rtl::OUString sBase(RTL_CONSTASCII_USTRINGPARAM("ExtendedColorScheme/ColorSchemes/")); const ::rtl::OUString s_sSep(RTL_CONSTASCII_USTRINGPARAM("/")); sBase += m_sLoadedScheme; TComponents::iterator aIter = m_aConfigValues.begin(); TComponents::iterator aEnd = m_aConfigValues.end(); for( ;aIter != aEnd;++aIter ) { ::rtl::OUString sEntry = aIter->first; sEntry += sColorEntries; if ( ConfigItem::AddNode(sBase, aIter->first) ) { rtl::OUString sNode = sBase; sNode += s_sSep; sNode += aIter->first; //ConfigItem::AddNode(sNode, sColorEntries); sNode += s_sSep; sNode += sColorEntries; uno::Sequence < beans::PropertyValue > aPropValues(aIter->second.first.size()); beans::PropertyValue* pPropValues = aPropValues.getArray(); TConfigValues::iterator aConIter = aIter->second.first.begin(); TConfigValues::iterator aConEnd = aIter->second.first.end(); for (; aConIter != aConEnd; ++aConIter,++pPropValues) { pPropValues->Name = sNode + s_sSep + aConIter->first; ConfigItem::AddNode(sNode, aConIter->first); pPropValues->Name += sColor; pPropValues->Value <<= aConIter->second.getColor(); // the default color will never be changed } ::rtl::OUString s(RTL_CONSTASCII_USTRINGPARAM("ExtendedColorScheme/ColorSchemes")); SetSetProperties(s, aPropValues); } } CommitCurrentSchemeName(); } /* -----------------11.12.2002 10:42----------------- * * --------------------------------------------------*/ void ExtendedColorConfig_Impl::CommitCurrentSchemeName() { //save current scheme name uno::Sequence < ::rtl::OUString > aCurrent(1); aCurrent.getArray()[0] = C2U("ExtendedColorScheme/CurrentColorScheme"); uno::Sequence< uno::Any > aCurrentVal(1); aCurrentVal.getArray()[0] <<= m_sLoadedScheme; PutProperties(aCurrent, aCurrentVal); } // ----------------------------------------------------------------------------- sal_Bool ExtendedColorConfig_Impl::ExistsScheme(const ::rtl::OUString& _sSchemeName) { ::rtl::OUString sBase(RTL_CONSTASCII_USTRINGPARAM("ExtendedColorScheme/ColorSchemes")); uno::Sequence < ::rtl::OUString > aComponentNames = GetPropertyNames(sBase); sBase += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("/")) + _sSchemeName; const ::rtl::OUString* pCompIter = aComponentNames.getConstArray(); const ::rtl::OUString* pCompEnd = pCompIter + aComponentNames.getLength(); for(;pCompIter != pCompEnd && *pCompIter != sBase;++pCompIter) ; return pCompIter != pCompEnd; } // ----------------------------------------------------------------------------- /* -----------------------------25.03.2002 12:19------------------------------ ---------------------------------------------------------------------------*/ void ExtendedColorConfig_Impl::SetColorConfigValue(const ::rtl::OUString& _sName, const ExtendedColorConfigValue& rValue ) { TComponents::iterator aFind = m_aConfigValues.find(_sName); if ( aFind != m_aConfigValues.end() ) { TConfigValues::iterator aFind2 = aFind->second.first.find(rValue.getName()); if ( aFind2 != aFind->second.first.end() ) aFind2->second = rValue; SetModified(); } } /* -----------------------------25.03.2002 15:22------------------------------ ---------------------------------------------------------------------------*/ uno::Sequence< ::rtl::OUString> ExtendedColorConfig_Impl::GetSchemeNames() { return GetNodeNames(C2U("ExtendedColorScheme/ColorSchemes")); } /* -----------------------------09.04.2002 17:19------------------------------ ---------------------------------------------------------------------------*/ sal_Bool ExtendedColorConfig_Impl::AddScheme(const rtl::OUString& rScheme) { if(ConfigItem::AddNode(C2U("ExtendedColorScheme/ColorSchemes"), rScheme)) { m_sLoadedScheme = rScheme; Commit(); return sal_True; } return sal_False; } /* -----------------------------09.04.2002 17:19------------------------------ ---------------------------------------------------------------------------*/ sal_Bool ExtendedColorConfig_Impl::RemoveScheme(const rtl::OUString& rScheme) { uno::Sequence< rtl::OUString > aElements(1); aElements.getArray()[0] = rScheme; return ClearNodeElements(C2U("ExtendedColorScheme/ColorSchemes"), aElements); } /* -----------------------------2002/06/20 13:03------------------------------ ---------------------------------------------------------------------------*/ void ExtendedColorConfig_Impl::SettingsChanged() { vos::OGuard aVclGuard( Application::GetSolarMutex() ); Broadcast( SfxSimpleHint( SFX_HINT_COLORS_CHANGED ) ); } /* -----------------11.12.2002 09:21----------------- * * --------------------------------------------------*/ void ExtendedColorConfig_Impl::LockBroadcast() { m_bLockBroadcast = sal_True; } /* -----------------11.12.2002 09:21----------------- * * --------------------------------------------------*/ void ExtendedColorConfig_Impl::UnlockBroadcast() { if ( m_bBroadcastWhenUnlocked ) { m_bBroadcastWhenUnlocked = ExtendedColorConfig::m_pImpl != NULL; if ( m_bBroadcastWhenUnlocked ) { if ( ExtendedColorConfig::m_pImpl->IsEnableBroadcast() ) { m_bBroadcastWhenUnlocked = sal_False; ExtendedColorConfig::m_pImpl->Broadcast(SfxSimpleHint(SFX_HINT_COLORS_CHANGED)); } } } m_bLockBroadcast = sal_False; } /* -----------------------------2002/08/16 12:07 ----------------------------- #100822# --------------------------------------------------------------------------- */ IMPL_LINK( ExtendedColorConfig_Impl, DataChangedEventListener, VclWindowEvent*, pEvent ) { if ( pEvent->GetId() == VCLEVENT_APPLICATION_DATACHANGED ) { DataChangedEvent* pData = (DataChangedEvent*)(pEvent->GetData()); if ( (pData->GetType() == DATACHANGED_SETTINGS) && (pData->GetFlags() & SETTINGS_STYLE) ) { SettingsChanged(); return 1L; } else return 0L; } else return 0L; } // --------------------------------------------------------------------------- // --------------------------------------------------------------------------- ExtendedColorConfig::ExtendedColorConfig() { ::osl::MutexGuard aGuard( ColorMutex_Impl::get() ); if ( !m_pImpl ) m_pImpl = new ExtendedColorConfig_Impl; ++nExtendedColorRefCount_Impl; StartListening( *m_pImpl); } /* -----------------------------16.01.01 15:36-------------------------------- ---------------------------------------------------------------------------*/ ExtendedColorConfig::~ExtendedColorConfig() { ::osl::MutexGuard aGuard( ColorMutex_Impl::get() ); EndListening( *m_pImpl); if(!--nExtendedColorRefCount_Impl) { delete m_pImpl; m_pImpl = 0; } } /* -----------------------------11.04.2002 11:49------------------------------ ---------------------------------------------------------------------------*/ ExtendedColorConfigValue ExtendedColorConfig::GetColorValue(const ::rtl::OUString& _sComponentName,const ::rtl::OUString& _sName)const { return m_pImpl->GetColorConfigValue(_sComponentName,_sName); } // ----------------------------------------------------------------------------- sal_Int32 ExtendedColorConfig::GetComponentCount() const { return m_pImpl->GetComponentCount(); } // ----------------------------------------------------------------------------- sal_Int32 ExtendedColorConfig::GetComponentColorCount(const ::rtl::OUString& _sName) const { return m_pImpl->GetComponentColorCount(_sName); } // ----------------------------------------------------------------------------- ExtendedColorConfigValue ExtendedColorConfig::GetComponentColorConfigValue(const ::rtl::OUString& _sName,sal_uInt32 _nPos) const { return m_pImpl->GetComponentColorConfigValue(_sName,_nPos); } // ----------------------------------------------------------------------------- ::rtl::OUString ExtendedColorConfig::GetComponentName(sal_uInt32 _nPos) const { return m_pImpl->GetComponentName(_nPos); } // ----------------------------------------------------------------------------- ::rtl::OUString ExtendedColorConfig::GetComponentDisplayName(const ::rtl::OUString& _sComponentName) const { return m_pImpl->GetComponentDisplayName(_sComponentName); } // ----------------------------------------------------------------------------- /* -----------------------------12.04.2002 09:25------------------------------ ---------------------------------------------------------------------------*/ void ExtendedColorConfig::Notify( SfxBroadcaster& /*rBC*/, const SfxHint& rHint ) { vos::OGuard aVclGuard( Application::GetSolarMutex() ); Broadcast( rHint ); } /* -----------------------------25.03.2002 12:01------------------------------ ---------------------------------------------------------------------------*/ EditableExtendedColorConfig::EditableExtendedColorConfig() : m_pImpl(new ExtendedColorConfig_Impl), m_bModified(sal_False) { m_pImpl->LockBroadcast(); } /*-- 25.03.2002 12:03:08--------------------------------------------------- -----------------------------------------------------------------------*/ EditableExtendedColorConfig::~EditableExtendedColorConfig() { m_pImpl->UnlockBroadcast(); if(m_bModified) m_pImpl->SetModified(); if(m_pImpl->IsModified()) m_pImpl->Commit(); delete m_pImpl; } /*-- 25.03.2002 12:03:15--------------------------------------------------- -----------------------------------------------------------------------*/ uno::Sequence< ::rtl::OUString > EditableExtendedColorConfig::GetSchemeNames() const { return m_pImpl->GetSchemeNames(); } /*-- 25.03.2002 12:03:16--------------------------------------------------- -----------------------------------------------------------------------*/ void EditableExtendedColorConfig::DeleteScheme(const ::rtl::OUString& rScheme ) { m_pImpl->RemoveScheme(rScheme); } /*-- 25.03.2002 12:03:16--------------------------------------------------- -----------------------------------------------------------------------*/ void EditableExtendedColorConfig::AddScheme(const ::rtl::OUString& rScheme ) { m_pImpl->AddScheme(rScheme); } /*-- 25.03.2002 12:03:16--------------------------------------------------- -----------------------------------------------------------------------*/ sal_Bool EditableExtendedColorConfig::LoadScheme(const ::rtl::OUString& rScheme ) { if(m_bModified) m_pImpl->SetModified(); if(m_pImpl->IsModified()) m_pImpl->Commit(); m_bModified = sal_False; m_pImpl->Load(rScheme); //the name of the loaded scheme has to be committed separately m_pImpl->CommitCurrentSchemeName(); return sal_True; } /*-- 25.03.2002 12:03:16--------------------------------------------------- -----------------------------------------------------------------------*/ const ::rtl::OUString& EditableExtendedColorConfig::GetCurrentSchemeName()const { return m_pImpl->GetLoadedScheme(); } /* -----------------11.12.2002 10:56----------------- * changes the name of the current scheme but doesn't load it! * --------------------------------------------------*/ void EditableExtendedColorConfig::SetCurrentSchemeName(const ::rtl::OUString& rScheme) { m_pImpl->SetCurrentSchemeName(rScheme); m_pImpl->CommitCurrentSchemeName(); } /*-- 25.03.2002 12:03:17--------------------------------------------------- -----------------------------------------------------------------------*/ ExtendedColorConfigValue EditableExtendedColorConfig::GetColorValue(const ::rtl::OUString& _sComponentName, const ::rtl::OUString& _sName)const { return m_pImpl->GetColorConfigValue(_sComponentName,_sName); } /*-- 25.03.2002 12:03:17--------------------------------------------------- -----------------------------------------------------------------------*/ void EditableExtendedColorConfig::SetColorValue( const ::rtl::OUString& _sName, const ExtendedColorConfigValue& rValue) { m_pImpl->SetColorConfigValue(_sName, rValue); m_pImpl->ClearModified(); m_bModified = sal_True; } /* -----------------------------10.04.2002 13:22------------------------------ ---------------------------------------------------------------------------*/ void EditableExtendedColorConfig::SetModified() { m_bModified = sal_True; } /* -----------------15.10.2002 14:51----------------- * * --------------------------------------------------*/ void EditableExtendedColorConfig::Commit() { if(m_bModified) m_pImpl->SetModified(); if(m_pImpl->IsModified()) m_pImpl->Commit(); m_bModified = sal_False; } // ----------------------------------------------------------------------------- void EditableExtendedColorConfig::DisableBroadcast() { m_pImpl->DisableBroadcast(); } // ----------------------------------------------------------------------------- void EditableExtendedColorConfig::EnableBroadcast() { m_pImpl->EnableBroadcast(); } // ----------------------------------------------------------------------------- sal_Int32 EditableExtendedColorConfig::GetComponentCount() const { return m_pImpl->GetComponentCount(); } // ----------------------------------------------------------------------------- sal_Int32 EditableExtendedColorConfig::GetComponentColorCount(const ::rtl::OUString& _sName) const { return m_pImpl->GetComponentColorCount(_sName); } // ----------------------------------------------------------------------------- ExtendedColorConfigValue EditableExtendedColorConfig::GetComponentColorConfigValue(const ::rtl::OUString& _sName,sal_uInt32 _nPos) const { return m_pImpl->GetComponentColorConfigValue(_sName,_nPos); } // ----------------------------------------------------------------------------- ::rtl::OUString EditableExtendedColorConfig::GetComponentName(sal_uInt32 _nPos) const { return m_pImpl->GetComponentName(_nPos); } // ----------------------------------------------------------------------------- ::rtl::OUString EditableExtendedColorConfig::GetComponentDisplayName(const ::rtl::OUString& _sComponentName) const { return m_pImpl->GetComponentDisplayName(_sComponentName); } }//namespace svtools