nss: upgrade to release 3.73
[LibreOffice.git] / sc / inc / listenercontext.hxx
blob616af5d7a3c26b30c38e2ffcdc9734035ddd6971
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 */
10 #ifndef INCLUDED_SC_INC_LISTENERCONTEXT_HXX
11 #define INCLUDED_SC_INC_LISTENERCONTEXT_HXX
13 #include "address.hxx"
14 #include "columnspanset.hxx"
15 #include "mtvelements.hxx"
17 #include <memory>
19 class ScDocument;
20 class ScTokenArray;
22 namespace sc
24 class ColumnSet;
26 class StartListeningContext
28 ScDocument& mrDoc;
29 std::shared_ptr<ColumnBlockPositionSet> mpSet;
30 std::shared_ptr<const ColumnSet> mpColSet;
32 public:
33 StartListeningContext(const StartListeningContext&) = delete;
34 const StartListeningContext& operator=(const StartListeningContext&) = delete;
35 StartListeningContext(ScDocument& rDoc);
36 StartListeningContext(ScDocument& rDoc, const std::shared_ptr<ColumnBlockPositionSet>& pSet);
37 void setColumnSet(const std::shared_ptr<const ColumnSet>& pColSet);
38 const std::shared_ptr<const ColumnSet>& getColumnSet() const;
39 ScDocument& getDoc() { return mrDoc; }
41 ColumnBlockPosition* getBlockPosition(SCTAB nTab, SCCOL nCol);
44 class EndListeningContext
46 ScDocument& mrDoc;
47 ColumnSpanSet maSet;
48 std::shared_ptr<ColumnBlockPositionSet> mpPosSet;
49 ScTokenArray* mpOldCode;
50 ScAddress maPosDelta; // Add this to get the old position prior to the move.
52 public:
53 EndListeningContext(const EndListeningContext&) = delete;
54 const EndListeningContext& operator=(const EndListeningContext&) = delete;
55 EndListeningContext(ScDocument& rDoc, ScTokenArray* pOldCode = nullptr);
56 EndListeningContext(ScDocument& rDoc, const std::shared_ptr<ColumnBlockPositionSet>& pSet,
57 ScTokenArray* pOldCode = nullptr);
59 void setPositionDelta(const ScAddress& rDelta);
61 ScDocument& getDoc() { return mrDoc; }
62 ScTokenArray* getOldCode() { return mpOldCode; }
63 ScAddress getOldPosition(const ScAddress& rPos) const;
65 ColumnBlockPosition* getBlockPosition(SCTAB nTab, SCCOL nCol);
67 void addEmptyBroadcasterPosition(SCTAB nTab, SCCOL nCol, SCROW nRow);
68 void purgeEmptyBroadcasters();
71 class PurgeListenerAction final : public ColumnSpanSet::Action
73 ScDocument& mrDoc;
74 std::unique_ptr<ColumnBlockPosition> mpBlockPos;
76 public:
77 PurgeListenerAction(const PurgeListenerAction&) = delete;
78 const PurgeListenerAction& operator=(const PurgeListenerAction&) = delete;
79 PurgeListenerAction(ScDocument& rDoc);
81 virtual void startColumn(SCTAB nTab, SCCOL nCol) override;
82 virtual void execute(const ScAddress& rPos, SCROW nLength, bool bVal) override;
86 #endif
88 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */