Kgapi

eventfetchjob.h
1/*
2 * This file is part of LibKGAPI library
3 *
4 * SPDX-FileCopyrightText: 2013 Daniel Vrátil <dvratil@redhat.com>
5 *
6 * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
7 */
8
9#pragma once
10
11#include "fetchjob.h"
12#include "event.h"
13#include "kgapicalendar_export.h"
14
15#include <QScopedPointer>
16
17namespace KGAPI2
18{
19
20/**
21 * @brief A job to fetch all events from given calendar in user's Google
22 * Calendar account.
23 *
24 * @author Daniel Vrátil <dvratil@redhat.com>
25 * @since 2.0
26 */
27class KGAPICALENDAR_EXPORT EventFetchJob : public KGAPI2::FetchJob
28{
30
31 /**
32 * @brief Whether to fetch deleted events as well
33 *
34 * When an event is deleted from Google Calendar, it's stored as a placeholder
35 * on Google server and can still be retrieved. Such event will have
36 * KGAPI2::Event::deleted set to @p true.
37 *
38 * By default, the job will fetch deleted events.
39 *
40 * This property does not have any effect when fetching a specific event and
41 * can be modified only when the job is not running.
42 *
43 * @see setFetchDeleted, fetchDeleted
44 */
46
47 /**
48 * @brief Timestamp to fetch only events modified since then
49 *
50 * When set, this job will only fetch events that have been modified since
51 * given timestamp.
52 *
53 * By default the timestamp is 0 and all events are fetched.
54 *
55 * This property does not have any effect when fetching a specific event and
56 * can be modified only when the job is not running.
57 *
58 * @see setFetchOnlyUpdated, fetchOnlyUpdated
59 */
61
62 /**
63 * @brief Timestamp of the newest event that will be fetched
64 *
65 * Only events occurring before or precisely at the time indicated by this
66 * property will be fetched.
67 *
68 * By default the timestamp is 0 and no limit is applied.
69 *
70 * This property does not have any effect when fetching a specific event and
71 * can be modified only when the job is not running.
72 *
73 * @see setMaxTime, maxTime
74 */
76
77 /**
78 * @brief Timestamp of the oldest event that will be fetched
79 *
80 * Only events occurring after or precisely at the time indicated by this
81 * property will be fetched.
82 *
83 * By default the timestamp is 0 and no limit is applied.
84 *
85 * This property does not have any effect when fetching a specific event and
86 * can be modified only when the job is not running.
87 *
88 * @see setMinTime, minTime
89 */
91
92 /**
93 * @brief A filter to fetch only events matching fulltext filter
94 *
95 * By default the property is empty and no filter is applied.
96 *
97 * This property does not have any effect when fetching a specific event and
98 * can be modified only when the job is not running.
99 *
100 * @see setFilter, filter
101 */
103
104 /**
105 * @brief A token to fetch updates incrementally
106 *
107 * By default the property is empty. Properties timeMin, timeMax,
108 * updatedMin will be ignored if sync token is specified
109 *
110 * @see setSyncToken, syncToken
111 */
113
114public:
115 /**
116 * @brief Constructs a job that will fetch all events from a calendar with
117 * given @p calendarId
118 *
119 * Result of this job might not contain all events, depending on configured
120 * filters.
121 *
122 * @param calendarId ID of calendar from which to fetch events
123 * @param account Account to authenticate the request
124 * @param parent
125 */
126 explicit EventFetchJob(const QString &calendarId, const AccountPtr &account, QObject *parent = nullptr);
127
128 /**
129 * @brief Constructs a job that will fetch an event with given @p eventId
130 * from a calendar with given @p calendarId
131 *
132 * Note that none of the filter, fetchOnlyUpdated, timeMax or timeMin properties
133 * is applied in this case.
134 *
135 * @param eventId ID of event to fetch
136 * @param calendarId ID of calendar in which the event is
137 * @param account Account to authenticate the request
138 * @param parent
139 */
140 explicit EventFetchJob(const QString &eventId, const QString &calendarId, const AccountPtr &account, QObject *parent = nullptr);
141
142 /**
143 * @brief Destructor
144 */
145 ~EventFetchJob() override;
146
147 /**
148 * @brief Sets the types of events to retrieve.
149 *
150 * Default set is EventType::Default, EventType::FocusTime and EventType::OutOfOffice.
151 */
152 void setEventTypes(const QList<Event::EventType> eventTypes);
153
154 /**
155 * @brief Returns the types of events to retrieve.
156 */
157 QList<Event::EventType> eventTypes() const;
158
159 /**
160 * @brief Sets fulltext filter.
161 *
162 * @param query
163 */
164 void setFilter(const QString &query);
165
166 /**
167 * @brief Returns fulltext filter string
168 */
169 [[nodiscard]] QString filter() const;
170
171 /**
172 * @brief Sets whether to fetch deleted events
173 *
174 * @param fetchDeleted
175 */
176 void setFetchDeleted(bool fetchDeleted = true);
177
178 /**
179 * @brief Returns whether deleted events are fetched.
180 */
181 [[nodiscard]] bool fetchDeleted();
182
183 /**
184 * @brief Sets the job to fetch only events modified since @p timestamp
185 *
186 * @param timestamp
187 */
188 void setFetchOnlyUpdated(quint64 timestamp);
189
190 /**
191 * @brief Returns whether the job will fetch only modified events
192 *
193 * @return 0 when all events will be fetched, a timestamp of since when the
194 * modified events will be fetched.
195 */
196 [[nodiscard]] quint64 fetchOnlyUpdated() const;
197
198 /**
199 * @brief Sets timestamp of newest event that can be fetched.
200 *
201 * @param timestamp
202 */
203 void setTimeMax(quint64 timestamp);
204
205 /**
206 * @brief Returns upper limit for event occurrence
207 */
208 [[nodiscard]] quint64 timeMax() const;
209
210 /**
211 * @brief Sets timestamp of older events that can be fetched.
212 *
213 * @param timestamp
214 */
215 void setTimeMin(quint64 timestamp);
216
217 /**
218 * @brief Returns lower boundary for events occurrence
219 */
220 [[nodiscard]] quint64 timeMin() const;
221
222 /**
223 * @brief Sets token for incremental updates
224 *
225 * @param syncToken
226 */
227 void setSyncToken(const QString &syncToken);
228
229 /**
230 * @brief Token for next incremental update
231 */
232 [[nodiscard]] QString syncToken() const;
233
234protected:
235 /**
236 * @brief KGAPI2::Job::start implementation
237 */
238 void start() override;
239
240 /**
241 * @brief KGAPI2::FetchJob::handleReplyWithItems implementation
242 *
243 * @param reply
244 * @param rawData
245 */
246 ObjectsList handleReplyWithItems(const QNetworkReply *reply, const QByteArray &rawData) override;
247
248 /**
249 * @brief KGAPI2::Job::handleError implementation
250 *
251 * @param errorCode
252 * @param rawData
253 */
254 bool handleError(int errorCode, const QByteArray &rawData) override;
255
256private:
257 class Private;
258 QScopedPointer<Private> const d;
259 friend class Private;
260};
261
262} // namespace KGAPI2
EventFetchJob(const QString &calendarId, const AccountPtr &account, QObject *parent=nullptr)
Constructs a job that will fetch all events from a calendar with given calendarId.
void setSyncToken(const QString &syncToken)
Sets token for incremental updates.
void start() override
KGAPI2::Job::start implementation.
QString syncToken
A token to fetch updates incrementally.
void setFetchOnlyUpdated(quint64 timestamp)
Sets the job to fetch only events modified since timestamp.
bool fetchDeleted
Whether to fetch deleted events as well.
quint64 timeMin
Timestamp of the oldest event that will be fetched.
QList< Event::EventType > eventTypes() const
Returns the types of events to retrieve.
void setFetchDeleted(bool fetchDeleted=true)
Sets whether to fetch deleted events.
void setTimeMax(quint64 timestamp)
Sets timestamp of newest event that can be fetched.
bool handleError(int errorCode, const QByteArray &rawData) override
KGAPI2::Job::handleError implementation.
void setEventTypes(const QList< Event::EventType > eventTypes)
Sets the types of events to retrieve.
quint64 fetchOnlyUpdated
Timestamp to fetch only events modified since then.
void setTimeMin(quint64 timestamp)
Sets timestamp of older events that can be fetched.
quint64 timeMax
Timestamp of the newest event that will be fetched.
QString filter
A filter to fetch only events matching fulltext filter.
void setFilter(const QString &query)
Sets fulltext filter.
ObjectsList handleReplyWithItems(const QNetworkReply *reply, const QByteArray &rawData) override
KGAPI2::FetchJob::handleReplyWithItems implementation.
Represents a single event from Google Calendar.
Abstract superclass for all jobs that fetch resources from Google.
Definition fetchjob.h:25
AccountPtr account() const
Returns account used to authenticate requests.
Definition job.cpp:436
A job to fetch a single map tile described by a StaticMapUrl.
Definition blog.h:16
QObject(QObject *parent)
Q_OBJECTQ_OBJECT
Q_PROPERTY(...)
QObject * parent() const const
This file is part of the KDE documentation.
Documentation copyright © 1996-2025 The KDE developers.
Generated on Fri Jan 31 2025 12:07:23 by doxygen 1.13.2 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.