summaryrefslogtreecommitdiff
path: root/sc/source/ui/inc/datastream.hxx
diff options
context:
space:
mode:
authorMatúš Kukan <matus.kukan@collabora.com>2013-11-21 15:23:09 +0100
committerMatúš Kukan <matus.kukan@collabora.com>2013-11-28 20:40:36 +0100
commit47bc56725a37834888680986844b5d7630a6581d (patch)
treeab7891d0d074934859314a8a7105d7242291f87c /sc/source/ui/inc/datastream.hxx
parent4cbc3d855529737bf8ce37a3c98dbbcc6b17f09e (diff)
Rework data streams to be more like file links (ScAreaLink).
By inheriting from sfx2::SvBaseLink and storing in sfx2::LinkManager we can have more data streams and see / remove them in Edit -> Links... dialog. Also rename to DataStream to avoid confusion. Change-Id: I9c3b89020324af7be082f9e6e1cd479aeb72fe81
Diffstat (limited to 'sc/source/ui/inc/datastream.hxx')
-rw-r--r--sc/source/ui/inc/datastream.hxx68
1 files changed, 68 insertions, 0 deletions
diff --git a/sc/source/ui/inc/datastream.hxx b/sc/source/ui/inc/datastream.hxx
new file mode 100644
index 000000000000..6da62c9cd41e
--- /dev/null
+++ b/sc/source/ui/inc/datastream.hxx
@@ -0,0 +1,68 @@
+/* -*- 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 <sal/config.h>
+
+#include <rtl/ref.hxx>
+#include <rtl/ustring.hxx>
+#include <sfx2/lnkbase.hxx>
+
+#include <boost/noncopyable.hpp>
+#include <boost/scoped_ptr.hpp>
+#include <vector>
+
+namespace datastreams {
+ class CallerThread;
+ class ReaderThread;
+}
+class ScDocShell;
+class ScDocument;
+class ScRange;
+class Window;
+
+typedef std::vector<OString> LinesList;
+
+class DataStream : boost::noncopyable, public sfx2::SvBaseLink
+{
+ OString ConsumeLine();
+ void Decode(const OUString& rURL, const OUString& rRange, const OUString& rMove);
+ void MoveData();
+
+public:
+ enum MoveEnum { NO_MOVE, RANGE_DOWN, MOVE_DOWN, MOVE_UP };
+
+ static void Set(ScDocShell *pShell, const OUString& rURL,
+ const OUString& rRange, sal_Int32 nLimit, const OUString& rMove);
+
+ DataStream(ScDocShell *pShell, const OUString& rURL,
+ const OUString& rRange, sal_Int32 nLimit, const OUString& rMove);
+ virtual ~DataStream() SAL_OVERRIDE;
+ virtual void Edit(Window* , const Link& ) SAL_OVERRIDE;
+
+ bool ImportData();
+ void Start();
+ void Stop();
+
+private:
+ ScDocShell *mpScDocShell;
+ ScDocument *mpScDocument;
+ MoveEnum meMove;
+ bool mbRunning;
+ bool mbIsUndoEnabled;
+ bool mbValuesInLine;
+ LinesList *mpLines;
+ size_t mnLinesCount;
+ boost::scoped_ptr<ScRange> mpRange;
+ boost::scoped_ptr<ScRange> mpStartRange;
+ boost::scoped_ptr<ScRange> mpEndRange;
+ rtl::Reference<datastreams::CallerThread> mxThread;
+ rtl::Reference<datastreams::ReaderThread> mxReaderThread;
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */