File indexing completed on 2024-05-12 15:56:40
0001 /* 0002 SPDX-FileCopyrightText: 2006 Boudewijn Rempt (boud@valdyas.org) 0003 SPDX-FileCopyrightText: 2007, 2010 Thomas Zander <zander@kde.org> 0004 SPDX-FileCopyrightText: 2008 Carlos Licea <carlos.licea@kdemail.net> 0005 SPDX-FileCopyrightText: 2011 Jan Hambrecht <jaham@gmx.net> 0006 0007 SPDX-License-Identifier: LGPL-2.0-or-later 0008 */ 0009 #include "KoDocumentResourceManager.h" 0010 0011 #include <QVariant> 0012 #include <kundo2stack.h> 0013 #include <FlakeDebug.h> 0014 0015 #include "KoShape.h" 0016 #include "KoShapeController.h" 0017 #include "KoResourceManager_p.h" 0018 0019 class Q_DECL_HIDDEN KoDocumentResourceManager::Private 0020 { 0021 public: 0022 KoResourceManager manager; 0023 }; 0024 0025 KoDocumentResourceManager::KoDocumentResourceManager(QObject *parent) 0026 : QObject(parent), 0027 d(new Private()) 0028 { 0029 connect(&d->manager, &KoResourceManager::resourceChanged, 0030 this, &KoDocumentResourceManager::resourceChanged); 0031 } 0032 0033 KoDocumentResourceManager::~KoDocumentResourceManager() 0034 { 0035 delete d; 0036 } 0037 0038 void KoDocumentResourceManager::setResource(int key, const QVariant &value) 0039 { 0040 d->manager.setResource(key, value); 0041 } 0042 0043 QVariant KoDocumentResourceManager::resource(int key) const 0044 { 0045 return d->manager.resource(key); 0046 } 0047 0048 void KoDocumentResourceManager::setResource(int key, const KoColor &color) 0049 { 0050 QVariant v; 0051 v.setValue(color); 0052 setResource(key, v); 0053 } 0054 0055 void KoDocumentResourceManager::setResource(int key, KoShape *shape) 0056 { 0057 QVariant v; 0058 v.setValue(shape); 0059 setResource(key, v); 0060 } 0061 0062 void KoDocumentResourceManager::setResource(int key, const KoUnit &unit) 0063 { 0064 QVariant v; 0065 v.setValue(unit); 0066 setResource(key, v); 0067 } 0068 0069 KoColor KoDocumentResourceManager::koColorResource(int key) const 0070 { 0071 return d->manager.koColorResource(key); 0072 } 0073 0074 0075 bool KoDocumentResourceManager::boolResource(int key) const 0076 { 0077 return d->manager.boolResource(key); 0078 } 0079 0080 int KoDocumentResourceManager::intResource(int key) const 0081 { 0082 return d->manager.intResource(key); 0083 } 0084 0085 QString KoDocumentResourceManager::stringResource(int key) const 0086 { 0087 return d->manager.stringResource(key); 0088 } 0089 0090 QSizeF KoDocumentResourceManager::sizeResource(int key) const 0091 { 0092 return d->manager.sizeResource(key); 0093 } 0094 0095 bool KoDocumentResourceManager::hasResource(int key) const 0096 { 0097 return d->manager.hasResource(key); 0098 } 0099 0100 void KoDocumentResourceManager::clearResource(int key) 0101 { 0102 d->manager.clearResource(key); 0103 } 0104 0105 KUndo2Stack *KoDocumentResourceManager::undoStack() const 0106 { 0107 if (!hasResource(UndoStack)) 0108 return 0; 0109 return static_cast<KUndo2Stack*>(resource(UndoStack).value<void*>()); 0110 } 0111 0112 void KoDocumentResourceManager::setHandleRadius(int handleRadius) 0113 { 0114 // do not allow arbitrary small handles 0115 if (handleRadius < 5) 0116 handleRadius = 5; 0117 setResource(HandleRadius, QVariant(handleRadius)); 0118 } 0119 0120 int KoDocumentResourceManager::handleRadius() const 0121 { 0122 if (hasResource(HandleRadius)) 0123 return intResource(HandleRadius); 0124 return 5; // default value (and is used just about everywhere) 0125 } 0126 void KoDocumentResourceManager::setGrabSensitivity(int grabSensitivity) 0127 { 0128 // do not allow arbitrary small grab sensitivity 0129 if (grabSensitivity < 5) 0130 grabSensitivity = 5; 0131 setResource(GrabSensitivity, QVariant(grabSensitivity)); 0132 } 0133 0134 int KoDocumentResourceManager::grabSensitivity() const 0135 { 0136 if (hasResource(GrabSensitivity)) 0137 return intResource(GrabSensitivity); 0138 return 5; // default value (and is used just about everywhere) 0139 } 0140 0141 void KoDocumentResourceManager::setUndoStack(KUndo2Stack *undoStack) 0142 { 0143 QVariant variant; 0144 variant.setValue<void*>(undoStack); 0145 setResource(UndoStack, variant); 0146 } 0147 0148 qreal KoDocumentResourceManager::documentResolution() const 0149 { 0150 KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE(hasResource(DocumentResolution), 72.0); 0151 return resource(DocumentResolution).toReal(); 0152 } 0153 0154 QRectF KoDocumentResourceManager::documentRectInPixels() const 0155 { 0156 KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE(hasResource(DocumentRectInPixels), QRectF(0,0, 777, 666)); 0157 return resource(DocumentRectInPixels).toRectF(); 0158 } 0159 0160 KoShapeController *KoDocumentResourceManager::globalShapeController() const 0161 { 0162 if (!hasResource(GlobalShapeController)) 0163 return 0; 0164 0165 return resource(GlobalShapeController).value<KoShapeController *>(); 0166 } 0167 0168 void KoDocumentResourceManager::setGlobalShapeController(KoShapeController *shapeController) 0169 { 0170 QVariant variant; 0171 variant.setValue<KoShapeController *>(shapeController); 0172 setResource(GlobalShapeController, variant); 0173 }