Kgapi

teamdrive.h
1/*
2 SPDX-FileCopyrightText: 2019 David Barchiesi <david@barchie.si>
3
4 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
5*/
6
7#pragma once
8
9#include "kgapidrive_export.h"
10#include "object.h"
11#include "types.h"
12
13#include <QString>
14
15#include <QDateTime>
16
17namespace KGAPI2
18{
19
20namespace Drive
21{
22
23/**
24 * @brief Teamdrive contains a representation of a Team Drive.
25 *
26 * Getters and setters' documentation is based on Google Drive's API v2 reference
27 * @see <a href="https://developers.google.com/drive/v2/reference/teamdrives">Teamdrives</a>
28 *
29 * @since x.0
30 * @author David Barchiesi <david@barchie.si>
31 */
32class KGAPIDRIVE_EXPORT Teamdrive : public KGAPI2::Object
33{
34public:
35 /**
36 * @brief DriveTeamdrive::Restrictions holds the structure used for
37 * restrictions property.
38 */
39 class Restrictions
40 {
41 public:
42 struct Fields {
43 static const QString AdminManagedRestrictions;
44 static const QString CopyRequiresWriterPermission;
45 static const QString DomainUsersOnly;
46 static const QString TeamMembersOnly;
47 };
48
49 Restrictions();
50 Restrictions(const Restrictions &other);
51 ~Restrictions();
52 bool operator==(const Restrictions &other) const;
53 bool operator!=(const Restrictions &other) const
54 {
55 return !operator==(other);
56 }
57
58 /**
59 * @brief Returns whether administrative privileges on this Team Drive
60 * are required to modify restrictions.
61 */
62 bool adminManagedRestrictions() const;
63
64 /**
65 * @brief Sets whether administrative privileges on this Team Drive
66 * are required to modify restrictions.
67 *
68 * @param adminManagedRestrictions
69 */
71
72 /**
73 * @brief Returns whether the options to copy, print, or download files
74 * inside this Team Drive, should be disabled for readers and commenters.
75 * When this restriction is set to true, it will override the similarly
76 * named field to true for any file inside this Team Drive.
77 */
78 [[nodiscard]] bool copyRequiresWriterPermission() const;
79
80 /**
81 * @brief Sets whether the options to copy, print, or download files
82 * inside this Team Drive, should be disabled for readers and commenters.
83 * When this restriction is set to true, it will override the similarly
84 * named field to true for any file inside this Team Drive.
85 *
86 * @param copyRequiresWriterPermission
87 */
89
90 /**
91 * @brief Returns whether access to this Team Drive and items inside this
92 * Team Drive is restricted to users of the domain to which this Team
93 * Drive belongs. This restriction may be overridden by other sharing
94 * policies controlled outside of this Team Drive.
95 */
96 [[nodiscard]] bool domainUsersOnly() const;
97
98 /**
99 * @brief Sets whether access to this Team Drive and items inside this
100 * Team Drive is restricted to users of the domain to which this Team
101 * Drive belongs. This restriction may be overridden by other sharing
102 * policies controlled outside of this Team Drive.
103 *
104 * @param domainUsersOnly
105 */
106 void setDomainUsersOnly(bool domainUsersOnly) const;
107
108 /**
109 * @brief Returns whether access to items inside this Team Drive is
110 * restricted to members of this Team Drive.
111 */
112 [[nodiscard]] bool teamMembersOnly() const;
113
114 /**
115 * @brief Sets whether access to items inside this Team Drive is
116 * restricted to members of this Team Drive.
117 *
118 * @param teamMembersOnly
119 */
120 void setTeamMembersOnly(bool teamMembersOnly) const;
121
122 private:
123 class Private;
125 friend class Private;
126 friend class Teamdrive;
127 };
128
129 using RestrictionsPtr = QSharedPointer<Restrictions>;
130
131 /**
132 * @brief DriveTeamdrive::Capabilities holds the structure used for capabilities property.
133 */
134 class Capabilities
135 {
136 public:
137 struct Fields {
138 static const QString CanAddChildren;
139 static const QString CanChangeCopyRequiresWriterPermissionRestriction;
140 static const QString CanChangeDomainUsersOnlyRestriction;
141 static const QString CanChangeTeamDriveBackground;
142 static const QString CanChangeTeamMembersOnlyRestriction;
143 static const QString CanComment;
144 static const QString CanCopy;
145 static const QString CanDeleteChildren;
146 static const QString CanDeleteTeamDrive;
147 static const QString CanDownload;
148 static const QString CanEdit;
149 static const QString CanListChildren;
150 static const QString CanManageMembers;
151 static const QString CanReadRevisions;
152 static const QString CanRename;
153 static const QString CanRenameTeamDrive;
154 static const QString CanShare;
155 static const QString CanTrashChildren;
156 };
157
158 Capabilities();
159 Capabilities(const Capabilities &other);
160 ~Capabilities();
161 bool operator==(const Capabilities &other) const;
162 bool operator!=(const Capabilities &other) const
163 {
164 return !operator==(other);
165 }
166
167 /**
168 * @brief Returns whether the current user can add children to folders
169 * in this Team Drive.
170 */
171 [[nodiscard]] bool canAddChildren() const;
172
173 /**
174 * @brief Returns whether the current user can change the
175 * copyRequiresWriterPermission restriction of this Team Drive.
176 */
177 [[nodiscard]] bool canChangeCopyRequiresWriterPermissionRestriction() const;
178
179 /**
180 * @brief Returns whether the current user can change the domainUsersOnly
181 * restriction of this Team Drive.
182 */
183 [[nodiscard]] bool canChangeDomainUsersOnlyRestriction() const;
184
185 /**
186 * @brief Returns whether the current user can change the background of
187 * this Team Drive.
188 */
189 [[nodiscard]] bool canChangeTeamDriveBackground() const;
190
191 /**
192 * @brief Returns whether the current user can change the teamMembersOnly
193 * restriction of this Team Drive.
194 */
195 [[nodiscard]] bool canChangeTeamMembersOnlyRestriction() const;
196
197 /**
198 * @brief Returns Whether the current user can comment on files in
199 * this Team Drive.
200 */
201 [[nodiscard]] bool canComment() const;
202
203 /**
204 * @brief Returns Whether the current user can copy files in this Team Drive.
205 */
206 [[nodiscard]] bool canCopy() const;
207
208 /**
209 * @brief Returns Whether the current user can delete children from
210 * folders in this Team Drive.
211 */
212 [[nodiscard]] bool canDeleteChildren() const;
213
214 /**
215 * @brief Returns Whether the current user can delete this Team Drive.
216 *
217 * Attempting to delete the Team Drive may still fail if there are
218 * untrashed items inside the Team Drive.
219 */
220 [[nodiscard]] bool canDeleteTeamDrive() const;
221
222 /**
223 * @brief Returns Whether the current user can download files in this
224 * Team Drive.
225 */
226 [[nodiscard]] bool canDownload() const;
227
228 /**
229 * @brief Returns Whether the current user can edit files in this
230 * Team Drive
231 */
232 [[nodiscard]] bool canEdit() const;
233
234 /**
235 * @brief Returns Whether the current user can list the children of
236 * folders in this Team Drive.
237 */
238 [[nodiscard]] bool canListChildren() const;
239
240 /**
241 * @brief Returns Whether the current user can add members to this Team Drive
242 * or remove them or change their role.
243 */
244 [[nodiscard]] bool canManageMembers() const;
245
246 /**
247 * @brief Returns Whether the current user can read the revisions
248 * resource of files in this Team Drive.
249 */
250 [[nodiscard]] bool canReadRevisions() const;
251
252 /**
253 * @brief Returns Whether the current user can rename files or folders
254 * in this Team Drive.
255 */
256 [[nodiscard]] bool canRename() const;
257
258 /**
259 * @brief Returns Whether the current user can rename this Team Drive.
260 */
261 [[nodiscard]] bool canRenameTeamDrive() const;
262
263 /**
264 * @brief Returns Whether the current user can share files or folders
265 * in this Team Drive.
266 */
267 [[nodiscard]] bool canShare() const;
268
269 /**
270 * @brief Returns Whether the current user can trash children from
271 * folders in this Team Drive.
272 */
273 [[nodiscard]] bool canTrashChildren() const;
274
275 private:
276 class Private;
278 friend class Private;
279 friend class Teamdrive;
280 };
281
282 using CapabilitiesPtr = QSharedPointer<Capabilities>;
283
284 /**
285 * @brief DriveTeamdrive::BackgroundImageFile holds the structure used
286 * for backgroundImageFile property.
287 */
288 class BackgroundImageFile
289 {
290 public:
291 struct Fields {
292 static const QString Id;
293 static const QString XCoordinate;
294 static const QString YCoordinate;
295 static const QString Width;
296 };
297
298 BackgroundImageFile();
299 BackgroundImageFile(const BackgroundImageFile &other);
300 ~BackgroundImageFile();
301 bool operator==(const BackgroundImageFile &other) const;
302 bool operator!=(const BackgroundImageFile &other) const
303 {
304 return !operator==(other);
305 }
306
307 /**
308 * @brief Returns the id of the background image file.
309 */
310 [[nodiscard]] QString id() const;
311
312 /**
313 * @brief Sets the id of the background image file.
314 *
315 * @param id
316 */
317 void setId(const QString &id) const;
318
319 /**
320 * @brief Returns the x coordinate for this background image file.
321 */
322 [[nodiscard]] float xCoordinate() const;
323
324 /**
325 * @brief Sets the x coordinate for this background image file.
326 *
327 * @param xCoordinate
328 */
329 void setXCoordinate(float xCoordinate) const;
330
331 /**
332 * @brief Returns the y coordinate for this background image file.
333 */
334 [[nodiscard]] float yCoordinate() const;
335
336 /**
337 * @brief Sets the y coordinate for this background image file.
338 *
339 * @param yCoordinate
340 */
341 void setYCoordinate(float yCoordinate) const;
342
343 /**
344 * @brief Returns the width for this background image file.
345 */
346 [[nodiscard]] float width() const;
347
348 /**
349 * @brief Sets the width for this background image file.
350 *
351 * @param width
352 */
353 void setWidth(float width) const;
354
355 private:
356 class Private;
358 friend class Private;
359 friend class Teamdrive;
360 };
361
362 using BackgroundImageFilePtr = QSharedPointer<BackgroundImageFile>;
363
364 struct Fields {
365 static const QString Kind;
366 static const QString Items;
367 static const QString KindDrive;
368 static const QString PageToken;
369 static const QString NextPageToken;
370 static const QString Id;
371 static const QString Name;
372 static const QString ThemeId;
373 static const QString ColorRgb;
374 static const QString BackgroundImageFile;
375 static const QString BackgroundImageLink;
376 static const QString Capabilities;
377 static const QString CreatedDate;
378 static const QString Restrictions;
379 };
380
381 Teamdrive();
382 Teamdrive(const Teamdrive &other);
383 ~Teamdrive() override;
384 bool operator==(const Teamdrive &other) const;
385 bool operator!=(const Teamdrive &other) const
386 {
387 return !operator==(other);
388 }
389
390 /**
391 * @brief Returns the id of the teamdrive.
392 */
393 [[nodiscard]] QString id() const;
394
395 /**
396 * @brief Sets the id of the teamdrive.
397 *
398 * @param id
399 */
400 void setId(const QString &id) const;
401
402 /**
403 * @brief Returns the name of the teamdrive.
404 */
405 [[nodiscard]] QString name() const;
406
407 /**
408 * @brief Sets the name of the teamdrive.
409 *
410 * @param name
411 */
412 void setName(const QString &name) const;
413
414 /**
415 * @brief Returns the themeId of the teamdrive.
416 */
417 [[nodiscard]] QString themeId() const;
418
419 /**
420 * @brief Sets the themeId of the teamdrive.
421 *
422 * @param themeId
423 */
424 void setThemeId(const QString &themeId) const;
425
426 /**
427 * @brief Returns the colorRgb of the teamdrive.
428 */
429 [[nodiscard]] QString colorRgb() const;
430
431 /**
432 * @brief Sets the colorRgb of the teamdrive.
433 *
434 * @param colorRgb
435 */
436 void setColorRgb(const QString &colorRgb) const;
437
438 /**
439 * @brief Returns the image file and cropping parameters from which a background image for this Team Drive is set.
440 */
441 BackgroundImageFilePtr backgroundImageFile() const;
442
443 /**
444 * @brief Sets the backgroundImageFile of the teamdrive.
445 *
446 * @param backgroundImageFile
447 */
448 void setBackgroundImageFile(const BackgroundImageFilePtr &backgroundImageFile) const;
449
450 /**
451 * @brief Returns the backgroundImageLink of the teamdrive.
452 */
453 [[nodiscard]] QString backgroundImageLink() const;
454
455 /**
456 * @brief Returns the capabilities the current user has on this Team Drive.
457 */
458 CapabilitiesPtr capabilities() const;
459
460 /**
461 * @brief Returns the time at which the Team Drive was created.
462 */
463 [[nodiscard]] QDateTime createdDate() const;
464
465 /**
466 * @brief Returns the set of restrictions that apply to this Team Drive or
467 * items inside this Team Drive.
468 */
469 RestrictionsPtr restrictions() const;
470
471 /**
472 * @brief Sets the restrictions of the teamdrive.
473 *
474 * @param restrictions
475 */
476 void setRestrictions(const RestrictionsPtr &restrictions) const;
477
478 static TeamdrivePtr fromJSON(const QByteArray &jsonData);
479 static TeamdrivesList fromJSONFeed(const QByteArray &jsonData, FeedData &feedData);
480 static QByteArray toJSON(const TeamdrivePtr &teamdrive);
481
482private:
483 class Private;
485 friend class Private;
486};
487
488} /* namespace Drive */
489
490} /* namespace KGAPI2 */
DriveTeamdrive::BackgroundImageFile holds the structure used for backgroundImageFile property.
Definition teamdrive.h:289
float width() const
Returns the width for this background image file.
float yCoordinate() const
Returns the y coordinate for this background image file.
void setId(const QString &id) const
Sets the id of the background image file.
void setWidth(float width) const
Sets the width for this background image file.
QString id() const
Returns the id of the background image file.
void setYCoordinate(float yCoordinate) const
Sets the y coordinate for this background image file.
float xCoordinate() const
Returns the x coordinate for this background image file.
void setXCoordinate(float xCoordinate) const
Sets the x coordinate for this background image file.
DriveTeamdrive::Capabilities holds the structure used for capabilities property.
Definition teamdrive.h:135
bool canReadRevisions() const
Returns Whether the current user can read the revisions resource of files in this Team Drive.
bool canManageMembers() const
Returns Whether the current user can add members to this Team Drive or remove them or change their ro...
bool canListChildren() const
Returns Whether the current user can list the children of folders in this Team Drive.
bool canCopy() const
Returns Whether the current user can copy files in this Team Drive.
bool canChangeTeamMembersOnlyRestriction() const
Returns whether the current user can change the teamMembersOnly restriction of this Team Drive.
bool canChangeDomainUsersOnlyRestriction() const
Returns whether the current user can change the domainUsersOnly restriction of this Team Drive.
bool canShare() const
Returns Whether the current user can share files or folders in this Team Drive.
bool canComment() const
Returns Whether the current user can comment on files in this Team Drive.
bool canRenameTeamDrive() const
Returns Whether the current user can rename this Team Drive.
bool canAddChildren() const
Returns whether the current user can add children to folders in this Team Drive.
bool canRename() const
Returns Whether the current user can rename files or folders in this Team Drive.
bool canDeleteTeamDrive() const
Returns Whether the current user can delete this Team Drive.
bool canDownload() const
Returns Whether the current user can download files in this Team Drive.
bool canChangeCopyRequiresWriterPermissionRestriction() const
Returns whether the current user can change the copyRequiresWriterPermission restriction of this Team...
bool canEdit() const
Returns Whether the current user can edit files in this Team Drive.
bool canTrashChildren() const
Returns Whether the current user can trash children from folders in this Team Drive.
bool canDeleteChildren() const
Returns Whether the current user can delete children from folders in this Team Drive.
bool canChangeTeamDriveBackground() const
Returns whether the current user can change the background of this Team Drive.
DriveTeamdrive::Restrictions holds the structure used for restrictions property.
Definition teamdrive.h:40
void setDomainUsersOnly(bool domainUsersOnly) const
Sets whether access to this Team Drive and items inside this Team Drive is restricted to users of the...
Definition teamdrive.cpp:84
void setAdminManagedRestrictions(bool adminManagedRestrictions) const
Sets whether administrative privileges on this Team Drive are required to modify restrictions.
Definition teamdrive.cpp:64
bool teamMembersOnly() const
Returns whether access to items inside this Team Drive is restricted to members of this Team Drive.
Definition teamdrive.cpp:89
void setTeamMembersOnly(bool teamMembersOnly) const
Sets whether access to items inside this Team Drive is restricted to members of this Team Drive.
Definition teamdrive.cpp:94
bool domainUsersOnly() const
Returns whether access to this Team Drive and items inside this Team Drive is restricted to users of ...
Definition teamdrive.cpp:79
bool adminManagedRestrictions() const
Returns whether administrative privileges on this Team Drive are required to modify restrictions.
Definition teamdrive.cpp:59
bool copyRequiresWriterPermission() const
Returns whether the options to copy, print, or download files inside this Team Drive,...
Definition teamdrive.cpp:69
void setCopyRequiresWriterPermission(bool copyRequiresWriterPermission) const
Sets whether the options to copy, print, or download files inside this Team Drive,...
Definition teamdrive.cpp:74
Teamdrive contains a representation of a Team Drive.
Definition teamdrive.h:33
Structure to store additional information about a feed.
Definition types.h:24
Base class for all objects.
Definition object.h:31
A job to fetch a single map tile described by a StaticMapUrl.
Definition blog.h:16
This file is part of the KDE documentation.
Documentation copyright © 1996-2025 The KDE developers.
Generated on Fri Jan 31 2025 12:07:24 by doxygen 1.13.2 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.