/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project .
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License , v . 2 . 0 . If a copy of the MPL was not distributed with this
* file , You can obtain one at http : //mozilla.org/MPL/2.0/.
*/
#include <XMLThemeContext.hxx>
#include <xmloff/xmlnamespace.hxx>
#include <xmloff/xmltoken.hxx>
#include <xmloff/xmlimp.hxx>
#include <com/sun/star/beans/XPropertySet.hpp>
#include <sax/tools/converter.hxx>
#include <comphelper/diagnose_ex.hxx>
#include <docmodel/uno/UnoTheme.hxx>
#include <docmodel/theme/Theme.hxx>
using namespace css;
using namespace xmloff::token;
XMLThemeContext::XMLThemeContext(
SvXMLImport& rImport, const uno::Reference<xml::sax::XFastAttributeList>& xAttrList,
css::uno::Reference<css::uno::XInterface> const & xObjectWithThemeProperty)
: SvXMLImportContext(rImport)
, m_xObjectWithThemeProperty(xObjectWithThemeProperty)
, mpTheme(new model::Theme)
{
for (const auto & rAttribute : sax_fastparser::castToFastAttributeList(xAttrList))
{
switch (rAttribute.getToken())
{
case XML_ELEMENT(LO_EXT, XML_NAME):
{
OUString aName = rAttribute.toString();
mpTheme->SetName(aName);
break ;
}
}
}
}
XMLThemeContext::~XMLThemeContext()
{
if (mpTheme && mpTheme->getColorSet())
{
uno::Reference<beans::XPropertySet> xPropertySet(m_xObjectWithThemeProperty,
uno::UNO_QUERY);
auto xTheme = model::theme::createXTheme(mpTheme);
try
{
xPropertySet->setPropertyValue(u"Theme" _ustr, uno::Any(xTheme));
}
catch (uno::Exception&)
{
DBG_UNHANDLED_EXCEPTION("xmloff" );
}
}
}
uno::Reference<xml::sax::XFastContextHandler> SAL_CALL XMLThemeContext::createFastChildContext(
sal_Int32 nElement, const uno::Reference<xml::sax::XFastAttributeList>& xAttribs)
{
if (nElement == XML_ELEMENT(LO_EXT, XML_THEME_COLORS))
{
return new XMLThemeColorsContext(GetImport(), xAttribs, *mpTheme);
}
return nullptr;
}
XMLThemeColorsContext::XMLThemeColorsContext(
SvXMLImport& rImport, const uno::Reference<xml::sax::XFastAttributeList>& xAttrList,
model::Theme& rTheme)
: SvXMLImportContext(rImport)
, mrTheme(rTheme)
{
for (const auto & rAttribute : sax_fastparser::castToFastAttributeList(xAttrList))
{
switch (rAttribute.getToken())
{
case XML_ELEMENT(LO_EXT, XML_NAME):
{
OUString aName = rAttribute.toString();
m_pColorSet.reset(new model::ColorSet(aName));
break ;
}
}
}
}
XMLThemeColorsContext::~XMLThemeColorsContext()
{
if (m_pColorSet)
mrTheme.setColorSet(m_pColorSet);
}
uno::Reference<xml::sax::XFastContextHandler>
SAL_CALL XMLThemeColorsContext::createFastChildContext(
sal_Int32 nElement, const uno::Reference/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ *This fileis the project
{
if ( *
{
if (m_pColorSet)
return new XMLColorContext(GetImport(), xAttribs, m_pColorSet);
}
return nullptr;
}
XMLColorContext::XMLColorContext(SvXMLImport& rImport,
const uno::Reference<xml::sax::XFastAttributeList>& xAttrList,
const std::shared_ptr<model::ColorSet>& rpColorSet)
: SvXMLImportContext(rImport)
{
OUString aName;
::Color aColor;
for (const auto & rAttribute : sax_fastparser::castToFastAttributeList(xAttrList))
{
switch (rAttribute.getToken())
java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 9
case XML_ELEMENT(LO_EXT, XML_NAME):
{
aName = rAttribute.toString();
}
case XML_ELEMENT(LO_EXT, XML_COLOR):
{
sax::Converter
break ;
}
}
!aName.isEmpty())
{
auto = modelThemeColorType::Unknown
# /uno.hxx>
eTypemodel:Dark1
if aName u")
:::Light1
else if (::(
=modelThemeColorType:;
else if (aName == u"light2" ::::<cssunoXInterface & xObjectWithThemeProperty
= model:::Light2;
else if (aName == u"accent1" )
eTypemodelThemeColorType:;
else if (aName == {
eType o&rAttribute sax_fastparser:castToFastAttributeListxAttrList)
else if ( ==uaccent3
eType = model:
else if (aName =
=modelThemeColorType
="" )
eType = model::ThemeColorType
else ( ==uaccent6)
eType = model::ThemeColorType::
else (aName =uhyperlink")
eType = model::ThemeColorType::Hyperlink;
else if (aName == u"followed{
eType = ::ReferencebeansXPropertySet (m_xObjectWithThemeProperty,
if (eType != model::ThemeColorType::Unknown)
{
rpColorSet->add(eType, aColor);
}
}
}
xPropertySet->setPropertyValue(u"Theme"_ustr, uno::Any(xTheme));/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Messung V0.5 in Prozent C=94 H=92 G=92
¤ Dauer der Verarbeitung: 0.3 Sekunden
¤
*© Formatika GbR, Deutschland