KCalendarCore

conference.h
1 /*
2  This file is part of the kcalcore library.
3 
4  SPDX-FileCopyrightText: 2020 Daniel Vrátil <[email protected]>
5 
6  SPDX-License-Identifier: LGPL-2.0-or-later
7 */
8 
9 #ifndef KCALCORE_CONFERENCE_H
10 #define KCALCORE_CONFERENCE_H
11 
12 #include <QMetaType>
13 #include <QSharedDataPointer>
14 #include <QUrl>
15 
16 #include "customproperties.h"
17 #include "kcalendarcore_export.h"
18 
19 namespace KCalendarCore
20 {
21 /**
22  @brief
23  Represents information related to a conference information of an Calendar
24  Incidence, typically a meeting or task (to-do).
25 
26  Conference contains information needed to join a remote conference system
27  (e.g. phone call, audio/video meeting etc.)
28 
29  @since 5.77
30 */
31 class KCALENDARCORE_EXPORT Conference
32 {
33  Q_GADGET
34  Q_PROPERTY(bool isNull READ isNull)
35  Q_PROPERTY(QStringList features READ features WRITE setFeatures)
36  Q_PROPERTY(QString label READ label WRITE setLabel)
37  Q_PROPERTY(QUrl uri READ uri WRITE setUri)
38  Q_PROPERTY(QString language READ language WRITE setLanguage)
39 
40 public:
41  using List = QVector<Conference>;
42 
43  /** Create a null Conference. */
44  explicit Conference();
45 
46  /**
47  Constructs a conference consisting of a @p uri, description of
48  the URI (@p label), list of features of the conference (@p features)
49  and @p language.
50 
51  @param uri Uri to join the conference.
52  @param label Label of the URI.
53  @param features Features of this particular conference method.
54  @param language Language of the information present in other fields.
55  */
56  Conference(const QUrl &uri, const QString &label, const QStringList &features = {}, const QString &language = {});
57 
58  /**
59  Constructs a conference by copying another conference.
60 
61  @param conference is the conference to be copied.
62  */
63  Conference(const Conference &conference);
64 
65  /**
66  Destroys the conference.
67  */
68  ~Conference();
69 
70  /**
71  Compares this with @p conference for equality.
72 
73  @param conference the conference to compare.
74  */
75  bool operator==(const Conference &conference) const;
76 
77  /**
78  Compares this with @p conference for inequality.
79 
80  @param conference the conference to compare.
81  */
82  bool operator!=(const Conference &other) const;
83 
84  /**
85  * Returns @c true if this is a default-constructed Conference instance.
86  */
87  Q_REQUIRED_RESULT bool isNull() const;
88 
89  /**
90  * Returns URI to join the conference, with access code included.
91  */
92  Q_REQUIRED_RESULT QUrl uri() const;
93 
94  /**
95  * Sets the URI to @uri.
96  */
97  void setUri(const QUrl &uri);
98 
99  /**
100  * Returns label with additional details regarding further use of the URI.
101  */
102  Q_REQUIRED_RESULT QString label() const;
103 
104  /**
105  * Sets the URI label to @p label.
106  */
107  void setLabel(const QString &label);
108 
109  /**
110  * Returns the list of features of the conferencing system at given URI.
111  *
112  * This can be e.g. CHAT, AUDIO, VIDEO, PHONE, etc.
113  */
114  Q_REQUIRED_RESULT QStringList features() const;
115 
116  /**
117  * Adds @p feature to the list of features.
118  *
119  * @param feature Feature to add.
120  */
121  void addFeature(const QString &feature);
122 
123  /**
124  * Removes @p feature from the list of features.
125  *
126  * @param feature Feature to remove.
127  */
128  void removeFeature(const QString &feature);
129 
130  /**
131  * Sets the list of features to @p features.
132  */
133  void setFeatures(const QStringList &features);
134 
135  /**
136  * Returns the language of the text present in other properties of this object.
137  */
138  Q_REQUIRED_RESULT QString language() const;
139 
140  /**
141  * Sets the language to @p language.
142  */
143  void setLanguage(const QString &language);
144 
145  /**
146  Sets this conference equal to @p conference.
147 
148  @param conference is the conference to copy.
149  */
150  Conference &operator=(const Conference &conference);
151 
152  /**
153  Adds a custom property. If the property already exists it will be overwritten.
154  @param xname is the name of the property.
155  @param xvalue is its value.
156  */
157  void setCustomProperty(const QByteArray &xname, const QString &xvalue);
158 
159  /**
160  Returns a reference to the CustomProperties object
161  */
162  Q_REQUIRED_RESULT CustomProperties &customProperties();
163 
164  /**
165  Returns a const reference to the CustomProperties object
166  */
167  const CustomProperties &customProperties() const;
168 
169 private:
170  //@cond PRIVATE
171  class Private;
173  //@endcond
174 
175  friend KCALENDARCORE_EXPORT QDataStream &operator<<(QDataStream &, const KCalendarCore::Conference &);
176  friend KCALENDARCORE_EXPORT QDataStream &operator>>(QDataStream &, KCalendarCore::Conference &);
177 };
178 
179 /**
180  Serializes a Conference object into a data stream.
181  @param stream is a QDataStream.
182  @param conference is a reference to a Conference object to be serialized.
183 */
184 KCALENDARCORE_EXPORT QDataStream &operator<<(QDataStream &stream, const KCalendarCore::Conference &conference);
185 
186 /**
187  Initializes a Conference object from a data stream.
188  @param stream is a QDataStream.
189  @param conference is a reference to a Conference object to be initialized.
190 */
191 KCALENDARCORE_EXPORT QDataStream &operator>>(QDataStream &stream, KCalendarCore::Conference &conference);
192 
193 }
194 
195 //@cond PRIVATE
196 Q_DECLARE_TYPEINFO(KCalendarCore::Conference, Q_MOVABLE_TYPE);
197 Q_DECLARE_METATYPE(KCalendarCore::Conference)
198 //@endcond
199 
200 #endif
KCALENDARCORE_EXPORT QDataStream & operator<<(QDataStream &out, const KCalendarCore::Alarm::Ptr &)
Alarm serializer.
Definition: alarm.cpp:820
Namespace for all KCalendarCore types.
Definition: alarm.h:36
KCALENDARCORE_EXPORT QDataStream & operator>>(QDataStream &in, const KCalendarCore::Alarm::Ptr &)
Alarm deserializer.
Definition: alarm.cpp:833
Represents information related to a conference information of an Calendar Incidence,...
Definition: conference.h:31
A class to manage custom calendar properties.
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Sun Oct 1 2023 03:58:00 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.