File indexing completed on 2024-05-12 04:33:31
0001 /* 0002 SPDX-FileCopyrightText: 2018 Intevation GmbH <intevation@intevation.de> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "event_p.h" 0008 #include <QApplication> 0009 0010 #include "../form.h" 0011 0012 using namespace Okular; 0013 0014 class Event::Private 0015 { 0016 public: 0017 explicit Private(EventType eventType) 0018 : m_target(nullptr) 0019 , m_targetPage(nullptr) 0020 , m_source(nullptr) 0021 , m_sourcePage(nullptr) 0022 , m_eventType(eventType) 0023 , m_returnCode(false) 0024 , m_shiftModifier(false) 0025 , m_willCommit(false) 0026 { 0027 } 0028 0029 void *m_target; 0030 Page *m_targetPage; 0031 FormField *m_source; 0032 Page *m_sourcePage; 0033 EventType m_eventType; 0034 QString m_targetName; 0035 QVariant m_value; 0036 bool m_returnCode; 0037 bool m_shiftModifier; 0038 bool m_willCommit; 0039 QString m_change; 0040 }; 0041 0042 Event::Event() 0043 : d(new Private(UnknownEvent)) 0044 { 0045 } 0046 0047 Event::Event(EventType eventType) 0048 : d(new Private(eventType)) 0049 { 0050 } 0051 0052 Event::EventType Event::eventType() const 0053 { 0054 return d->m_eventType; 0055 } 0056 0057 QString Event::name() const 0058 { 0059 switch (d->m_eventType) { 0060 case FieldCalculate: 0061 return QStringLiteral("Calculate"); 0062 case FieldFormat: 0063 return QStringLiteral("Format"); 0064 case FieldKeystroke: 0065 return QStringLiteral("Keystroke"); 0066 case FieldFocus: 0067 return QStringLiteral("Focus"); 0068 case FieldValidate: 0069 return QStringLiteral("Validate"); 0070 case FieldMouseUp: 0071 return QStringLiteral("MouseUp"); 0072 case UnknownEvent: 0073 default: 0074 return QStringLiteral("Unknown"); 0075 } 0076 } 0077 0078 QString Event::type() const 0079 { 0080 switch (d->m_eventType) { 0081 case FieldCalculate: 0082 case FieldFormat: 0083 case FieldKeystroke: 0084 case FieldFocus: 0085 case FieldValidate: 0086 case FieldMouseUp: 0087 return QStringLiteral("Field"); 0088 case UnknownEvent: 0089 default: 0090 return QStringLiteral("Unknown"); 0091 } 0092 } 0093 0094 QString Event::targetName() const 0095 { 0096 if (!d->m_targetName.isNull()) { 0097 return d->m_targetName; 0098 } 0099 0100 return QStringLiteral("JavaScript for: ") + type() + name(); 0101 } 0102 0103 void Event::setTargetName(const QString &val) 0104 { 0105 d->m_targetName = val; 0106 } 0107 0108 FormField *Event::source() const 0109 { 0110 return d->m_source; 0111 } 0112 0113 void Event::setSource(FormField *val) 0114 { 0115 d->m_source = val; 0116 } 0117 0118 Page *Event::sourcePage() const 0119 { 0120 return d->m_sourcePage; 0121 } 0122 0123 void Event::setSourcePage(Page *val) 0124 { 0125 d->m_sourcePage = val; 0126 } 0127 0128 void *Event::target() const 0129 { 0130 return d->m_target; 0131 } 0132 0133 void Event::setTarget(void *target) 0134 { 0135 d->m_target = target; 0136 } 0137 0138 Page *Event::targetPage() const 0139 { 0140 return d->m_targetPage; 0141 } 0142 0143 void Event::setTargetPage(Page *val) 0144 { 0145 d->m_targetPage = val; 0146 } 0147 0148 QVariant Event::value() const 0149 { 0150 return d->m_value; 0151 } 0152 0153 void Event::setValue(const QVariant &val) 0154 { 0155 d->m_value = val; 0156 } 0157 0158 bool Event::returnCode() const 0159 { 0160 return d->m_returnCode; 0161 } 0162 0163 void Event::setReturnCode(bool returnCode) 0164 { 0165 d->m_returnCode = returnCode; 0166 } 0167 0168 bool Event::shiftModifier() const 0169 { 0170 return d->m_shiftModifier; 0171 } 0172 0173 void Event::setShiftModifier(bool shiftModifier) 0174 { 0175 d->m_shiftModifier = shiftModifier; 0176 } 0177 0178 bool Event::willCommit() const 0179 { 0180 return d->m_willCommit; 0181 } 0182 0183 void Event::setWillCommit(bool willCommit) 0184 { 0185 d->m_willCommit = willCommit; 0186 } 0187 0188 QString Event::change() const 0189 { 0190 return d->m_change; 0191 } 0192 0193 void Event::setChange(const QString &change) 0194 { 0195 d->m_change = change; 0196 } 0197 0198 // static 0199 std::shared_ptr<Event> Event::createFormCalculateEvent(FormField *target, Page *targetPage, FormField *source, Page *sourcePage, const QString &targetName) 0200 { 0201 std::shared_ptr<Event> ret(new Event(Event::FieldCalculate)); 0202 ret->setSource(source); 0203 ret->setSourcePage(sourcePage); 0204 ret->setTarget(target); 0205 ret->setTargetPage(targetPage); 0206 ret->setTargetName(targetName); 0207 0208 FormFieldText *fft = dynamic_cast<FormFieldText *>(target); 0209 if (fft) { 0210 ret->setValue(QVariant(fft->text())); 0211 } 0212 return ret; 0213 } 0214 0215 // static 0216 std::shared_ptr<Event> Event::createFormatEvent(FormField *target, Page *targetPage, const QString &targetName) 0217 { 0218 std::shared_ptr<Event> ret(new Event(Event::FieldFormat)); 0219 ret->setTarget(target); 0220 ret->setTargetPage(targetPage); 0221 ret->setTargetName(targetName); 0222 0223 FormFieldText *fft = dynamic_cast<FormFieldText *>(target); 0224 if (fft) { 0225 ret->setValue(QVariant(fft->text())); 0226 } 0227 return ret; 0228 } 0229 0230 // static 0231 std::shared_ptr<Event> Event::createKeystrokeEvent(FormField *target, Page *targetPage) 0232 { 0233 std::shared_ptr<Event> ret(new Event(Event::FieldKeystroke)); 0234 ret->setTarget(target); 0235 ret->setTargetPage(targetPage); 0236 0237 FormFieldText *fft = dynamic_cast<FormFieldText *>(target); 0238 if (fft) { 0239 ret->setReturnCode(true); 0240 ret->setValue(QVariant(fft->text())); 0241 } 0242 return ret; 0243 } 0244 0245 std::shared_ptr<Event> Event::createFormFocusEvent(FormField *target, Page *targetPage, const QString &targetName) 0246 { 0247 std::shared_ptr<Event> ret(new Event(Event::FieldFocus)); 0248 ret->setTarget(target); 0249 ret->setTargetPage(targetPage); 0250 ret->setTargetName(targetName); 0251 ret->setShiftModifier(QApplication::keyboardModifiers() & Qt::ShiftModifier); 0252 0253 FormFieldText *fft = dynamic_cast<FormFieldText *>(target); 0254 if (fft) { 0255 ret->setValue(QVariant(fft->text())); 0256 } 0257 return ret; 0258 } 0259 0260 std::shared_ptr<Event> Event::createFormValidateEvent(FormField *target, Page *targetPage, const QString &targetName) 0261 { 0262 std::shared_ptr<Event> ret(new Event(Event::FieldValidate)); 0263 ret->setTarget(target); 0264 ret->setTargetPage(targetPage); 0265 ret->setTargetName(targetName); 0266 ret->setShiftModifier(QApplication::keyboardModifiers() & Qt::ShiftModifier); 0267 0268 FormFieldText *fft = dynamic_cast<FormFieldText *>(target); 0269 if (fft) { 0270 ret->setValue(QVariant(fft->text())); 0271 ret->setReturnCode(true); 0272 } 0273 return ret; 0274 } 0275 0276 std::shared_ptr<Event> Event::createFieldMouseUpEvent(FormField *target, Page *targetPage) 0277 { 0278 std::shared_ptr<Event> ret = std::make_shared<Event>(Event::FieldMouseUp); 0279 ret->setTarget(target); 0280 ret->setTargetPage(targetPage); 0281 ret->setShiftModifier(QApplication::keyboardModifiers() & Qt::ShiftModifier); 0282 return ret; 0283 }