sc/source/core/data/bcaslot.cxx | 4 +- sc/source/filter/excel/xecontent.cxx | 67 ++++++++++++++++++++++++++++++++++- sc/source/filter/excel/xestyle.cxx | 17 +++++++- sc/source/filter/inc/xecontent.hxx | 13 ++++++ 4 files changed, 95 insertions(+), 6 deletions(-)
New commits: commit ef5fa06e6e918103cac2fc4844dbb62a3522b4e8 Author: Markus Mohrhard <[email protected]> Date: Mon Nov 26 18:41:53 2012 +0100 no need for this copy Change-Id: I0c64a411926ea0de04d214acb993337a695f6acb diff --git a/sc/source/filter/excel/xecontent.cxx b/sc/source/filter/excel/xecontent.cxx index 444928e..d03afa8 100644 --- a/sc/source/filter/excel/xecontent.cxx +++ b/sc/source/filter/excel/xecontent.cxx @@ -1130,7 +1130,7 @@ XclExpCondfmt::XclExpCondfmt( const XclExpRoot& rRoot, const ScConditionalFormat XclExpRecord( EXC_ID_CONDFMT ), XclExpRoot( rRoot ) { - ScRangeList aScRanges = rCondFormat.GetRange(); + const ScRangeList& aScRanges = rCondFormat.GetRange(); GetAddressConverter().ConvertRangeList( maXclRanges, aScRanges, true ); if( !maXclRanges.empty() ) { commit 80904d027f5a7adb0fec7da99536f8cc02bdd2d9 Author: Markus Mohrhard <[email protected]> Date: Mon Nov 26 18:19:50 2012 +0100 implement OOXML export for date cond formats Change-Id: I0485edfb6571ff9db9e52b54099a24c92f566dc9 diff --git a/sc/source/filter/excel/xecontent.cxx b/sc/source/filter/excel/xecontent.cxx index 557538e..444928e 100644 --- a/sc/source/filter/excel/xecontent.cxx +++ b/sc/source/filter/excel/xecontent.cxx @@ -977,6 +977,69 @@ void XclExpCF::SaveXml( XclExpXmlStream& rStrm ) mxImpl->SaveXml( rStrm ); } +XclExpDateFormat::XclExpDateFormat( const XclExpRoot& rRoot, const ScCondDateFormatEntry& rFormatEntry, sal_Int32 nPriority ): + XclExpRecord( EXC_ID_CF ), + XclExpRoot( rRoot ), + mrFormatEntry(rFormatEntry), + mnPriority(nPriority) +{ +} + +XclExpDateFormat::~XclExpDateFormat() +{ +} + +namespace { + +const char* getTimePeriodString( condformat::ScCondFormatDateType eType ) +{ + switch(eType) + { + case condformat::TODAY: + return "today"; + case condformat::YESTERDAY: + return "yesterday"; + case condformat::TOMORROW: + return "yesterday"; + case condformat::THISWEEK: + return "thisWeek"; + case condformat::LASTWEEK: + return "lastWeek"; + case condformat::NEXTWEEK: + return "nextWeek"; + case condformat::THISMONTH: + return "thisMonth"; + case condformat::LASTMONTH: + return "lastMonth"; + case condformat::NEXTMONTH: + return "nextMonth"; + case condformat::LAST7DAYS: + return "last7Days"; + default: + break; + } + return NULL; +} + +} + +void XclExpDateFormat::SaveXml( XclExpXmlStream& rStrm ) +{ + // only write the supported entries into OOXML + const char* sTimePeriod = getTimePeriodString(mrFormatEntry.GetDateType()); + if(!sTimePeriod) + return; + + sax_fastparser::FSHelperPtr& rWorksheet = rStrm.GetCurrentStream(); + rWorksheet->startElement( XML_cfRule, + XML_type, "timePeriod", + XML_priority, OString::valueOf( mnPriority + 1 ).getStr(), + XML_timePeriod, sTimePeriod, + XML_dxfId, OString::valueOf( GetDxfs().GetDxfId( mrFormatEntry.GetStyleName() ) ).getStr(), + FSEND ); + rWorksheet->endElement( XML_cfRule); +} + XclExpCfvo::XclExpCfvo(const XclExpRoot& rRoot, const ScColorScaleEntry& rEntry, const ScAddress& rAddr, bool bFirst): XclExpRecord(), XclExpRoot( rRoot ), @@ -1082,6 +1145,8 @@ XclExpCondfmt::XclExpCondfmt( const XclExpRoot& rRoot, const ScConditionalFormat maCFList.AppendNewRecord( new XclExpDataBar( GetRoot(), static_cast<const ScDataBarFormat&>(*pFormatEntry), ++rIndex, xExtLst ) ); else if(pFormatEntry->GetType() == condformat::ICONSET) maCFList.AppendNewRecord( new XclExpIconSet( GetRoot(), static_cast<const ScIconSetFormat&>(*pFormatEntry), ++rIndex ) ); + else if(pFormatEntry->GetType() == condformat::DATE) + maCFList.AppendNewRecord( new XclExpDateFormat( GetRoot(), static_cast<const ScCondDateFormatEntry&>(*pFormatEntry), ++rIndex ) ); } aScRanges.Format( msSeqRef, SCA_VALID, NULL, formula::FormulaGrammar::CONV_XL_A1 ); } diff --git a/sc/source/filter/excel/xestyle.cxx b/sc/source/filter/excel/xestyle.cxx index ba639b6..772b36e 100644 --- a/sc/source/filter/excel/xestyle.cxx +++ b/sc/source/filter/excel/xestyle.cxx @@ -2901,11 +2901,22 @@ XclExpDxfs::XclExpDxfs( const XclExpRoot& rRoot ) for (size_t nFormatEntry = 0; nFormatEntry < nEntryCount; ++nFormatEntry) { const ScFormatEntry* pFormatEntry = itr->GetEntry(nFormatEntry); - if (!pFormatEntry || pFormatEntry->GetType() != condformat::CONDITION) + if (!pFormatEntry || (pFormatEntry->GetType() != condformat::CONDITION && + pFormatEntry->GetType() != condformat::DATE)) continue; - const ScCondFormatEntry* pEntry = static_cast<const ScCondFormatEntry*>(pFormatEntry); - rtl::OUString aStyleName = pEntry->GetStyle(); + rtl::OUString aStyleName; + if(pFormatEntry->GetType() == condformat::CONDITION) + { + const ScCondFormatEntry* pEntry = static_cast<const ScCondFormatEntry*>(pFormatEntry); + aStyleName= pEntry->GetStyle(); + } + else + { + const ScCondDateFormatEntry* pEntry = static_cast<const ScCondDateFormatEntry*>(pFormatEntry); + aStyleName = pEntry->GetStyleName(); + } + if (maStyleNameToDxfId.find(aStyleName) == maStyleNameToDxfId.end()) { maStyleNameToDxfId.insert(std::pair<rtl::OUString, sal_Int32>(aStyleName, nIndex)); diff --git a/sc/source/filter/inc/xecontent.hxx b/sc/source/filter/inc/xecontent.hxx index 7e94df9..7b1015a 100644 --- a/sc/source/filter/inc/xecontent.hxx +++ b/sc/source/filter/inc/xecontent.hxx @@ -191,6 +191,19 @@ private: XclExpCFImplPtr mxImpl; }; +class XclExpDateFormat : public XclExpRecord, protected XclExpRoot +{ +public: + explicit XclExpDateFormat( const XclExpRoot& rRoot, const ScCondDateFormatEntry& rFormatEntry, sal_Int32 nPriority ); + virtual ~XclExpDateFormat(); + + virtual void SaveXml( XclExpXmlStream& rStrm ); + +private: + const ScCondDateFormatEntry& mrFormatEntry; + sal_Int32 mnPriority; +}; + class XclExpCfvo : public XclExpRecord, protected XclExpRoot { public: commit 179b568a82e1506dced0d2f94c607f7bee2459fe Author: Markus Mohrhard <[email protected]> Date: Mon Nov 26 16:00:24 2012 +0100 easy performance improvement related to fdo#48312 Change-Id: I61287dc910fb168c18fa7c9e46b8c29ae1300858 diff --git a/sc/source/core/data/bcaslot.cxx b/sc/source/core/data/bcaslot.cxx index b30a21e..116980d 100644 --- a/sc/source/core/data/bcaslot.cxx +++ b/sc/source/core/data/bcaslot.cxx @@ -275,8 +275,8 @@ sal_Bool ScBroadcastAreaSlot::AreaBroadcast( const ScHint& rHint) const return false; sal_Bool bIsBroadcasted = false; const ScAddress& rAddress = rHint.GetAddress(); - for (ScBroadcastAreas::const_iterator aIter( aBroadcastAreaTbl.begin()); - aIter != aBroadcastAreaTbl.end(); /* increment in body */ ) + for (ScBroadcastAreas::const_iterator aIter( aBroadcastAreaTbl.begin()), + aIterEnd = aBroadcastAreaTbl.end(); aIter != aIterEnd; /* increment in body */ ) { ScBroadcastArea* pArea = *aIter; // A Notify() during broadcast may call EndListeningArea() and thus _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
