sc/source/ui/inc/datastreams.hxx | 15 ++++++--- sc/source/ui/miscdlgs/datastreams.cxx | 48 ++++++++++++++++--------------- sc/source/ui/miscdlgs/datastreamsdlg.cxx | 14 +++------ 3 files changed, 42 insertions(+), 35 deletions(-)
New commits: commit 8168849381fb7bcff2d26e4d3310ecefb42445bc Author: Matúš Kukan <[email protected]> Date: Tue Nov 12 10:49:18 2013 +0100 fix the move commit Change-Id: Id37a27d0a671ce74d66d9cfa09cdafa8bceb9255 diff --git a/sc/source/ui/inc/datastreams.hxx b/sc/source/ui/inc/datastreams.hxx index ae807df..d3f63b9 100644 --- a/sc/source/ui/inc/datastreams.hxx +++ b/sc/source/ui/inc/datastreams.hxx @@ -14,6 +14,7 @@ #include <boost/scoped_ptr.hpp> +namespace { class DataStreamsDlg; } class Dialog; class ScDocShell; class ScDocument; @@ -24,10 +25,12 @@ namespace datastreams { class CallerThread; } class DataStreams { + friend DataStreamsDlg; + enum MoveEnum { NO_MOVE, RANGE_DOWN, MOVE_DOWN, MOVE_UP }; Dialog *mpDialog; ScDocShell *mpScDocShell; ScDocument *mpScDocument; - enum { NO_MOVE, RANGE_DOWN, MOVE_DOWN, MOVE_UP } meMove; + MoveEnum meMove; bool mbRunning; boost::scoped_ptr<ScRange> mpRange; boost::scoped_ptr<ScRange> mpStartRange; @@ -37,14 +40,16 @@ class DataStreams public: DataStreams(ScDocShell *pScDocShell); - virtual ~DataStreams(); + ~DataStreams(); bool ImportData(); - void MoveData(); void ShowDialog(Window *pParent); + +private: + void MoveData(); + void Set(const OUString& rUrl, bool bIsScript, const OUString& rRange, + sal_Int32 nLimit, MoveEnum eMove); void Start(); void Stop(); - void Set(const OUString& rUrl, bool bIsScript, const OUString& rRange); - void SetMove(sal_Int32 nLimit, bool bMoveRangeDown); }; /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/miscdlgs/datastreams.cxx b/sc/source/ui/miscdlgs/datastreams.cxx index 61e211d..587fddb 100644 --- a/sc/source/ui/miscdlgs/datastreams.cxx +++ b/sc/source/ui/miscdlgs/datastreams.cxx @@ -83,7 +83,8 @@ void DataStreams::Stop() mpScDocument->EnableUndo(true); } -void DataStreams::Set(const OUString& rUrl, bool bIsScript, const OUString& rRange) +void DataStreams::Set(const OUString& rUrl, bool bIsScript, + const OUString& rRange, sal_Int32 nLimit, MoveEnum eMove) { mpRange.reset ( new ScRange() ); mpRange->Parse(rRange, mpScDocument); @@ -92,12 +93,9 @@ void DataStreams::Set(const OUString& rUrl, bool bIsScript, const OUString& rRan mpStream.reset( new SvScriptStream(rUrl) ); else mpStream.reset( new SvFileStream(rUrl, STREAM_READ) ); -} -void DataStreams::SetMove(sal_Int32 nLimit, bool bMoveRangeDown) -{ mpEndRange.reset( NULL ); - meMove = bMoveRangeDown ? RANGE_DOWN : MOVE_DOWN; + meMove = eMove; sal_Int32 nHeight = mpRange->aEnd.Row() - mpRange->aStart.Row() + 1; nLimit = nHeight * (nLimit / nHeight); if (nLimit && mpRange->aStart.Row() + nLimit - 1 < MAXROW) @@ -109,22 +107,23 @@ void DataStreams::SetMove(sal_Int32 nLimit, bool bMoveRangeDown) void DataStreams::MoveData() { - if (meMove == MOVE_DOWN) - { - if (mpEndRange.get()) - mpScDocument->DeleteRow(*mpEndRange.get()); - mpScDocument->InsertRow(*mpRange.get()); - } - else if (meMove == RANGE_DOWN) - { - mpRange->Move(0, mpRange->aEnd.Row() - mpRange->aStart.Row() + 1, 0); - if (mpRange->aStart == mpEndRange->aStart) - meMove = MOVE_UP; - } - else if (meMove == MOVE_UP) + switch (meMove) { - mpScDocument->DeleteRow(*mpStartRange.get()); - mpScDocument->InsertRow(*mpEndRange.get()); + case RANGE_DOWN: + if (mpRange->aStart == mpEndRange->aStart) + meMove = MOVE_UP; + break; + case MOVE_UP: + mpScDocument->DeleteRow(*mpStartRange.get()); + mpScDocument->InsertRow(*mpEndRange.get()); + break; + case MOVE_DOWN: + if (mpEndRange.get()) + mpScDocument->DeleteRow(*mpEndRange.get()); + mpScDocument->InsertRow(*mpRange.get()); + break; + case NO_MOVE: + break; } } @@ -147,6 +146,7 @@ bool DataStreams::ImportData() aBuf.append('\n'); } SolarMutexGuard aGuard; + MoveData(); SvMemoryStream aMemoryStream((void *)aBuf.getStr(), aBuf.getLength(), STREAM_READ); ScImportExport aImport(mpScDocument, *mpRange.get()); ScAsciiOptions aOptions; @@ -158,8 +158,12 @@ bool DataStreams::ImportData() if (meMove == NO_MOVE) return mbRunning; - MoveData(); - mpScDocShell->GetViewData()->GetView()->AlignToCursor(mpRange->aStart.Col(), mpRange->aStart.Row(), SC_FOLLOW_JUMP); + if (meMove == RANGE_DOWN) + { + mpRange->Move(0, mpRange->aEnd.Row() - mpRange->aStart.Row() + 1, 0); + mpScDocShell->GetViewData()->GetView()->AlignToCursor( + mpRange->aStart.Col(), mpRange->aStart.Row(), SC_FOLLOW_JUMP); + } SCROW aEndRow = mpEndRange.get() ? mpEndRange->aEnd.Row() : MAXROW; mpScDocShell->PostPaint( ScRange( mpStartRange->aStart, ScAddress( mpRange->aEnd.Col(), aEndRow, mpRange->aStart.Tab()) ), PAINT_GRID ); diff --git a/sc/source/ui/miscdlgs/datastreamsdlg.cxx b/sc/source/ui/miscdlgs/datastreamsdlg.cxx index 8f8afe1..d99af8b 100644 --- a/sc/source/ui/miscdlgs/datastreamsdlg.cxx +++ b/sc/source/ui/miscdlgs/datastreamsdlg.cxx @@ -90,14 +90,12 @@ IMPL_LINK_NOARG(DataStreamsDlg, BrowseHdl) IMPL_LINK_NOARG(DataStreamsDlg, StartHdl) { bool bIsScript = m_pRBScriptData->IsChecked(); - mpDataStreams->Set(m_pCbUrl->GetText(), bIsScript, m_pEdRange->GetText()); - if (!m_pRBNoMove->IsChecked()) - { - sal_Int32 nLimit = 0; - if (m_pRBMaxLimit->IsChecked()) - nLimit = m_pEdLimit->GetText().toInt32(); - mpDataStreams->SetMove(nLimit, m_pRBRangeDown->IsChecked()); - } + sal_Int32 nLimit = 0; + if (m_pRBMaxLimit->IsChecked()) + nLimit = m_pEdLimit->GetText().toInt32(); + mpDataStreams->Set(m_pCbUrl->GetText(), bIsScript, m_pEdRange->GetText(), + nLimit, m_pRBNoMove->IsChecked() ? DataStreams::NO_MOVE : + m_pRBRangeDown->IsChecked() ? DataStreams::RANGE_DOWN : DataStreams::MOVE_DOWN); mpDataStreams->Start(); UpdateEnable(); return 0;
_______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
