1 /*
2 Copyright (c) 2006 Boudewijn Rempt (boud@valdyas.org)
3 Copyright (C) 2007, 2010 Thomas Zander <zander@kde.org>
4 Copyright (c) 2008 Carlos Licea <carlos.licea@kdemail.net>
5 Copyright (c) 2011 Jan Hambrecht <jaham@gmx.net>
6
7 This library is free software; you can redistribute it and/or
8 modify it under the terms of the GNU Library General Public
9 License as published by the Free Software Foundation; either
10 version 2 of the License, or (at your option) any later version.
11
12 This library is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 Library General Public License for more details.
16
17 You should have received a copy of the GNU Library General Public License
18 along with this library; see the file COPYING.LIB. If not, write to
19 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20 Boston, MA 02110-1301, USA.
21 */
22 #include "KoDocumentResourceManager.h"
23
24 #include <QVariant>
25 #include <kundo2stack.h>
26 #include <FlakeDebug.h>
27
28 #include "KoShape.h"
29 #include "KoShapeController.h"
30 #include "KoResourceManager_p.h"
31
32 class Q_DECL_HIDDEN KoDocumentResourceManager::Private
33 {
34 public:
35 KoResourceManager manager;
36 };
37
KoDocumentResourceManager(QObject * parent)38 KoDocumentResourceManager::KoDocumentResourceManager(QObject *parent)
39 : QObject(parent),
40 d(new Private())
41 {
42 connect(&d->manager, &KoResourceManager::resourceChanged,
43 this, &KoDocumentResourceManager::resourceChanged);
44 }
45
~KoDocumentResourceManager()46 KoDocumentResourceManager::~KoDocumentResourceManager()
47 {
48 delete d;
49 }
50
setResource(int key,const QVariant & value)51 void KoDocumentResourceManager::setResource(int key, const QVariant &value)
52 {
53 d->manager.setResource(key, value);
54 }
55
resource(int key) const56 QVariant KoDocumentResourceManager::resource(int key) const
57 {
58 return d->manager.resource(key);
59 }
60
setResource(int key,const KoColor & color)61 void KoDocumentResourceManager::setResource(int key, const KoColor &color)
62 {
63 QVariant v;
64 v.setValue(color);
65 setResource(key, v);
66 }
67
setResource(int key,KoShape * shape)68 void KoDocumentResourceManager::setResource(int key, KoShape *shape)
69 {
70 QVariant v;
71 v.setValue(shape);
72 setResource(key, v);
73 }
74
setResource(int key,const KoUnit & unit)75 void KoDocumentResourceManager::setResource(int key, const KoUnit &unit)
76 {
77 QVariant v;
78 v.setValue(unit);
79 setResource(key, v);
80 }
81
koColorResource(int key) const82 KoColor KoDocumentResourceManager::koColorResource(int key) const
83 {
84 return d->manager.koColorResource(key);
85 }
86
87
boolResource(int key) const88 bool KoDocumentResourceManager::boolResource(int key) const
89 {
90 return d->manager.boolResource(key);
91 }
92
intResource(int key) const93 int KoDocumentResourceManager::intResource(int key) const
94 {
95 return d->manager.intResource(key);
96 }
97
stringResource(int key) const98 QString KoDocumentResourceManager::stringResource(int key) const
99 {
100 return d->manager.stringResource(key);
101 }
102
sizeResource(int key) const103 QSizeF KoDocumentResourceManager::sizeResource(int key) const
104 {
105 return d->manager.sizeResource(key);
106 }
107
hasResource(int key) const108 bool KoDocumentResourceManager::hasResource(int key) const
109 {
110 return d->manager.hasResource(key);
111 }
112
clearResource(int key)113 void KoDocumentResourceManager::clearResource(int key)
114 {
115 d->manager.clearResource(key);
116 }
117
undoStack() const118 KUndo2Stack *KoDocumentResourceManager::undoStack() const
119 {
120 if (!hasResource(UndoStack))
121 return 0;
122 return static_cast<KUndo2Stack*>(resource(UndoStack).value<void*>());
123 }
124
setHandleRadius(int handleRadius)125 void KoDocumentResourceManager::setHandleRadius(int handleRadius)
126 {
127 // do not allow arbitrary small handles
128 if (handleRadius < 5)
129 handleRadius = 5;
130 setResource(HandleRadius, QVariant(handleRadius));
131 }
132
handleRadius() const133 int KoDocumentResourceManager::handleRadius() const
134 {
135 if (hasResource(HandleRadius))
136 return intResource(HandleRadius);
137 return 5; // default value (and is used just about everywhere)
138 }
setGrabSensitivity(int grabSensitivity)139 void KoDocumentResourceManager::setGrabSensitivity(int grabSensitivity)
140 {
141 // do not allow arbitrary small grab sensitivity
142 if (grabSensitivity < 5)
143 grabSensitivity = 5;
144 setResource(GrabSensitivity, QVariant(grabSensitivity));
145 }
146
grabSensitivity() const147 int KoDocumentResourceManager::grabSensitivity() const
148 {
149 if (hasResource(GrabSensitivity))
150 return intResource(GrabSensitivity);
151 return 5; // default value (and is used just about everywhere)
152 }
153
setUndoStack(KUndo2Stack * undoStack)154 void KoDocumentResourceManager::setUndoStack(KUndo2Stack *undoStack)
155 {
156 QVariant variant;
157 variant.setValue<void*>(undoStack);
158 setResource(UndoStack, variant);
159 }
160
imageCollection() const161 KoImageCollection *KoDocumentResourceManager::imageCollection() const
162 {
163 if (!hasResource(ImageCollection))
164 return 0;
165 return static_cast<KoImageCollection*>(resource(ImageCollection).value<void*>());
166 }
167
setImageCollection(KoImageCollection * ic)168 void KoDocumentResourceManager::setImageCollection(KoImageCollection *ic)
169 {
170 QVariant variant;
171 variant.setValue<void*>(ic);
172 setResource(ImageCollection, variant);
173 }
174
odfDocument() const175 KoDocumentBase *KoDocumentResourceManager::odfDocument() const
176 {
177 if (!hasResource(OdfDocument))
178 return 0;
179 return static_cast<KoDocumentBase*>(resource(OdfDocument).value<void*>());
180 }
181
setOdfDocument(KoDocumentBase * currentDocument)182 void KoDocumentResourceManager::setOdfDocument(KoDocumentBase *currentDocument)
183 {
184 QVariant variant;
185 variant.setValue<void*>(currentDocument);
186 setResource(OdfDocument, variant);
187 }
188
documentResolution() const189 qreal KoDocumentResourceManager::documentResolution() const
190 {
191 KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE(hasResource(DocumentResolution), 72.0);
192 return resource(DocumentResolution).toReal();
193 }
194
documentRectInPixels() const195 QRectF KoDocumentResourceManager::documentRectInPixels() const
196 {
197 KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE(hasResource(DocumentRectInPixels), QRectF(0,0, 777, 666));
198 return resource(DocumentRectInPixels).toRectF();
199 }
200
globalShapeController() const201 KoShapeController *KoDocumentResourceManager::globalShapeController() const
202 {
203 if (!hasResource(GlobalShapeController))
204 return 0;
205
206 return resource(GlobalShapeController).value<KoShapeController *>();
207 }
208
setGlobalShapeController(KoShapeController * shapeController)209 void KoDocumentResourceManager::setGlobalShapeController(KoShapeController *shapeController)
210 {
211 QVariant variant;
212 variant.setValue<KoShapeController *>(shapeController);
213 setResource(GlobalShapeController, variant);
214 }
215