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 , m_selStart(-1)
27 , m_selEnd(-1)
28 {
29 }
30
31 void *m_target;
32 Page *m_targetPage;
33 FormField *m_source;
34 Page *m_sourcePage;
35 EventType m_eventType;
36 QString m_targetName;
37 QVariant m_value;
38 bool m_returnCode;
39 bool m_shiftModifier;
40 bool m_willCommit;
41 QString m_change;
42 int m_selStart;
43 int m_selEnd;
44};
45
46Event::Event()
47 : d(new Private(UnknownEvent))
48{
49}
50
51Event::Event(EventType eventType)
52 : d(new Private(eventType))
53{
54}
55
56Event::EventType Event::eventType() const
57{
58 return d->m_eventType;
59}
60
61QString Event::name() const
62{
63 switch (d->m_eventType) {
64 case FieldCalculate:
65 return QStringLiteral("Calculate");
66 case FieldFormat:
67 return QStringLiteral("Format");
68 case FieldKeystroke:
69 return QStringLiteral("Keystroke");
70 case FieldFocus:
71 return QStringLiteral("Focus");
72 case FieldValidate:
73 return QStringLiteral("Validate");
74 case FieldMouseUp:
75 return QStringLiteral("MouseUp");
76 case DocOpen:
77 return QStringLiteral("Open");
78 case DocWillClose:
79 return QStringLiteral("WillClose");
80 case DocWillSave:
81 return QStringLiteral("WillSave");
82 case DocWillPrint:
83 return QStringLiteral("WillPrint");
84 case DocDidSave:
85 return QStringLiteral("DidSave");
86 case DocDidPrint:
87 return QStringLiteral("DidPrint");
88 case UnknownEvent:
89 default:
90 return QStringLiteral("Unknown");
91 }
92}
93
94QString Event::type() const
95{
96 switch (d->m_eventType) {
97 case FieldCalculate:
98 case FieldFormat:
99 case FieldKeystroke:
100 case FieldFocus:
101 case FieldValidate:
102 case FieldMouseUp:
103 return QStringLiteral("Field");
104 case DocOpen:
105 case DocWillClose:
106 case DocWillSave:
107 case DocWillPrint:
108 case DocDidSave:
109 case DocDidPrint:
110 return QStringLiteral("Doc");
111 case UnknownEvent:
112 default:
113 return QStringLiteral("Unknown");
114 }
115}
116
117QString Event::targetName() const
118{
119 if (!d->m_targetName.isNull()) {
120 return d->m_targetName;
121 }
122
123 return QStringLiteral("JavaScript for: ") + type() + name();
124}
125
126void Event::setTargetName(const QString &val)
127{
128 d->m_targetName = val;
129}
130
131FormField *Event::source() const
132{
133 return d->m_source;
134}
135
136void Event::setSource(FormField *val)
137{
138 d->m_source = val;
139}
140
141Page *Event::sourcePage() const
142{
143 return d->m_sourcePage;
144}
145
146void Event::setSourcePage(Page *val)
147{
148 d->m_sourcePage = val;
149}
150
151void *Event::target() const
152{
153 return d->m_target;
154}
155
156void Event::setTarget(void *target)
157{
158 d->m_target = target;
159}
160
161Page *Event::targetPage() const
162{
163 return d->m_targetPage;
164}
165
166void Event::setTargetPage(Page *val)
167{
168 d->m_targetPage = val;
169}
170
171QVariant Event::value() const
172{
173 return d->m_value;
174}
175
176void Event::setValue(const QVariant &val)
177{
178 d->m_value = val;
179}
180
181bool Event::returnCode() const
182{
183 return d->m_returnCode;
184}
185
186void Event::setReturnCode(bool returnCode)
187{
188 d->m_returnCode = returnCode;
189}
190
191bool Event::shiftModifier() const
192{
193 return d->m_shiftModifier;
194}
195
196void Event::setShiftModifier(bool shiftModifier)
197{
198 d->m_shiftModifier = shiftModifier;
199}
200
201bool Event::willCommit() const
202{
203 return d->m_willCommit;
204}
205
206void Event::setWillCommit(bool willCommit)
207{
208 d->m_willCommit = willCommit;
209}
210
211QString Event::change() const
212{
213 return d->m_change;
214}
215
216void Event::setChange(const QString &change)
217{
218 d->m_change = change;
219}
220
221int Event::selStart() const
222{
223 return d->m_selStart;
224}
225
226void Event::setSelStart(const int selStart)
227{
228 d->m_selStart = selStart;
229}
230
231int Event::selEnd() const
232{
233 return d->m_selEnd;
234}
235
236void Event::setSelEnd(const int selEnd)
237{
238 d->m_selEnd = selEnd;
239}
240
241// static
242std::shared_ptr<Event> Event::createFormCalculateEvent(FormField *target, Page *targetPage, FormField *source, Page *sourcePage, const QString &targetName)
243{
244 std::shared_ptr<Event> ret(new Event(Event::FieldCalculate));
245 ret->setSource(source);
246 ret->setSourcePage(sourcePage);
247 ret->setTarget(target);
248 ret->setTargetPage(targetPage);
249 ret->setTargetName(targetName);
250
251 const FormFieldText *fft = dynamic_cast<FormFieldText *>(target);
252 if (fft) {
253 ret->setValue(QVariant(fft->text()));
254 }
255 return ret;
256}
257
258// static
259std::shared_ptr<Event> Event::createFormatEvent(FormField *target, Page *targetPage, const QString &targetName)
260{
261 std::shared_ptr<Event> ret(new Event(Event::FieldFormat));
262 ret->setTarget(target);
263 ret->setTargetPage(targetPage);
264 ret->setTargetName(targetName);
265
266 ret->setValue(target->value());
267 return ret;
268}
269
270// static
271std::shared_ptr<Event> Event::createKeystrokeEvent(FormField *target, Page *targetPage)
272{
273 std::shared_ptr<Event> ret(new Event(Event::FieldKeystroke));
274 ret->setTarget(target);
275 ret->setTargetPage(targetPage);
276
277 ret->setReturnCode(true);
278 ret->setValue(target->value());
279 return ret;
280}
281
282std::shared_ptr<Event> Event::createFormFocusEvent(FormField *target, Page *targetPage, const QString &targetName)
283{
284 std::shared_ptr<Event> ret(new Event(Event::FieldFocus));
285 ret->setTarget(target);
286 ret->setTargetPage(targetPage);
287 ret->setTargetName(targetName);
288 ret->setShiftModifier(QApplication::keyboardModifiers() & Qt::ShiftModifier);
289
290 ret->setValue(target->value());
291 return ret;
292}
293
294std::shared_ptr<Event> Event::createFormValidateEvent(FormField *target, Page *targetPage, const QString &targetName)
295{
296 std::shared_ptr<Event> ret(new Event(Event::FieldValidate));
297 ret->setTarget(target);
298 ret->setTargetPage(targetPage);
299 ret->setTargetName(targetName);
300 ret->setShiftModifier(QApplication::keyboardModifiers() & Qt::ShiftModifier);
301
302 ret->setValue(target->value());
303 ret->setReturnCode(true);
304 return ret;
305}
306
307std::shared_ptr<Event> Event::createFieldMouseUpEvent(FormField *target, Page *targetPage)
308{
309 std::shared_ptr<Event> ret = std::make_shared<Event>(Event::FieldMouseUp);
310 ret->setTarget(target);
311 ret->setTargetPage(targetPage);
312 ret->setShiftModifier(QApplication::keyboardModifiers() & Qt::ShiftModifier);
313 return ret;
314}
315
316std::shared_ptr<Event> Event::createDocEvent(Event::EventType type)
317{
318 std::shared_ptr<Event> ret = std::make_shared<Event>(type);
319 // TODO set target name for DocOpen event only.
320 return ret;
321}
Interface of a text form field.
Definition form.h:310
void setValue(const QVariant &value) override
Sets the value associated with the text form field.
Definition form.cpp:270
virtual QString text() const =0
The text of text field.
The base interface of a form field.
Definition form.h:40
virtual QVariant value() const
Returns the value associated wit the form field.
Definition form.cpp:88
QString name(GameStandardAction id)
VehicleSection::Type type(QStringView coachNumber, QStringView coachClassification)
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 Fri Jul 26 2024 11:51:37 by doxygen 1.11.0 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.