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

Pass enum values around rather than OUString ones.

Ditto with the range type.

Change-Id: Iab37d50b6d58d76c60872f49f13d77ff0c918974
üst 9c369f71
......@@ -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,
......
......@@ -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;
......
......@@ -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: */
......@@ -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);
};
......
......@@ -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();
}
......
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