diff options
Diffstat (limited to 'sc/inc/refhint.hxx')
-rw-r--r-- | sc/inc/refhint.hxx | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/sc/inc/refhint.hxx b/sc/inc/refhint.hxx new file mode 100644 index 000000000..76ec84300 --- /dev/null +++ b/sc/inc/refhint.hxx @@ -0,0 +1,113 @@ +/* -*- 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/. + */ + +#ifndef INCLUDED_SC_INC_REFHINT_HXX +#define INCLUDED_SC_INC_REFHINT_HXX + +#include "types.hxx" +#include <svl/hint.hxx> + +namespace sc { + +struct RefUpdateContext; +class ColRowReorderMapType; + +class RefHint : public SfxHint +{ +public: + enum Type { + ColumnReordered, + RowReordered, + StartListening, + StopListening + }; + +private: + Type meType; + +protected: + RefHint( Type eType ); + +public: + RefHint() = delete; + virtual ~RefHint() override = 0; + + RefHint(RefHint const &) = default; + RefHint(RefHint &&) = default; + RefHint & operator =(RefHint const &) = delete; + RefHint & operator =(RefHint &&) = delete; + + Type getType() const; +}; + +class RefColReorderHint final : public RefHint +{ + const sc::ColRowReorderMapType& mrColMap; + SCTAB mnTab; + SCROW mnRow1; + SCROW mnRow2; + +public: + RefColReorderHint( const sc::ColRowReorderMapType& rColMap, SCTAB nTab, SCROW nRow1, SCROW nRow2 ); + virtual ~RefColReorderHint() override; + + RefColReorderHint(RefColReorderHint const &) = default; + RefColReorderHint(RefColReorderHint &&) = default; + RefColReorderHint & operator =(RefColReorderHint const &) = delete; // due to mrColMap + RefColReorderHint & operator =(RefColReorderHint &&) = delete; // due to mrColMap + + const sc::ColRowReorderMapType& getColMap() const; + + SCTAB getTab() const; + SCROW getStartRow() const; + SCROW getEndRow() const; +}; + +class RefRowReorderHint final : public RefHint +{ + const sc::ColRowReorderMapType& mrRowMap; + SCTAB mnTab; + SCCOL mnCol1; + SCCOL mnCol2; + +public: + RefRowReorderHint( const sc::ColRowReorderMapType& rRowMap, SCTAB nTab, SCCOL nCol1, SCCOL nCol2 ); + virtual ~RefRowReorderHint() override; + + RefRowReorderHint(RefRowReorderHint const &) = default; + RefRowReorderHint(RefRowReorderHint &&) = default; + RefRowReorderHint & operator =(RefRowReorderHint const &) = delete; // due to mrRowMap + RefRowReorderHint & operator =(RefRowReorderHint &&) = delete; // due to mrRowMap + + const sc::ColRowReorderMapType& getRowMap() const; + + SCTAB getTab() const; + SCCOL getStartColumn() const; + SCCOL getEndColumn() const; +}; + +class RefStartListeningHint final : public RefHint +{ +public: + RefStartListeningHint(); + virtual ~RefStartListeningHint() override; +}; + +class RefStopListeningHint final : public RefHint +{ +public: + RefStopListeningHint(); + virtual ~RefStopListeningHint() override; +}; + +} + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |