Improve DBusNotification
* Allow setting application name * Add more functions for hints * Add return value to hide()
This commit is contained in:
parent
7e8766cdb6
commit
4e3aaee223
|
@ -273,8 +273,10 @@ bool DBusNotification::show()
|
||||||
}
|
}
|
||||||
|
|
||||||
delete m_watcher;
|
delete m_watcher;
|
||||||
m_watcher = new QDBusPendingCallWatcher(
|
m_watcher
|
||||||
s_dbusInterface->Notify(QCoreApplication::applicationName(), m_id, m_icon, m_title, m_msg, m_actions, m_hints, m_timeout), this);
|
= new QDBusPendingCallWatcher(s_dbusInterface->Notify(m_applicationName.isEmpty() ? QCoreApplication::applicationName() : m_applicationName,
|
||||||
|
m_id, m_icon, m_title, m_msg, m_actions, m_hints, m_timeout),
|
||||||
|
this);
|
||||||
connect(m_watcher, &QDBusPendingCallWatcher::finished, this, &DBusNotification::handleNotifyResult);
|
connect(m_watcher, &QDBusPendingCallWatcher::finished, this, &DBusNotification::handleNotifyResult);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -344,13 +346,14 @@ bool DBusNotification::queryCapabilities(const std::function<void(Capabilities &
|
||||||
* \brief Hides the notification (if still visible).
|
* \brief Hides the notification (if still visible).
|
||||||
* \remarks On success, the signal closed() is emitted with the reason
|
* \remarks On success, the signal closed() is emitted with the reason
|
||||||
* NotificationCloseReason::Manually.
|
* NotificationCloseReason::Manually.
|
||||||
* \todo Add return value in v6.
|
|
||||||
*/
|
*/
|
||||||
void DBusNotification::hide()
|
bool DBusNotification::hide()
|
||||||
{
|
{
|
||||||
if (m_id) {
|
if (m_id) {
|
||||||
s_dbusInterface->CloseNotification(m_id);
|
s_dbusInterface->CloseNotification(m_id);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
|
|
@ -21,6 +21,7 @@ enum class NotificationCloseReason { Undefined, Expired, Dismissed, Manually, Ac
|
||||||
|
|
||||||
class QT_UTILITIES_EXPORT DBusNotification : public QObject {
|
class QT_UTILITIES_EXPORT DBusNotification : public QObject {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
Q_PROPERTY(QString applicationName READ applicationName WRITE setApplicationName)
|
||||||
Q_PROPERTY(QString title READ title WRITE setTitle)
|
Q_PROPERTY(QString title READ title WRITE setTitle)
|
||||||
Q_PROPERTY(QString message READ message WRITE setMessage)
|
Q_PROPERTY(QString message READ message WRITE setMessage)
|
||||||
Q_PROPERTY(QString icon READ icon WRITE setIcon)
|
Q_PROPERTY(QString icon READ icon WRITE setIcon)
|
||||||
|
@ -55,6 +56,8 @@ public:
|
||||||
~DBusNotification() override;
|
~DBusNotification() override;
|
||||||
|
|
||||||
static bool isAvailable();
|
static bool isAvailable();
|
||||||
|
const QString &applicationName() const;
|
||||||
|
void setApplicationName(const QString &applicationName);
|
||||||
const QString &title() const;
|
const QString &title() const;
|
||||||
void setTitle(const QString &title);
|
void setTitle(const QString &title);
|
||||||
const QString &message() const;
|
const QString &message() const;
|
||||||
|
@ -68,6 +71,12 @@ public:
|
||||||
void setImagePath(const QString &imagePath);
|
void setImagePath(const QString &imagePath);
|
||||||
int timeout() const;
|
int timeout() const;
|
||||||
void setTimeout(int timeout);
|
void setTimeout(int timeout);
|
||||||
|
int urgency() const;
|
||||||
|
void setUrgency(quint8 urgency);
|
||||||
|
bool isResident() const;
|
||||||
|
void setResident(bool resident);
|
||||||
|
QString category() const;
|
||||||
|
void setCategory(const QString &category);
|
||||||
const QStringList &actions() const;
|
const QStringList &actions() const;
|
||||||
void setActions(const QStringList &actions);
|
void setActions(const QStringList &actions);
|
||||||
const QVariantMap &hints() const;
|
const QVariantMap &hints() const;
|
||||||
|
@ -82,7 +91,7 @@ public Q_SLOTS:
|
||||||
bool show();
|
bool show();
|
||||||
bool show(const QString &message);
|
bool show(const QString &message);
|
||||||
bool update(const QString &line);
|
bool update(const QString &line);
|
||||||
void hide();
|
bool hide();
|
||||||
|
|
||||||
Q_SIGNALS:
|
Q_SIGNALS:
|
||||||
/// \brief Emitted when the notification could be shown successful.
|
/// \brief Emitted when the notification could be shown successful.
|
||||||
|
@ -104,6 +113,7 @@ private:
|
||||||
|
|
||||||
uint m_id;
|
uint m_id;
|
||||||
QDBusPendingCallWatcher *m_watcher;
|
QDBusPendingCallWatcher *m_watcher;
|
||||||
|
QString m_applicationName;
|
||||||
QString m_title;
|
QString m_title;
|
||||||
QString m_msg;
|
QString m_msg;
|
||||||
QString m_icon;
|
QString m_icon;
|
||||||
|
@ -179,6 +189,24 @@ inline bool DBusNotification::Capabilities::supportsPercistence() const
|
||||||
return contains(QStringLiteral("persistence"));
|
return contains(QStringLiteral("persistence"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Returns the application name to be used.
|
||||||
|
* \remarks If the application name is empty (which is the default), QCoreApplication::applicationName() is used instead.
|
||||||
|
*/
|
||||||
|
inline const QString &DBusNotification::applicationName() const
|
||||||
|
{
|
||||||
|
return m_applicationName;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Sets the application name to be used.
|
||||||
|
* \remarks If the application name is empty (which is the default), QCoreApplication::applicationName() is used instead.
|
||||||
|
*/
|
||||||
|
inline void DBusNotification::setApplicationName(const QString &applicationName)
|
||||||
|
{
|
||||||
|
m_applicationName = applicationName;
|
||||||
|
}
|
||||||
|
|
||||||
inline const QString &DBusNotification::title() const
|
inline const QString &DBusNotification::title() const
|
||||||
{
|
{
|
||||||
return m_title;
|
return m_title;
|
||||||
|
@ -265,6 +293,56 @@ inline void DBusNotification::setTimeout(int timeout)
|
||||||
m_timeout = timeout;
|
m_timeout = timeout;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Returns the urgency level (0 = low, 1 = normal, 2 = critical).
|
||||||
|
*/
|
||||||
|
inline int DBusNotification::urgency() const
|
||||||
|
{
|
||||||
|
return m_hints[QStringLiteral("urgency")].toInt();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Sets the urgency level (0 = low, 1 = normal, 2 = critical).
|
||||||
|
*/
|
||||||
|
inline void DBusNotification::setUrgency(quint8 urgency)
|
||||||
|
{
|
||||||
|
m_hints[QStringLiteral("urgency")] = urgency;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Returns whether the notification will remain visible after an action has been clicked.
|
||||||
|
*/
|
||||||
|
inline bool DBusNotification::isResident() const
|
||||||
|
{
|
||||||
|
return m_hints[QStringLiteral("resident")].toBool();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Sets whether the notification will remain visible after an action has been clicked.
|
||||||
|
*/
|
||||||
|
inline void DBusNotification::setResident(bool resident)
|
||||||
|
{
|
||||||
|
m_hints[QStringLiteral("resident")] = resident;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Returns the category.
|
||||||
|
* \sa https://developer.gnome.org/notification-spec/#categories
|
||||||
|
*/
|
||||||
|
inline QString DBusNotification::category() const
|
||||||
|
{
|
||||||
|
return m_hints[QStringLiteral("category")].toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Sets the category.
|
||||||
|
* \sa https://developer.gnome.org/notification-spec/#categories
|
||||||
|
*/
|
||||||
|
inline void DBusNotification::setCategory(const QString &category)
|
||||||
|
{
|
||||||
|
m_hints[QStringLiteral("category")] = category;
|
||||||
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Returns the actions for the notification.
|
* \brief Returns the actions for the notification.
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue