Kaydet (Commit) c28f2fbd authored tarafından Kohei Yoshida's avatar Kohei Yoshida

Move the orcus handling code from sc to scfilt.

Then this will be subject to on-demand loading.

Change-Id: Ibefcb77b4c8a97707f3ea177a81bd61bdc58fc31
üst c8b7e982
......@@ -90,10 +90,6 @@ $(eval $(call gb_Library_use_libraries,sc,\
$(gb_STDLIBS) \
))
$(eval $(call gb_Library_use_externals,sc,\
orcus \
))
$(eval $(call gb_Library_add_exception_objects,sc,\
sc/source/core/data/attarray \
sc/source/core/data/attrib \
......@@ -214,7 +210,6 @@ $(eval $(call gb_Library_add_exception_objects,sc,\
sc/source/core/tool/navicfg \
sc/source/core/tool/odffmap \
sc/source/core/tool/optutil \
sc/source/core/tool/orcushandler \
sc/source/core/tool/parclass \
sc/source/core/tool/printopt \
sc/source/core/tool/prnsave \
......
......@@ -63,6 +63,10 @@ $(eval $(call gb_Library_use_libraries,scfilt,\
$(gb_STDLIBS) \
))
$(eval $(call gb_Library_use_externals,scfilt,\
orcus \
))
$(eval $(call gb_Library_add_exception_objects,scfilt,\
sc/source/filter/dif/difexp \
sc/source/filter/dif/difimp \
......@@ -214,6 +218,7 @@ $(eval $(call gb_Library_add_exception_objects,scfilt,\
sc/source/filter/oox/worksheetfragment \
sc/source/filter/oox/worksheethelper \
sc/source/filter/oox/worksheetsettings \
sc/source/filter/orcus/orcusfiltersimpl \
))
# vim: set noet sw=4 ts=4:
......@@ -39,6 +39,7 @@ class ScAddress;
class ScDocument;
class ScRange;
class SvNumberFormatter;
class ScOrcusFilters;
// return values im-/export filter (sal_uLong)
......@@ -119,6 +120,8 @@ class ScFormatFilterPlugin {
const String& rStreamPath, String& rNonConvertibleChars ) = 0;
virtual FltError ScExportRTF( SvStream&, ScDocument*, const ScRange& rRange, const CharSet eDest ) = 0;
virtual ScOrcusFilters* GetOrcusFilters() = 0;
protected:
~ScFormatFilterPlugin() {}
};
......
......@@ -39,7 +39,7 @@ class ScDocument;
class ScOrcusFilters
{
public:
static bool importCSV(ScDocument& rDoc, const rtl::OUString& rPath);
virtual bool importCSV(ScDocument& rDoc, const rtl::OUString& rPath) const = 0;
};
#endif
......
......@@ -41,6 +41,7 @@
#include "stlpool.hxx"
#include "stlsheet.hxx"
#include "compiler.hxx"
#include "orcusfiltersimpl.hxx"
#include <stdio.h>
......@@ -358,10 +359,13 @@ bool ScfTools::GetHTMLNameFromName( const String& rSource, String& rName )
return rName.Len() > 0;
}
// ============================================================================
ScFormatFilterPluginImpl::ScFormatFilterPluginImpl() {}
ScFormatFilterPluginImpl::~ScFormatFilterPluginImpl() {}
ScFormatFilterPluginImpl::ScFormatFilterPluginImpl()
ScOrcusFilters* ScFormatFilterPluginImpl::GetOrcusFilters()
{
static ScOrcusFiltersImpl aImpl;
return &aImpl;
}
SAL_DLLPUBLIC_EXPORT ScFormatFilterPlugin * SAL_CALL ScFilterCreate(void)
......
......@@ -289,10 +289,11 @@ typedef ::std::vector< ::rtl::OUString > ScfStringVec;
// ----------------------------------------------------------------------------
class ScFormatFilterPluginImpl : public ScFormatFilterPlugin {
public:
class ScFormatFilterPluginImpl : public ScFormatFilterPlugin
{
public:
ScFormatFilterPluginImpl();
virtual ~ScFormatFilterPluginImpl() {}
virtual ~ScFormatFilterPluginImpl();
// various import filters
virtual FltError ScImportLotus123( SfxMedium&, ScDocument*, CharSet eSrc = RTL_TEXTENCODING_DONTKNOW );
virtual FltError ScImportQuattroPro( SfxMedium &rMedium, ScDocument *pDoc );
......@@ -322,6 +323,8 @@ class ScFormatFilterPluginImpl : public ScFormatFilterPlugin {
virtual FltError ScExportHTML( SvStream&, const String& rBaseURL, ScDocument*, const ScRange& rRange, const CharSet eDest, bool bAll,
const String& rStreamPath, String& rNonConvertibleChars );
virtual FltError ScExportRTF( SvStream&, ScDocument*, const ScRange& rRange, const CharSet eDest );
virtual ScOrcusFilters* GetOrcusFilters();
};
// ============================================================================
......
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
#include "orcusfilters.hxx"
class ScOrcusFiltersImpl : public ScOrcusFilters
{
public:
virtual bool importCSV(ScDocument& rDoc, const rtl::OUString& rPath) const;
};
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
......@@ -26,11 +26,12 @@
* instead of those above.
*/
#include "orcushandler.hxx"
#include "document.hxx"
#include "tools/urlobj.hxx"
#include "orcusfiltersimpl.hxx"
#include <orcus/spreadsheet/import_interface.hpp>
#include <orcus/orcus_csv.hpp>
......@@ -150,7 +151,7 @@ void ScOrcusSheet::set_value(row_t /*row*/, col_t /*col*/, double /*value*/)
} // anonymous namespace
bool ScOrcusFilters::importCSV(ScDocument& rDoc, const OUString& rPath)
bool ScOrcusFiltersImpl::importCSV(ScDocument& rDoc, const OUString& rPath) const
{
ScOrcusFactory aFactory(rDoc);
INetURLObject aURL(rPath);
......
......@@ -112,7 +112,7 @@
#include "cellsuno.hxx"
#include "dpobject.hxx"
#include "markdata.hxx"
#include "orcushandler.hxx"
#include "orcusfilters.hxx"
#ifdef ENABLE_TELEPATHY
#include "sccollaboration.hxx"
......@@ -1503,7 +1503,11 @@ bool ScDocShell::LoadExternal(SfxMedium& rMed, const OUString& rProvider)
{
if (rProvider == "orcus")
{
if (!ScOrcusFilters::importCSV(aDocument, rMed.GetName()))
ScOrcusFilters* pOrcus = ScFormatFilter::Get().GetOrcusFilters();
if (!pOrcus)
return false;
if (!pOrcus->importCSV(aDocument, rMed.GetName()))
return false;
FinishedLoading(SFX_LOADED_MAINDOCUMENT | SFX_LOADED_IMAGES);
......
......@@ -2229,6 +2229,8 @@ class ScFormatFilterMissing : public ScFormatFilterPlugin {
virtual FltError ScExportHTML( SvStream&, const String&, ScDocument*, const ScRange&, const CharSet, bool,
const String&, String& ) RETURN_ERROR
virtual FltError ScExportRTF( SvStream&, ScDocument*, const ScRange&, const CharSet ) RETURN_ERROR
virtual ScOrcusFilters* GetOrcusFilters() { return NULL; }
};
extern "C" { static void SAL_CALL thisModule() {} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment