diff options
author | Markus Mohrhard <markus.mohrhard@collabora.co.uk> | 2014-10-28 14:46:26 +0100 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@collabora.co.uk> | 2015-01-09 18:48:46 +0100 |
commit | a66bf2318604a2cef24632a4642b4b7f6f2dbec0 (patch) | |
tree | 87b691760787dc49f5e9b14971d255ff6cd0cfd8 | |
parent | 3cb51e0f87e39d67680e25098ce6350f5655bf9b (diff) |
implement import_sheet_properties interface
Change-Id: Ifed14df422c067fb6faacf370cbe9e1acf336d24
-rw-r--r-- | sc/source/filter/inc/orcusinterface.hxx | 21 | ||||
-rw-r--r-- | sc/source/filter/orcus/interface.cxx | 50 |
2 files changed, 70 insertions, 1 deletions
diff --git a/sc/source/filter/inc/orcusinterface.hxx b/sc/source/filter/inc/orcusinterface.hxx index 0ef0d7db6bcc..37986a3eb8e8 100644 --- a/sc/source/filter/inc/orcusinterface.hxx +++ b/sc/source/filter/inc/orcusinterface.hxx @@ -101,6 +101,25 @@ private: ScRange maRange; }; +class ScOrcusSheetProperties : public orcus::spreadsheet::iface::import_sheet_properties +{ + ScDocumentImport& mrDoc; + SCTAB mnTab; +public: + ScOrcusSheetProperties(SCTAB nTab, ScDocumentImport& rDoc); + virtual ~ScOrcusSheetProperties(); + + virtual void set_column_width(orcus::spreadsheet::col_t col, double width, orcus::length_unit_t unit) SAL_OVERRIDE; + + virtual void set_column_hidden(orcus::spreadsheet::col_t col, bool hidden) SAL_OVERRIDE; + + virtual void set_row_height(orcus::spreadsheet::row_t row, double height, orcus::length_unit_t unit) SAL_OVERRIDE; + + virtual void set_row_hidden(orcus::spreadsheet::row_t row, bool hidden) SAL_OVERRIDE; + + virtual void set_merge_cell_range(const char* p_range, size_t n_range) SAL_OVERRIDE; +}; + class ScOrcusSheet : public orcus::spreadsheet::iface::import_sheet { ScDocumentImport& mrDoc; @@ -108,6 +127,7 @@ class ScOrcusSheet : public orcus::spreadsheet::iface::import_sheet ScOrcusFactory& mrFactory; sc::SharedFormulaGroups maFormulaGroups; ScOrcusAutoFilter maAutoFilter; + ScOrcusSheetProperties maProperties; typedef std::map<size_t, ScRangeData*> SharedFormulaContainer; SharedFormulaContainer maSharedFormulas; @@ -120,6 +140,7 @@ public: ScOrcusSheet(ScDocumentImport& rDoc, SCTAB nTab, ScOrcusFactory& rFactory); virtual orcus::spreadsheet::iface::import_auto_filter* get_auto_filter() SAL_OVERRIDE { return &maAutoFilter; } + virtual orcus::spreadsheet::iface::import_sheet_properties* get_sheet_properties() SAL_OVERRIDE; // Orcus import interface virtual void set_auto(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, const char* p, size_t n) SAL_OVERRIDE; diff --git a/sc/source/filter/orcus/interface.cxx b/sc/source/filter/orcus/interface.cxx index d96ae7716a49..8a00f211df78 100644 --- a/sc/source/filter/orcus/interface.cxx +++ b/sc/source/filter/orcus/interface.cxx @@ -212,8 +212,51 @@ void ScOrcusFactory::setStatusIndicator(const uno::Reference<task::XStatusIndica mxStatusIndicator = rIndicator; } +ScOrcusSheetProperties::ScOrcusSheetProperties(SCTAB nTab, ScDocumentImport& rDoc): + mrDoc(rDoc), + mnTab(nTab) +{ +} + +ScOrcusSheetProperties::~ScOrcusSheetProperties() +{ +} + +void ScOrcusSheetProperties::set_column_width(os::col_t col, double width, orcus::length_unit_t /*unit*/) +{ + mrDoc.getDoc().SetColWidthOnly(col, mnTab, width); +} + +void ScOrcusSheetProperties::set_column_hidden(os::col_t col, bool hidden) +{ + if (hidden) + mrDoc.getDoc().SetColHidden(col, col, mnTab, hidden); +} + +void ScOrcusSheetProperties::set_row_height(os::row_t row, double height, orcus::length_unit_t /*unit*/) +{ + mrDoc.getDoc().SetRowHeightOnly(row, row,mnTab, height); +} + +void ScOrcusSheetProperties::set_row_hidden(os::row_t row, bool hidden) +{ + if (hidden) + mrDoc.getDoc().SetRowHidden(row, row, mnTab, hidden); +} + +void ScOrcusSheetProperties::set_merge_cell_range(const char* /*p_range*/, size_t /*n_range*/) +{ +} + ScOrcusSheet::ScOrcusSheet(ScDocumentImport& rDoc, SCTAB nTab, ScOrcusFactory& rFactory) : - mrDoc(rDoc), mnTab(nTab), mrFactory(rFactory), maAutoFilter(rDoc.getDoc()), mnCellCount(0) {} + mrDoc(rDoc), + mnTab(nTab), + mrFactory(rFactory), + maAutoFilter(rDoc.getDoc()), + maProperties(mnTab, mrDoc), + mnCellCount(0) +{ +} void ScOrcusSheet::cellInserted() { @@ -225,6 +268,11 @@ void ScOrcusSheet::cellInserted() } } +os::iface::import_sheet_properties* ScOrcusSheet::get_sheet_properties() +{ + return &maProperties; +} + 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); |