blob: 9a4e60cb5ca209b9ad7c42c2c66d73ccb12d651b [file] [log] [blame]
/**************************************************************
*
* 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_sc.hxx"
#include "xmlstyle.hxx"
#include "xmlexprt.hxx"
#include "xmlimprt.hxx"
#include "XMLConverter.hxx"
#include "rangeutl.hxx"
#include <xmloff/xmlnmspe.hxx>
#include <xmloff/xmluconv.hxx>
#include <xmloff/xmltypes.hxx>
#include <xmloff/families.hxx>
#include <xmloff/xmlnumfe.hxx>
#include <xmloff/xmlnumfi.hxx>
#include <xmloff/nmspmap.hxx>
#include <xmloff/attrlist.hxx>
#include <xmloff/contextid.hxx>
#include <xmloff/txtprmap.hxx>
#include <tools/debug.hxx>
#include <com/sun/star/util/CellProtection.hpp>
#include <com/sun/star/table/CellOrientation.hpp>
#include <com/sun/star/table/CellVertJustify.hpp>
#include <com/sun/star/table/CellHoriJustify.hpp>
#include <com/sun/star/table/TableBorder.hpp>
#include <com/sun/star/sheet/XSheetConditionalEntries.hpp>
#include <com/sun/star/sheet/XSheetConditionalEntry.hpp>
#include <com/sun/star/sheet/XSheetCondition.hpp>
#include <com/sun/star/beans/XPropertyState.hpp>
#include <comphelper/extract.hxx>
#include <rtl/ustrbuf.hxx>
using namespace com::sun::star;
using namespace ::xmloff::token;
using namespace ::formula;
using ::rtl::OUString;
#define MAP(name,prefix,token,type,context) { name, sizeof(name)-1, prefix, token, static_cast<sal_Int32>(type), context, SvtSaveOptions::ODFVER_010 }
#define MAP_EXT(name,prefix,token,type,context) { name, sizeof(name)-1, prefix, token, type, context, SvtSaveOptions::ODFVER_LATEST }
#define MAP_END() { NULL, 0, 0, XML_TOKEN_INVALID, 0, 0, SvtSaveOptions::ODFVER_010 }
const XMLPropertyMapEntry aXMLScCellStylesProperties[] =
{
MAP( "AsianVerticalMode", XML_NAMESPACE_STYLE, XML_GLYPH_ORIENTATION_VERTICAL, XML_TYPE_PROP_TABLE_CELL|XML_SC_TYPE_VERTICAL, 0),
MAP( "BottomBorder", XML_NAMESPACE_FO, XML_BORDER_BOTTOM, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_BORDER, CTF_SC_BOTTOMBORDER ),
MAP( "BottomBorder", XML_NAMESPACE_STYLE, XML_BORDER_LINE_WIDTH_BOTTOM, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_BORDER_WIDTH, CTF_SC_BOTTOMBORDERWIDTH ),
MAP( "CellBackColor", XML_NAMESPACE_FO, XML_BACKGROUND_COLOR, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_COLORTRANSPARENT|MID_FLAG_MULTI_PROPERTY|MID_FLAG_MERGE_ATTRIBUTE, 0 ),
MAP( "CellProtection", XML_NAMESPACE_STYLE, XML_CELL_PROTECT, XML_TYPE_PROP_TABLE_CELL|XML_SC_TYPE_CELLPROTECTION|MID_FLAG_MERGE_PROPERTY, 0 ),
MAP( "CellProtection", XML_NAMESPACE_STYLE, XML_PRINT_CONTENT, XML_TYPE_PROP_TABLE_CELL|XML_SC_TYPE_PRINTCONTENT|MID_FLAG_MERGE_PROPERTY, 0 ),
MAP( "CellStyle", XML_NAMESPACE_STYLE, XML_STYLE, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_STRING, CTF_SC_CELLSTYLE ),
MAP( "ConditionalFormatXML", XML_NAMESPACE_STYLE, XML_MAP, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_STRING|MID_FLAG_SPECIAL_ITEM, CTF_SC_IMPORT_MAP ),
MAP( "ConditionalFormatXML", XML_NAMESPACE_STYLE, XML_MAP, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_STRING|MID_FLAG_SPECIAL_ITEM, CTF_SC_MAP ),
MAP( "DiagonalBLTR", XML_NAMESPACE_STYLE, XML_DIAGONAL_BL_TR, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_BORDER, CTF_SC_DIAGONALBLTR ),
MAP( "DiagonalBLTR", XML_NAMESPACE_STYLE, XML_DIAGONAL_BL_TR_WIDTH, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_BORDER_WIDTH, CTF_SC_DIAGONALBLTRWIDTH ), // #i102690# for old files
MAP( "DiagonalBLTR", XML_NAMESPACE_STYLE, XML_DIAGONAL_BL_TR_WIDTHS, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_BORDER_WIDTH, CTF_SC_DIAGONALBLTRWIDTHS ),
MAP( "DiagonalTLBR", XML_NAMESPACE_STYLE, XML_DIAGONAL_TL_BR, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_BORDER, CTF_SC_DIAGONALTLBR ),
MAP( "DiagonalTLBR", XML_NAMESPACE_STYLE, XML_DIAGONAL_TL_BR_WIDTH, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_BORDER_WIDTH, CTF_SC_DIAGONALTLBRWIDTH ), // #i102690# for old files
MAP( "DiagonalTLBR", XML_NAMESPACE_STYLE, XML_DIAGONAL_TL_BR_WIDTHS, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_BORDER_WIDTH, CTF_SC_DIAGONALTLBRWIDTHS ),
MAP( "HoriJustify", XML_NAMESPACE_FO, XML_TEXT_ALIGN, XML_TYPE_PROP_PARAGRAPH|XML_SC_TYPE_HORIJUSTIFY|MID_FLAG_MERGE_PROPERTY, 0 ),
MAP( "HoriJustify", XML_NAMESPACE_STYLE, XML_TEXT_ALIGN_SOURCE, XML_TYPE_PROP_TABLE_CELL|XML_SC_TYPE_HORIJUSTIFYSOURCE|MID_FLAG_MERGE_PROPERTY, 0 ),
MAP( "HoriJustify", XML_NAMESPACE_STYLE, XML_REPEAT_CONTENT, XML_TYPE_PROP_TABLE_CELL|XML_SC_TYPE_HORIJUSTIFYREPEAT|MID_FLAG_MERGE_PROPERTY, 0 ),
MAP( "IsCellBackgroundTransparent", XML_NAMESPACE_FO, XML_BACKGROUND_COLOR, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_ISTRANSPARENT|MID_FLAG_MULTI_PROPERTY|MID_FLAG_MERGE_ATTRIBUTE, 0 ),
MAP( "IsTextWrapped", XML_NAMESPACE_FO, XML_WRAP_OPTION, XML_TYPE_PROP_TABLE_CELL|XML_SC_ISTEXTWRAPPED, 0 ),
MAP( "LeftBorder", XML_NAMESPACE_FO, XML_BORDER, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_BORDER, CTF_SC_ALLBORDER ),
MAP( "LeftBorder", XML_NAMESPACE_FO, XML_BORDER_LEFT, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_BORDER, CTF_SC_LEFTBORDER ),
MAP( "LeftBorder", XML_NAMESPACE_STYLE, XML_BORDER_LINE_WIDTH, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_BORDER_WIDTH, CTF_SC_ALLBORDERWIDTH ),
MAP( "LeftBorder", XML_NAMESPACE_STYLE, XML_BORDER_LINE_WIDTH_LEFT, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_BORDER_WIDTH, CTF_SC_LEFTBORDERWIDTH ),
MAP( "NumberFormat", XML_NAMESPACE_STYLE, XML_DATA_STYLE_NAME, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_NUMBER|MID_FLAG_SPECIAL_ITEM, CTF_SC_NUMBERFORMAT),
MAP( "Orientation", XML_NAMESPACE_STYLE, XML_DIRECTION, XML_TYPE_PROP_TABLE_CELL|XML_SC_TYPE_ORIENTATION, 0 ),
MAP( "ParaBottomMargin", XML_NAMESPACE_FO, XML_PADDING, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_MEASURE, CTF_SC_ALLPADDING ),
MAP( "ParaBottomMargin", XML_NAMESPACE_FO, XML_PADDING_BOTTOM, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_MEASURE, CTF_SC_BOTTOMPADDING ),
MAP( "ParaIndent", XML_NAMESPACE_FO, XML_MARGIN_LEFT, XML_TYPE_PROP_PARAGRAPH|XML_TYPE_MEASURE16, 0 ),
// MAP( "ParaIsHyphenation", XML_NAMESPACE_FO, XML_HYPHENATE, XML_TYPE_PROP_TEXT|XML_TYPE_BOOL, 0 ),
MAP( "ParaLeftMargin", XML_NAMESPACE_FO, XML_PADDING_LEFT, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_MEASURE, CTF_SC_LEFTPADDING ),
MAP( "ParaRightMargin", XML_NAMESPACE_FO, XML_PADDING_RIGHT, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_MEASURE, CTF_SC_RIGHTPADDING ),
MAP( "ParaTopMargin", XML_NAMESPACE_FO, XML_PADDING_TOP, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_MEASURE, CTF_SC_TOPPADDING ),
MAP( "RightBorder", XML_NAMESPACE_FO, XML_BORDER_RIGHT, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_BORDER, CTF_SC_RIGHTBORDER ),
MAP( "RightBorder", XML_NAMESPACE_STYLE, XML_BORDER_LINE_WIDTH_RIGHT, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_BORDER_WIDTH, CTF_SC_RIGHTBORDERWIDTH ),
MAP( "RotateAngle", XML_NAMESPACE_STYLE, XML_ROTATION_ANGLE, XML_TYPE_PROP_TABLE_CELL|XML_SC_TYPE_ROTATEANGLE, 0 ),
MAP( "RotateReference", XML_NAMESPACE_STYLE, XML_ROTATION_ALIGN, XML_TYPE_PROP_TABLE_CELL|XML_SC_TYPE_ROTATEREFERENCE, 0),
MAP( "ShadowFormat", XML_NAMESPACE_STYLE, XML_SHADOW, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_TEXT_SHADOW, 0 ),
MAP( "ShrinkToFit", XML_NAMESPACE_STYLE, XML_SHRINK_TO_FIT, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_BOOL, 0 ),
MAP( "StandardDecimals", XML_NAMESPACE_STYLE, XML_DECIMAL_PLACES, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_NUMBER16, 0 ),
MAP( "TopBorder", XML_NAMESPACE_FO, XML_BORDER_TOP, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_BORDER, CTF_SC_TOPBORDER ),
MAP( "TopBorder", XML_NAMESPACE_STYLE, XML_BORDER_LINE_WIDTH_TOP, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_BORDER_WIDTH, CTF_SC_TOPBORDERWIDTH ),
MAP( "UserDefinedAttributes", XML_NAMESPACE_TEXT, XML_XMLNS, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_ATTRIBUTE_CONTAINER | MID_FLAG_SPECIAL_ITEM, 0 ),
MAP( "ValidationXML", XML_NAMESPACE_TABLE, XML_CONTENT_VALIDATION, XML_TYPE_PROP_TABLE_CELL|XML_TYPE_BUILDIN_CMP_ONLY, CTF_SC_VALIDATION ),
MAP( "VertJustify", XML_NAMESPACE_STYLE, XML_VERTICAL_ALIGN, XML_TYPE_PROP_TABLE_CELL|XML_SC_TYPE_VERTJUSTIFY, 0),
// MAP( "WritingMode", XML_NAMESPACE_STYLE, XML_WRITING_MODE, XML_TYPE_PROP_PARAGRAPH|XML_TYPE_TEXT_WRITING_MODE_WITH_DEFAULT, 0 ),
MAP_END()
};
const XMLPropertyMapEntry aXMLScColumnStylesProperties[] =
{
MAP( "IsManualPageBreak", XML_NAMESPACE_FO, XML_BREAK_BEFORE, XML_TYPE_PROP_TABLE_COLUMN|XML_SC_TYPE_BREAKBEFORE, 0),
MAP( "IsVisible", XML_NAMESPACE_TABLE, XML_DISPLAY, XML_TYPE_PROP_TABLE_COLUMN|XML_SC_TYPE_EQUAL|MID_FLAG_SPECIAL_ITEM, CTF_SC_ISVISIBLE ),
MAP( "Width", XML_NAMESPACE_STYLE, XML_COLUMN_WIDTH, XML_TYPE_PROP_TABLE_COLUMN|XML_TYPE_MEASURE, 0 ),
// MAP( "OptimalWidth", XML_NAMESPACE_STYLE, XML_USE_OPTIMAL_COLUMN_WIDTH, XML_TYPE_PROP_TABLE_COLUMN|XML_TYPE_BOOL, 0),
MAP_END()
};
const XMLPropertyMapEntry aXMLScRowStylesImportProperties[] =
{
// #i57867# Include background color (CellBackColor/IsCellBackgroundTransparent) for import only.
// Import and export should use the same map, with MID_FLAG_NO_PROPERTY_EXPORT for the background entries,
// but this doesn't work at the moment because SvXMLImportPropertyMapper compares MID_FLAG_NO_PROPERTY to 0.
// If this is changed (not for 2.0.x), a single map can be used again.
MAP( "CellBackColor", XML_NAMESPACE_FO, XML_BACKGROUND_COLOR, XML_TYPE_PROP_TABLE_ROW|XML_TYPE_COLORTRANSPARENT|MID_FLAG_MULTI_PROPERTY|MID_FLAG_MERGE_ATTRIBUTE, 0 ),
MAP( "Height", XML_NAMESPACE_STYLE, XML_ROW_HEIGHT, XML_TYPE_PROP_TABLE_ROW|XML_TYPE_MEASURE, CTF_SC_ROWHEIGHT),
MAP( "IsCellBackgroundTransparent", XML_NAMESPACE_FO, XML_BACKGROUND_COLOR, XML_TYPE_PROP_TABLE_ROW|XML_TYPE_ISTRANSPARENT|MID_FLAG_MULTI_PROPERTY|MID_FLAG_MERGE_ATTRIBUTE, 0 ),
MAP( "IsManualPageBreak", XML_NAMESPACE_FO, XML_BREAK_BEFORE, XML_TYPE_PROP_TABLE_ROW|XML_SC_TYPE_BREAKBEFORE, CTF_SC_ROWBREAKBEFORE),
MAP( "OptimalHeight", XML_NAMESPACE_STYLE, XML_USE_OPTIMAL_ROW_HEIGHT, XML_TYPE_PROP_TABLE_ROW|XML_TYPE_BOOL, CTF_SC_ROWOPTIMALHEIGHT),
MAP_END()
};
const XMLPropertyMapEntry aXMLScRowStylesProperties[] =
{
MAP( "Height", XML_NAMESPACE_STYLE, XML_ROW_HEIGHT, XML_TYPE_PROP_TABLE_ROW|XML_TYPE_MEASURE, CTF_SC_ROWHEIGHT),
MAP( "IsManualPageBreak", XML_NAMESPACE_FO, XML_BREAK_BEFORE, XML_TYPE_PROP_TABLE_ROW|XML_SC_TYPE_BREAKBEFORE, CTF_SC_ROWBREAKBEFORE),
MAP( "OptimalHeight", XML_NAMESPACE_STYLE, XML_USE_OPTIMAL_ROW_HEIGHT, XML_TYPE_PROP_TABLE_ROW|XML_TYPE_BOOL, CTF_SC_ROWOPTIMALHEIGHT),
MAP_END()
};
const XMLPropertyMapEntry aXMLScTableStylesImportProperties[] =
{
// #i57869# Include background color (CellBackColor/IsCellBackgroundTransparent) for import only.
// Import and export should use the same map, with MID_FLAG_NO_PROPERTY_EXPORT for the background entries,
// but this doesn't work at the moment because SvXMLImportPropertyMapper compares MID_FLAG_NO_PROPERTY to 0.
// If this is changed (not for 2.0.x), a single map can be used again.
MAP( "CellBackColor", XML_NAMESPACE_FO, XML_BACKGROUND_COLOR, XML_TYPE_PROP_TABLE|XML_TYPE_COLORTRANSPARENT|MID_FLAG_MULTI_PROPERTY|MID_FLAG_MERGE_ATTRIBUTE, 0 ),
MAP( "IsCellBackgroundTransparent", XML_NAMESPACE_FO, XML_BACKGROUND_COLOR, XML_TYPE_PROP_TABLE|XML_TYPE_ISTRANSPARENT|MID_FLAG_MULTI_PROPERTY|MID_FLAG_MERGE_ATTRIBUTE, 0 ),
MAP( "IsVisible", XML_NAMESPACE_TABLE, XML_DISPLAY, XML_TYPE_PROP_TABLE|XML_TYPE_BOOL, 0 ),
MAP( "PageStyle", XML_NAMESPACE_STYLE, XML_MASTER_PAGE_NAME, XML_TYPE_PROP_TABLE|XML_TYPE_STRING|MID_FLAG_SPECIAL_ITEM, CTF_SC_MASTERPAGENAME ),
MAP( "TableLayout", XML_NAMESPACE_STYLE, XML_WRITING_MODE, XML_TYPE_PROP_TABLE|XML_TYPE_TEXT_WRITING_MODE, 0 ),
MAP( "TabColor", XML_NAMESPACE_TABLE, XML_TAB_COLOR, XML_TYPE_PROP_TABLE|XML_TYPE_COLORAUTO, 0 ),
MAP_EXT( "TabColor", XML_NAMESPACE_TABLE_EXT, XML_TAB_COLOR, XML_TYPE_PROP_TABLE|XML_TYPE_COLORAUTO, 0 ),
MAP_END()
};
const XMLPropertyMapEntry aXMLScTableStylesProperties[] =
{
MAP( "IsVisible", XML_NAMESPACE_TABLE, XML_DISPLAY, XML_TYPE_PROP_TABLE|XML_TYPE_BOOL, 0 ),
MAP( "PageStyle", XML_NAMESPACE_STYLE, XML_MASTER_PAGE_NAME, XML_TYPE_PROP_TABLE|XML_TYPE_STRING|MID_FLAG_SPECIAL_ITEM, CTF_SC_MASTERPAGENAME ),
MAP( "TableLayout", XML_NAMESPACE_STYLE, XML_WRITING_MODE, XML_TYPE_PROP_TABLE|XML_TYPE_TEXT_WRITING_MODE, 0 ),
MAP_EXT( "TabColor", XML_NAMESPACE_TABLE_EXT, XML_TAB_COLOR, XML_TYPE_PROP_TABLE|XML_TYPE_COLORAUTO, 0 ),
MAP_END()
};
ScXMLCellExportPropertyMapper::ScXMLCellExportPropertyMapper(
const UniReference< XMLPropertySetMapper >& rMapper )
: SvXMLExportPropertyMapper(rMapper)
{
}
ScXMLCellExportPropertyMapper::~ScXMLCellExportPropertyMapper()
{
}
void ScXMLCellExportPropertyMapper::ContextFilter(
::std::vector< XMLPropertyState >& rProperties,
uno::Reference< beans::XPropertySet > rPropSet ) const
{
XMLPropertyState* pPadding = NULL;
XMLPropertyState* pPadding_Bottom = NULL;
XMLPropertyState* pPadding_Left = NULL;
XMLPropertyState* pPadding_Right = NULL;
XMLPropertyState* pPadding_Top = NULL;
XMLPropertyState* pBorder = NULL;
XMLPropertyState* pBorder_Bottom = NULL;
XMLPropertyState* pBorder_Left = NULL;
XMLPropertyState* pBorder_Right = NULL;
XMLPropertyState* pBorder_Top = NULL;
XMLPropertyState* pSWBorder = NULL;
XMLPropertyState* pSWBorder_Bottom = NULL;
XMLPropertyState* pSWBorder_Left = NULL;
XMLPropertyState* pSWBorder_Right = NULL;
XMLPropertyState* pSWBorder_Top = NULL;
XMLPropertyState* pDiagonalTLBR = NULL;
XMLPropertyState* pDiagonalBLTR = NULL;
XMLPropertyState* pAllBorderWidthState = NULL;
XMLPropertyState* pLeftBorderWidthState = NULL;
XMLPropertyState* pRightBorderWidthState = NULL;
XMLPropertyState* pTopBorderWidthState = NULL;
XMLPropertyState* pBottomBorderWidthState = NULL;
XMLPropertyState* pSWAllBorderWidthState = NULL;
XMLPropertyState* pSWLeftBorderWidthState = NULL;
XMLPropertyState* pSWRightBorderWidthState = NULL;
XMLPropertyState* pSWTopBorderWidthState = NULL;
XMLPropertyState* pSWBottomBorderWidthState = NULL;
XMLPropertyState* pDiagonalTLBRWidthState = NULL;
XMLPropertyState* pDiagonalBLTRWidthState = NULL;
XMLPropertyState* pParaMarginLeft = NULL;
XMLPropertyState* pParaMarginLeftRel = NULL;
XMLPropertyState* pParaMarginRight = NULL;
XMLPropertyState* pParaMarginRightRel = NULL;
XMLPropertyState* pParaMarginTop = NULL;
XMLPropertyState* pParaMarginTopRel = NULL;
XMLPropertyState* pParaMarginBottom = NULL;
XMLPropertyState* pParaMarginBottomRel = NULL;
XMLPropertyState* pParaAdjust = NULL;
XMLPropertyState* pParaAdjustLast = NULL;
::std::vector< XMLPropertyState >::iterator aEndIter(rProperties.end());
for( ::std::vector< XMLPropertyState >::iterator aIter = rProperties.begin();
aIter != aEndIter; ++aIter )
{
XMLPropertyState* propertie = &(*aIter);
if (propertie->mnIndex != -1)
{
switch( getPropertySetMapper()->GetEntryContextId( propertie->mnIndex ) )
{
case CTF_SC_ALLPADDING: pPadding = propertie; break;
case CTF_SC_BOTTOMPADDING: pPadding_Bottom = propertie; break;
case CTF_SC_LEFTPADDING: pPadding_Left = propertie; break;
case CTF_SC_RIGHTPADDING: pPadding_Right = propertie; break;
case CTF_SC_TOPPADDING: pPadding_Top = propertie; break;
case CTF_SC_ALLBORDER: pBorder = propertie; break;
case CTF_SC_LEFTBORDER: pBorder_Left = propertie; break;
case CTF_SC_RIGHTBORDER: pBorder_Right = propertie; break;
case CTF_SC_BOTTOMBORDER: pBorder_Bottom = propertie; break;
case CTF_SC_TOPBORDER: pBorder_Top = propertie; break;
case CTF_SC_ALLBORDERWIDTH: pAllBorderWidthState = propertie; break;
case CTF_SC_LEFTBORDERWIDTH: pLeftBorderWidthState = propertie; break;
case CTF_SC_RIGHTBORDERWIDTH: pRightBorderWidthState = propertie; break;
case CTF_SC_TOPBORDERWIDTH: pTopBorderWidthState = propertie; break;
case CTF_SC_BOTTOMBORDERWIDTH: pBottomBorderWidthState = propertie; break;
case CTF_ALLBORDER: pSWBorder = propertie; break;
case CTF_LEFTBORDER: pSWBorder_Left = propertie; break;
case CTF_RIGHTBORDER: pSWBorder_Right = propertie; break;
case CTF_BOTTOMBORDER: pSWBorder_Bottom = propertie; break;
case CTF_TOPBORDER: pSWBorder_Top = propertie; break;
case CTF_ALLBORDERWIDTH: pSWAllBorderWidthState = propertie; break;
case CTF_LEFTBORDERWIDTH: pSWLeftBorderWidthState = propertie; break;
case CTF_RIGHTBORDERWIDTH: pSWRightBorderWidthState = propertie; break;
case CTF_TOPBORDERWIDTH: pSWTopBorderWidthState = propertie; break;
case CTF_BOTTOMBORDERWIDTH: pSWBottomBorderWidthState = propertie; break;
case CTF_SC_DIAGONALTLBR: pDiagonalTLBR = propertie; break;
case CTF_SC_DIAGONALTLBRWIDTH: pDiagonalTLBRWidthState = propertie; break;
case CTF_SC_DIAGONALBLTR: pDiagonalBLTR = propertie; break;
case CTF_SC_DIAGONALBLTRWIDTH: pDiagonalBLTRWidthState = propertie; break;
case CTF_SD_SHAPE_PARA_ADJUST: pParaAdjust = propertie; break;
case CTF_PARA_ADJUSTLAST: pParaAdjustLast = propertie; break;
case CTF_PARALEFTMARGIN: pParaMarginLeft = propertie; break;
case CTF_PARALEFTMARGIN_REL: pParaMarginLeftRel = propertie; break;
case CTF_PARARIGHTMARGIN: pParaMarginRight = propertie; break;
case CTF_PARARIGHTMARGIN_REL: pParaMarginRightRel = propertie; break;
case CTF_PARATOPMARGIN: pParaMarginTop = propertie; break;
case CTF_PARATOPMARGIN_REL: pParaMarginTopRel = propertie; break;
case CTF_PARABOTTOMMARGIN: pParaMarginBottom = propertie; break;
case CTF_PARABOTTOMMARGIN_REL: pParaMarginBottomRel = propertie; break;
}
}
}
if (pPadding && pPadding_Bottom && pPadding_Left && pPadding_Right && pPadding_Top)
{
sal_Int32 nBottom = 0, nTop = 0, nLeft = 0, nRight = 0;
if ((pPadding_Bottom->maValue >>= nBottom) &&
(pPadding_Left->maValue >>= nLeft) &&
(pPadding_Right->maValue >>= nRight) &&
(pPadding_Top->maValue >>= nTop))
{
if ((nBottom == nTop) && (nLeft == nRight) && (nTop == nLeft))
{
pPadding_Bottom->mnIndex = -1;
pPadding_Bottom->maValue.clear();
pPadding_Left->mnIndex = -1;
pPadding_Left->maValue.clear();
pPadding_Right->mnIndex = -1;
pPadding_Right->maValue.clear();
pPadding_Top->mnIndex = -1;
pPadding_Top->maValue.clear();
}
else
{
pPadding->mnIndex = -1;
pPadding->maValue.clear();
}
}
}
if( pBorder )
{
if( pBorder_Left && pBorder_Right && pBorder_Top && pBorder_Bottom )
{
table::BorderLine aLeft, aRight, aTop, aBottom;
pBorder_Left->maValue >>= aLeft;
pBorder_Right->maValue >>= aRight;
pBorder_Top->maValue >>= aTop;
pBorder_Bottom->maValue >>= aBottom;
if( aLeft.Color == aRight.Color && aLeft.InnerLineWidth == aRight.InnerLineWidth &&
aLeft.OuterLineWidth == aRight.OuterLineWidth && aLeft.LineDistance == aRight.LineDistance &&
aLeft.Color == aTop.Color && aLeft.InnerLineWidth == aTop.InnerLineWidth &&
aLeft.OuterLineWidth == aTop.OuterLineWidth && aLeft.LineDistance == aTop.LineDistance &&
aLeft.Color == aBottom.Color && aLeft.InnerLineWidth == aBottom.InnerLineWidth &&
aLeft.OuterLineWidth == aBottom.OuterLineWidth && aLeft.LineDistance == aBottom.LineDistance )
{
pBorder_Left->mnIndex = -1;
pBorder_Left->maValue.clear();
pBorder_Right->mnIndex = -1;
pBorder_Right->maValue.clear();
pBorder_Top->mnIndex = -1;
pBorder_Top->maValue.clear();
pBorder_Bottom->mnIndex = -1;
pBorder_Bottom->maValue.clear();
}
else
{
pBorder->mnIndex = -1;
pBorder->maValue.clear();
}
}
else
{
pBorder->mnIndex = -1;
pBorder->maValue.clear();
}
}
if( pAllBorderWidthState )
{
if( pLeftBorderWidthState && pRightBorderWidthState && pTopBorderWidthState && pBottomBorderWidthState )
{
table::BorderLine aLeft, aRight, aTop, aBottom;
pLeftBorderWidthState->maValue >>= aLeft;
pRightBorderWidthState->maValue >>= aRight;
pTopBorderWidthState->maValue >>= aTop;
pBottomBorderWidthState->maValue >>= aBottom;
if( aLeft.InnerLineWidth == aRight.InnerLineWidth && aLeft.OuterLineWidth == aRight.OuterLineWidth &&
aLeft.LineDistance == aRight.LineDistance && aLeft.InnerLineWidth == aTop.InnerLineWidth &&
aLeft.OuterLineWidth == aTop.OuterLineWidth && aLeft.LineDistance == aTop.LineDistance &&
aLeft.InnerLineWidth == aBottom.InnerLineWidth && aLeft.OuterLineWidth == aBottom.OuterLineWidth &&
aLeft.LineDistance == aBottom.LineDistance )
{
pLeftBorderWidthState->mnIndex = -1;
pLeftBorderWidthState->maValue.clear();
pRightBorderWidthState->mnIndex = -1;
pRightBorderWidthState->maValue.clear();
pTopBorderWidthState->mnIndex = -1;
pTopBorderWidthState->maValue.clear();
pBottomBorderWidthState->mnIndex = -1;
pBottomBorderWidthState->maValue.clear();
}
else
{
pAllBorderWidthState->mnIndex = -1;
pAllBorderWidthState->maValue.clear();
}
}
else
{
pAllBorderWidthState->mnIndex = -1;
pAllBorderWidthState->maValue.clear();
}
}
if (pParaAdjust)
{
pParaAdjust->mnIndex = -1;
pParaAdjust->maValue.clear();
}
if (pParaAdjustLast)
{
pParaAdjustLast->mnIndex = -1;
pParaAdjustLast->maValue.clear();
}
if (pSWBorder)
{
pSWBorder->mnIndex = -1;
pSWBorder->maValue.clear();
}
if (pSWBorder_Left)
{
pSWBorder_Left->mnIndex = -1;
pSWBorder_Left->maValue.clear();
}
if (pSWBorder_Right)
{
pSWBorder_Right->mnIndex = -1;
pSWBorder_Right->maValue.clear();
}
if (pSWBorder_Bottom)
{
pSWBorder_Bottom->mnIndex = -1;
pSWBorder_Bottom->maValue.clear();
}
if (pSWBorder_Top)
{
pSWBorder_Top->mnIndex = -1;
pSWBorder_Top->maValue.clear();
}
if (pSWAllBorderWidthState)
{
pSWAllBorderWidthState->mnIndex = -1;
pSWAllBorderWidthState->maValue.clear();
}
if (pSWLeftBorderWidthState)
{
pSWLeftBorderWidthState->mnIndex = -1;
pSWLeftBorderWidthState->maValue.clear();
}
if (pSWRightBorderWidthState)
{
pSWRightBorderWidthState->mnIndex = -1;
pSWRightBorderWidthState->maValue.clear();
}
if (pSWTopBorderWidthState)
{
pSWTopBorderWidthState->mnIndex = -1;
pSWTopBorderWidthState->maValue.clear();
}
if (pSWBottomBorderWidthState)
{
pSWBottomBorderWidthState->mnIndex = -1;
pSWBottomBorderWidthState->maValue.clear();
}
if (pParaMarginLeft)
{
pParaMarginLeft->mnIndex = -1;
pParaMarginLeft->maValue.clear();
}
if (pParaMarginLeftRel)
{
pParaMarginLeftRel->mnIndex = -1;
pParaMarginLeftRel->maValue.clear();
}
if (pParaMarginRight)
{
pParaMarginRight->mnIndex = -1;
pParaMarginRight->maValue.clear();
}
if (pParaMarginRightRel)
{
pParaMarginRightRel->mnIndex = -1;
pParaMarginRightRel->maValue.clear();
}
if (pParaMarginTop)
{
pParaMarginTop->mnIndex = -1;
pParaMarginTop->maValue.clear();
}
if (pParaMarginTopRel)
{
pParaMarginTopRel->mnIndex = -1;
pParaMarginTopRel->maValue.clear();
}
if (pParaMarginBottom)
{
pParaMarginBottom->mnIndex = -1;
pParaMarginBottom->maValue.clear();
}
if (pParaMarginBottomRel)
{
pParaMarginBottomRel->mnIndex = -1;
pParaMarginBottomRel->maValue.clear();
}
// #i102690# old diagonal line attribute names without "s" are only read, not written
if (pDiagonalTLBRWidthState)
{
pDiagonalTLBRWidthState->mnIndex = -1;
pDiagonalTLBRWidthState->maValue.clear();
}
if (pDiagonalBLTRWidthState)
{
pDiagonalBLTRWidthState->mnIndex = -1;
pDiagonalBLTRWidthState->maValue.clear();
}
SvXMLExportPropertyMapper::ContextFilter(rProperties, rPropSet);
}
/** this method is called for every item that has the MID_FLAG_SPECIAL_ITEM_EXPORT flag set */
void ScXMLCellExportPropertyMapper::handleSpecialItem(
SvXMLAttributeList& /* rAttrList */,
const XMLPropertyState& /* rProperty */,
const SvXMLUnitConverter& /* rUnitConverter */,
const SvXMLNamespaceMap& /* rNamespaceMap */,
const ::std::vector< XMLPropertyState > * /* pProperties */,
sal_uInt32 /* nIdx */ ) const
{
// the SpecialItem NumberFormat must not be handled by this method
// the SpecialItem ConditionlaFormat must not be handled by this method
// the SpecialItem CharBackColor must not be handled by this method
}
ScXMLRowExportPropertyMapper::ScXMLRowExportPropertyMapper(
const UniReference< XMLPropertySetMapper >& rMapper )
: SvXMLExportPropertyMapper(rMapper)
{
}
ScXMLRowExportPropertyMapper::~ScXMLRowExportPropertyMapper()
{
}
void ScXMLRowExportPropertyMapper::ContextFilter(
::std::vector< XMLPropertyState >& /* rProperties */,
uno::Reference< beans::XPropertySet > /* rPropSet */ ) const
{
//#108550#; don't filter the height, so other applications know the calculated height
/* XMLPropertyState* pHeight = NULL;
XMLPropertyState* pOptimalHeight = NULL;
for( ::std::vector< XMLPropertyState >::iterator propertie = rProperties.begin();
propertie != rProperties.end();
++propertie )
{
switch( getPropertySetMapper()->GetEntryContextId( propertie->mnIndex ) )
{
case CTF_SC_ROWHEIGHT: pHeight = propertie; break;
case CTF_SC_ROWOPTIMALHEIGHT: pOptimalHeight = propertie; break;
}
}
if ((pHeight && pOptimalHeight && ::cppu::any2bool( pOptimalHeight->maValue )) ||
(pHeight && !pOptimalHeight))
{
pHeight->mnIndex = -1;
pHeight->maValue.clear();
}
if (pOptimalHeight)
{
pOptimalHeight->mnIndex = -1;
pOptimalHeight->maValue.clear();
}*/
}
ScXMLColumnExportPropertyMapper::ScXMLColumnExportPropertyMapper(
const UniReference< XMLPropertySetMapper >& rMapper )
: SvXMLExportPropertyMapper(rMapper)
{
}
ScXMLColumnExportPropertyMapper::~ScXMLColumnExportPropertyMapper()
{
}
/** this method is called for every item that has the MID_FLAG_SPECIAL_ITEM_EXPORT flag set */
void ScXMLColumnExportPropertyMapper::handleSpecialItem(
SvXMLAttributeList& /* rAttrList */,
const XMLPropertyState& /* rProperty */,
const SvXMLUnitConverter& /* rUnitConverter */,
const SvXMLNamespaceMap& /* rNamespaceMap */,
const ::std::vector< XMLPropertyState > * /* pProperties */,
sal_uInt32 /* nIdx */ ) const
{
// the SpecialItem IsVisible must not be handled by this method
}
ScXMLTableExportPropertyMapper::ScXMLTableExportPropertyMapper(
const UniReference< XMLPropertySetMapper >& rMapper )
: SvXMLExportPropertyMapper(rMapper)
{
}
ScXMLTableExportPropertyMapper::~ScXMLTableExportPropertyMapper()
{
}
/** this method is called for every item that has the MID_FLAG_SPECIAL_ITEM_EXPORT flag set */
void ScXMLTableExportPropertyMapper::handleSpecialItem(
SvXMLAttributeList& /* rAttrList */,
const XMLPropertyState& /* rProperty */,
const SvXMLUnitConverter& /* rUnitConverter */,
const SvXMLNamespaceMap& /* rNamespaceMap */,
const ::std::vector< XMLPropertyState > * /* pProperties */,
sal_uInt32 /* nIdx */ ) const
{
// the SpecialItem PageStyle must not be handled by this method
}
void ScXMLAutoStylePoolP::exportStyleAttributes(
SvXMLAttributeList& rAttrList,
sal_Int32 nFamily,
const ::std::vector< XMLPropertyState >& rProperties,
const SvXMLExportPropertyMapper& rPropExp
, const SvXMLUnitConverter& rUnitConverter,
const SvXMLNamespaceMap& rNamespaceMap
) const
{
SvXMLAutoStylePoolP::exportStyleAttributes( rAttrList, nFamily, rProperties, rPropExp, rUnitConverter, rNamespaceMap );
if (nFamily == XML_STYLE_FAMILY_TABLE_CELL)
{
::std::vector< XMLPropertyState >::const_iterator i(rProperties.begin());
::std::vector< XMLPropertyState >::const_iterator endi(rProperties.end());
while (i != endi)
{
UniReference< XMLPropertySetMapper > aPropMapper(rScXMLExport.GetCellStylesPropertySetMapper());
sal_Int16 nContextID(aPropMapper->GetEntryContextId(i->mnIndex));
switch (nContextID)
{
case CTF_SC_NUMBERFORMAT :
{
sal_Int32 nNumberFormat = 0;
if (i->maValue >>= nNumberFormat)
{
rtl::OUString sAttrValue(rScXMLExport.getDataStyleName(nNumberFormat));
if (sAttrValue.getLength())
{
GetExport().AddAttribute(
aPropMapper->GetEntryNameSpace(i->mnIndex),
aPropMapper->GetEntryXMLName(i->mnIndex),
sAttrValue );
}
}
}
break;
}
++i;
}
}
else if (nFamily == XML_STYLE_FAMILY_TABLE_TABLE)
{
::std::vector< XMLPropertyState >::const_iterator i(rProperties.begin());
::std::vector< XMLPropertyState >::const_iterator endi(rProperties.end());
while(i != endi)
{
UniReference< XMLPropertySetMapper > aPropMapper(rScXMLExport.GetTableStylesPropertySetMapper());
sal_Int16 nContextID(aPropMapper->GetEntryContextId(i->mnIndex));
switch (nContextID)
{
case CTF_SC_MASTERPAGENAME :
{
rtl::OUString sName;
if (i->maValue >>= sName)
{
GetExport().AddAttribute(
aPropMapper->GetEntryNameSpace(i->mnIndex),
aPropMapper->GetEntryXMLName(i->mnIndex),
GetExport().EncodeStyleName( sName ));
}
}
break;
}
++i;
}
}
}
void ScXMLAutoStylePoolP::exportStyleContent(
const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XDocumentHandler > & rHandler,
sal_Int32 nFamily,
const std::vector< XMLPropertyState >& rProperties,
const SvXMLExportPropertyMapper& rPropExp
, const SvXMLUnitConverter& rUnitConverter,
const SvXMLNamespaceMap& rNamespaceMap
) const
{
SvXMLAutoStylePoolP::exportStyleContent( rHandler, nFamily, rProperties, rPropExp, rUnitConverter, rNamespaceMap );
if (nFamily == XML_STYLE_FAMILY_TABLE_CELL)
{
sal_Bool bNotFound = sal_True;
::std::vector< XMLPropertyState >::const_iterator i(rProperties.begin());
::std::vector< XMLPropertyState >::const_iterator endi(rProperties.end());
while ((i != endi) && bNotFound)
{
if (i->mnIndex != -1)
{
sal_Int16 nContextID = rScXMLExport.GetCellStylesPropertySetMapper()->GetEntryContextId(i->mnIndex);
switch (nContextID)
{
case CTF_SC_MAP :
{
uno::Reference<container::XIndexAccess> xIndex( i->maValue, uno::UNO_QUERY );
if ( xIndex.is() )
{
sal_Int32 nConditionCount(xIndex->getCount());
for (sal_Int32 nCondition = 0; nCondition < nConditionCount; ++nCondition)
{
uno::Reference <sheet::XSheetConditionalEntry> xSheetConditionalEntry(xIndex->getByIndex(nCondition), uno::UNO_QUERY);
if (xSheetConditionalEntry.is())
{
rtl::OUString sStyleName(xSheetConditionalEntry->getStyleName());
uno::Reference <sheet::XSheetCondition> xSheetCondition(xSheetConditionalEntry, uno::UNO_QUERY);
if (xSheetCondition.is())
{
sheet::ConditionOperator aOperator = xSheetCondition->getOperator();
if (aOperator != sheet::ConditionOperator_NONE)
{
if (aOperator == sheet::ConditionOperator_FORMULA)
{
rtl::OUString sCondition(RTL_CONSTASCII_USTRINGPARAM("is-true-formula("));
sCondition += xSheetCondition->getFormula1();
sCondition += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(")"));
rScXMLExport.AddAttribute(XML_NAMESPACE_STYLE, XML_CONDITION, sCondition);
rScXMLExport.AddAttribute(XML_NAMESPACE_STYLE, XML_APPLY_STYLE_NAME, rScXMLExport.EncodeStyleName( sStyleName ));
OUString sOUBaseAddress;
ScDocument* pDoc = rScXMLExport.GetDocument();
ScRangeStringConverter::GetStringFromAddress( sOUBaseAddress,
xSheetCondition->getSourcePosition(), pDoc, FormulaGrammar::CONV_OOO );
rScXMLExport.AddAttribute(XML_NAMESPACE_STYLE, XML_BASE_CELL_ADDRESS, sOUBaseAddress);
SvXMLElementExport aMElem(rScXMLExport, XML_NAMESPACE_STYLE, XML_MAP, sal_True, sal_True);
}
else
{
rtl::OUString sCondition;
if (aOperator == sheet::ConditionOperator_BETWEEN ||
aOperator == sheet::ConditionOperator_NOT_BETWEEN)
{
if (aOperator == sheet::ConditionOperator_BETWEEN)
sCondition = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("cell-content-is-between("));
else
sCondition = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("cell-content-is-not-between("));
sCondition += xSheetCondition->getFormula1();
sCondition += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(","));
sCondition += xSheetCondition->getFormula2();
sCondition += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(")"));
}
else
{
sCondition = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("cell-content()"));
switch (aOperator)
{
case sheet::ConditionOperator_LESS:
sCondition += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("<"));
break;
case sheet::ConditionOperator_GREATER:
sCondition += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(">"));
break;
case sheet::ConditionOperator_LESS_EQUAL:
sCondition += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("<="));
break;
case sheet::ConditionOperator_GREATER_EQUAL:
sCondition += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(">="));
break;
case sheet::ConditionOperator_EQUAL:
sCondition += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("="));
break;
case sheet::ConditionOperator_NOT_EQUAL:
sCondition += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("!="));
break;
default:
{
// added to avoid warnings
}
}
sCondition += xSheetCondition->getFormula1();
}
rScXMLExport.AddAttribute(XML_NAMESPACE_STYLE, XML_CONDITION, sCondition);
rScXMLExport.AddAttribute(XML_NAMESPACE_STYLE, XML_APPLY_STYLE_NAME, rScXMLExport.EncodeStyleName( sStyleName ));
OUString sOUBaseAddress;
ScRangeStringConverter::GetStringFromAddress( sOUBaseAddress,
xSheetCondition->getSourcePosition(), rScXMLExport.GetDocument(), FormulaGrammar::CONV_OOO );
rScXMLExport.AddAttribute(XML_NAMESPACE_STYLE, XML_BASE_CELL_ADDRESS, sOUBaseAddress);
SvXMLElementExport aMElem(rScXMLExport, XML_NAMESPACE_STYLE, XML_MAP, sal_True, sal_True);
}
}
}
}
}
}
}
break;
}
}
++i;
}
}
}
ScXMLAutoStylePoolP::ScXMLAutoStylePoolP(ScXMLExport& rTempScXMLExport):
SvXMLAutoStylePoolP(rTempScXMLExport),
rScXMLExport(rTempScXMLExport)
{
}
ScXMLAutoStylePoolP::~ScXMLAutoStylePoolP()
{
}
void ScXMLStyleExport::exportStyleAttributes(
const ::com::sun::star::uno::Reference<
::com::sun::star::style::XStyle > & rStyle )
{
uno::Reference< beans::XPropertySet > xPropSet( rStyle, uno::UNO_QUERY );
if (xPropSet.is())
{
uno::Reference< beans::XPropertySetInfo > xPropSetInfo(xPropSet->getPropertySetInfo());
rtl::OUString sNumberFormat(RTL_CONSTASCII_USTRINGPARAM("NumberFormat"));
if( xPropSetInfo->hasPropertyByName( sNumberFormat ) )
{
uno::Reference< beans::XPropertyState > xPropState( xPropSet, uno::UNO_QUERY );
if( xPropState.is() && (beans::PropertyState_DIRECT_VALUE ==
xPropState->getPropertyState( sNumberFormat )) )
{
sal_Int32 nNumberFormat = 0;
if (xPropSet->getPropertyValue( sNumberFormat ) >>= nNumberFormat)
GetExport().AddAttribute( XML_NAMESPACE_STYLE, XML_DATA_STYLE_NAME,
GetExport().getDataStyleName(nNumberFormat) );
}
}
}
}
void ScXMLStyleExport::exportStyleContent(
const ::com::sun::star::uno::Reference<
::com::sun::star::style::XStyle > & /* rStyle */ )
{
}
ScXMLStyleExport::ScXMLStyleExport(
SvXMLExport& rExp,
const ::rtl::OUString& rPoolStyleName,
SvXMLAutoStylePoolP *pAutoStyleP )
: XMLStyleExport(rExp, rPoolStyleName, pAutoStyleP)
{
}
ScXMLStyleExport::~ScXMLStyleExport()
{
}
XMLScPropHdlFactory::XMLScPropHdlFactory()
: XMLPropertyHandlerFactory()
{
}
XMLScPropHdlFactory::~XMLScPropHdlFactory()
{
}
const XMLPropertyHandler* XMLScPropHdlFactory::GetPropertyHandler( sal_Int32 nType ) const
{
nType &= MID_FLAG_MASK;
XMLPropertyHandler* pHdl((XMLPropertyHandler*)XMLPropertyHandlerFactory::GetPropertyHandler( nType ));
if(!pHdl)
{
switch(nType)
{
case XML_SC_TYPE_CELLPROTECTION :
{
pHdl = new XmlScPropHdl_CellProtection;
}
break;
case XML_SC_TYPE_PRINTCONTENT :
{
pHdl = new XmlScPropHdl_PrintContent;
}
break;
case XML_SC_TYPE_HORIJUSTIFY :
{
pHdl = new XmlScPropHdl_HoriJustify;
}
break;
case XML_SC_TYPE_HORIJUSTIFYSOURCE :
{
pHdl = new XmlScPropHdl_HoriJustifySource;
}
break;
case XML_SC_TYPE_HORIJUSTIFYREPEAT :
{
pHdl = new XmlScPropHdl_HoriJustifyRepeat;
}
break;
case XML_SC_TYPE_ORIENTATION :
{
pHdl = new XmlScPropHdl_Orientation;
}
break;
case XML_SC_TYPE_ROTATEANGLE :
{
pHdl = new XmlScPropHdl_RotateAngle;
}
break;
case XML_SC_TYPE_ROTATEREFERENCE :
{
pHdl = new XmlScPropHdl_RotateReference;
}
break;
case XML_SC_TYPE_VERTJUSTIFY :
{
pHdl = new XmlScPropHdl_VertJustify;
}
break;
case XML_SC_TYPE_BREAKBEFORE :
{
pHdl = new XmlScPropHdl_BreakBefore;
}
break;
case XML_SC_ISTEXTWRAPPED :
{
pHdl = new XmlScPropHdl_IsTextWrapped;
}
break;
case XML_SC_TYPE_EQUAL :
{
pHdl = new XmlScPropHdl_IsEqual;
}
break;
case XML_SC_TYPE_VERTICAL :
{
pHdl = new XmlScPropHdl_Vertical;
}
break;
}
if(pHdl)
PutHdlCache(nType, pHdl);
}
return pHdl;
}
XmlScPropHdl_CellProtection::~XmlScPropHdl_CellProtection()
{
}
bool XmlScPropHdl_CellProtection::equals(
const ::com::sun::star::uno::Any& r1,
const ::com::sun::star::uno::Any& r2 ) const
{
util::CellProtection aCellProtection1, aCellProtection2;
if((r1 >>= aCellProtection1) && (r2 >>= aCellProtection2))
{
return ((aCellProtection1.IsHidden == aCellProtection2.IsHidden) &&
(aCellProtection1.IsLocked == aCellProtection2.IsLocked) &&
(aCellProtection1.IsFormulaHidden == aCellProtection2.IsFormulaHidden));
}
return sal_False;
}
sal_Bool XmlScPropHdl_CellProtection::importXML(
const ::rtl::OUString& rStrImpValue,
::com::sun::star::uno::Any& rValue,
const SvXMLUnitConverter& /* rUnitConverter */ ) const
{
sal_Bool bRetval(sal_False);
util::CellProtection aCellProtection;
sal_Bool bDefault(sal_False);
if (!rValue.hasValue())
{
aCellProtection.IsHidden = sal_False;
aCellProtection.IsLocked = sal_True;
aCellProtection.IsFormulaHidden = sal_False;
aCellProtection.IsPrintHidden = sal_False;
bDefault = sal_True;
}
if ((rValue >>= aCellProtection) || bDefault)
{
if (!IsXMLToken(rStrImpValue, XML_NONE))
{
if (!IsXMLToken(rStrImpValue, XML_HIDDEN_AND_PROTECTED))
{
if (!IsXMLToken(rStrImpValue, XML_PROTECTED))
{
if (!IsXMLToken(rStrImpValue, XML_FORMULA_HIDDEN))
{
sal_Int16 i(0);
while (i < rStrImpValue.getLength() && rStrImpValue[i] != ' ')
++i;
rtl::OUString sFirst(rStrImpValue.copy(0, i));
rtl::OUString sSecond(rStrImpValue.copy(i + 1));
aCellProtection.IsFormulaHidden = sal_False;
aCellProtection.IsHidden = sal_False;
aCellProtection.IsLocked = sal_False;
if ((IsXMLToken(sFirst, XML_PROTECTED)) || (IsXMLToken(sSecond, XML_PROTECTED)))
aCellProtection.IsLocked = sal_True;
if ((IsXMLToken(sFirst, XML_FORMULA_HIDDEN)) || (IsXMLToken(sSecond, XML_FORMULA_HIDDEN)))
aCellProtection.IsFormulaHidden = sal_True;
rValue <<= aCellProtection;
bRetval = sal_True;
}
else
{
aCellProtection.IsFormulaHidden = sal_True;
aCellProtection.IsHidden = sal_False;
aCellProtection.IsLocked = sal_False;
rValue <<= aCellProtection;
bRetval = sal_True;
}
}
else
{
aCellProtection.IsFormulaHidden = sal_False;
aCellProtection.IsHidden = sal_False;
aCellProtection.IsLocked = sal_True;
rValue <<= aCellProtection;
bRetval = sal_True;
}
}
else
{
aCellProtection.IsFormulaHidden = sal_True;
aCellProtection.IsHidden = sal_True;
aCellProtection.IsLocked = sal_True;
rValue <<= aCellProtection;
bRetval = sal_True;
}
}
else
{
aCellProtection.IsFormulaHidden = sal_False;
aCellProtection.IsHidden = sal_False;
aCellProtection.IsLocked = sal_False;
rValue <<= aCellProtection;
bRetval = sal_True;
}
}
return bRetval;
}
sal_Bool XmlScPropHdl_CellProtection::exportXML(
::rtl::OUString& rStrExpValue,
const ::com::sun::star::uno::Any& rValue,
const SvXMLUnitConverter& /* rUnitConverter */ ) const
{
sal_Bool bRetval(sal_False);
util::CellProtection aCellProtection;
if(rValue >>= aCellProtection)
{
if (!(aCellProtection.IsFormulaHidden || aCellProtection.IsHidden || aCellProtection.IsLocked))
{
rStrExpValue = GetXMLToken(XML_NONE);
bRetval = sal_True;
}
else if (aCellProtection.IsHidden)
{
// #i105964# "Hide all" implies "Protected" in the UI, so it must be saved as "hidden-and-protected"
// even if "IsLocked" is not set in the CellProtection struct.
rStrExpValue = GetXMLToken(XML_HIDDEN_AND_PROTECTED);
bRetval = sal_True;
}
else if (aCellProtection.IsLocked && !(aCellProtection.IsFormulaHidden || aCellProtection.IsHidden))
{
rStrExpValue = GetXMLToken(XML_PROTECTED);
bRetval = sal_True;
}
else if (aCellProtection.IsFormulaHidden && !(aCellProtection.IsLocked || aCellProtection.IsHidden))
{
rStrExpValue = GetXMLToken(XML_FORMULA_HIDDEN);
bRetval = sal_True;
}
else if (aCellProtection.IsFormulaHidden && aCellProtection.IsLocked)
{
rStrExpValue = GetXMLToken(XML_PROTECTED);
rStrExpValue += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" "));
rStrExpValue += GetXMLToken(XML_FORMULA_HIDDEN);
bRetval = sal_True;
}
}
return bRetval;
}
XmlScPropHdl_PrintContent::~XmlScPropHdl_PrintContent()
{
}
bool XmlScPropHdl_PrintContent::equals(
const ::com::sun::star::uno::Any& r1,
const ::com::sun::star::uno::Any& r2 ) const
{
util::CellProtection aCellProtection1, aCellProtection2;
if((r1 >>= aCellProtection1) && (r2 >>= aCellProtection2))
{
return (aCellProtection1.IsPrintHidden == aCellProtection2.IsPrintHidden);
}
return sal_False;
}
sal_Bool XmlScPropHdl_PrintContent::importXML(
const ::rtl::OUString& rStrImpValue,
::com::sun::star::uno::Any& rValue,
const SvXMLUnitConverter& /* rUnitConverter */ ) const
{
sal_Bool bRetval(sal_False);
util::CellProtection aCellProtection;
sal_Bool bDefault(sal_False);
if (!rValue.hasValue())
{
aCellProtection.IsHidden = sal_False;
aCellProtection.IsLocked = sal_True;
aCellProtection.IsFormulaHidden = sal_False;
aCellProtection.IsPrintHidden = sal_False;
bDefault = sal_True;
}
if ((rValue >>= aCellProtection) || bDefault)
{
sal_Bool bValue;
if (SvXMLUnitConverter::convertBool(bValue, rStrImpValue))
{
aCellProtection.IsPrintHidden = !bValue;
rValue <<= aCellProtection;
bRetval = sal_True;
}
}
return bRetval;
}
sal_Bool XmlScPropHdl_PrintContent::exportXML(
::rtl::OUString& rStrExpValue,
const ::com::sun::star::uno::Any& rValue,
const SvXMLUnitConverter& /* rUnitConverter */ ) const
{
sal_Bool bRetval(sal_False);
util::CellProtection aCellProtection;
if(rValue >>= aCellProtection)
{
rtl::OUStringBuffer sValue;
SvXMLUnitConverter::convertBool(sValue, !aCellProtection.IsPrintHidden);
rStrExpValue = sValue.makeStringAndClear();
bRetval = sal_True;
}
return bRetval;
}
XmlScPropHdl_HoriJustify::~XmlScPropHdl_HoriJustify()
{
}
bool XmlScPropHdl_HoriJustify::equals(
const ::com::sun::star::uno::Any& r1,
const ::com::sun::star::uno::Any& r2 ) const
{
table::CellHoriJustify aHoriJustify1, aHoriJustify2;
if((r1 >>= aHoriJustify1) && (r2 >>= aHoriJustify2))
return (aHoriJustify1 == aHoriJustify2);
return sal_False;
}
sal_Bool XmlScPropHdl_HoriJustify::importXML(
const ::rtl::OUString& rStrImpValue,
::com::sun::star::uno::Any& rValue,
const SvXMLUnitConverter& /* rUnitConverter */ ) const
{
sal_Bool bRetval(sal_False);
table::CellHoriJustify nValue = table::CellHoriJustify_LEFT;
rValue >>= nValue;
if (nValue != table::CellHoriJustify_REPEAT)
{
if (IsXMLToken(rStrImpValue, XML_START))
{
nValue = table::CellHoriJustify_LEFT;
rValue <<= nValue;
bRetval = sal_True;
}
else if (IsXMLToken(rStrImpValue, XML_END))
{
nValue = table::CellHoriJustify_RIGHT;
rValue <<= nValue;
bRetval = sal_True;
}
else if (IsXMLToken(rStrImpValue, XML_CENTER))
{
nValue = table::CellHoriJustify_CENTER;
rValue <<= nValue;
bRetval = sal_True;
}
else if (IsXMLToken(rStrImpValue, XML_JUSTIFY))
{
nValue = table::CellHoriJustify_BLOCK;
rValue <<= nValue;
bRetval = sal_True;
}
}
else
bRetval = sal_True;
return bRetval;
}
sal_Bool XmlScPropHdl_HoriJustify::exportXML(
::rtl::OUString& rStrExpValue,
const ::com::sun::star::uno::Any& rValue,
const SvXMLUnitConverter& /* rUnitConverter */ ) const
{
table::CellHoriJustify nVal;
sal_Bool bRetval(sal_False);
if(rValue >>= nVal)
{
switch (nVal)
{
case table::CellHoriJustify_REPEAT:
case table::CellHoriJustify_LEFT:
{
rStrExpValue = GetXMLToken(XML_START);
bRetval = sal_True;
}
break;
case table::CellHoriJustify_RIGHT:
{
rStrExpValue = GetXMLToken(XML_END);
bRetval = sal_True;
}
break;
case table::CellHoriJustify_CENTER:
{
rStrExpValue = GetXMLToken(XML_CENTER);
bRetval = sal_True;
}
break;
case table::CellHoriJustify_BLOCK:
{
rStrExpValue = GetXMLToken(XML_JUSTIFY);
bRetval = sal_True;
}
break;
default:
{
// added to avoid warnings
}
}
}
return bRetval;
}
XmlScPropHdl_HoriJustifySource::~XmlScPropHdl_HoriJustifySource()
{
}
bool XmlScPropHdl_HoriJustifySource::equals(
const ::com::sun::star::uno::Any& r1,
const ::com::sun::star::uno::Any& r2 ) const
{
table::CellHoriJustify aHoriJustify1, aHoriJustify2;
if((r1 >>= aHoriJustify1) && (r2 >>= aHoriJustify2))
return (aHoriJustify1 == aHoriJustify2);
return sal_False;
}
sal_Bool XmlScPropHdl_HoriJustifySource::importXML(
const ::rtl::OUString& rStrImpValue,
::com::sun::star::uno::Any& rValue,
const SvXMLUnitConverter& /* rUnitConverter */ ) const
{
sal_Bool bRetval(sal_False);
if (IsXMLToken(rStrImpValue, XML_FIX))
{
bRetval = sal_True;
}
else if (IsXMLToken(rStrImpValue, XML_VALUE_TYPE))
{
table::CellHoriJustify nValue(table::CellHoriJustify_STANDARD);
rValue <<= nValue;
bRetval = sal_True;
}
return bRetval;
}
sal_Bool XmlScPropHdl_HoriJustifySource::exportXML(
::rtl::OUString& rStrExpValue,
const ::com::sun::star::uno::Any& rValue,
const SvXMLUnitConverter& /* rUnitConverter */ ) const
{
table::CellHoriJustify nVal;
sal_Bool bRetval(sal_False);
if(rValue >>= nVal)
{
if (nVal == table::CellHoriJustify_STANDARD)
{
rStrExpValue = GetXMLToken(XML_VALUE_TYPE);
bRetval = sal_True;
}
else
{
rStrExpValue = GetXMLToken(XML_FIX);
bRetval = sal_True;
}
}
return bRetval;
}
XmlScPropHdl_HoriJustifyRepeat::~XmlScPropHdl_HoriJustifyRepeat()
{
}
bool XmlScPropHdl_HoriJustifyRepeat::equals(
const ::com::sun::star::uno::Any& r1,
const ::com::sun::star::uno::Any& r2 ) const
{
table::CellHoriJustify aHoriJustify1, aHoriJustify2;
if((r1 >>= aHoriJustify1) && (r2 >>= aHoriJustify2))
return (aHoriJustify1 == aHoriJustify2);
return sal_False;
}
sal_Bool XmlScPropHdl_HoriJustifyRepeat::importXML(
const ::rtl::OUString& rStrImpValue,
::com::sun::star::uno::Any& rValue,
const SvXMLUnitConverter& /* rUnitConverter */ ) const
{
sal_Bool bRetval(sal_False);
if (IsXMLToken(rStrImpValue, XML_FALSE))
{
bRetval = sal_True;
}
else if (IsXMLToken(rStrImpValue, XML_TRUE))
{
table::CellHoriJustify nValue = table::CellHoriJustify_REPEAT;
rValue <<= nValue;
bRetval = sal_True;
}
return bRetval;
}
sal_Bool XmlScPropHdl_HoriJustifyRepeat::exportXML(
::rtl::OUString& rStrExpValue,
const ::com::sun::star::uno::Any& rValue,
const SvXMLUnitConverter& /* rUnitConverter */ ) const
{
table::CellHoriJustify nVal;
sal_Bool bRetval(sal_False);
if(rValue >>= nVal)
{
if (nVal == table::CellHoriJustify_REPEAT)
{
rStrExpValue = GetXMLToken(XML_TRUE);
bRetval = sal_True;
}
else
{
rStrExpValue = GetXMLToken(XML_FALSE);
bRetval = sal_True;
}
}
return bRetval;
}
XmlScPropHdl_Orientation::~XmlScPropHdl_Orientation()
{
}
bool XmlScPropHdl_Orientation::equals(
const ::com::sun::star::uno::Any& r1,
const ::com::sun::star::uno::Any& r2 ) const
{
table::CellOrientation aOrientation1, aOrientation2;
if((r1 >>= aOrientation1) && (r2 >>= aOrientation2))
return (aOrientation1 == aOrientation2);
return sal_False;
}
sal_Bool XmlScPropHdl_Orientation::importXML(
const ::rtl::OUString& rStrImpValue,
::com::sun::star::uno::Any& rValue,
const SvXMLUnitConverter& /* rUnitConverter */ ) const
{
sal_Bool bRetval(sal_False);
table::CellOrientation nValue;
if (IsXMLToken(rStrImpValue, XML_LTR))
{
nValue = table::CellOrientation_STANDARD;
rValue <<= nValue;
bRetval = sal_True;
}
else if (IsXMLToken(rStrImpValue, XML_TTB))
{
nValue = table::CellOrientation_STACKED;
rValue <<= nValue;
bRetval = sal_True;
}
return bRetval;
}
sal_Bool XmlScPropHdl_Orientation::exportXML(
::rtl::OUString& rStrExpValue,
const ::com::sun::star::uno::Any& rValue,
const SvXMLUnitConverter& /* rUnitConverter */ ) const
{
table::CellOrientation nVal;
sal_Bool bRetval(sal_False);
if(rValue >>= nVal)
{
switch (nVal)
{
case table::CellOrientation_STACKED :
{
rStrExpValue = GetXMLToken(XML_TTB);
bRetval = sal_True;
}
break;
default:
{
rStrExpValue = GetXMLToken(XML_LTR);
bRetval = sal_True;
}
break;
}
}
return bRetval;
}
XmlScPropHdl_RotateAngle::~XmlScPropHdl_RotateAngle()
{
}
bool XmlScPropHdl_RotateAngle::equals(
const ::com::sun::star::uno::Any& r1,
const ::com::sun::star::uno::Any& r2 ) const
{
sal_Int32 aAngle1 = 0, aAngle2 = 0;
if((r1 >>= aAngle1) && (r2 >>= aAngle2))
return (aAngle1 == aAngle2);
return sal_False;
}
sal_Bool XmlScPropHdl_RotateAngle::importXML(
const ::rtl::OUString& rStrImpValue,
::com::sun::star::uno::Any& rValue,
const SvXMLUnitConverter& /* rUnitConverter */ ) const
{
sal_Bool bRetval(sal_False);
sal_Int32 nValue;
if (SvXMLUnitConverter::convertNumber(nValue, rStrImpValue))
{
nValue *= 100;
rValue <<= nValue;
bRetval = sal_True;
}
return bRetval;
}
sal_Bool XmlScPropHdl_RotateAngle::exportXML(
::rtl::OUString& rStrExpValue,
const ::com::sun::star::uno::Any& rValue,
const SvXMLUnitConverter& /* rUnitConverter */ ) const
{
sal_Int32 nVal = 0;
sal_Bool bRetval(sal_False);
if(rValue >>= nVal)
{
rtl::OUStringBuffer sValue;
SvXMLUnitConverter::convertNumber(sValue, sal_Int32(nVal / 100));
rStrExpValue = sValue.makeStringAndClear();
bRetval = sal_True;
}
return bRetval;
}
XmlScPropHdl_RotateReference::~XmlScPropHdl_RotateReference()
{
}
bool XmlScPropHdl_RotateReference::equals(
const ::com::sun::star::uno::Any& r1,
const ::com::sun::star::uno::Any& r2 ) const
{
table::CellVertJustify aReference1, aReference2;
if((r1 >>= aReference1) && (r2 >>= aReference2))
return (aReference1 == aReference2);
return sal_False;
}
sal_Bool XmlScPropHdl_RotateReference::importXML(
const ::rtl::OUString& rStrImpValue,
::com::sun::star::uno::Any& rValue,
const SvXMLUnitConverter& /* rUnitConverter */ ) const
{
sal_Bool bRetval(sal_False);
table::CellVertJustify nValue;
if (IsXMLToken(rStrImpValue, XML_NONE))
{
nValue = table::CellVertJustify_STANDARD;
rValue <<= nValue;
bRetval = sal_True;
}
else if (IsXMLToken(rStrImpValue, XML_BOTTOM))
{
nValue = table::CellVertJustify_BOTTOM;
rValue <<= nValue;
bRetval = sal_True;
}
else if (IsXMLToken(rStrImpValue, XML_TOP))
{
nValue = table::CellVertJustify_TOP;
rValue <<= nValue;
bRetval = sal_True;
}
else if (IsXMLToken(rStrImpValue, XML_CENTER))
{
nValue = table::CellVertJustify_CENTER;
rValue <<= nValue;
bRetval = sal_True;
}
return bRetval;
}
sal_Bool XmlScPropHdl_RotateReference::exportXML(
::rtl::OUString& rStrExpValue,
const ::com::sun::star::uno::Any& rValue,
const SvXMLUnitConverter& /* rUnitConverter */ ) const
{
table::CellVertJustify nVal;
sal_Bool bRetval(sal_False);
if(rValue >>= nVal)
{
switch (nVal)
{
case table::CellVertJustify_BOTTOM :
{
rStrExpValue = GetXMLToken(XML_BOTTOM);
bRetval = sal_True;
}
break;
case table::CellVertJustify_CENTER :
{
rStrExpValue = GetXMLToken(XML_CENTER);
bRetval = sal_True;
}
break;
case table::CellVertJustify_STANDARD :
{
rStrExpValue = GetXMLToken(XML_NONE);
bRetval = sal_True;
}
break;
case table::CellVertJustify_TOP :
{
rStrExpValue = GetXMLToken(XML_TOP);
bRetval = sal_True;
}
break;
default:
{
// added to avoid warnings
}
}
}
return bRetval;
}
XmlScPropHdl_VertJustify::~XmlScPropHdl_VertJustify()
{
}
bool XmlScPropHdl_VertJustify::equals(
const ::com::sun::star::uno::Any& r1,
const ::com::sun::star::uno::Any& r2 ) const
{
table::CellVertJustify aReference1, aReference2;
if((r1 >>= aReference1) && (r2 >>= aReference2))
return (aReference1 == aReference2);
return sal_False;
}
sal_Bool XmlScPropHdl_VertJustify::importXML(
const ::rtl::OUString& rStrImpValue,
::com::sun::star::uno::Any& rValue,
const SvXMLUnitConverter& /* rUnitConverter */ ) const
{
sal_Bool bRetval(sal_False);
table::CellVertJustify nValue;
if (IsXMLToken(rStrImpValue, XML_AUTOMATIC))
{
nValue = table::CellVertJustify_STANDARD;
rValue <<= nValue;
bRetval = sal_True;
}
else if (IsXMLToken(rStrImpValue, XML_BOTTOM))
{
nValue = table::CellVertJustify_BOTTOM;
rValue <<= nValue;
bRetval = sal_True;
}
else if (IsXMLToken(rStrImpValue, XML_TOP))
{
nValue = table::CellVertJustify_TOP;
rValue <<= nValue;
bRetval = sal_True;
}
else if (IsXMLToken(rStrImpValue, XML_MIDDLE))
{
nValue = table::CellVertJustify_CENTER;
rValue <<= nValue;
bRetval = sal_True;
}
return bRetval;
}
sal_Bool XmlScPropHdl_VertJustify::exportXML(
::rtl::OUString& rStrExpValue,
const ::com::sun::star::uno::Any& rValue,
const SvXMLUnitConverter& /* rUnitConverter */ ) const
{
table::CellVertJustify nVal;
sal_Bool bRetval(sal_False);
if(rValue >>= nVal)
{
switch (nVal)
{
case table::CellVertJustify_BOTTOM :
{
rStrExpValue = GetXMLToken(XML_BOTTOM);
bRetval = sal_True;
}
break;
case table::CellVertJustify_CENTER :
{
rStrExpValue = GetXMLToken(XML_MIDDLE);
bRetval = sal_True;
}
break;
case table::CellVertJustify_STANDARD :
{
rStrExpValue = GetXMLToken(XML_AUTOMATIC);
bRetval = sal_True;
}
break;
case table::CellVertJustify_TOP :
{
rStrExpValue = GetXMLToken(XML_TOP);
bRetval = sal_True;
}
break;
default:
{
// added to avoid warnings
}
}
}
return bRetval;
}
XmlScPropHdl_BreakBefore::~XmlScPropHdl_BreakBefore()
{
}
bool XmlScPropHdl_BreakBefore::equals(
const ::com::sun::star::uno::Any& r1,
const ::com::sun::star::uno::Any& r2 ) const
{
sal_Bool aBreak1 = 0, aBreak2 = 0;
if((r1 >>= aBreak1) && (r2 >>= aBreak2))
return (aBreak1 == aBreak2);
return sal_False;
}
sal_Bool XmlScPropHdl_BreakBefore::importXML(
const ::rtl::OUString& rStrImpValue,
::com::sun::star::uno::Any& rValue,
const SvXMLUnitConverter& /* rUnitConverter */ ) const
{
sal_Bool bRetval(sal_False);
sal_Bool bValue;
if (IsXMLToken(rStrImpValue, XML_AUTO))
{
bValue = sal_False;
rValue = ::cppu::bool2any(bValue);
bRetval = sal_True;
}
else if (IsXMLToken(rStrImpValue, XML_PAGE))
{
bValue = sal_True;
rValue = ::cppu::bool2any(bValue);
bRetval = sal_True;
}
return bRetval;
}
sal_Bool XmlScPropHdl_BreakBefore::exportXML(
::rtl::OUString& rStrExpValue,
const ::com::sun::star::uno::Any& rValue,
const SvXMLUnitConverter& /* rUnitConverter */ ) const
{
sal_Bool bRetval(sal_False);
if(::cppu::any2bool(rValue))
{
rStrExpValue = GetXMLToken(XML_PAGE);
bRetval = sal_True;
}
else
{
rStrExpValue = GetXMLToken(XML_AUTO);
bRetval = sal_True;
}
return bRetval;
}
XmlScPropHdl_IsTextWrapped::~XmlScPropHdl_IsTextWrapped()
{
}
bool XmlScPropHdl_IsTextWrapped::equals(
const ::com::sun::star::uno::Any& r1,
const ::com::sun::star::uno::Any& r2 ) const
{
return (::cppu::any2bool(r1) == ::cppu::any2bool(r2));
}
sal_Bool XmlScPropHdl_IsTextWrapped::importXML(
const ::rtl::OUString& rStrImpValue,
::com::sun::star::uno::Any& rValue,
const SvXMLUnitConverter& /* rUnitConverter */ ) const
{
sal_Bool bRetval(sal_False);
if (IsXMLToken(rStrImpValue, XML_WRAP))
{
rValue = ::cppu::bool2any(sal_True);
bRetval = sal_True;
}
else if (IsXMLToken(rStrImpValue, XML_NO_WRAP))
{
rValue = ::cppu::bool2any(sal_False);
bRetval = sal_True;
}
return bRetval;
}
sal_Bool XmlScPropHdl_IsTextWrapped::exportXML(
::rtl::OUString& rStrExpValue,
const ::com::sun::star::uno::Any& rValue,
const SvXMLUnitConverter& /* rUnitConverter */ ) const
{
sal_Bool bRetval(sal_False);
if (::cppu::any2bool(rValue))
{
rStrExpValue = GetXMLToken(XML_WRAP);
bRetval = sal_True;
}
else
{
rStrExpValue = GetXMLToken(XML_NO_WRAP);
bRetval = sal_True;
}
return bRetval;
}
sal_Bool XmlScPropHdl_IsEqual::importXML( const ::rtl::OUString& /* rStrImpValue */,
::com::sun::star::uno::Any& /* rValue */,
const SvXMLUnitConverter& /* rUnitConverter */ ) const
{
DBG_ERROR("should never be called");
return sal_False;
}
sal_Bool XmlScPropHdl_IsEqual::exportXML( ::rtl::OUString& /* rStrExpValue */,
const ::com::sun::star::uno::Any& /* rValue */,
const SvXMLUnitConverter& /* rUnitConverter */ ) const
{
DBG_ERROR("should never be called");
return sal_False;
}
XmlScPropHdl_Vertical::~XmlScPropHdl_Vertical()
{
}
bool XmlScPropHdl_Vertical::equals(
const ::com::sun::star::uno::Any& r1,
const ::com::sun::star::uno::Any& r2 ) const
{
return (::cppu::any2bool(r1) == ::cppu::any2bool(r2));
}
sal_Bool XmlScPropHdl_Vertical::importXML(
const ::rtl::OUString& rStrImpValue,
::com::sun::star::uno::Any& rValue,
const SvXMLUnitConverter& /* rUnitConverter */ ) const
{
sal_Bool bRetval(sal_False);
if (IsXMLToken(rStrImpValue, XML_AUTO))
{
rValue = ::cppu::bool2any(sal_True);
bRetval = sal_True;
}
else if (IsXMLToken(rStrImpValue, XML_0))
{
rValue = ::cppu::bool2any(sal_False);
bRetval = sal_True;
}
return bRetval;
}
sal_Bool XmlScPropHdl_Vertical::exportXML(
::rtl::OUString& rStrExpValue,
const ::com::sun::star::uno::Any& rValue,
const SvXMLUnitConverter& /* rUnitConverter */ ) const
{
sal_Bool bRetval(sal_False);
if (::cppu::any2bool(rValue))
{
rStrExpValue = GetXMLToken(XML_AUTO);
bRetval = sal_True;
}
else
{
rStrExpValue = GetXMLToken(XML_0);
bRetval = sal_True;
}
return bRetval;
}