Okular

event.cpp
1/*
2 SPDX-FileCopyrightText: 2018 Intevation GmbH <intevation@intevation.de>
3
4 SPDX-License-Identifier: GPL-2.0-or-later
5*/
6
7#include "event_p.h"
8#include <QApplication>
9
10#include "../form.h"
11
12using namespace Okular;
13
14class Event::Private
15{
16public:
17 explicit Private(EventType eventType)
18 : m_target(nullptr)
19 , m_targetPage(nullptr)
20 , m_source(nullptr)
21 , m_sourcePage(nullptr)
22 , m_eventType(eventType)
23 , m_returnCode(false)
24 , m_shiftModifier(false)
25 , m_willCommit(false)
26 {
27 }
28
29 void *m_target;
30 Page *m_targetPage;
31 FormField *m_source;
32 Page *m_sourcePage;
33 EventType m_eventType;
34 QString m_targetName;
35 QVariant m_value;
36 bool m_returnCode;
37 bool m_shiftModifier;
38 bool m_willCommit;
39 QString m_change;
40};
41
42Event::Event()
43 : d(new Private(UnknownEvent))
44{
45}
46
47Event::Event(EventType eventType)
48 : d(new Private(eventType))
49{
50}
51
52Event::EventType Event::eventType() const
53{
54 return d->m_eventType;
55}
56
57QString Event::name() const
58{
59 switch (d->m_eventType) {
60 case FieldCalculate:
61 return QStringLiteral("Calculate");
62 case FieldFormat:
63 return QStringLiteral("Format");
64 case FieldKeystroke:
65 return QStringLiteral("Keystroke");
66 case FieldFocus:
67 return QStringLiteral("Focus");
68 case FieldValidate:
69 return QStringLiteral("Validate");
70 case FieldMouseUp:
71 return QStringLiteral("MouseUp");
72 case UnknownEvent:
73 default:
74 return QStringLiteral("Unknown");
75 }
76}
77
78QString Event::type() const
79{
80 switch (d->m_eventType) {
81 case FieldCalculate:
82 case FieldFormat:
83 case FieldKeystroke:
84 case FieldFocus:
85 case FieldValidate:
86 case FieldMouseUp:
87 return QStringLiteral("Field");
88 case UnknownEvent:
89 default:
90 return QStringLiteral("Unknown");
91 }
92}
93
94QString Event::targetName() const
95{
96 if (!d->m_targetName.isNull()) {
97 return d->m_targetName;
98 }
99
100 return QStringLiteral("JavaScript for: ") + type() + name();
101}
102
103void Event::setTargetName(const QString &val)
104{
105 d->m_targetName = val;
106}
107
108FormField *Event::source() const
109{
110 return d->m_source;
111}
112
113void Event::setSource(FormField *val)
114{
115 d->m_source = val;
116}
117
118Page *Event::sourcePage() const
119{
120 return d->m_sourcePage;
121}
122
123void Event::setSourcePage(Page *val)
124{
125 d->m_sourcePage = val;
126}
127
128void *Event::target() const
129{
130 return d->m_target;
131}
132
133void Event::setTarget(void *target)
134{
135 d->m_target = target;
136}
137
138Page *Event::targetPage() const
139{
140 return d->m_targetPage;
141}
142
143void Event::setTargetPage(Page *val)
144{
145 d->m_targetPage = val;
146}
147
148QVariant Event::value() const
149{
150 return d->m_value;
151}
152
153void Event::setValue(const QVariant &val)
154{
155 d->m_value = val;
156}
157
158bool Event::returnCode() const
159{
160 return d->m_returnCode;
161}
162
163void Event::setReturnCode(bool returnCode)
164{
165 d->m_returnCode = returnCode;
166}
167
168bool Event::shiftModifier() const
169{
170 return d->m_shiftModifier;
171}
172
173void Event::setShiftModifier(bool shiftModifier)
174{
175 d->m_shiftModifier = shiftModifier;
176}
177
178bool Event::willCommit() const
179{
180 return d->m_willCommit;
181}
182
183void Event::setWillCommit(bool willCommit)
184{
185 d->m_willCommit = willCommit;
186}
187
188QString Event::change() const
189{
190 return d->m_change;
191}
192
193void Event::setChange(const QString &change)
194{
195 d->m_change = change;
196}
197
198// static
199std::shared_ptr<Event> Event::createFormCalculateEvent(FormField *target, Page *targetPage, FormField *source, Page *sourcePage, const QString &targetName)
200{
201 std::shared_ptr<Event> ret(new Event(Event::FieldCalculate));
202 ret->setSource(source);
203 ret->setSourcePage(sourcePage);
204 ret->setTarget(target);
205 ret->setTargetPage(targetPage);
206 ret->setTargetName(targetName);
207
208 FormFieldText *fft = dynamic_cast<FormFieldText *>(target);
209 if (fft) {
210 ret->setValue(QVariant(fft->text()));
211 }
212 return ret;
213}
214
215// static
216std::shared_ptr<Event> Event::createFormatEvent(FormField *target, Page *targetPage, const QString &targetName)
217{
218 std::shared_ptr<Event> ret(new Event(Event::FieldFormat));
219 ret->setTarget(target);
220 ret->setTargetPage(targetPage);
221 ret->setTargetName(targetName);
222
223 FormFieldText *fft = dynamic_cast<FormFieldText *>(target);
224 if (fft) {
225 ret->setValue(QVariant(fft->text()));
226 }
227 return ret;
228}
229
230// static
231std::shared_ptr<Event> Event::createKeystrokeEvent(FormField *target, Page *targetPage)
232{
233 std::shared_ptr<Event> ret(new Event(Event::FieldKeystroke));
234 ret->setTarget(target);
235 ret->setTargetPage(targetPage);
236
237 FormFieldText *fft = dynamic_cast<FormFieldText *>(target);
238 if (fft) {
239 ret->setReturnCode(true);
240 ret->setValue(QVariant(fft->text()));
241 }
242 return ret;
243}
244
245std::shared_ptr<Event> Event::createFormFocusEvent(FormField *target, Page *targetPage, const QString &targetName)
246{
247 std::shared_ptr<Event> ret(new Event(Event::FieldFocus));
248 ret->setTarget(target);
249 ret->setTargetPage(targetPage);
250 ret->setTargetName(targetName);
251 ret->setShiftModifier(QApplication::keyboardModifiers() & Qt::ShiftModifier);
252
253 FormFieldText *fft = dynamic_cast<FormFieldText *>(target);
254 if (fft) {
255 ret->setValue(QVariant(fft->text()));
256 }
257 return ret;
258}
259
260std::shared_ptr<Event> Event::createFormValidateEvent(FormField *target, Page *targetPage, const QString &targetName)
261{
262 std::shared_ptr<Event> ret(new Event(Event::FieldValidate));
263 ret->setTarget(target);
264 ret->setTargetPage(targetPage);
265 ret->setTargetName(targetName);
266 ret->setShiftModifier(QApplication::keyboardModifiers() & Qt::ShiftModifier);
267
268 FormFieldText *fft = dynamic_cast<FormFieldText *>(target);
269 if (fft) {
270 ret->setValue(QVariant(fft->text()));
271 ret->setReturnCode(true);
272 }
273 return ret;
274}
275
276std::shared_ptr<Event> Event::createFieldMouseUpEvent(FormField *target, Page *targetPage)
277{
278 std::shared_ptr<Event> ret = std::make_shared<Event>(Event::FieldMouseUp);
279 ret->setTarget(target);
280 ret->setTargetPage(targetPage);
281 ret->setShiftModifier(QApplication::keyboardModifiers() & Qt::ShiftModifier);
282 return ret;
283}
Interface of a text form field.
Definition form.h:261
virtual QString text() const =0
The text of text field.
The base interface of a form field.
Definition form.h:40
Type type(const QSqlDatabase &db)
QString name(StandardShortcut id)
global.h
Definition action.h:17
Qt::KeyboardModifiers keyboardModifiers()
ShiftModifier
This file is part of the KDE documentation.
Documentation copyright © 1996-2024 The KDE developers.
Generated on Tue Mar 26 2024 11:17:35 by doxygen 1.10.0 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.