sc/source/filter/inc/orcusinterface.hxx |    7 ++++++-
 sc/source/filter/orcus/interface.cxx    |   17 ++++++++++++++---
 2 files changed, 20 insertions(+), 4 deletions(-)

New commits:
commit b77ca38424edefa0ece572b33d4c2f98034735f0
Author: Kohei Yoshida <kohei.yosh...@gmail.com>
Date:   Sun Dec 17 14:24:57 2017 -0500

    Pick up sheet-local named expressions as well.
    
    Change-Id: I8a081b5f81740fa91f43ac152a950d73d031ed10

diff --git a/sc/source/filter/inc/orcusinterface.hxx 
b/sc/source/filter/inc/orcusinterface.hxx
index 8259b55f9d64..1486f93b891b 100644
--- a/sc/source/filter/inc/orcusinterface.hxx
+++ b/sc/source/filter/inc/orcusinterface.hxx
@@ -80,9 +80,10 @@ class ScOrcusNamedExpression : public 
orcus::spreadsheet::iface::import_named_ex
 {
     ScDocumentImport& mrDoc;
     const ScOrcusGlobalSettings& mrGlobalSettings;
+    SCTAB mnTab; //< negative if global, else >= 0 for sheet-local named 
expressions.
 
 public:
-    ScOrcusNamedExpression( ScDocumentImport& rDoc, const 
ScOrcusGlobalSettings& rGS );
+    ScOrcusNamedExpression( ScDocumentImport& rDoc, const 
ScOrcusGlobalSettings& rGS, SCTAB nTab = -1 );
 
     virtual void define_name(const char* p_name, size_t n_name, const char* 
p_exp, size_t n_exp) override;
 };
@@ -224,6 +225,7 @@ class ScOrcusSheet : public 
orcus::spreadsheet::iface::import_sheet
     ScOrcusAutoFilter maAutoFilter;
     ScOrcusSheetProperties maProperties;
     ScOrcusConditionalFormat maConditionalFormat;
+    ScOrcusNamedExpression maNamedExpressions;
 
     int mnCellCount;
 
@@ -236,6 +238,7 @@ public:
     virtual orcus::spreadsheet::iface::import_table* get_table() override;
     virtual orcus::spreadsheet::iface::import_sheet_properties* 
get_sheet_properties() override;
     virtual orcus::spreadsheet::iface::import_conditional_format* 
get_conditional_format() override;
+    virtual orcus::spreadsheet::iface::import_named_expression* 
get_named_expression() override;
 
     // Orcus import interface
     virtual void set_auto(orcus::spreadsheet::row_t row, 
orcus::spreadsheet::col_t col, const char* p, size_t n) override;
@@ -595,6 +598,8 @@ public:
     void incrementProgress();
 
     void setStatusIndicator(const 
css::uno::Reference<css::task::XStatusIndicator>& rIndicator);
+
+    const ScOrcusGlobalSettings& getGlobalSettings() const;
 };
 
 #endif
diff --git a/sc/source/filter/orcus/interface.cxx 
b/sc/source/filter/orcus/interface.cxx
index 78142ffea7e6..1ce694635747 100644
--- a/sc/source/filter/orcus/interface.cxx
+++ b/sc/source/filter/orcus/interface.cxx
@@ -153,15 +153,15 @@ os::range_t ScOrcusRefResolver::resolve_range(const char* 
p, size_t n)
 }
 
 ScOrcusNamedExpression::ScOrcusNamedExpression(
-    ScDocumentImport& rDoc, const ScOrcusGlobalSettings& rGS ) :
-    mrDoc(rDoc), mrGlobalSettings(rGS) {}
+    ScDocumentImport& rDoc, const ScOrcusGlobalSettings& rGS, SCTAB nTab ) :
+    mrDoc(rDoc), mrGlobalSettings(rGS), mnTab(nTab) {}
 
 void ScOrcusNamedExpression::define_name(const char* p_name, size_t n_name, 
const char* p_exp, size_t n_exp)
 {
     OUString aName(p_name, n_name, RTL_TEXTENCODING_UTF8);
     OUString aExpr(p_exp, n_exp, RTL_TEXTENCODING_UTF8);
 
-    ScRangeName* pNames = mrDoc.getDoc().GetRangeName();
+    ScRangeName* pNames = mnTab >= 0 ? mrDoc.getDoc().GetRangeName(mnTab) : 
mrDoc.getDoc().GetRangeName();
     if (!pNames)
         return;
 
@@ -549,6 +549,11 @@ void ScOrcusFactory::setStatusIndicator(const 
uno::Reference<task::XStatusIndica
     mxStatusIndicator = rIndicator;
 }
 
+const ScOrcusGlobalSettings& ScOrcusFactory::getGlobalSettings() const
+{
+    return maGlobalSettings;
+}
+
 ScOrcusSheetProperties::ScOrcusSheetProperties(SCTAB nTab, ScDocumentImport& 
rDoc):
     mrDoc(rDoc),
     mnTab(nTab)
@@ -780,6 +785,7 @@ ScOrcusSheet::ScOrcusSheet(ScDocumentImport& rDoc, SCTAB 
nTab, ScOrcusFactory& r
     maAutoFilter(),
     maProperties(mnTab, mrDoc),
     maConditionalFormat(mnTab, rDoc.getDoc()),
+    maNamedExpressions(rDoc, rFactory.getGlobalSettings(), nTab),
     mnCellCount(0)
 {
 }
@@ -814,6 +820,11 @@ os::iface::import_conditional_format* 
ScOrcusSheet::get_conditional_format()
     return &maConditionalFormat;
 }
 
+os::iface::import_named_expression* ScOrcusSheet::get_named_expression()
+{
+    return &maNamedExpressions;
+}
+
 void ScOrcusSheet::set_auto(os::row_t row, os::col_t col, const char* p, 
size_t n)
 {
     OUString aVal(p, n, RTL_TEXTENCODING_UTF8);
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to