1/* This file is part of the KDE project
2 Copyright 2007 Stefan Nikolaus <stefan.nikolaus@kdemail.net>
3
4 This library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Library General Public
6 License as published by the Free Software Foundation; either
7 version 2 of the License, or (at your option) any later version.
8
9 This library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Library General Public License for more details.
13
14 You should have received a copy of the GNU Library General Public License
15 along with this library; see the file COPYING.LIB. If not, write to
16 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17 Boston, MA 02110-1301, USA.
18*/
19
20#ifndef CALLIGRA_SHEETS_BINDING_MANAGER
21#define CALLIGRA_SHEETS_BINDING_MANAGER
22
23#include <QObject>
24
25class QAbstractItemModel;
26class QString;
27
28namespace Calligra
29{
30namespace Sheets
31{
32class Map;
33class Region;
34
35/**
36 * Manages cell ranges acting as data sources.
37 */
38class BindingManager : public QObject
39{
40 Q_OBJECT
41public:
42 /**
43 * Constructor.
44 */
45 explicit BindingManager(const Map *map);
46
47 /**
48 * Destructor.
49 */
50 virtual ~BindingManager();
51
52 // KoTable::SourceRangeManager interface
53 virtual const QAbstractItemModel* createModel(const QString& regionName);
54 virtual bool removeModel(const QAbstractItemModel* model);
55 virtual bool isCellRegionValid(const QString& regionName) const;
56
57 void regionChanged(const Region& region);
58 void updateAllBindings();
59
60private:
61 class Private;
62 Private * const d;
63};
64
65} // namespace Sheets
66} // namespace Calligra
67
68#endif // CALLIGRA_SHEETS_BINDING_MANAGER
69