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

KDE's Doxygen guidelines are available online.