summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKohei Yoshida <kohei.yoshida@collabora.com>2014-09-30 22:23:16 -0400
committerKohei Yoshida <kohei.yoshida@collabora.com>2014-10-22 18:07:27 -0400
commita4b7d8a40106300b3eb95e1be3e4468e9fb8741f (patch)
tree668b020549fa37a13c3c79b594b080e90b3b1a97
parentbc1dd8feb80a51109c99c6cb176f5fd16ace5a1e (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.hxx2
-rw-r--r--sc/inc/numformat.hxx2
-rw-r--r--sc/source/core/data/documentimport.cxx2
-rw-r--r--sc/source/core/tool/numformat.cxx8
-rw-r--r--sc/source/filter/excel/xistyle.cxx2
-rw-r--r--sc/source/filter/inc/stylesbuffer.hxx2
-rw-r--r--sc/source/filter/oox/sheetdatabuffer.cxx6
-rw-r--r--sc/source/filter/oox/stylesbuffer.cxx14
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;
}
}