1 /* This file is part of the KDE project
2    Copyright (C) 2004 Laurent Montel <montel@kde.org>
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 KSPLOADINGINFO_H
21 #define KSPLOADINGINFO_H
22 
23 #include "calligra_sheets_limits.h"
24 
25 #include <QMap>
26 #include <QPoint>
27 #include <QPointF>
28 
29 namespace Calligra
30 {
31 namespace Sheets
32 {
33 class Sheet;
34 
35 /// Temporary information used only during loading
36 class LoadingInfo
37 {
38 public:
39     enum FileFormat {
40         OpenDocument,
41         NativeFormat,
42         Gnumeric,
43         Unknown
44     };
45 
LoadingInfo()46     LoadingInfo()
47             : m_fileFormat(Unknown)
48             , m_initialActiveSheet(0)
49             , m_loadTemplate(false) {}
~LoadingInfo()50     ~LoadingInfo() {}
51 
fileFormat()52     FileFormat fileFormat() const {
53         return m_fileFormat;
54     }
setFileFormat(FileFormat format)55     void setFileFormat(FileFormat format) {
56         m_fileFormat = format;
57     }
58 
initialActiveSheet()59     Sheet* initialActiveSheet() const {
60         return m_initialActiveSheet;
61     }
setInitialActiveSheet(Sheet * sheet)62     void setInitialActiveSheet(Sheet* sheet) {
63         m_initialActiveSheet = sheet;
64     }
65 
66     /**
67      * @return the cursor positions
68      */
cursorPositions()69     const QMap<Sheet*, QPoint>& cursorPositions() const {
70         return m_cursorPositions;
71     }
72 
73     /**
74      * Stores the cursor position @p point for @p sheet .
75      */
setCursorPosition(Sheet * sheet,const QPoint & point)76     void setCursorPosition(Sheet* sheet, const QPoint& point) {
77         Q_ASSERT(1 <= point.x() && point.x() <= KS_colMax);
78         Q_ASSERT(1 <= point.y() && point.y() <= KS_rowMax);
79         m_cursorPositions.insert(sheet, point);
80     }
81 
82     /**
83      * @return scrolling offsets
84      */
scrollingOffsets()85     const QMap<Sheet*, QPointF>& scrollingOffsets() const {
86         return m_scrollingOffsets;
87     }
88 
89     /**
90      * Stores the scrolling offset @p point for @p sheet .
91      */
setScrollingOffset(Sheet * sheet,const QPointF & point)92     void setScrollingOffset(Sheet* sheet, const QPointF& point) {
93         m_scrollingOffsets.insert(sheet, point);
94     }
95 
setLoadTemplate(bool _b)96     void setLoadTemplate(bool _b) {
97         m_loadTemplate = _b;
98     }
loadTemplate()99     bool loadTemplate() const {
100         return m_loadTemplate;
101     }
102 
103 private:
104     FileFormat m_fileFormat;
105     Sheet* m_initialActiveSheet;
106     QMap<Sheet*, QPoint> m_cursorPositions;
107     QMap<Sheet*, QPointF> m_scrollingOffsets;
108     bool m_loadTemplate;
109 };
110 
111 } // namespace Sheets
112 } // namespace Calligra
113 
114 #endif /* KPRLOADINGINFO_H */
115 
116