[Libreoffice-commits] core.git: 8 commits - offapi/com sw/inc sw/qa sw/source writerfilter/source
Miklos Vajna
vmiklos at collabora.co.uk
Wed Nov 6 16:54:20 CET 2013
offapi/com/sun/star/style/Style.idl | 10 +++++
sw/inc/cmdid.h | 1
sw/inc/docstyle.hxx | 2 +
sw/inc/format.hxx | 6 +++
sw/inc/unoprnms.hxx | 1
sw/qa/extras/ooxmlexport/ooxmlexport.cxx | 5 ++
sw/source/core/attr/format.cxx | 23 ++++++++++++
sw/source/core/unocore/unomap.cxx | 3 +
sw/source/core/unocore/unoprnms.cxx | 1
sw/source/core/unocore/unostyle.cxx | 15 +++++++
sw/source/filter/ww8/docxattributeoutput.cxx | 37 +++++++++++++++++++
sw/source/filter/ww8/docxtablestyleexport.cxx | 23 +++---------
sw/source/filter/ww8/wrtww8.hxx | 2 -
sw/source/filter/ww8/ww8atr.cxx | 2 -
sw/source/ui/app/docstyle.cxx | 46 ++++++++++++++++++++++++
writerfilter/source/dmapper/StyleSheetTable.cxx | 40 +++++++++++++++-----
writerfilter/source/dmapper/StyleSheetTable.hxx | 11 +++--
17 files changed, 194 insertions(+), 34 deletions(-)
New commits:
commit eb3942a24918e9537c85cc79a405fff8c167d456
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date: Wed Nov 6 15:11:05 2013 +0100
DOCX export of para style's qFormat, rsid and friends
Change-Id: I4ed35f2b497fec96d012303001d4861768daef6a
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
index 6aeae7b..1355f51 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
@@ -1299,6 +1299,11 @@ DECLARE_OOXML_TEST(testStyleInheritance, "style-inheritance.docx")
assertXPath(pXmlStyles, "/w:styles/w:style[@w:styleId='TableNormal']/w:tblPr/w:tblCellMar/w:left", "w", "108");
assertXPath(pXmlStyles, "/w:styles/w:style[@w:styleId='TableNormal']/w:semiHidden", 1);
assertXPath(pXmlStyles, "/w:styles/w:style[@w:styleId='TableNormal']/w:unhideWhenUsed", 1);
+
+ // Additional para style properties should be also roundtripped.
+ assertXPath(pXmlStyles, "/w:styles/w:style[@w:styleId='ListParagraph']/w:uiPriority", "val", "34");
+ assertXPath(pXmlStyles, "/w:styles/w:style[@w:styleId='Normal']/w:qFormat", 1);
+ assertXPath(pXmlStyles, "/w:styles/w:style[@w:styleId='Normal']/w:rsid", "val", "00780346");
}
DECLARE_OOXML_TEST(testCalendar1, "calendar1.docx")
diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx
index 755f606..8f5859f 100644
--- a/sw/source/filter/ww8/docxattributeoutput.cxx
+++ b/sw/source/filter/ww8/docxattributeoutput.cxx
@@ -3609,6 +3609,43 @@ void DocxAttributeOutput::StartStyle( const OUString& rName, StyleType eType,
FSNS( XML_w, XML_val ), OUStringToOString( OUString( rName ), RTL_TEXTENCODING_UTF8 ).getStr(),
FSEND );
+ if (eType == STYLE_TYPE_PARA)
+ {
+ const SwFmt* pFmt = m_rExport.pStyles->GetSwFmt(nId);
+ uno::Any aAny;
+ pFmt->GetGrabBagItem(aAny);
+ const uno::Sequence<beans::PropertyValue>& rGrabBag = aAny.get< uno::Sequence<beans::PropertyValue> >();
+
+ bool bQFormat = false, bUnhideWhenUsed = false;
+ OUString aRsid, aUiPriority;
+ for (sal_Int32 i = 0; i < rGrabBag.getLength(); ++i)
+ {
+ if (rGrabBag[i].Name == "uiPriority")
+ aUiPriority = rGrabBag[i].Value.get<OUString>();
+ else if (rGrabBag[i].Name == "qFormat")
+ bQFormat = true;
+ else if (rGrabBag[i].Name == "rsid")
+ aRsid = rGrabBag[i].Value.get<OUString>();
+ else if (rGrabBag[i].Name == "unhideWhenUsed")
+ bUnhideWhenUsed = true;
+ else
+ SAL_WARN("sw.ww8", "Unhandled style property: " << rGrabBag[i].Name);
+ }
+
+ if (!aUiPriority.isEmpty())
+ m_pSerializer->singleElementNS(XML_w, XML_uiPriority,
+ FSNS(XML_w, XML_val), OUStringToOString(aUiPriority, RTL_TEXTENCODING_UTF8).getStr(),
+ FSEND);
+ if (bQFormat)
+ m_pSerializer->singleElementNS(XML_w, XML_qFormat, FSEND);
+ if (bUnhideWhenUsed)
+ m_pSerializer->singleElementNS(XML_w, XML_unhideWhenUsed, FSEND);
+ if (!aRsid.isEmpty())
+ m_pSerializer->singleElementNS(XML_w, XML_rsid,
+ FSNS(XML_w, XML_val), OUStringToOString(aRsid, RTL_TEXTENCODING_UTF8).getStr(),
+ FSEND);
+ }
+
if ( nBase != 0x0FFF && eType != STYLE_TYPE_LIST)
{
m_pSerializer->singleElementNS( XML_w, XML_basedOn,
diff --git a/sw/source/filter/ww8/docxtablestyleexport.cxx b/sw/source/filter/ww8/docxtablestyleexport.cxx
index 61eea42..3fc7246 100644
--- a/sw/source/filter/ww8/docxtablestyleexport.cxx
+++ b/sw/source/filter/ww8/docxtablestyleexport.cxx
@@ -14,7 +14,6 @@
#include <oox/token/tokens.hxx>
#include <comphelper/sequenceashashmap.hxx>
-#include <comphelper/string.hxx>
#include <rtl/strbuf.hxx>
#include <com/sun/star/beans/PropertyValue.hpp>
@@ -538,8 +537,7 @@ void DocxTableStyleExport::Impl::tableStyleTblStylePr(uno::Sequence<beans::Prope
void DocxTableStyleExport::Impl::TableStyle(uno::Sequence<beans::PropertyValue>& rStyle)
{
bool bDefault = false, bCustomStyle = false, bQFormat = false, bSemiHidden = false, bUnhideWhenUsed = false;
- OUString aStyleId, aName, aBasedOn;
- sal_Int32 nUiPriority = 0, nRsid = 0;
+ OUString aStyleId, aName, aBasedOn, aRsid, aUiPriority;
uno::Sequence<beans::PropertyValue> aPPr, aRPr, aTblPr, aTcPr;
std::vector< uno::Sequence<beans::PropertyValue> > aTblStylePrs;
for (sal_Int32 i = 0; i < rStyle.getLength(); ++i)
@@ -555,7 +553,7 @@ void DocxTableStyleExport::Impl::TableStyle(uno::Sequence<beans::PropertyValue>&
else if (rStyle[i].Name == "basedOn")
aBasedOn = rStyle[i].Value.get<OUString>();
else if (rStyle[i].Name == "uiPriority")
- nUiPriority = rStyle[i].Value.get<sal_Int32>();
+ aUiPriority = rStyle[i].Value.get<OUString>();
else if (rStyle[i].Name == "qFormat")
bQFormat = true;
else if (rStyle[i].Name == "semiHidden")
@@ -563,7 +561,7 @@ void DocxTableStyleExport::Impl::TableStyle(uno::Sequence<beans::PropertyValue>&
else if (rStyle[i].Name == "unhideWhenUsed")
bUnhideWhenUsed = true;
else if (rStyle[i].Name == "rsid")
- nRsid = rStyle[i].Value.get<sal_Int32>();
+ aRsid = rStyle[i].Value.get<OUString>();
else if (rStyle[i].Name == "pPr")
aPPr = rStyle[i].Value.get< uno::Sequence<beans::PropertyValue> >();
else if (rStyle[i].Name == "rPr")
@@ -594,9 +592,9 @@ void DocxTableStyleExport::Impl::TableStyle(uno::Sequence<beans::PropertyValue>&
m_pSerializer->singleElementNS(XML_w, XML_basedOn,
FSNS(XML_w, XML_val), OUStringToOString(aBasedOn, RTL_TEXTENCODING_UTF8).getStr(),
FSEND);
- if (nUiPriority)
+ if (!aUiPriority.isEmpty())
m_pSerializer->singleElementNS(XML_w, XML_uiPriority,
- FSNS(XML_w, XML_val), OString::number(nUiPriority),
+ FSNS(XML_w, XML_val), OUStringToOString(aUiPriority, RTL_TEXTENCODING_UTF8).getStr(),
FSEND);
if (bQFormat)
m_pSerializer->singleElementNS(XML_w, XML_qFormat, FSEND);
@@ -604,17 +602,10 @@ void DocxTableStyleExport::Impl::TableStyle(uno::Sequence<beans::PropertyValue>&
m_pSerializer->singleElementNS(XML_w, XML_semiHidden, FSEND);
if (bUnhideWhenUsed)
m_pSerializer->singleElementNS(XML_w, XML_unhideWhenUsed, FSEND);
- if (nRsid)
- {
- // We want the rsid as a hex string, but always with the length of 8.
- OStringBuffer aBuf = OString::number(nRsid, 16);
- OStringBuffer aStr;
- comphelper::string::padToLength(aStr, 8 - aBuf.getLength(), '0');
- aStr.append(aBuf.getStr());
+ if (!aRsid.isEmpty())
m_pSerializer->singleElementNS(XML_w, XML_rsid,
- FSNS(XML_w, XML_val), aStr.getStr(),
+ FSNS(XML_w, XML_val), OUStringToOString(aRsid, RTL_TEXTENCODING_UTF8).getStr(),
FSEND);
- }
tableStylePPr(aPPr);
tableStyleRPr(aRPr);
diff --git a/writerfilter/source/dmapper/StyleSheetTable.cxx b/writerfilter/source/dmapper/StyleSheetTable.cxx
index b60e667..85626e1 100644
--- a/writerfilter/source/dmapper/StyleSheetTable.cxx
+++ b/writerfilter/source/dmapper/StyleSheetTable.cxx
@@ -41,6 +41,7 @@
#include <map>
#include <stdio.h>
#include <rtl/ustrbuf.hxx>
+#include <comphelper/string.hxx>
#include <dmapperLoggers.hxx>
@@ -621,8 +622,14 @@ void StyleSheetTable::lcl_sprm(Sprm & rSprm)
beans::PropertyValue aValue;
if (nSprmId == NS_ooxml::LN_CT_Style_rsid)
{
+ // We want the rsid as a hex string, but always with the length of 8.
+ OUStringBuffer aBuf = OUString::number(nIntValue, 16);
+ OUStringBuffer aStr;
+ comphelper::string::padToLength(aStr, 8 - aBuf.getLength(), '0');
+ aStr.append(aBuf.getStr());
+
aValue.Name = "rsid";
- aValue.Value = uno::makeAny(nIntValue);
+ aValue.Value = uno::makeAny(aStr.makeStringAndClear());
}
else if (nSprmId == NS_ooxml::LN_CT_Style_qFormat)
aValue.Name = "qFormat";
@@ -633,7 +640,7 @@ void StyleSheetTable::lcl_sprm(Sprm & rSprm)
else
{
aValue.Name = "uiPriority";
- aValue.Value = uno::makeAny(nIntValue);
+ aValue.Value = uno::makeAny(OUString::number(nIntValue));
}
pEntry->AppendInteropGrabBag(aValue);
}
commit e2790597d9cd534321bf95cb72dcad13e405cc47
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date: Wed Nov 6 15:56:46 2013 +0100
MSWordStyles::GetSwFmt: be explicit about what format to return
Change-Id: Ib8afdc757c30ca1571d8d7ec7145b749952edbca
diff --git a/sw/source/filter/ww8/wrtww8.hxx b/sw/source/filter/ww8/wrtww8.hxx
index 5944cfe..09db650 100644
--- a/sw/source/filter/ww8/wrtww8.hxx
+++ b/sw/source/filter/ww8/wrtww8.hxx
@@ -1558,7 +1558,7 @@ public:
/// Get styleId of the nId-th style (nId is its position in pFmtA).
OString GetStyleId(sal_uInt16 nId) const;
- const SwFmt* GetSwFmt() const { return (*pFmtA); }
+ const SwFmt* GetSwFmt(sal_uInt16 nId) const { return pFmtA[nId]; }
};
sal_Int16 GetWordFirstLineOffset(const SwNumFmt &rFmt);
diff --git a/sw/source/filter/ww8/ww8atr.cxx b/sw/source/filter/ww8/ww8atr.cxx
index 56d32c2..b0630a8 100644
--- a/sw/source/filter/ww8/ww8atr.cxx
+++ b/sw/source/filter/ww8/ww8atr.cxx
@@ -3665,7 +3665,7 @@ void WW8AttributeOutput::SectionBreak( sal_uInt8 nC, const WW8_SepInfo* /*pSecti
sal_uInt32 AttributeOutputBase::GridCharacterPitch( const SwTextGridItem& rGrid ) const
{
MSWordStyles * pStyles = GetExport().pStyles;
- const SwFmt * pSwFmt = pStyles->GetSwFmt();
+ const SwFmt * pSwFmt = pStyles->GetSwFmt(0);
sal_uInt32 nPageCharSize = 0;
commit 3ebfef72037f9b4e33e9ca77fae0d03706ef5d83
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date: Wed Nov 6 14:55:31 2013 +0100
DOCX import of para style's qFormat, rsid and friends
Load these into the new style-level InteropGrabBag.
Change-Id: I89b138c334dd3de36b97ef103d5483ca141a6585
diff --git a/writerfilter/source/dmapper/StyleSheetTable.cxx b/writerfilter/source/dmapper/StyleSheetTable.cxx
index 28e1510..b60e667 100644
--- a/writerfilter/source/dmapper/StyleSheetTable.cxx
+++ b/writerfilter/source/dmapper/StyleSheetTable.cxx
@@ -173,16 +173,22 @@ PropertyMapPtr TableStyleSheetEntry::GetProperties( sal_Int32 nMask, StyleSheetE
return pProps;
}
-beans::PropertyValue StyleSheetEntry::GetInteropGrabBag()
+beans::PropertyValues StyleSheetEntry::GetInteropGrabBagSeq()
{
- beans::PropertyValue aRet;
- aRet.Name = sStyleIdentifierI;
-
uno::Sequence<beans::PropertyValue> aSeq(m_aInteropGrabBag.size());
beans::PropertyValue* pSeq = aSeq.getArray();
for (std::vector<beans::PropertyValue>::iterator i = m_aInteropGrabBag.begin(); i != m_aInteropGrabBag.end(); ++i)
*pSeq++ = *i;
+ return aSeq;
+}
+
+beans::PropertyValue StyleSheetEntry::GetInteropGrabBag()
+{
+ beans::PropertyValue aRet;
+ aRet.Name = sStyleIdentifierI;
+
+ beans::PropertyValues aSeq = GetInteropGrabBagSeq();;
aRet.Value = uno::makeAny(aSeq);
return aRet;
}
@@ -609,9 +615,9 @@ void StyleSheetTable::lcl_sprm(Sprm & rSprm)
case NS_ooxml::LN_CT_Style_semiHidden:
case NS_ooxml::LN_CT_Style_unhideWhenUsed:
case NS_ooxml::LN_CT_Style_uiPriority:
- if(m_pImpl->m_pCurrentEntry->nStyleTypeCode == STYLE_TYPE_TABLE)
+ if(m_pImpl->m_pCurrentEntry->nStyleTypeCode == STYLE_TYPE_TABLE || m_pImpl->m_pCurrentEntry->nStyleTypeCode == STYLE_TYPE_PARA)
{
- TableStyleSheetEntry* pTableEntry = static_cast<TableStyleSheetEntry *>(m_pImpl->m_pCurrentEntry.get());
+ StyleSheetEntryPtr pEntry = m_pImpl->m_pCurrentEntry;
beans::PropertyValue aValue;
if (nSprmId == NS_ooxml::LN_CT_Style_rsid)
{
@@ -629,7 +635,7 @@ void StyleSheetTable::lcl_sprm(Sprm & rSprm)
aValue.Name = "uiPriority";
aValue.Value = uno::makeAny(nIntValue);
}
- pTableEntry->AppendInteropGrabBag(aValue);
+ pEntry->AppendInteropGrabBag(aValue);
}
break;
case NS_ooxml::LN_CT_Style_tblPr: //contains table properties
@@ -1166,6 +1172,13 @@ void StyleSheetTable::ApplyStyleSheets( FontTablePtr rFontTable )
{
xStyles->insertByName( sConvertedStyleName, uno::makeAny( xStyle) );
}
+
+ beans::PropertyValues aGrabBag = pEntry->GetInteropGrabBagSeq();
+ if (aGrabBag.hasElements())
+ {
+ uno::Reference<beans::XPropertySet> xPropertySet(xStyle, uno::UNO_QUERY);
+ xPropertySet->setPropertyValue("StyleInteropGrabBag", uno::makeAny(aGrabBag));
+ }
}
else if(pEntry->nStyleTypeCode == STYLE_TYPE_TABLE)
{
diff --git a/writerfilter/source/dmapper/StyleSheetTable.hxx b/writerfilter/source/dmapper/StyleSheetTable.hxx
index db9be28..25c3065 100644
--- a/writerfilter/source/dmapper/StyleSheetTable.hxx
+++ b/writerfilter/source/dmapper/StyleSheetTable.hxx
@@ -24,6 +24,7 @@
#include <WriterFilterDllApi.hxx>
#include <dmapper/DomainMapper.hxx>
#include <com/sun/star/lang/XComponent.hpp>
+#include <com/sun/star/beans/PropertyValues.hpp>
#include <PropertyMap.hxx>
#include <FontTable.hxx>
#include <resourcemodel/LoggedResources.hxx>
@@ -68,7 +69,8 @@ public:
std::vector<beans::PropertyValue> aLsdExceptions; ///< List of lsdException attribute lists
void AppendInteropGrabBag(beans::PropertyValue aValue);
- beans::PropertyValue GetInteropGrabBag();
+ beans::PropertyValue GetInteropGrabBag(); ///< Used for table styles, has a name.
+ beans::PropertyValues GetInteropGrabBagSeq(); ///< Used for existing styles, just a list of properties.
StyleSheetEntry();
virtual ~StyleSheetEntry();
commit d66029491060db5f45532d0a7e3e3c52b4b11d1e
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date: Wed Nov 6 14:41:04 2013 +0100
writerfilter: make GrabBag methods accessible for para styles
Change-Id: Ifbb5eaa85340e07d34fa2b9cb2ea4f83f74ffab8
diff --git a/writerfilter/source/dmapper/StyleSheetTable.cxx b/writerfilter/source/dmapper/StyleSheetTable.cxx
index b4c5d3e..28e1510 100644
--- a/writerfilter/source/dmapper/StyleSheetTable.cxx
+++ b/writerfilter/source/dmapper/StyleSheetTable.cxx
@@ -173,7 +173,7 @@ PropertyMapPtr TableStyleSheetEntry::GetProperties( sal_Int32 nMask, StyleSheetE
return pProps;
}
-beans::PropertyValue TableStyleSheetEntry::GetInteropGrabBag()
+beans::PropertyValue StyleSheetEntry::GetInteropGrabBag()
{
beans::PropertyValue aRet;
aRet.Name = sStyleIdentifierI;
@@ -187,7 +187,7 @@ beans::PropertyValue TableStyleSheetEntry::GetInteropGrabBag()
return aRet;
}
-void TableStyleSheetEntry::AppendInteropGrabBag(beans::PropertyValue aValue)
+void StyleSheetEntry::AppendInteropGrabBag(beans::PropertyValue aValue)
{
m_aInteropGrabBag.push_back(aValue);
}
diff --git a/writerfilter/source/dmapper/StyleSheetTable.hxx b/writerfilter/source/dmapper/StyleSheetTable.hxx
index cb6b9af..db9be28 100644
--- a/writerfilter/source/dmapper/StyleSheetTable.hxx
+++ b/writerfilter/source/dmapper/StyleSheetTable.hxx
@@ -50,6 +50,7 @@ enum StyleType
struct StyleSheetTable_Impl;
class StyleSheetEntry
{
+ std::vector<beans::PropertyValue> m_aInteropGrabBag;
public:
OUString sStyleIdentifierI;
OUString sStyleIdentifierD;
@@ -66,6 +67,9 @@ public:
std::vector<beans::PropertyValue> aLatentStyles; ///< Attributes of latentStyles
std::vector<beans::PropertyValue> aLsdExceptions; ///< List of lsdException attribute lists
+ void AppendInteropGrabBag(beans::PropertyValue aValue);
+ beans::PropertyValue GetInteropGrabBag();
+
StyleSheetEntry();
virtual ~StyleSheetEntry();
};
@@ -124,8 +128,6 @@ private:
StyleSheetTable* m_pStyleSheet;
TblStylePrs m_aStyles;
- std::vector<beans::PropertyValue> m_aInteropGrabBag;
-
public:
short m_nColBandSize;
@@ -143,9 +145,6 @@ public:
// @param pStack already processed StyleSheetEntries
PropertyMapPtr GetProperties( sal_Int32 nMask, StyleSheetEntryDequePtr pStack = StyleSheetEntryDequePtr());
- void AppendInteropGrabBag(beans::PropertyValue aValue);
- beans::PropertyValue GetInteropGrabBag();
-
TableStyleSheetEntry( StyleSheetEntry& aEntry, StyleSheetTable* pStyles );
virtual ~TableStyleSheetEntry( );
commit a1f6a4667c985b6037e9041a938cb714bc03f5cd
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date: Wed Nov 6 12:15:06 2013 +0100
offapi: document style::Style's new StyleInteropGrabBag property
Change-Id: Ie8a022858a1bbdf3c66044d9935e62675ea8cff0
diff --git a/offapi/com/sun/star/style/Style.idl b/offapi/com/sun/star/style/Style.idl
index bd81188..28fccae 100644
--- a/offapi/com/sun/star/style/Style.idl
+++ b/offapi/com/sun/star/style/Style.idl
@@ -139,6 +139,16 @@ published service Style
@since LibreOffice 4.0
*/
[optional, property] boolean Hidden;
+
+ /** Grab bag of style properties, used as a string-any map for interim interop purposes.
+
+ @since LibreOffice 4.2
+
+ <p>This property is intentionally not handled by the ODF filter. Any
+ member that should be handled there should be first moved out from this grab
+ bag to a separate property.</p>
+ */
+ [optional, property] sequence<com::sun::star::beans::PropertyValue> StyleInteropGrabBag;
};
commit 02b91a83b67f230bb58854340c79e94cc147bb12
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date: Wed Nov 6 11:59:24 2013 +0100
sw: add InteropGrabBag for paragraph styles
Change-Id: I44087a5119a538a3892d7f44a33a00bc601a6d44
diff --git a/sw/inc/cmdid.h b/sw/inc/cmdid.h
index a7977f8..2c7afac 100644
--- a/sw/inc/cmdid.h
+++ b/sw/inc/cmdid.h
@@ -654,6 +654,7 @@ included in c-context files, so c++ style stuff will cause problems.
#define FN_UNO_REPLACEMENT_GRAPHIC_U_R_L (FN_EXTRA2 + 121)
#define FN_UNO_HIDDEN (FN_EXTRA2 + 122)
+#define FN_UNO_STYLE_INTEROP_GRAB_BAG (FN_EXTRA2 + 123)
/*------------------------------------------------ --------------------
Area: Help
diff --git a/sw/inc/unoprnms.hxx b/sw/inc/unoprnms.hxx
index 66a56d6..34d3608 100644
--- a/sw/inc/unoprnms.hxx
+++ b/sw/inc/unoprnms.hxx
@@ -841,6 +841,7 @@ enum SwPropNameIds
/* 0774 */ UNO_NAME_DOC_INTEROP_GRAB_BAG,
/* 0775 */ UNO_NAME_FRAME_INTEROP_GRAB_BAG,
/* 0776 */ UNO_NAME_CHAR_HIGHLIGHT,
+/* 0777 */ UNO_NAME_STYLE_INTEROP_GRAB_BAG,
SW_PROPNAME_END
diff --git a/sw/source/core/unocore/unomap.cxx b/sw/source/core/unocore/unomap.cxx
index f63b85a..f2fb41c 100644
--- a/sw/source/core/unocore/unomap.cxx
+++ b/sw/source/core/unocore/unomap.cxx
@@ -490,7 +490,8 @@ SwUnoPropertyMapProvider::~SwUnoPropertyMapProvider()
{ SW_PROP_NMID(UNO_NAME_PARA_IS_CONNECT_BORDER), RES_PARATR_CONNECT_BORDER, CPPU_E2T(CPPUTYPE_BOOLEAN), PropertyAttribute::MAYBEVOID, 0},\
{ SW_PROP_NMID(UNO_NAME_SNAP_TO_GRID), RES_PARATR_SNAPTOGRID, CPPU_E2T(CPPUTYPE_BOOLEAN), PropertyAttribute::MAYBEVOID, 0 }, \
{ SW_PROP_NMID(UNO_NAME_OUTLINE_LEVEL), RES_PARATR_OUTLINELEVEL,CPPU_E2T(CPPUTYPE_INT16), PropertyAttribute::MAYBEVOID, 0}, \
- { SW_PROP_NMID(UNO_NAME_HIDDEN), FN_UNO_HIDDEN, CPPU_E2T(CPPUTYPE_BOOLEAN), PROPERTY_NONE, 0},
+ { SW_PROP_NMID(UNO_NAME_HIDDEN), FN_UNO_HIDDEN, CPPU_E2T(CPPUTYPE_BOOLEAN), PROPERTY_NONE, 0}, \
+ { SW_PROP_NMID(UNO_NAME_STYLE_INTEROP_GRAB_BAG), FN_UNO_STYLE_INTEROP_GRAB_BAG, CPPU_E2T(CPPUTYPE_PROPERTYVALUE), PROPERTY_NONE, 0},
#define COMMON_FLDTYP_PROPERTIES \
diff --git a/sw/source/core/unocore/unoprnms.cxx b/sw/source/core/unocore/unoprnms.cxx
index 740c8fd..1ad38e9 100644
--- a/sw/source/core/unocore/unoprnms.cxx
+++ b/sw/source/core/unocore/unoprnms.cxx
@@ -806,6 +806,7 @@ const SwPropNameTab aPropNameTab = {
/* 0774 UNO_NAME_DOC_INTEROP_GRAB_BAG */ {MAP_CHAR_LEN("InteropGrabBag")},
/* 0775 UNO_NAME_FRAME_INTEROP_GRAB_BAG */ {MAP_CHAR_LEN("FrameInteropGrabBag")},
/* 0776 UNO_NAME_CHAR_HIGHLIGHT */ {MAP_CHAR_LEN("CharHighlight")},
+/* 0777 UNO_NAME_STYLE_INTEROP_GRAB_BAG */ {MAP_CHAR_LEN("StyleInteropGrabBag")},
// new items in this array must match enum SwPropNameIds
};
diff --git a/sw/source/core/unocore/unostyle.cxx b/sw/source/core/unocore/unostyle.cxx
index 5227be1..e402803 100644
--- a/sw/source/core/unocore/unostyle.cxx
+++ b/sw/source/core/unocore/unostyle.cxx
@@ -1678,6 +1678,13 @@ static void lcl_SetStyleProperty(const SfxItemPropertySimpleEntry& rEntry,
}
break;
+ case FN_UNO_STYLE_INTEROP_GRAB_BAG:
+ {
+ rBase.mxNewBase->GetItemSet();
+ rBase.mxNewBase->SetGrabBagItem(rValue);
+ }
+ break;
+
case RES_PAPER_BIN:
{
SfxPrinter *pPrinter = pDoc->getPrinter( true );
@@ -2177,6 +2184,14 @@ static uno::Any lcl_GetStyleProperty(const SfxItemPropertySimpleEntry& rEntry,
}
aRet.setValue(&bHidden, ::getBooleanCppuType());
}
+ else if (FN_UNO_STYLE_INTEROP_GRAB_BAG == rEntry.nWID)
+ {
+ if (pBase)
+ {
+ rtl::Reference<SwDocStyleSheet> xBase(new SwDocStyleSheet(*(SwDocStyleSheet*)pBase));
+ xBase->GetGrabBagItem(aRet);
+ }
+ }
else if(pBase)
{
if(!rBase.mxNewBase.is())
commit 8dfd8245381b8b9e89d2399b35c089964385b3cf
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date: Wed Nov 6 11:44:41 2013 +0100
SwDocStyleSheet: add getter / setter for InteropGrabBag
Change-Id: I4163633f11c75cf9f12485212f563c8f53af38f7
diff --git a/sw/inc/docstyle.hxx b/sw/inc/docstyle.hxx
index 8620cd8..a08ff60 100644
--- a/sw/inc/docstyle.hxx
+++ b/sw/inc/docstyle.hxx
@@ -101,6 +101,8 @@ public:
virtual void SetHidden( sal_Bool bHidden );
virtual sal_Bool IsHidden( ) const;
+ void SetGrabBagItem(const com::sun::star::uno::Any& rVal);
+ void GetGrabBagItem(com::sun::star::uno::Any& rVal) const;
/** add optional parameter <bResetIndentAttrsAtParagraphStyle>, default value sal_False,
which indicates that the indent attributes at a paragraph style should
diff --git a/sw/source/ui/app/docstyle.cxx b/sw/source/ui/app/docstyle.cxx
index 4759a0e..8e3736d 100644
--- a/sw/source/ui/app/docstyle.cxx
+++ b/sw/source/ui/app/docstyle.cxx
@@ -54,6 +54,8 @@
#include <svx/svxids.hrc>
#include <SwRewriter.hxx>
+using namespace com::sun::star;
+
// The Format names in the list of all names have the
// following family as their first character:
@@ -425,6 +427,50 @@ void SwDocStyleSheet::Reset()
SetPhysical(sal_False);
}
+void SwDocStyleSheet::SetGrabBagItem(const uno::Any& rVal)
+{
+ bool bChg = false;
+ if (!bPhysical)
+ FillStyleSheet(FillPhysical);
+
+ SwFmt* pFmt = 0;
+ switch (nFamily)
+ {
+ case SFX_STYLE_FAMILY_PARA:
+ pFmt = rDoc.FindTxtFmtCollByName(aName);
+ if (pFmt)
+ {
+ pFmt->SetGrabBagItem(rVal);
+ bChg = true;
+ }
+ break;
+ default:
+ break;
+ }
+
+ if (bChg)
+ {
+ dynamic_cast<SwDocStyleSheetPool*>(pPool)->InvalidateIterator();
+ pPool->Broadcast(SfxStyleSheetHint(SFX_STYLESHEET_MODIFIED, *this));
+ SwEditShell* pSh = rDoc.GetEditShell();
+ if (pSh)
+ pSh->CallChgLnk();
+ }
+}
+
+void SwDocStyleSheet::GetGrabBagItem(uno::Any& rVal) const
+{
+ SwFmt* pFmt = 0;
+ switch (nFamily)
+ {
+ case SFX_STYLE_FAMILY_PARA:
+ pFmt = rDoc.FindTxtFmtCollByName(aName);
+ pFmt->GetGrabBagItem(rVal);
+ break;
+ default:
+ break;
+ }
+}
// virtual methods
void SwDocStyleSheet::SetHidden( sal_Bool bValue )
{
commit e9b848270850f57965d274f7fd47fc2a84611465
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date: Wed Nov 6 11:32:33 2013 +0100
SwFmt: add getter / setter for InteropGrabBag
Change-Id: I3f97c23077f8c2af69873e9cef244265378f44f7
diff --git a/sw/inc/format.hxx b/sw/inc/format.hxx
index c9efac3..abea51a 100644
--- a/sw/inc/format.hxx
+++ b/sw/inc/format.hxx
@@ -24,6 +24,7 @@
#include <swatrset.hxx>
#include <calbck.hxx>
#include <hintids.hxx>
+#include <boost/shared_ptr.hpp>
class IDocumentSettingAccess;
class IDocumentDrawModelAccess;
@@ -32,6 +33,7 @@ class IDocumentTimerAccess;
class IDocumentFieldsAccess;
class IDocumentChartDataProviderAccess;
class SwDoc;
+class SfxGrabBagItem;
/// Base class for various Writer styles.
class SW_DLLPUBLIC SwFmt : public SwModify
@@ -52,6 +54,7 @@ class SW_DLLPUBLIC SwFmt : public SwModify
sal_Bool bAutoUpdateFmt : 1;/**< TRUE: Set attributes of a whole paragraph
at format (UI-side!). */
bool bHidden : 1;
+ boost::shared_ptr<SfxGrabBagItem> m_pGrabBagItem; ///< Style InteropGrabBag.
protected:
SwFmt( SwAttrPool& rPool, const sal_Char* pFmtNm,
@@ -158,6 +161,9 @@ public:
bool IsHidden() const { return bHidden; }
void SetHidden( bool bValue = false ) { bHidden = bValue; }
+ void GetGrabBagItem(com::sun::star::uno::Any& rVal) const;
+ void SetGrabBagItem(const com::sun::star::uno::Any& rVal);
+
/// Query / set bAutoUpdateFmt-flag.
sal_Bool IsAutoUpdateFmt() const { return bAutoUpdateFmt; }
void SetAutoUpdateFmt( sal_Bool bNew = sal_True ) { bAutoUpdateFmt = bNew; }
diff --git a/sw/source/core/attr/format.cxx b/sw/source/core/attr/format.cxx
index de54367..d94f2d7 100644
--- a/sw/source/core/attr/format.cxx
+++ b/sw/source/core/attr/format.cxx
@@ -25,6 +25,10 @@
#include <hints.hxx>
#include <paratr.hxx>
#include <swcache.hxx>
+#include <svl/grabbagitem.hxx>
+#include <com/sun/star/beans/PropertyValues.hpp>
+
+using namespace com::sun::star;
TYPEINIT1( SwFmt, SwClient );
@@ -603,4 +607,23 @@ IDocumentTimerAccess* SwFmt::getIDocumentTimerAccess() { return GetDoc(); }
IDocumentFieldsAccess* SwFmt::getIDocumentFieldsAccess() { return GetDoc(); }
IDocumentChartDataProviderAccess* SwFmt::getIDocumentChartDataProviderAccess() { return GetDoc(); }
+void SwFmt::GetGrabBagItem(uno::Any& rVal) const
+{
+ if (m_pGrabBagItem.get())
+ m_pGrabBagItem->QueryValue(rVal);
+ else
+ {
+ uno::Sequence<beans::PropertyValue> aValue(0);
+ rVal = uno::makeAny(aValue);
+ }
+}
+
+void SwFmt::SetGrabBagItem(const uno::Any& rVal)
+{
+ if (!m_pGrabBagItem.get())
+ m_pGrabBagItem.reset(new SfxGrabBagItem);
+
+ m_pGrabBagItem->PutValue(rVal);
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
More information about the Libreoffice-commits
mailing list