sc/source/filter/xml/xmlexprt.cxx | 12 -------- sc/source/ui/docshell/datastream.cxx | 46 +++++++++++++------------------- sc/source/ui/inc/datastream.hxx | 4 +- sc/source/ui/inc/datastreamdlg.hxx | 7 ++-- sc/source/ui/miscdlgs/datastreamdlg.cxx | 40 +++++++++++++-------------- sc/source/ui/view/cellsh2.cxx | 6 ++++ 6 files changed, 50 insertions(+), 65 deletions(-)
New commits: commit 7d7ba40bea62f6ba6ccd91230a58f03f141ecdf8 Author: Kohei Yoshida <kohei.yosh...@collabora.com> Date: Thu Dec 19 01:20:13 2013 -0500 Initialize data stream dialog properly. Change-Id: I86d4cfe946de896951d5eca2317f6d515113b249 diff --git a/sc/source/filter/xml/xmlexprt.cxx b/sc/source/filter/xml/xmlexprt.cxx index 51f2175..74c20da 100644 --- a/sc/source/filter/xml/xmlexprt.cxx +++ b/sc/source/filter/xml/xmlexprt.cxx @@ -836,18 +836,6 @@ void ScXMLExport::GetAreaLinks( ScMyAreaLinksContainer& rAreaLinks ) aAreaLink.nRefresh = pLink->GetTimeout(); rAreaLinks.AddNewAreaLink( aAreaLink ); } - sc::DataStream *pStream = dynamic_cast<sc::DataStream*>(&(*(*rLinks[i]))); - if (pStream) - { - ScMyAreaLink aAreaLink; - ScUnoConversion::FillApiRange( aAreaLink.aDestRange, pStream->GetRange() ); - aAreaLink.sSourceStr = pStream->GetMove(); - aAreaLink.sFilter = OUString::number(pStream->GetLimit()); - aAreaLink.sFilterOptions = "DataStream"; - aAreaLink.sURL = pStream->GetURL(); - aAreaLink.nRefresh = pStream->GetSettings(); - rAreaLinks.AddNewAreaLink( aAreaLink ); - } } } rAreaLinks.Sort(); diff --git a/sc/source/ui/docshell/datastream.cxx b/sc/source/ui/docshell/datastream.cxx index 5b1b9dd..a68d338 100644 --- a/sc/source/ui/docshell/datastream.cxx +++ b/sc/source/ui/docshell/datastream.cxx @@ -264,27 +264,13 @@ OString DataStream::ConsumeLine() ScRange DataStream::GetRange() const { ScRange aRange = maStartRange; - if (mpEndRange) - aRange.aEnd = mpEndRange->aEnd; + aRange.aEnd = maEndRange.aEnd; return aRange; } -OUString DataStream::GetMove() const +DataStream::MoveType 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(); + return meMove; } void DataStream::Decode(const OUString& rURL, const ScRange& rRange, @@ -294,7 +280,6 @@ void DataStream::Decode(const OUString& rURL, const ScRange& rRange, mnLimit = nLimit; meMove = eMove; mnSettings = nSettings; - mpEndRange.reset( NULL ); mbValuesInLine = mnSettings & VALUES_IN_LINE; @@ -306,11 +291,21 @@ void DataStream::Decode(const OUString& rURL, const ScRange& rRange, aRange.aEnd.SetRow(aRange.aStart.Row()); maStartRange = aRange; - if (nLimit && aRange.aStart.Row() + nLimit - 1 < MAXROW) + maEndRange = aRange; + if (nLimit == 0) + { + // Unlimited + maEndRange.aStart.SetRow(MAXROW); + } + else if (nLimit > 0) { - mpEndRange.reset(new ScRange(aRange)); - mpEndRange->Move(0, nLimit-1, 0); + // Limited. + maEndRange.aStart.IncRow(nLimit-1); + if (maEndRange.aStart.Row() > MAXROW) + maEndRange.aStart.SetRow(MAXROW); } + + maEndRange.aEnd.SetRow(maEndRange.aStart.Row()); } void DataStream::StartImport() @@ -359,14 +354,11 @@ void DataStream::Refresh() void DataStream::MoveData() { - if (!mpEndRange) - return; - switch (meMove) { case RANGE_DOWN: { - if (mnCurRow == mpEndRange->aStart.Row()) + if (mnCurRow == maEndRange.aStart.Row()) meMove = MOVE_UP; } break; @@ -375,7 +367,7 @@ void DataStream::MoveData() // Remove the top row and shift the remaining rows upward. Then // insert a new row at the end row position. ScRange aRange = maStartRange; - aRange.aEnd = mpEndRange->aEnd; + aRange.aEnd = maEndRange.aEnd; maDocAccess.shiftRangeUp(aRange); } break; @@ -384,7 +376,7 @@ void DataStream::MoveData() // Remove the end row and shift the remaining rows downward by // inserting a new row at the top row. ScRange aRange = maStartRange; - aRange.aEnd = mpEndRange->aEnd; + aRange.aEnd = maEndRange.aEnd; maDocAccess.shiftRangeDown(aRange); } break; diff --git a/sc/source/ui/inc/datastream.hxx b/sc/source/ui/inc/datastream.hxx index 935e895..b7cd712 100644 --- a/sc/source/ui/inc/datastream.hxx +++ b/sc/source/ui/inc/datastream.hxx @@ -60,7 +60,7 @@ public: ScRange GetRange() const; const OUString& GetURL() const { return msURL; } const sal_Int32& GetLimit() const { return mnLimit; } - OUString GetMove() const; + MoveType GetMove() const; const sal_uInt32& GetSettings() const { return mnSettings; } void Decode( @@ -93,7 +93,7 @@ private: double mfLastRefreshTime; SCROW mnCurRow; ScRange maStartRange; - boost::scoped_ptr<ScRange> mpEndRange; + ScRange maEndRange; rtl::Reference<datastreams::CallerThread> mxThread; rtl::Reference<datastreams::ReaderThread> mxReaderThread; }; diff --git a/sc/source/ui/inc/datastreamdlg.hxx b/sc/source/ui/inc/datastreamdlg.hxx index c7cff94..851afef 100644 --- a/sc/source/ui/inc/datastreamdlg.hxx +++ b/sc/source/ui/inc/datastreamdlg.hxx @@ -36,6 +36,7 @@ class DataStreamDlg : public ModalDialog RadioButton* m_pRBRangeDown; RadioButton* m_pRBNoMove; RadioButton* m_pRBMaxLimit; + RadioButton* m_pRBUnlimited; Edit* m_pEdRange; Edit* m_pEdLimit; OKButton* m_pBtnOk; @@ -51,11 +52,9 @@ class DataStreamDlg : public ModalDialog public: DataStreamDlg(ScDocShell *pDocShell, Window* pParent); - void Init( - const OUString& rURL, const ScRange& rRange, const sal_Int32 nLimit, - DataStream::MoveType eMove, const sal_uInt32 nSettings); + void Init( const DataStream& rStrm ); - void StartStream(DataStream *pStream = 0); + void StartStream(); }; } diff --git a/sc/source/ui/miscdlgs/datastreamdlg.cxx b/sc/source/ui/miscdlgs/datastreamdlg.cxx index fbd1389..17b9e6e 100644 --- a/sc/source/ui/miscdlgs/datastreamdlg.cxx +++ b/sc/source/ui/miscdlgs/datastreamdlg.cxx @@ -32,6 +32,7 @@ DataStreamDlg::DataStreamDlg(ScDocShell *pDocShell, Window* pParent) get(m_pRBRangeDown, "rangedown"); get(m_pRBNoMove, "nomove"); get(m_pRBMaxLimit, "maxlimit"); + get(m_pRBUnlimited, "unlimited"); get(m_pEdRange, "range"); get(m_pEdLimit, "limit"); get(m_pBtnOk, "ok"); @@ -114,20 +115,26 @@ ScRange DataStreamDlg::GetStartRange() return aRange; } -void DataStreamDlg::Init( - const OUString& rURL, const ScRange& rRange, const sal_Int32 nLimit, - DataStream::MoveType eMove, const sal_uInt32 nSettings) +void DataStreamDlg::Init( const DataStream& rStrm ) { - m_pEdLimit->SetText(OUString::number(nLimit)); - m_pCbUrl->SetText(rURL); - if (nSettings & DataStream::SCRIPT_STREAM) - m_pRBScriptData->Check(); - if (!(nSettings & DataStream::VALUES_IN_LINE)) - m_pRBAddressValue->Check(); - - OUString aStr = rRange.Format(SCA_VALID); + m_pCbUrl->SetText(rStrm.GetURL()); + + ScRange aRange = rStrm.GetRange(); + ScRange aTopRange = aRange; + aTopRange.aEnd.SetRow(aTopRange.aStart.Row()); + OUString aStr = aTopRange.Format(SCA_VALID); m_pEdRange->SetText(aStr); + SCROW nRows = aRange.aEnd.Row() - aRange.aStart.Row() + 1; + + if (nRows == MAXROWCOUNT) + m_pRBUnlimited->Check(); + else + { + m_pRBMaxLimit->Check(); + m_pEdLimit->SetText(OUString::number(nRows)); + } + DataStream::MoveType eMove = rStrm.GetMove(); switch (eMove) { case DataStream::MOVE_DOWN: @@ -146,7 +153,7 @@ void DataStreamDlg::Init( UpdateEnable(); } -void DataStreamDlg::StartStream(DataStream *pStream) +void DataStreamDlg::StartStream() { ScRange aStartRange = GetStartRange(); if (!aStartRange.IsValid()) @@ -166,14 +173,7 @@ void DataStreamDlg::StartStream(DataStream *pStream) DataStream::MoveType eMove = m_pRBRangeDown->IsChecked() ? DataStream::RANGE_DOWN : DataStream::MOVE_DOWN; - if (pStream) - { - pStream->Decode(rURL, aStartRange, nLimit, eMove, nSettings); - pStream->SetRefreshOnEmptyLine(m_pCBRefreshOnEmpty->IsChecked()); - return; - } - - pStream = DataStream::Set(mpDocShell, rURL, aStartRange, nLimit, eMove, nSettings); + DataStream* pStream = DataStream::Set(mpDocShell, rURL, aStartRange, nLimit, eMove, nSettings); pStream->SetRefreshOnEmptyLine(m_pCBRefreshOnEmpty->IsChecked()); DataStream::MakeToolbarVisible(); pStream->StartImport(); diff --git a/sc/source/ui/view/cellsh2.cxx b/sc/source/ui/view/cellsh2.cxx index 1c7e89c..4cea560 100644 --- a/sc/source/ui/view/cellsh2.cxx +++ b/sc/source/ui/view/cellsh2.cxx @@ -739,6 +739,12 @@ void ScCellShell::ExecuteDB( SfxRequest& rReq ) case SID_DATA_STREAMS: { sc::DataStreamDlg aDialog( GetViewData()->GetDocShell(), pTabViewShell->GetDialogParent() ); + ScDocument *pDoc = GetViewData()->GetDocument(); + sc::DocumentLinkManager& rMgr = pDoc->GetDocLinkManager(); + sc::DataStream* pStrm = rMgr.getDataStream(); + if (pStrm) + aDialog.Init(*pStrm); + if (aDialog.Execute() == RET_OK) aDialog.StartStream(); } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits