summaryrefslogtreecommitdiff
path: root/sc/source
diff options
context:
space:
mode:
authorRĂ¼diger Timm <rt@openoffice.org>2004-11-02 13:41:04 +0000
committerRĂ¼diger Timm <rt@openoffice.org>2004-11-02 13:41:04 +0000
commitac45dac5df2faeac19c09830d70e925791c3e1f6 (patch)
treee8ba8bf59ea1fe61ded5d35159510c3ce20cd683 /sc/source
parent7ef22170e11fc03b0caac6947d5d9cfa126a563e (diff)
INTEGRATION: CWS sab012 (1.20.238); FILE MERGED
2004/10/12 18:57:47 sab 1.20.238.3: RESYNC: (1.21-1.23); FILE MERGED 2004/06/08 12:54:16 sab 1.20.238.2: RESYNC: (1.20-1.21); FILE MERGED 2004/02/03 11:46:15 sab 1.20.238.1: #i19079#; merge sab009 into sab012
Diffstat (limited to 'sc/source')
-rw-r--r--sc/source/filter/xml/xmldrani.cxx31
1 files changed, 18 insertions, 13 deletions
diff --git a/sc/source/filter/xml/xmldrani.cxx b/sc/source/filter/xml/xmldrani.cxx
index d8c99892be19..3cd033980bdc 100644
--- a/sc/source/filter/xml/xmldrani.cxx
+++ b/sc/source/filter/xml/xmldrani.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: xmldrani.cxx,v $
*
- * $Revision: 1.23 $
+ * $Revision: 1.24 $
*
- * last change: $Author: hr $ $Date: 2004-08-02 16:30:50 $
+ * last change: $Author: rt $ $Date: 2004-11-02 14:41:04 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -179,7 +179,6 @@ ScXMLDatabaseRangeContext::ScXMLDatabaseRangeContext( ScXMLImport& rImport,
SvXMLImportContext( rImport, nPrfx, rLName ),
nRefresh(0),
nSubTotalsUserListIndex(0),
- nSubTotalRuleGroupFieldNumber(0),
bContainsSort(sal_False),
bContainsSubTotal(sal_False),
bIsSelection(sal_False),
@@ -201,7 +200,6 @@ ScXMLDatabaseRangeContext::ScXMLDatabaseRangeContext( ScXMLImport& rImport,
bSubTotalsEnabledUserList(sal_False),
bSubTotalsAscending(sal_True),
bNative(sal_True),
- aSubTotalColumns(),
aSortSequence()
{
nSourceType = sheet::DataImportMode_NONE;
@@ -514,7 +512,12 @@ void ScXMLDatabaseRangeContext::EndElement()
aSubTotalParam.bUserDef = bSubTotalsEnabledUserList;
aSubTotalParam.nUserIndex = nSubTotalsUserListIndex;
pDBData->SetSubTotalParam(aSubTotalParam);
- xSubTotalDescriptor->addNew(aSubTotalColumns, nSubTotalRuleGroupFieldNumber);
+ std::vector < ScSubTotalRule >::iterator aItr(aSubTotalRules.begin());
+ while (!aSubTotalRules.empty())
+ {
+ xSubTotalDescriptor->addNew(aItr->aSubTotalColumns, aItr->nSubTotalRuleGroupFieldNumber);
+ aItr = aSubTotalRules.erase(aItr);
+ }
}
}
if ( pDBData->HasImportParam() && !pDBData->HasImportSelection() )
@@ -959,9 +962,9 @@ ScXMLSubTotalRuleContext::ScXMLSubTotalRuleContext( ScXMLImport& rImport,
const ::com::sun::star::uno::Reference<
::com::sun::star::xml::sax::XAttributeList>& xAttrList,
ScXMLDatabaseRangeContext* pTempDatabaseRangeContext) :
- SvXMLImportContext( rImport, nPrfx, rLName )
+ SvXMLImportContext( rImport, nPrfx, rLName ),
+ pDatabaseRangeContext(pTempDatabaseRangeContext)
{
- pDatabaseRangeContext = pTempDatabaseRangeContext;
sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetSubTotalRulesSubTotalRuleAttrTokenMap();
for( sal_Int16 i=0; i < nAttrCount; i++ )
@@ -976,7 +979,7 @@ ScXMLSubTotalRuleContext::ScXMLSubTotalRuleContext( ScXMLImport& rImport,
{
case XML_TOK_SUBTOTAL_RULE_ATTR_GROUP_BY_FIELD_NUMBER :
{
- pDatabaseRangeContext->SetSubTotalRuleGroupFieldNumber(static_cast<sal_Int16>(sValue.toInt32()));
+ aSubTotalRule.nSubTotalRuleGroupFieldNumber = static_cast<sal_Int16>(sValue.toInt32());
}
break;
}
@@ -1000,7 +1003,7 @@ SvXMLImportContext *ScXMLSubTotalRuleContext::CreateChildContext( USHORT nPrefix
case XML_TOK_SUBTOTAL_RULE_SUBTOTAL_FIELD :
{
pContext = new ScXMLSubTotalFieldContext( GetScImport(), nPrefix,
- rLName, xAttrList, pDatabaseRangeContext);
+ rLName, xAttrList, this);
}
break;
}
@@ -1013,6 +1016,8 @@ SvXMLImportContext *ScXMLSubTotalRuleContext::CreateChildContext( USHORT nPrefix
void ScXMLSubTotalRuleContext::EndElement()
{
+ if (pDatabaseRangeContext)
+ pDatabaseRangeContext->AddSubTotalRule(aSubTotalRule);
}
ScXMLSubTotalFieldContext::ScXMLSubTotalFieldContext( ScXMLImport& rImport,
@@ -1020,10 +1025,10 @@ ScXMLSubTotalFieldContext::ScXMLSubTotalFieldContext( ScXMLImport& rImport,
const ::rtl::OUString& rLName,
const ::com::sun::star::uno::Reference<
::com::sun::star::xml::sax::XAttributeList>& xAttrList,
- ScXMLDatabaseRangeContext* pTempDatabaseRangeContext) :
- SvXMLImportContext( rImport, nPrfx, rLName )
+ ScXMLSubTotalRuleContext* pTempSubTotalRuleContext) :
+ SvXMLImportContext( rImport, nPrfx, rLName ),
+ pSubTotalRuleContext(pTempSubTotalRuleContext)
{
- pDatabaseRangeContext = pTempDatabaseRangeContext;
sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetSubTotalRuleSubTotalFieldAttrTokenMap();
for( sal_Int16 i=0; i < nAttrCount; i++ )
@@ -1072,6 +1077,6 @@ void ScXMLSubTotalFieldContext::EndElement()
sheet::SubTotalColumn aSubTotalColumn;
aSubTotalColumn.Column = sFieldNumber.toInt32();
aSubTotalColumn.Function = ScXMLConverter::GetFunctionFromString( sFunction );
- pDatabaseRangeContext->AddSubTotalColumn(aSubTotalColumn);
+ pSubTotalRuleContext->AddSubTotalColumn(aSubTotalColumn);
}