diff options
author | Kohei Yoshida <kohei.yoshida@collabora.com> | 2014-09-30 22:23:16 -0400 |
---|---|---|
committer | Kohei Yoshida <kohei.yoshida@collabora.com> | 2014-10-22 18:07:27 -0400 |
commit | a4b7d8a40106300b3eb95e1be3e4468e9fb8741f (patch) | |
tree | 668b020549fa37a13c3c79b594b080e90b3b1a97 | |
parent | bc1dd8feb80a51109c99c6cb176f5fd16ace5a1e (diff) |
Check for standard number format rather than just for 'General'.
That's what the ods import filter does.
Change-Id: Ibcd9a80a51785a448594d29a02283cca0ec53e95
-rw-r--r-- | sc/inc/documentimport.hxx | 2 | ||||
-rw-r--r-- | sc/inc/numformat.hxx | 2 | ||||
-rw-r--r-- | sc/source/core/data/documentimport.cxx | 2 | ||||
-rw-r--r-- | sc/source/core/tool/numformat.cxx | 8 | ||||
-rw-r--r-- | sc/source/filter/excel/xistyle.cxx | 2 | ||||
-rw-r--r-- | sc/source/filter/inc/stylesbuffer.hxx | 2 | ||||
-rw-r--r-- | sc/source/filter/oox/sheetdatabuffer.cxx | 6 | ||||
-rw-r--r-- | sc/source/filter/oox/stylesbuffer.cxx | 14 |
8 files changed, 25 insertions, 13 deletions
diff --git a/sc/inc/documentimport.hxx b/sc/inc/documentimport.hxx index dc064ee08cfa..e561fcdb9e34 100644 --- a/sc/inc/documentimport.hxx +++ b/sc/inc/documentimport.hxx @@ -49,7 +49,7 @@ public: ScAttrEntry* mpData; size_t mnSize; - bool mbGeneralNumFmtOnly; + bool mbLatinNumFmtOnly; Attrs(); }; diff --git a/sc/inc/numformat.hxx b/sc/inc/numformat.hxx index 40d95611ee35..72938181d638 100644 --- a/sc/inc/numformat.hxx +++ b/sc/inc/numformat.hxx @@ -35,6 +35,8 @@ public: * latin script output. */ static bool isLatinScript( const ScPatternAttr& rPat, ScDocument& rDoc ); + + static bool isLatinScript( sal_uLong nFormat, ScDocument& rDoc ); }; } diff --git a/sc/source/core/data/documentimport.cxx b/sc/source/core/data/documentimport.cxx index 09cacecbfd64..e27a38a89405 100644 --- a/sc/source/core/data/documentimport.cxx +++ b/sc/source/core/data/documentimport.cxx @@ -38,7 +38,7 @@ struct ScDocumentImportImpl mnDefaultScriptNumeric(SC_SCRIPTTYPE_UNKNOWN) {} }; -ScDocumentImport::Attrs::Attrs() : mpData(NULL), mnSize(0), mbGeneralNumFmtOnly(true) {} +ScDocumentImport::Attrs::Attrs() : mpData(NULL), mnSize(0), mbLatinNumFmtOnly(false) {} ScDocumentImport::ScDocumentImport(ScDocument& rDoc) : mpImpl(new ScDocumentImportImpl(rDoc)) {} ScDocumentImport::~ScDocumentImport() diff --git a/sc/source/core/tool/numformat.cxx b/sc/source/core/tool/numformat.cxx index 19611251b1be..a889ab8baad3 100644 --- a/sc/source/core/tool/numformat.cxx +++ b/sc/source/core/tool/numformat.cxx @@ -49,7 +49,13 @@ bool NumFmtUtil::isLatinScript( const ScPatternAttr& rPat, ScDocument& rDoc ) { SvNumberFormatter* pFormatter = rDoc.GetFormatTable(); sal_uInt32 nKey = rPat.GetNumberFormat(pFormatter); - const SvNumberformat* pFormat = pFormatter->GetEntry(nKey); + return isLatinScript(nKey, rDoc); +} + +bool NumFmtUtil::isLatinScript( sal_uLong nFormat, ScDocument& rDoc ) +{ + SvNumberFormatter* pFormatter = rDoc.GetFormatTable(); + const SvNumberformat* pFormat = pFormatter->GetEntry(nFormat); if (!pFormat || !pFormat->IsStandard()) return false; diff --git a/sc/source/filter/excel/xistyle.cxx b/sc/source/filter/excel/xistyle.cxx index 271c41c8f779..7349a8ea8b8a 100644 --- a/sc/source/filter/excel/xistyle.cxx +++ b/sc/source/filter/excel/xistyle.cxx @@ -1990,7 +1990,7 @@ void XclImpXFRangeBuffer::Finalize() aAttrParam.mnSize = aAttrs.size(); assert(aAttrParam.mnSize > 0); aAttrParam.mpData = new ScAttrEntry[aAttrParam.mnSize]; - aAttrParam.mbGeneralNumFmtOnly = false; // when unsure, set it to false. + aAttrParam.mbLatinNumFmtOnly = false; // when unsure, set it to false. list<ScAttrEntry>::const_iterator itr = aAttrs.begin(), itrEnd = aAttrs.end(); for (size_t i = 0; itr != itrEnd; ++itr, ++i) aAttrParam.mpData[i] = *itr; diff --git a/sc/source/filter/inc/stylesbuffer.hxx b/sc/source/filter/inc/stylesbuffer.hxx index bde631d73bf1..4502e042610c 100644 --- a/sc/source/filter/inc/stylesbuffer.hxx +++ b/sc/source/filter/inc/stylesbuffer.hxx @@ -640,7 +640,7 @@ public: struct AttrList { std::list<ScAttrEntry> maAttrs; - bool mbGeneralNumFmtOnly; + bool mbLatinNumFmtOnly; AttrList(); }; diff --git a/sc/source/filter/oox/sheetdatabuffer.cxx b/sc/source/filter/oox/sheetdatabuffer.cxx index e5f4e922e712..7cdf6279a8e5 100644 --- a/sc/source/filter/oox/sheetdatabuffer.cxx +++ b/sc/source/filter/oox/sheetdatabuffer.cxx @@ -54,6 +54,7 @@ #include "paramisc.hxx" #include "documentimport.hxx" #include "formulabuffer.hxx" +#include <numformat.hxx> namespace oox { namespace xls { @@ -477,12 +478,15 @@ void SheetDataBuffer::finalizeImport() aEntry.pPattern = rDoc.getDoc().GetPattern(nScCol, 0, getSheetIndex()); rDoc.getDoc().GetPool()->Put(*aEntry.pPattern); aAttrs.maAttrs.push_back(aEntry); + + if (!sc::NumFmtUtil::isLatinScript(*aEntry.pPattern, rDoc.getDoc())) + aAttrs.mbLatinNumFmtOnly = false; } ScDocumentImport::Attrs aAttrParam; aAttrParam.mnSize = aAttrs.maAttrs.size(); aAttrParam.mpData = new ScAttrEntry[aAttrParam.mnSize]; - aAttrParam.mbGeneralNumFmtOnly = aAttrs.mbGeneralNumFmtOnly; + aAttrParam.mbLatinNumFmtOnly = aAttrs.mbLatinNumFmtOnly; std::list<ScAttrEntry>::const_iterator itr = aAttrs.maAttrs.begin(), itrEnd = aAttrs.maAttrs.end(); for (size_t i = 0; itr != itrEnd; ++itr, ++i) aAttrParam.mpData[i] = *itr; diff --git a/sc/source/filter/oox/stylesbuffer.cxx b/sc/source/filter/oox/stylesbuffer.cxx index 9cb8c46e8608..498241f1f7c7 100644 --- a/sc/source/filter/oox/stylesbuffer.cxx +++ b/sc/source/filter/oox/stylesbuffer.cxx @@ -2054,7 +2054,7 @@ XfModel::XfModel() : { } -Xf::AttrList::AttrList() : mbGeneralNumFmtOnly(true) {} +Xf::AttrList::AttrList() : mbLatinNumFmtOnly(true) {} Xf::Xf( const WorkbookHelper& rHelper ) : WorkbookHelper( rHelper ), @@ -2165,8 +2165,8 @@ void Xf::applyPatternToAttrList( AttrList& rAttrs, SCROW nRow1, SCROW nRow2, sal rPat.GetItemSet().Put(aNumPat.GetItemSet()); } - if (!sc::NumFmtUtil::isGeneral(mnScNumFmt)) - rAttrs.mbGeneralNumFmtOnly = false; + if (!sc::NumFmtUtil::isLatinScript(mnScNumFmt, rDoc)) + rAttrs.mbLatinNumFmtOnly = false; if (rPat.GetStyleName()) { @@ -2188,8 +2188,8 @@ void Xf::applyPatternToAttrList( AttrList& rAttrs, SCROW nRow1, SCROW nRow2, sal rAttrs.maAttrs.push_back(aEntry); // Check if the default pattern is 'General'. - if (!sc::NumFmtUtil::isGeneral(*aEntry.pPattern)) - rAttrs.mbGeneralNumFmtOnly = false; + if (!sc::NumFmtUtil::isLatinScript(*aEntry.pPattern, rDoc)) + rAttrs.mbLatinNumFmtOnly = false; } ScAttrEntry aEntry; @@ -2197,8 +2197,8 @@ void Xf::applyPatternToAttrList( AttrList& rAttrs, SCROW nRow1, SCROW nRow2, sal aEntry.pPattern = static_cast<const ScPatternAttr*>(&rDoc.GetPool()->Put(rPat)); rAttrs.maAttrs.push_back(aEntry); - if (!sc::NumFmtUtil::isGeneral(*aEntry.pPattern)) - rAttrs.mbGeneralNumFmtOnly = false; + if (!sc::NumFmtUtil::isLatinScript(*aEntry.pPattern, rDoc)) + rAttrs.mbLatinNumFmtOnly = false; } } |