KNotifications

knotificationreplyaction.h
1 /*
2  This file is part of the KDE Frameworks
3  SPDX-FileCopyrightText: 2021 Kai Uwe Broulik <[email protected]>
4 
5  SPDX-License-Identifier: LGPL-2.0-or-later
6 */
7 
8 #ifndef KNOTIFICATIONREPLYACTION_H
9 #define KNOTIFICATIONREPLYACTION_H
10 
11 #include <knotifications_export.h>
12 
13 #include <QObject>
14 
15 #include <memory>
16 
17 class QString;
18 
19 class KNotificationReplyActionPrivate;
20 
21 /**
22  * @class KNotificationReplyAction knotificationreplyaction.h KNotificationReplyAction
23  *
24  * @brief An inline reply action
25  *
26  * This class represents an inline reply action, which lets the user type a
27  * reply to a chat message or email in the notification popup.
28  */
29 class KNOTIFICATIONS_EXPORT KNotificationReplyAction : public QObject
30 {
31  Q_OBJECT
32  /**
33  * @copydoc label
34  * @since 5.88
35  */
36  Q_PROPERTY(QString label READ label WRITE setLabel NOTIFY labelChanged)
37  /**
38  * @copydoc placeholderText
39  * @since 5.88
40  */
41  Q_PROPERTY(QString placeholderText READ placeholderText WRITE setPlaceholderText NOTIFY placeholderTextChanged)
42  /**
43  * @copydoc submitButtonText
44  * @since 5.88
45  */
46  Q_PROPERTY(QString submitButtonText READ submitButtonText WRITE setSubmitButtonText NOTIFY submitButtonTextChanged)
47  /**
48  * @copydoc submitButtonIconName
49  * @since 5.88
50  */
51  Q_PROPERTY(QString submitButtonIconName READ submitButtonIconName WRITE setSubmitButtonIconName NOTIFY submitButtonIconNameChanged)
52  /**
53  * @copydoc fallbackBehavior
54  * @since 5.88
55  */
56  Q_PROPERTY(FallbackBehavior fallbackBehavior READ fallbackBehavior WRITE setFallbackBehavior NOTIFY fallbackBehaviorChanged)
57 
58 public:
59  /**
60  * Creates a inline reply action with given label
61  * @param label The label for the action
62  */
63  explicit KNotificationReplyAction(const QString &label);
64  /**
65  * Destroys this inline reply action
66  */
67  ~KNotificationReplyAction() override;
68 
69  /**
70  * The label for the action button
71  */
72  QString label() const;
73  /**
74  * Set the label for the action button
75  */
76  void setLabel(const QString &label);
77 
78  /**
79  * The placeholder text for the inline reply text field
80  */
81  QString placeholderText() const;
82  /**
83  * Set the placeholder text for the inline reply text field, for example "Reply to Konqi..."
84  */
85  void setPlaceholderText(const QString &placeholderText);
86 
87  /**
88  * The label for the button to send the typed reply
89  */
90  QString submitButtonText() const;
91  /**
92  * Set the label for the button to send the typed reply
93  */
94  void setSubmitButtonText(const QString &submitButtonText);
95 
96  /**
97  * The icon name for the button to send the typed reply
98  */
99  QString submitButtonIconName() const;
100  /**
101  * Set the icon name for the button to send the typed reply
102  */
103  void setSubmitButtonIconName(const QString &submitButtonIconName);
104 
105  /**
106  * Behavior when the notification server does not support inline replies
107  */
108  enum class FallbackBehavior {
109  /**
110  * Don't add the reply action (default)
111  */
112  HideAction,
113  /**
114  * Add the reply action as regular button
115  *
116  * Use this if you want to provide your own reply functionality
117  *
118  * @note The @c activated signal is emitted instead of @c replied!
119  */
120  UseRegularAction,
121  };
122  Q_ENUM(FallbackBehavior)
123 
124  /**
125  * Gets the fallback behavior when the notification server does not support inline replies
126  */
127  FallbackBehavior fallbackBehavior() const;
128  /**
129  * Set the fallback behavior for when the notification server does not support inline replies
130  */
131  void setFallbackBehavior(FallbackBehavior fallbackBehavior);
132 
133 Q_SIGNALS:
134  /**
135  * Emitted when the user has submitted a reply
136  *
137  * @note This is never emitted when the notification server does not support inline replies
138  *
139  * @param text The text the user entered
140  */
141  void replied(const QString &text);
142  /**
143  * Emitted when the user clicks the reply fallback button
144  *
145  * @note This is emitted when the notification server does not support inline replies
146  * and fallbackBehavior is set to @c UseRegularAction.
147  */
148  void activated();
149 
150  /**
151  * Emitted when @p label changed.
152  * @since 5.88
153  */
154  void labelChanged();
155  /**
156  * Emitted when @p placeholderText changed.
157  * @since 5.88
158  */
159  void placeholderTextChanged();
160  /**
161  * Emitted when @p submitButtonText changed.
162  * @since 5.88
163  */
164  void submitButtonTextChanged();
165  /**
166  * Emitted when @p submitButtonIconName changed.
167  * @since 5.88
168  */
169  void submitButtonIconNameChanged();
170  /**
171  * Emitted when @p fallbackBehavior changed.
172  * @since 5.88
173  */
174  void fallbackBehaviorChanged();
175 
176 private:
177  std::unique_ptr<KNotificationReplyActionPrivate> const d;
178 };
179 
180 #endif // KNOTIFICATIONREPLYACTION_H
Q_PROPERTY(...)
Q_ENUM(...)
FallbackBehavior
Behavior when the notification server does not support inline replies.
Q_SIGNALSQ_SIGNALS
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Mon May 8 2023 03:49:15 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.