sc/source/filter/xml/xmlcelli.cxx | 20 ++++++---- sc/source/ui/docshell/datastream.cxx | 62 +++++++++++++++++++++----------- sc/source/ui/inc/datastream.hxx | 22 +++++++---- sc/source/ui/inc/datastreamdlg.hxx | 6 +-- sc/source/ui/miscdlgs/datastreamdlg.cxx | 45 ++++++++++++----------- 5 files changed, 97 insertions(+), 58 deletions(-)
New commits: commit 4df058058a72d73ad032ef31fedb766c0ce03458 Author: Kohei Yoshida <[email protected]> Date: Tue Dec 17 22:38:37 2013 -0500 Pass enum values around rather than OUString ones. Ditto with the range type. Change-Id: Iab37d50b6d58d76c60872f49f13d77ff0c918974 diff --git a/sc/source/filter/xml/xmlcelli.cxx b/sc/source/filter/xml/xmlcelli.cxx index 1223d3c5..b1d0de3 100644 --- a/sc/source/filter/xml/xmlcelli.cxx +++ b/sc/source/filter/xml/xmlcelli.cxx @@ -1005,13 +1005,19 @@ void ScXMLTableRowCellContext::SetCellRangeSource( const ScAddress& rPosition ) SvtMiscOptions aMiscOptions; if (aMiscOptions.IsExperimentalMode() && pCellRangeSource->sFilterOptions == "DataStream") { - sc::DataStream::Set( dynamic_cast<ScDocShell*>(pDoc->GetDocumentShell()) - , pCellRangeSource->sURL // rURL - , sRangeStr // rRange - , sFilterName.toInt32() // nLimit - , sSourceStr // rMove - , pCellRangeSource->nRefresh // nSettings - ); + ScRange aRange; + sal_uInt16 nRes = aRange.Parse(sRangeStr, pDoc); + if ((nRes & SCA_VALID) == SCA_VALID) + { + sc::DataStream::MoveType eMove = sc::DataStream::ToMoveType(sSourceStr); + sc::DataStream::Set( dynamic_cast<ScDocShell*>(pDoc->GetDocumentShell()) + , pCellRangeSource->sURL // rURL + , aRange + , sFilterName.toInt32() // nLimit + , eMove + , pCellRangeSource->nRefresh // nSettings + ); + } return; } ScAreaLink* pLink = new ScAreaLink( pDoc->GetDocumentShell(), pCellRangeSource->sURL, diff --git a/sc/source/ui/docshell/datastream.cxx b/sc/source/ui/docshell/datastream.cxx index af60412e..1bb9cd6 100644 --- a/sc/source/ui/docshell/datastream.cxx +++ b/sc/source/ui/docshell/datastream.cxx @@ -178,25 +178,24 @@ void DataStream::MakeToolbarVisible() } } -DataStream* DataStream::Set(ScDocShell *pShell, const OUString& rURL, const OUString& rRange, - sal_Int32 nLimit, const OUString& rMove, sal_uInt32 nSettings) +DataStream* DataStream::Set( + ScDocShell *pShell, const OUString& rURL, const ScRange& rRange, + sal_Int32 nLimit, MoveType eMove, sal_uInt32 nSettings) { // Each DataStream needs a destination area in order to be exported. // There can be only one ScAreaLink / DataStream per cell. // So - if we don't need range (DataStream with mbValuesInLine == false), // just find a free cell for now. ScRange aDestArea; - sal_uInt16 nRes = aDestArea.Parse(rRange, pShell->GetDocument()); - if ((nRes & SCA_VALID) != SCA_VALID) - // Invalid range string. - return NULL; + if (rRange.IsValid()) + aDestArea = rRange; sfx2::LinkManager* pLinkManager = pShell->GetDocument()->GetLinkManager(); sal_uInt16 nLinkPos = 0; while (nLinkPos < pLinkManager->GetLinks().size()) { sfx2::SvBaseLink* pBase = *pLinkManager->GetLinks()[nLinkPos]; - if (rRange.isEmpty()) + if (!rRange.IsValid()) { if ( (pBase->ISA(ScAreaLink) && static_cast<ScAreaLink*> (&(*pBase))->GetDestArea().aStart == aDestArea.aStart) @@ -221,13 +220,25 @@ DataStream* DataStream::Set(ScDocShell *pShell, const OUString& rURL, const OUSt ++nLinkPos; } - DataStream* pLink = new DataStream(pShell, rURL, aDestArea, nLimit, rMove, nSettings); + DataStream* pLink = new DataStream(pShell, rURL, aDestArea, nLimit, eMove, nSettings); pLinkManager->InsertFileLink( *pLink, OBJECT_CLIENT_FILE, rURL, NULL, NULL ); return pLink; } +DataStream::MoveType DataStream::ToMoveType( const OUString& rMoveStr ) +{ + if (rMoveStr == "RANGE_DOWN") + return RANGE_DOWN; + if (rMoveStr == "MOVE_DOWN") + return MOVE_DOWN; + if (rMoveStr == "MOVE_UP") + return MOVE_UP; + + return NO_MOVE; // default +} + DataStream::DataStream(ScDocShell *pShell, const OUString& rURL, const ScRange& rRange, - sal_Int32 nLimit, const OUString& rMove, sal_uInt32 nSettings) : + sal_Int32 nLimit, MoveType eMove, sal_uInt32 nSettings) : mpDocShell(pShell), mpDoc(mpDocShell->GetDocument()), maDocAccess(*mpDoc), @@ -241,7 +252,7 @@ DataStream::DataStream(ScDocShell *pShell, const OUString& rURL, const ScRange& mxThread = new datastreams::CallerThread( this ); mxThread->launch(); - Decode(rURL, rRange, nLimit, rMove, nSettings); + Decode(rURL, rRange, nLimit, eMove, nSettings); } DataStream::~DataStream() @@ -289,24 +300,35 @@ ScRange DataStream::GetRange() const return aRange; } +OUString DataStream::GetMove() const +{ + switch (meMove) + { + case MOVE_DOWN: + return OUString("MOVE_DOWN"); + case MOVE_UP: + return OUString("MOVE_UP"); + case NO_MOVE: + return OUString("NO_MOVE"); + case RANGE_DOWN: + return OUString("RANGE_DOWN"); + default: + ; + } + return OUString(); +} + void DataStream::Decode(const OUString& rURL, const ScRange& rRange, - sal_Int32 nLimit, const OUString& rMove, const sal_uInt32 nSettings) + sal_Int32 nLimit, MoveType eMove, const sal_uInt32 nSettings) { msURL = rURL; mnLimit = nLimit; - msMove = rMove; + meMove = eMove; mnSettings = nSettings; mpEndRange.reset( NULL ); mbValuesInLine = mnSettings & VALUES_IN_LINE; - if (msMove == "NO_MOVE") - meMove = NO_MOVE; - else if (msMove == "RANGE_DOWN") - meMove = RANGE_DOWN; - else if (msMove == "MOVE_DOWN") - meMove = MOVE_DOWN; - mnCurRow = rRange.aStart.Row(); ScRange aRange = rRange; @@ -549,7 +571,7 @@ sfx2::SvBaseLink::UpdateResult DataStream::DataChanged( void DataStream::Edit( Window* pWindow, const Link& ) { DataStreamDlg aDialog(mpDocShell, pWindow); - aDialog.Init(msURL, maStartRange, mnLimit, msMove, mnSettings); + aDialog.Init(msURL, maStartRange, mnLimit, meMove, mnSettings); if (aDialog.Execute() == RET_OK) { bool bWasRunning = mbRunning; diff --git a/sc/source/ui/inc/datastream.hxx b/sc/source/ui/inc/datastream.hxx index 5f20bf4..494a73e 100644 --- a/sc/source/ui/inc/datastream.hxx +++ b/sc/source/ui/inc/datastream.hxx @@ -7,6 +7,9 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +#ifndef SC_DATASTREAM_HXX +#define SC_DATASTREAM_HXX + #include <sal/config.h> #include <rtl/ref.hxx> @@ -42,16 +45,18 @@ class DataStream : boost::noncopyable, public sfx2::SvBaseLink DECL_LINK( RefreshHdl, void* ); public: - enum MoveEnum { NO_MOVE, RANGE_DOWN, MOVE_DOWN, MOVE_UP }; + enum MoveType { NO_MOVE, RANGE_DOWN, MOVE_DOWN, MOVE_UP }; enum { SCRIPT_STREAM = 1, VALUES_IN_LINE = 2 }; static void MakeToolbarVisible(); - static DataStream* Set(ScDocShell *pShell, const OUString& rURL, const OUString& rRange, - sal_Int32 nLimit, const OUString& rMove, sal_uInt32 nSettings); + static DataStream* Set(ScDocShell *pShell, const OUString& rURL, const ScRange& rRange, + sal_Int32 nLimit, MoveType eMove, sal_uInt32 nSettings); + + static MoveType ToMoveType( const OUString& rMoveStr ); DataStream( ScDocShell *pShell, const OUString& rURL, const ScRange& rRange, - sal_Int32 nLimit, const OUString& rMove, sal_uInt32 nSettings); + sal_Int32 nLimit, MoveType eMove, sal_uInt32 nSettings); virtual ~DataStream(); // sfx2::SvBaseLink @@ -62,12 +67,12 @@ public: ScRange GetRange() const; const OUString& GetURL() const { return msURL; } const sal_Int32& GetLimit() const { return mnLimit; } - const OUString& GetMove() const { return msMove; } + OUString GetMove() const; const sal_uInt32& GetSettings() const { return mnSettings; } void Decode( const OUString& rURL, const ScRange& rRange, sal_Int32 nLimit, - const OUString& rMove, const sal_uInt32 nSettings); + MoveType eMove, const sal_uInt32 nSettings); bool ImportData(); void StartImport(); @@ -82,10 +87,9 @@ private: ScDocument* mpDoc; DocumentStreamAccess maDocAccess; OUString msURL; - OUString msMove; sal_Int32 mnLimit; sal_uInt32 mnSettings; - MoveEnum meMove; + MoveType meMove; bool mbRunning; bool mbValuesInLine; LinesList* mpLines; @@ -101,4 +105,6 @@ private: } +#endif + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/inc/datastreamdlg.hxx b/sc/source/ui/inc/datastreamdlg.hxx index e3308f8..d817743 100644 --- a/sc/source/ui/inc/datastreamdlg.hxx +++ b/sc/source/ui/inc/datastreamdlg.hxx @@ -13,14 +13,14 @@ #include <vcl/dialog.hxx> #include <vcl/layout.hxx> +#include <datastream.hxx> + class ScDocShell; class SvtURLBox; class ScRange; namespace sc { -class DataStream; - class DataStreamDlg : public ModalDialog { ScDocShell *mpDocShell; @@ -51,7 +51,7 @@ public: void Init( const OUString& rURL, const ScRange& rRange, const sal_Int32 nLimit, - const OUString& rMove, const sal_uInt32 nSettings); + DataStream::MoveType eMove, const sal_uInt32 nSettings); void StartStream(DataStream *pStream = 0); }; diff --git a/sc/source/ui/miscdlgs/datastreamdlg.cxx b/sc/source/ui/miscdlgs/datastreamdlg.cxx index 06980b9..bc1bf3d 100644 --- a/sc/source/ui/miscdlgs/datastreamdlg.cxx +++ b/sc/source/ui/miscdlgs/datastreamdlg.cxx @@ -12,7 +12,6 @@ #include <sfx2/filedlghelper.hxx> #include <svtools/inettbc.hxx> #include <vcl/layout.hxx> -#include <datastream.hxx> #include <address.hxx> #include <docsh.hxx> @@ -111,7 +110,7 @@ ScRange DataStreamDlg::GetStartRange() void DataStreamDlg::Init( const OUString& rURL, const ScRange& rRange, const sal_Int32 nLimit, - const OUString& rMove, const sal_uInt32 nSettings) + DataStream::MoveType eMove, const sal_uInt32 nSettings) { m_pEdLimit->SetText(OUString::number(nLimit)); m_pCbUrl->SetText(rURL); @@ -123,12 +122,22 @@ void DataStreamDlg::Init( OUString aStr = rRange.Format(SCA_VALID); m_pEdRange->SetText(aStr); - if (rMove == "NO_MOVE") - m_pRBNoMove->Check(); - else if (rMove == "RANGE_DOWN") - m_pRBRangeDown->Check(); - else if (rMove == "MOVE_DOWN") - m_pRBDataDown->Check(); + switch (eMove) + { + case DataStream::MOVE_DOWN: + m_pRBDataDown->Check(); + break; + case DataStream::NO_MOVE: + m_pRBNoMove->Check(); + break; + case DataStream::RANGE_DOWN: + m_pRBRangeDown->Check(); + break; + case DataStream::MOVE_UP: + default: + ; + } + UpdateEnable(); } @@ -148,22 +157,18 @@ void DataStreamDlg::StartStream(DataStream *pStream) nSettings |= DataStream::SCRIPT_STREAM; if (m_pRBValuesInLine->IsChecked()) nSettings |= DataStream::VALUES_IN_LINE; + + DataStream::MoveType eMove = + m_pRBNoMove->IsChecked() ? DataStream::NO_MOVE : m_pRBRangeDown->IsChecked() + ? DataStream::RANGE_DOWN : DataStream::MOVE_DOWN; + if (pStream) { - pStream->Decode(rURL, aStartRange, nLimit, - m_pRBNoMove->IsChecked() ? OUString("NO_MOVE") : m_pRBRangeDown->IsChecked() - ? OUString("RANGE_DOWN") : OUString("MOVE_DOWN"), - nSettings); + pStream->Decode(rURL, aStartRange, nLimit, eMove, nSettings); return; } - pStream = DataStream::Set( mpDocShell, - rURL, - m_pEdRange->GetText(), - nLimit, - m_pRBNoMove->IsChecked() ? OUString("NO_MOVE") : m_pRBRangeDown->IsChecked() - ? OUString("RANGE_DOWN") : OUString("MOVE_DOWN") - , nSettings - ); + + pStream = DataStream::Set(mpDocShell, rURL, aStartRange, nLimit, eMove, nSettings); DataStream::MakeToolbarVisible(); pStream->StartImport(); } _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
