Attica

provider.h
1 /*
2  This file is part of KDE.
3 
4  SPDX-FileCopyrightText: 2008 Cornelius Schumacher <[email protected]>
5  SPDX-FileCopyrightText: 2011 Laszlo Papp <[email protected]>
6 
7  SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
8 */
9 
10 #ifndef ATTICA_PROVIDER_H
11 #define ATTICA_PROVIDER_H
12 
13 #include <QExplicitlySharedDataPointer>
14 #include <QSharedPointer>
15 #include <QString>
16 #include <QStringList>
17 
18 #include <QUrl>
19 
20 #include "achievement.h"
21 #include "attica_export.h"
22 #include "category.h"
23 #include "comment.h"
24 #include "distribution.h"
25 #include "forum.h"
26 #include "itemjob.h"
27 #include "license.h"
28 #include "listjob.h"
29 #include "message.h"
30 
31 class QDate;
32 class QUrl;
33 
34 namespace Attica
35 {
36 class PlatformDependent;
37 
38 class PostJobStatus;
39 
40 class AccountBalance;
41 class Activity;
42 class BuildServiceJobOutput;
43 class BuildServiceJob;
44 class BuildService;
45 class PrivateData;
46 class Config;
47 class Content;
48 class DownloadItem;
49 class Distribution;
50 class Event;
51 class Folder;
52 class HomePageType;
53 class KnowledgeBaseEntry;
54 class License;
55 class Person;
56 class PostJob;
57 class Project;
58 class Provider;
59 class Publisher;
60 class PublisherField;
61 class RemoteAccount;
62 
63 /**
64  * The Provider class represents one Open Collaboration Service provider.
65  * Use the ProviderManager to instantiate a Provider.
66  *
67  * Accessing functions of the Provider returns a Job class that
68  * takes care of accessing the server and parsing the result.
69  *
70  * Provider files are xml of the form:
71  <pre>
72  <provider>
73  <id>opendesktop</id>
74  <location>https://api.opendesktop.org/v1/</location>
75  <name>openDesktop.org</name>
76  <icon></icon>
77  <termsofuse>https://opendesktop.org/terms/</termsofuse>
78  <register>https://opendesktop.org/usermanager/new.php</register>
79  <services>
80  <person ocsversion="1.3" />
81  <friend ocsversion="1.3" />
82  <message ocsversion="1.3" />
83  <activity ocsversion="1.3" />
84  <content ocsversion="1.3" />
85  <fan ocsversion="1.3" />
86  <knowledgebase ocsversion="1.3" />
87  <event ocsversion="1.3" />
88  <comment ocsversion="1.2" />
89  </services>
90 </provider>
91  </pre>
92  * The server provides the services specified in the services section, not necessarily all of them.
93  */
94 class ATTICA_EXPORT Provider
95 {
96 public:
97  Provider();
98  Provider(const Provider &other);
99  Provider &operator=(const Provider &other);
100  ~Provider();
101 
102  /**
103  Returns true if the provider has been set up and can be used.
104  */
105  bool isValid() const;
106 
107  /**
108  Test if the provider is enabled by the settings.
109  The application can choose to ignore this, but the user settings should be respected.
110  */
111  bool isEnabled() const;
112  void setEnabled(bool enabled);
113 
114  /**
115  * Set a custom identifier for your application (sent along with the requests as
116  * the http agent header in addition to the applicaiton name and version).
117  *
118  * For example, you might have an application named SomeApplication, version 23,
119  * and wish to send along the data "lookandfeel.knsrc". Call this function, and
120  * the resulting agent header would be:
121  *
122  * SomeApplication/23 (+lookandfeel.knsrc)
123  *
124  * If you do not set this (or set it to an empty string), the agent string becomes
125  *
126  * SomeApplication/23
127  *
128  * @param additionalAgentInformation The extra string
129  * @since 5.66
130  */
131  void setAdditionalAgentInformation(const QString &additionalInformation);
132  /**
133  * The custom identifier sent along with requests
134  *
135  * @return The custom identifier
136  * @see setAdditionalAgentInformation(const QString&)
137  * @since 5.66
138  */
139  QString additionalAgentInformation() const;
140 
141  /**
142  A url that identifies this provider.
143  This should be used as identifier when referring to this provider but you don't want to use the full provider object.
144  */
145  QUrl baseUrl() const;
146 
147  /**
148  A name for the provider that can be displayed to the user
149  */
150  QString name() const;
151 
152  enum SortMode {
153  Newest,
154  Alphabetical,
155  Rating,
156  Downloads,
157  };
158 
159  /**
160  Test if the server supports the person part of the API
161  */
162  bool hasPersonService() const;
163  /**
164  Version of the person part of the API
165  */
166  QString personServiceVersion() const;
167 
168  /**
169  Test if the server supports the friend part of the API
170  */
171  bool hasFriendService() const;
172 
173  /**
174  Version of the friend part of the API
175  */
176  QString friendServiceVersion() const;
177 
178  /**
179  Test if the server supports the message part of the API
180  */
181  bool hasMessageService() const;
182  /**
183  Version of the message part of the API
184  */
185  QString messageServiceVersion() const;
186 
187  /**
188  Test if the server supports the achievement part of the API
189  */
190  bool hasAchievementService() const;
191  /**
192  Version of the achievement part of the API
193  */
194  QString achievementServiceVersion() const;
195 
196  /**
197  Test if the server supports the activity part of the API
198  */
199  bool hasActivityService() const;
200  /**
201  Version of the activity part of the API
202  */
203  QString activityServiceVersion() const;
204 
205  /**
206  Test if the server supports the content part of the API
207  */
208  bool hasContentService() const;
209  /**
210  Version of the content part of the API
211  */
212  QString contentServiceVersion() const;
213 
214  /**
215  Test if the server supports the fan part of the API
216  */
217  bool hasFanService() const;
218  /**
219  Version of the fan part of the API
220  */
221  QString fanServiceVersion() const;
222 
223  /**
224  Test if the server supports the forum part of the API
225  */
226  bool hasForumService() const;
227  /**
228  Version of the forum part of the API
229  */
230  QString forumServiceVersion() const;
231 
232  /**
233  *
234  Test if the server supports the knowledgebase part of the API
235  */
236  bool hasKnowledgebaseService() const;
237  /**
238  Version of the knowledgebase part of the API
239  */
240  QString knowledgebaseServiceVersion() const;
241 
242  /**
243  Test if the server supports the comments part of the API
244  */
245  bool hasCommentService() const;
246  /**
247  Version of the comments part of the API
248  */
249  QString commentServiceVersion() const;
250 
251  /**
252  Test if the provider has user name/password available.
253  This does not yet open kwallet in case the KDE plugin is used.
254  @return true if the provider has login information
255  */
256  bool hasCredentials() const;
257  bool hasCredentials();
258 
259  /**
260  Load user name and password from the store.
261  Attica will remember the loaded values and use them from this point on.
262  @param user reference that returns the user name
263  @param password reference that returns the password
264  @return if credentials could be loaded
265  */
266  bool loadCredentials(QString &user, QString &password);
267 
268  /**
269  Sets (and remembers) user name and password for this provider.
270  To remove the data an empty username should be passed.
271  @param user the user (login) name
272  @param password the password
273  @return if credentials could be saved
274  */
275  bool saveCredentials(const QString &user, const QString &password);
276 
277  /**
278  Test if the server accepts the login/password.
279  This function does not actually set the credentials. Use saveCredentials for that purpose.
280  @param user the user (login) name
281  @param password the password
282  @return the job that will contain the success of the login as metadata
283  */
284  PostJob *checkLogin(const QString &user, const QString &password);
285 
286  /**
287  * Fetches server config
288  * @return The job responsible for fetching data
289  */
290  ItemJob<Config> *requestConfig();
291 
292  // Person part of OCS
293 
294  PostJob *registerAccount(const QString &id, const QString &password, const QString &mail, const QString &firstName, const QString &lastName);
295  ItemJob<Person> *requestPerson(const QString &id);
296  ItemJob<Person> *requestPersonSelf();
297  ItemJob<AccountBalance> *requestAccountBalance();
298  ListJob<Person> *requestPersonSearchByName(const QString &name);
299  ListJob<Person> *requestPersonSearchByLocation(qreal latitude, qreal longitude, qreal distance = 0.0, int page = 0, int pageSize = 20);
300  PostJob *postLocation(qreal latitude, qreal longitude, const QString &city = QString(), const QString &country = QString());
301 
302  //////////////////////////
303  // PrivateData part of OCS
304 
305  /**
306  * Fetches the a given attribute from an OCS-compliant server.
307  * @param app The application name
308  * @param key The key of the attribute to fetch (optional)
309  * @return The job that is responsible for fetching the data
310  */
311  ItemJob<PrivateData> *requestPrivateData(const QString &app, const QString &key = QString());
312 
313  /**
314  * Fetches all stored private data.
315  * @return The job responsible for fetching data
316  */
317  ItemJob<PrivateData> *requestPrivateData()
318  {
319  return requestPrivateData(QString(), QString());
320  }
321 
322  /**
323  * Sets the value of an attribute.
324  * @param app The application name
325  * @param key The key of the attribute
326  * @param value The new value of the attribute
327  * @return The job responsible for setting data
328  */
329  PostJob *setPrivateData(const QString &app, const QString &key, const QString &value);
330 
331  // Friend part of OCS
332 
333  ListJob<Person> *requestFriends(const QString &id, int page = 0, int pageSize = 20);
334  ListJob<Person> *requestSentInvitations(int page = 0, int pageSize = 20);
335  ListJob<Person> *requestReceivedInvitations(int page = 0, int pageSize = 20);
336  PostJob *inviteFriend(const QString &to, const QString &message);
337  PostJob *approveFriendship(const QString &to);
338  PostJob *declineFriendship(const QString &to);
339  PostJob *cancelFriendship(const QString &to);
340 
341  // Message part of OCS
342 
343  ListJob<Folder> *requestFolders();
344  ListJob<Message> *requestMessages(const Folder &folder);
345  ListJob<Message> *requestMessages(const Folder &folder, Message::Status status);
346  ItemJob<Message> *requestMessage(const Folder &folder, const QString &id);
347  PostJob *postMessage(const Message &message);
348 
349  // Achievement part of OCS
350  /**
351  * Get a list of achievements
352  * @return ListJob listing Achievements
353  */
354  ListJob<Achievement> *requestAchievements(const QString &contentId, const QString &achievementId, const QString &userId);
355 
356  /** Add a new achievement.
357  * @param id id of the achievement entry
358  * @param achievement The new Achievement added
359  * @return item post job for adding the new achievement
360  */
361  ItemPostJob<Achievement> *addNewAchievement(const QString &id, const Achievement &newAchievement);
362 
363  /**
364  * Post modifications to an Achievement on the server
365  * @param achievement Achievement to update on the server
366  */
367  PutJob *editAchievement(const QString &contentId, const QString &achievementId, const Achievement &achievement);
368 
369  /**
370  * Deletes an achievement on the server. The achievement passed as an argument doesn't need complete
371  * information as just the id() is used.
372  * @param achievement Achievement to delete on the server.
373  */
374  DeleteJob *deleteAchievement(const QString &contentId, const QString &achievementId);
375 
376  // PostJob* postAchievement(const Achievement& achievement);
377  PostJob *setAchievementProgress(const QString &id, const QVariant &progress, const QDateTime &timestamp);
378  DeleteJob *resetAchievementProgress(const QString &id);
379 
380  // Activity part of OCS
381 
382  ListJob<Activity> *requestActivities();
383  PostJob *postActivity(const QString &message);
384 
385  // Project part of OCS
386  /**
387  * Get a list of build service projects
388  * @return ListJob listing Projects
389  */
390  ListJob<Project> *requestProjects();
391 
392  /**
393  * Get a Project's data
394  * @return ItemJob receiving data
395  */
396  ItemJob<Project> *requestProject(const QString &id);
397 
398  /**
399  * Post modifications to a Project on the server. The resulting project ID can be found in
400  * the Attica::MetaData of the finished() PostJob. You can retrieve it using
401  * Attica::MetaData::resultingProjectId().
402  * @param project Project to create on the server
403  */
404  PostJob *createProject(const Project &project);
405 
406  /**
407  * Deletes a project on the server. The project passed as an argument doesn't need complete
408  * information as just the id() is used.
409  * @param project Project to delete on the server.
410  */
411  PostJob *deleteProject(const Project &project);
412 
413  /**
414  * Post modifications to a Project on the server
415  * @param project Project to update on the server
416  */
417  PostJob *editProject(const Project &project);
418 
419  // Buildservice part of OCS
420 
421  /**
422  * Get the information for a specific build service instance.
423  * @return ItemJob receiving data
424  */
425  ItemJob<BuildService> *requestBuildService(const QString &id);
426 
427  /**
428  * Get the information for a specific publisher.
429  * @return ItemJob receiving data
430  */
431  ItemJob<Publisher> *requestPublisher(const QString &id);
432 
433  /**
434  * Save the value of a single publishing field
435  * @return PostJob*
436  */
437  PostJob *savePublisherField(const Project &project, const PublisherField &field);
438 
439  /**
440  * Publish the result of a completed build job to a publisher.
441  * @return ItemJob receiving data
442  */
443  PostJob *publishBuildJob(const BuildServiceJob &buildjob, const Publisher &publisher);
444 
445  /**
446  * Get the build output for a specific build service job
447  * @return ItemJob receiving and containing the output data
448  */
449  ItemJob<BuildServiceJobOutput> *requestBuildServiceJobOutput(const QString &id);
450 
451  /**
452  * Get the information for a specific build service job, such as status and progress.
453  * @return ItemJob receiving and containing the data
454  */
455  ItemJob<BuildServiceJob> *requestBuildServiceJob(const QString &id);
456 
457  /**
458  * Get a list of build service build services
459  * @return ListJob listing BuildServices
460  */
461  ListJob<BuildService> *requestBuildServices();
462 
463  /**
464  * Get a list of publishers
465  * @return ListJob listing Publishers
466  */
467  ListJob<Publisher> *requestPublishers();
468 
469  /**
470  * Get a list of build service projects
471  * @return ListJob listing BuildServiceJobs
472  */
473  ListJob<BuildServiceJob> *requestBuildServiceJobs(const Project &project);
474 
475  /**
476  * Create a new job for a given project on a given buildservice for a given target.
477  * Those three items are mandatory for the job to succeed.
478  * @param job Buildservicejob to create on the server
479  */
480  PostJob *createBuildServiceJob(const BuildServiceJob &job);
481 
482  /**
483  * Cancel a job.
484  * Setting the ID on the build service parameter is enough for it to work.
485  * @param job Buildservicejob to cancel on the server, needs at least id set.
486  */
487  PostJob *cancelBuildServiceJob(const BuildServiceJob &job);
488 
489  /**
490  * Get a list of remote accounts, account for a build service instance
491  * which is stored in the OCS service in order to authenticate with the
492  * build service instance.
493  * @return ListJob listing RemoteAccounts
494  */
495  ListJob<RemoteAccount> *requestRemoteAccounts();
496 
497  /**
498  * Deletes a remote account stored on the OCS server.
499  * @param id The ID of the remote account on the OCS instance.
500  */
501  PostJob *deleteRemoteAccount(const QString &id);
502 
503  /**
504  * Create a new remote account, an account for a build service instance
505  * which is stored in the OCS service in order to authenticate with the
506  * build service instance.
507  * Type, Type ID, login and password are mandatory.
508  * @param account RemoteAccount to create on the server
509  */
510  PostJob *createRemoteAccount(const RemoteAccount &account);
511 
512  /**
513  * Edit an existing remote account.
514  * @param account RemoteAccount to create on the server
515  */
516  PostJob *editRemoteAccount(const RemoteAccount &account);
517 
518  /** Get a remote account by its ID.
519  * @param id The ID of the remote account
520  */
521  ItemJob<RemoteAccount> *requestRemoteAccount(const QString &id);
522 
523  /** Upload a tarball to the buildservice.
524  * @param projectId The ID of the project this source file belongs to
525  * @param payload A reference tothe complete file data
526  * @return A postjob to keep keep track of the upload
527  */
528  Attica::PostJob *uploadTarballToBuildService(const QString &projectId, const QString &fileName, const QByteArray &payload);
529 
530  // Content part of OCS
531 
532  /**
533  * Get a list of categories (such as wallpaper)
534  * @return the categories of the server
535  */
536  ListJob<Category> *requestCategories();
537 
538  /**
539  * Get a list of licenses (such as GPL)
540  * @return the licenses available from the server
541  */
542  ListJob<License> *requestLicenses();
543 
544  /**
545  * Get a list of distributions (such as Ark, Debian)
546  * @return the licenses available from the server
547  */
548  ListJob<Distribution> *requestDistributions();
549 
550  /**
551  * Get a list of home page types (such as blog, Facebook)
552  * @return the licenses available from the server
553  */
554  ListJob<HomePageType> *requestHomePageTypes();
555 
556  /**
557  Request a list of Contents.
558  Note that @p categories is not optional. If left empty, no results will be returned.
559  An empty search string @p search returns the top n items.
560  @param categories categories to search in
561  @param search optional search string (in name/description of the content)
562  @param mode sorting mode
563  @param page request nth page in the list of results
564  @param pageSize requested size of pages when calculating the list of results
565  @return list job for the search results
566  */
567  ListJob<Content> *
568  searchContents(const Category::List &categories, const QString &search = QString(), SortMode mode = Rating, uint page = 0, uint pageSize = 10);
569 
570  /**
571  Request a list of Contents.
572  Like @see searchContents, but only contents created by one person.
573  @param person the person-id that created the contents.
574  */
575  ListJob<Content> *searchContentsByPerson(const Category::List &categories,
576  const QString &person,
577  const QString &search = QString(),
578  SortMode mode = Rating,
579  uint page = 0,
580  uint pageSize = 10);
581 
582  /**
583  Request a list of Contents. More complete version.
584  Note that @p categories is not optional. If left empty, no results will be returned.
585  An empty search string @p search returns the top n items.
586  @param categories categories to search in
587  @param person the person-id that created the contents
588  @param distributions list of distributions to filter by, if empty no filtering by distribution is done
589  @param licenses list of licenses to filter by, if empty no filtering by license is done
590  @param search optional search string (in name/description of the content)
591  @param mode sorting mode
592  @param page request nth page in the list of results
593  @param pageSize requested size of pages when calculating the list of results
594  @return list job for the search results
595  */
596  ListJob<Content> *searchContents(const Category::List &categories,
597  const QString &person,
598  const Distribution::List &distributions,
599  const License::List &licenses,
600  const QString &search = QString(),
601  SortMode sortMode = Rating,
602  uint page = 0,
603  uint pageSize = 10);
604 
605  /**
606  Retrieve a single content.
607  @param contentId the id of the content
608  @return job that retrieves the content object
609  */
610  ItemJob<Content> *requestContent(const QString &contentId);
611 
612  ItemJob<DownloadItem> *downloadLink(const QString &contentId, const QString &itemId = QStringLiteral("1"));
613 
614 #if ATTICA_ENABLE_DEPRECATED_SINCE(0, 2)
615  /** Vote for a content item
616  * This version is for the old OCS API < 1.6
617  * @param contentId the content which this voting is for
618  * @param positiveVote whether the voting is positive or negative
619  * @return the post job for this voting
620  * @deprecated Since 0.2, use voteForContent(const QString &, uint)
621  */
622  ATTICA_DEPRECATED_VERSION(0, 2, "Use Provider::voteForContent(const QString &, uint)")
623  PostJob *voteForContent(const QString &contentId, bool positiveVote);
624 #endif
625 
626  /** Vote for a content item
627  * @param contentId the content which this voting is for
628  * @param rating - the rating, must be between 0 (bad) and 100 (good)
629  * @return the post job for this voting
630  */
631  PostJob *voteForContent(const QString &contentId, uint rating);
632 
633  ItemPostJob<Content> *addNewContent(const Category &category, const Content &newContent);
634  ItemPostJob<Content> *editContent(const Category &updatedCategory, const QString &contentId, const Content &updatedContent);
635  PostJob *deleteContent(const QString &contentId);
636 
637  PostJob *setDownloadFile(const QString &contentId, const QString &fileName, QIODevice *payload);
638  PostJob *setDownloadFile(const QString &contentId, const QString &fileName, const QByteArray &payload);
639  PostJob *deleteDownloadFile(const QString &contentId);
640 
641  /**
642  * Upload an image file as preview for the content
643  * @param contentId
644  * @param previewId each content can have previews with the id 1,2 or 3
645  * @param payload the image file
646  */
647  PostJob *setPreviewImage(const QString &contentId, const QString &previewId, const QString &fileName, const QByteArray &image);
648  PostJob *deletePreviewImage(const QString &contentId, const QString &previewId);
649 
650  // KnowledgeBase part of OCS
651 
652  ItemJob<KnowledgeBaseEntry> *requestKnowledgeBaseEntry(const QString &id);
653  ListJob<KnowledgeBaseEntry> *searchKnowledgeBase(const Content &content, const QString &search, SortMode, int page, int pageSize);
654 
655  // Event part of OCS
656 
657  ItemJob<Event> *requestEvent(const QString &id);
658  ListJob<Event> *requestEvent(const QString &country, const QString &search, const QDate &startAt, SortMode mode, int page, int pageSize);
659 
660  // Comment part of OCS
661  /** Request a list of comments for a content / forum / knowledgebase / event.
662  * @param comment::Type type of the comment @see Comment::Type (content / forum / knowledgebase / event)
663  * @param id id of the content entry where you want to get the comments is from
664  * @param id2 id of the content entry where you want to get the comments is from
665  * @param page request nth page in the list of results
666  * @param pageSize requested size of pages when calculating the list of results
667  * @return list job for the comments results
668  */
669  ListJob<Comment> *requestComments(const Comment::Type commentType, const QString &id, const QString &id2, int page, int pageSize);
670 
671  /** Add a new comment.
672  * @param commentType type of the comment @see CommentType (content / forum / knowledgebase / event)
673  * @param id id of the content entry where you want to get the comments is from
674  * @param id2 id of the sub content entry where you want to get the comments is from
675  * @param parentId the id of the parent comment if the new comment is a reply
676  * @param subject title of the comment
677  * @param message text of the comment
678  * @return item post job for adding the new comment
679  */
680  ItemPostJob<Comment> *addNewComment(const Comment::Type commentType,
681  const QString &id,
682  const QString &id2,
683  const QString &parentId,
684  const QString &subject,
685  const QString &message);
686 
687  /** Vote a comment item
688  * @param id the comment id which this voting is for
689  * @param rating the rating, must be between 0 (bad) and 100 (good)
690  * @return the post job for this voting
691  */
692  PostJob *voteForComment(const QString &id, uint rating);
693 
694  // Fan part of OCS
695 
696  PostJob *becomeFan(const QString &contentId);
697  ListJob<Person> *requestFans(const QString &contentId, uint page = 0, uint pageSize = 10);
698 
699  // Forum part of OCS
700  ListJob<Forum> *requestForums(uint page = 0, uint pageSize = 10);
701  ListJob<Topic> *requestTopics(const QString &forum, const QString &search, const QString &description, SortMode mode, int page, int pageSize);
702  PostJob *postTopic(const QString &forumId, const QString &subject, const QString &content);
703 
704  const QString &getRegisterAccountUrl() const;
705 
706 protected:
707  QUrl createUrl(const QString &path);
708  QNetworkRequest createRequest(const QUrl &url);
709  // Convenience overload
710  QNetworkRequest createRequest(const QString &path);
711 
712  ItemJob<Config> *doRequestConfig(const QUrl &url);
713  ItemJob<Person> *doRequestPerson(const QUrl &url);
714  ItemJob<AccountBalance> *doRequestAccountBalance(const QUrl &url);
715  ListJob<Person> *doRequestPersonList(const QUrl &url);
716  ListJob<Achievement> *doRequestAchievementList(const QUrl &url);
717  ListJob<Activity> *doRequestActivityList(const QUrl &url);
718  ListJob<Folder> *doRequestFolderList(const QUrl &url);
719  ListJob<Forum> *doRequestForumList(const QUrl &url);
720  ListJob<Topic> *doRequestTopicList(const QUrl &url);
721  ListJob<Message> *doRequestMessageList(const QUrl &url);
722 
723 private:
724  class Private;
726 
727  Provider(PlatformDependent *internals, const QUrl &baseUrl, const QString &name, const QUrl &icon = QUrl());
728  Provider(PlatformDependent *internals,
729  const QUrl &baseUrl,
730  const QString &name,
731  const QUrl &icon,
732  const QString &person,
733  const QString &friendV,
734  const QString &message,
735  const QString &achievements,
736  const QString &activity,
737  const QString &content,
738  const QString &fan,
739  const QString &forum,
740  const QString &knowledgebase,
741  const QString &event,
742  const QString &comment);
743  // kde-SC5: merge with the constructor above (i.e. remove the above one)
744  Provider(PlatformDependent *internals,
745  const QUrl &baseUrl,
746  const QString &name,
747  const QUrl &icon,
748  const QString &person,
749  const QString &friendV,
750  const QString &message,
751  const QString &achievements,
752  const QString &activity,
753  const QString &content,
754  const QString &fan,
755  const QString &forum,
756  const QString &knowledgebase,
757  const QString &event,
758  const QString &comment,
759  const QString &registerUrl);
760  // TODO KF6: merge with the constructor above (i.e. remove the above one - and actually do it this time :P )
761  Provider(PlatformDependent *internals,
762  const QUrl &baseUrl,
763  const QString &name,
764  const QUrl &icon,
765  const QString &person,
766  const QString &friendV,
767  const QString &message,
768  const QString &achievements,
769  const QString &activity,
770  const QString &content,
771  const QString &fan,
772  const QString &forum,
773  const QString &knowledgebase,
774  const QString &event,
775  const QString &comment,
776  const QString &registerUrl,
777  const QString &additionalAgentInformation);
778 
779  friend class ProviderManager;
780 };
781 }
782 
783 QDebug operator<<(QDebug s, const Attica::Provider &prov);
784 
785 #endif
Represents a single content.
Definition: content.h:30
Rating
Represents a single content category.
Definition: category.h:21
License
Publisher
Attica ProviderManager.
QDataStream & operator<<(QDataStream &out, const KDateTime::Spec &spec)
The Provider class represents one Open Collaboration Service provider.
Definition: provider.h:94
ItemJob< PrivateData > * requestPrivateData()
Fetches all stored private data.
Definition: provider.h:317
Represents a single mail folder.
Definition: folder.h:22
This file is part of the KDE documentation.
Documentation copyright © 1996-2021 The KDE developers.
Generated on Fri Jun 18 2021 23:00:51 by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.