客户端和设置接口客户端注册机制
This commit is contained in:
parent
fd2b80a585
commit
293715a9c7
|
@ -10,8 +10,8 @@ set(CMAKE_AUTORCC ON)
|
||||||
set(CMAKE_CXX_STANDARD 11)
|
set(CMAKE_CXX_STANDARD 11)
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
include(GNUInstallDirs)
|
include(GNUInstallDirs)
|
||||||
find_package(QT NAMES Qt6 Qt5 COMPONENTS Core LinguistTools DBus Network Gui REQUIRED)
|
find_package(QT NAMES Qt6 Qt5 COMPONENTS Core LinguistTools DBus Network Gui Qml REQUIRED)
|
||||||
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core LinguistTools DBus Network Gui REQUIRED)
|
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core LinguistTools DBus Network Gui Qml REQUIRED)
|
||||||
set(REQUIRED_QT_VERSION 5.12.8)
|
set(REQUIRED_QT_VERSION 5.12.8)
|
||||||
|
|
||||||
add_subdirectory(notification-server)
|
add_subdirectory(notification-server)
|
||||||
|
|
|
@ -2,7 +2,7 @@ set(VERSION_MAJOR 1)
|
||||||
set(VERSION_MINOR 0)
|
set(VERSION_MINOR 0)
|
||||||
set(VERSION_MICRO 0)
|
set(VERSION_MICRO 0)
|
||||||
set(UKUI_NOTIFICATION_VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_MICRO})
|
set(UKUI_NOTIFICATION_VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_MICRO})
|
||||||
set(settings_DIR notification-settings/)
|
|
||||||
find_package(KF5WindowSystem)
|
find_package(KF5WindowSystem)
|
||||||
find_package(PkgConfig REQUIRED)
|
find_package(PkgConfig REQUIRED)
|
||||||
set(UKUI_NOTIFICATION_EXTERNAL_LIBS "")
|
set(UKUI_NOTIFICATION_EXTERNAL_LIBS "")
|
||||||
|
@ -26,17 +26,28 @@ set(ukui-notification_LIB_SRCS
|
||||||
notification-client-private.h
|
notification-client-private.h
|
||||||
utils.h
|
utils.h
|
||||||
utils.cpp
|
utils.cpp
|
||||||
${settings_DIR}settings-properties.h
|
notification-close-reason.h
|
||||||
${settings_DIR}settings-properties-info.h
|
notification-settings/settings-properties.h
|
||||||
${settings_DIR}settings-properties-info.cpp
|
notification-settings/settings-properties-info.h
|
||||||
${settings_DIR}settings-manager-private.h
|
notification-settings/settings-properties-info.cpp
|
||||||
${settings_DIR}settings-manager.h
|
notification-settings/settings-manager-private.h
|
||||||
${settings_DIR}settings-manager.cpp
|
notification-settings/settings-manager.h
|
||||||
${settings_DIR}/notification-global-settings.cpp
|
notification-settings/settings-manager.cpp
|
||||||
${settings_DIR}/notification-global-settings.h notification-settings/single-application-settings.cpp notification-settings/single-application-settings.h notification-settings/applications-settings.cpp notification-settings/applications-settings.h)
|
notification-settings/notification-global-settings.cpp
|
||||||
|
notification-settings/notification-global-settings.h
|
||||||
|
notification-settings/single-application-settings.cpp
|
||||||
|
notification-settings/single-application-settings.h
|
||||||
|
notification-settings/applications-settings.cpp
|
||||||
|
notification-settings/applications-settings.h)
|
||||||
set(HEADERS
|
set(HEADERS
|
||||||
notification-client.h
|
notification-client.h
|
||||||
popup-notification.h
|
popup-notification.h
|
||||||
|
notification-close-reason.h
|
||||||
|
notification-settings/settings-properties.h
|
||||||
|
notification-settings/settings-properties-info.h
|
||||||
|
notification-settings/notification-global-settings.h
|
||||||
|
notification-settings/single-application-settings.h
|
||||||
|
notification-settings/applications-settings.h
|
||||||
ukui-notification_global.h
|
ukui-notification_global.h
|
||||||
utils.h)
|
utils.h)
|
||||||
if(COMMAND qt_add_dbus_interface)
|
if(COMMAND qt_add_dbus_interface)
|
||||||
|
@ -52,6 +63,7 @@ target_link_libraries(ukui-notification
|
||||||
Qt${QT_VERSION_MAJOR}::Core
|
Qt${QT_VERSION_MAJOR}::Core
|
||||||
Qt${QT_VERSION_MAJOR}::DBus
|
Qt${QT_VERSION_MAJOR}::DBus
|
||||||
Qt${QT_VERSION_MAJOR}::Gui
|
Qt${QT_VERSION_MAJOR}::Gui
|
||||||
|
Qt${QT_VERSION_MAJOR}::Qml
|
||||||
KF5::WindowSystem
|
KF5::WindowSystem
|
||||||
${UKUI_NOTIFICATION_EXTERNAL_LIBS}
|
${UKUI_NOTIFICATION_EXTERNAL_LIBS}
|
||||||
)
|
)
|
||||||
|
|
|
@ -36,7 +36,7 @@ public:
|
||||||
const QStringList &actions,
|
const QStringList &actions,
|
||||||
const QVariantMap &hints,
|
const QVariantMap &hints,
|
||||||
int timeout);
|
int timeout);
|
||||||
bool closeNotification(uint id, NotificationClient::CloseReason reason);
|
bool closeNotification(uint id, NotificationCloseReason::CloseReason reason);
|
||||||
bool invokeAction(uint id, const QString &action_key);
|
bool invokeAction(uint id, const QString &action_key);
|
||||||
|
|
||||||
private Q_SLOTS:
|
private Q_SLOTS:
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
#include "notification-client.h"
|
#include "notification-client.h"
|
||||||
#include "notification-client-private.h"
|
#include "notification-client-private.h"
|
||||||
#include <QDBusConnection>
|
#include <QDBusConnection>
|
||||||
|
#include <QQmlEngine>
|
||||||
#include "notificationclientadaptor.h"
|
#include "notificationclientadaptor.h"
|
||||||
|
|
||||||
using namespace UkuiNotification;
|
using namespace UkuiNotification;
|
||||||
|
@ -122,22 +123,22 @@ void NotificationClientPrivate::Notify(const QString &app_name, uint replaces_id
|
||||||
|
|
||||||
void NotificationClientPrivate::notificationClosed(uint id, uint reason)
|
void NotificationClientPrivate::notificationClosed(uint id, uint reason)
|
||||||
{
|
{
|
||||||
NotificationClient::CloseReason closeReason = NotificationClient::Undefined;
|
auto closeReason = NotificationCloseReason::CloseReason::Undefined;
|
||||||
switch (reason) {
|
switch (reason) {
|
||||||
case 1:
|
case 1:
|
||||||
closeReason = NotificationClient::Expired;
|
closeReason = NotificationCloseReason::CloseReason::Expired;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
closeReason = NotificationClient::DismissedByUser;
|
closeReason = NotificationCloseReason::CloseReason::DismissedByUser;
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
closeReason = NotificationClient::Revoked;
|
closeReason = NotificationCloseReason::CloseReason::Revoked;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
Q_EMIT q->notificationClosed(id, closeReason);
|
Q_EMIT q->notificationClosed(id, closeReason);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool NotificationClientPrivate::closeNotification(uint id, NotificationClient::CloseReason reason)
|
bool NotificationClientPrivate::closeNotification(uint id, NotificationCloseReason::CloseReason reason)
|
||||||
{
|
{
|
||||||
if(!m_serverInterface) {
|
if(!m_serverInterface) {
|
||||||
return false;
|
return false;
|
||||||
|
@ -177,6 +178,8 @@ bool NotificationClientPrivate::invokeAction(uint id, const QString &action_key)
|
||||||
NotificationClient::NotificationClient(QObject *parent) : QObject(parent), d(new NotificationClientPrivate(this))
|
NotificationClient::NotificationClient(QObject *parent) : QObject(parent), d(new NotificationClientPrivate(this))
|
||||||
{
|
{
|
||||||
qRegisterMetaType<PopupNotification>("PopupNotification");
|
qRegisterMetaType<PopupNotification>("PopupNotification");
|
||||||
|
qRegisterMetaType<UkuiNotification::PopupNotification>("UkuiNotification::PopupNotification");
|
||||||
|
qmlRegisterUncreatableType<UkuiNotification::NotificationCloseReason>("org.ukui.notification.client", 1, 0, "NotificationCloseReason", "");
|
||||||
}
|
}
|
||||||
|
|
||||||
NotificationClient::~NotificationClient() = default;
|
NotificationClient::~NotificationClient() = default;
|
||||||
|
@ -186,7 +189,7 @@ bool NotificationClient::registerClient()
|
||||||
return d->init();
|
return d->init();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool NotificationClient::closeNotification(uint id, NotificationClient::CloseReason reason)
|
bool NotificationClient::closeNotification(uint id, NotificationCloseReason::CloseReason reason)
|
||||||
{
|
{
|
||||||
return d->closeNotification(id, reason);
|
return d->closeNotification(id, reason);
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,22 +7,13 @@
|
||||||
#include "ukui-notification_global.h"
|
#include "ukui-notification_global.h"
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include "popup-notification.h"
|
#include "popup-notification.h"
|
||||||
|
#include "notification-close-reason.h"
|
||||||
namespace UkuiNotification {
|
namespace UkuiNotification {
|
||||||
class NotificationClientPrivate;
|
class NotificationClientPrivate;
|
||||||
class UKUINOTIFICATION_EXPORT NotificationClient : public QObject
|
class UKUINOTIFICATION_EXPORT NotificationClient : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
/**
|
|
||||||
* The reason a notification was closed
|
|
||||||
*/
|
|
||||||
enum CloseReason {
|
|
||||||
Expired = 1, // The notification expired(timed out).
|
|
||||||
DismissedByUser = 2, // The notification was dismissed by the user.
|
|
||||||
Revoked = 3, //< The notification was closed by sender by a call to CloseNotification.
|
|
||||||
Undefined = 4, //Undefined/reserved reasons.
|
|
||||||
};
|
|
||||||
Q_ENUM(CloseReason)
|
|
||||||
explicit NotificationClient(QObject *parent = nullptr);
|
explicit NotificationClient(QObject *parent = nullptr);
|
||||||
~NotificationClient();
|
~NotificationClient();
|
||||||
/**
|
/**
|
||||||
|
@ -31,11 +22,11 @@ public:
|
||||||
*/
|
*/
|
||||||
bool registerClient();
|
bool registerClient();
|
||||||
void unregisterClient();
|
void unregisterClient();
|
||||||
bool closeNotification(uint id, CloseReason reason);
|
bool closeNotification(uint id, NotificationCloseReason::CloseReason reason);
|
||||||
bool invokeAction(uint id, const QString &action_key);
|
bool invokeAction(uint id, const QString &action_key);
|
||||||
Q_SIGNALS:
|
Q_SIGNALS:
|
||||||
void newNotification(const PopupNotification ¬ification);
|
void newNotification(const UkuiNotification::PopupNotification ¬ification);
|
||||||
void notificationClosed(uint id, CloseReason closeReason);
|
void notificationClosed(uint id, UkuiNotification::NotificationCloseReason::CloseReason closeReason);
|
||||||
private:
|
private:
|
||||||
NotificationClientPrivate *d = nullptr;
|
NotificationClientPrivate *d = nullptr;
|
||||||
};
|
};
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
//
|
||||||
|
// Created by zpf on 2023/3/8.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef UKUI_NOTIFICATION_NOTIFICATIONCLOSEREASON_H
|
||||||
|
#define UKUI_NOTIFICATION_NOTIFICATIONCLOSEREASON_H
|
||||||
|
|
||||||
|
|
||||||
|
#include <QObject>
|
||||||
|
#include "ukui-notification_global.h"
|
||||||
|
|
||||||
|
namespace UkuiNotification {
|
||||||
|
class UKUINOTIFICATION_EXPORT NotificationCloseReason
|
||||||
|
{
|
||||||
|
Q_GADGET
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* The reason a notification was closed
|
||||||
|
*/
|
||||||
|
enum CloseReason {
|
||||||
|
Expired = 1, // The notification expired(timed out).
|
||||||
|
DismissedByUser = 2, // The notification was dismissed by the user.
|
||||||
|
Revoked = 3, //< The notification was closed by sender by a call to CloseNotification.
|
||||||
|
Undefined = 4, //Undefined/reserved reasons.
|
||||||
|
};
|
||||||
|
Q_ENUM(CloseReason)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
#endif //UKUI_NOTIFICATION_NOTIFICATIONCLOSEREASON_H
|
|
@ -4,6 +4,7 @@
|
||||||
|
|
||||||
#include "applications-settings.h"
|
#include "applications-settings.h"
|
||||||
#include <mutex>
|
#include <mutex>
|
||||||
|
#include <QQmlEngine>
|
||||||
#include "settings-manager.h"
|
#include "settings-manager.h"
|
||||||
#include <QJsonObject>
|
#include <QJsonObject>
|
||||||
|
|
||||||
|
@ -33,6 +34,7 @@ UkuiNotification::ApplicationsSettings::ApplicationsSettings(QObject *parent) :
|
||||||
d->m_settingsData = SettingsManager::self()->getAllAppSettings();
|
d->m_settingsData = SettingsManager::self()->getAllAppSettings();
|
||||||
connect(SettingsManager::self(), &SettingsManager::appUninstalled, this, &ApplicationsSettings::applicationUninstalled);
|
connect(SettingsManager::self(), &SettingsManager::appUninstalled, this, &ApplicationsSettings::applicationUninstalled);
|
||||||
connect(SettingsManager::self(), &SettingsManager::settingsDataChanged, this, &ApplicationsSettings::settingsDataChanged);
|
connect(SettingsManager::self(), &SettingsManager::settingsDataChanged, this, &ApplicationsSettings::settingsDataChanged);
|
||||||
|
qmlRegisterUncreatableType<UkuiNotification::SingleApplicationSettings>("org.ukui.notification.client", 1, 0, "SingleApplicationSettings", "");
|
||||||
}
|
}
|
||||||
|
|
||||||
ApplicationsSettings::~ApplicationsSettings()
|
ApplicationsSettings::~ApplicationsSettings()
|
||||||
|
@ -42,7 +44,7 @@ ApplicationsSettings::~ApplicationsSettings()
|
||||||
d = nullptr;
|
d = nullptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SingleApplicationSettings ApplicationsSettings::creatSettings(PopupNotification ¬ification)
|
SingleApplicationSettings ApplicationsSettings::creatSettings(const PopupNotification ¬ification)
|
||||||
{
|
{
|
||||||
QString desktopEntry = notification.desktopEntry();
|
QString desktopEntry = notification.desktopEntry();
|
||||||
if(desktopEntry.isEmpty()) {
|
if(desktopEntry.isEmpty()) {
|
||||||
|
|
|
@ -25,7 +25,7 @@ public:
|
||||||
* @param notification
|
* @param notification
|
||||||
* @return SingleApplicationSettings
|
* @return SingleApplicationSettings
|
||||||
*/
|
*/
|
||||||
SingleApplicationSettings creatSettings(PopupNotification ¬ification);
|
SingleApplicationSettings creatSettings(const PopupNotification ¬ification);
|
||||||
ApplicationsSettingsHash &getAllApplicationsSettings();
|
ApplicationsSettingsHash &getAllApplicationsSettings();
|
||||||
/**
|
/**
|
||||||
* @brief getAppSettings
|
* @brief getAppSettings
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
|
|
||||||
#include "notification-global-settings.h"
|
#include "notification-global-settings.h"
|
||||||
#include <QJsonObject>
|
#include <QJsonObject>
|
||||||
|
#include <QQmlEngine>
|
||||||
#include "settings-manager.h"
|
#include "settings-manager.h"
|
||||||
#include "settings-properties.h"
|
#include "settings-properties.h"
|
||||||
#include "settings-properties-info.h"
|
#include "settings-properties-info.h"
|
||||||
|
@ -21,6 +22,7 @@ using namespace UkuiNotification;// UkuiNotification
|
||||||
|
|
||||||
NotificationGlobalSettings::NotificationGlobalSettings(QObject *parent) : QObject(parent), d(new NotificationGlobalSettingsPrivate())
|
NotificationGlobalSettings::NotificationGlobalSettings(QObject *parent) : QObject(parent), d(new NotificationGlobalSettingsPrivate())
|
||||||
{
|
{
|
||||||
|
qmlRegisterUncreatableType<UkuiNotification::NotificationGlobalSettings>("org.ukui.notification.client", 1, 0, "NotificationGlobalSettings", "");
|
||||||
connect(SettingsManager::self(), &SettingsManager::settingsDataChanged, this, &NotificationGlobalSettings::settingsDataChanged);
|
connect(SettingsManager::self(), &SettingsManager::settingsDataChanged, this, &NotificationGlobalSettings::settingsDataChanged);
|
||||||
d->m_settings = SettingsManager::self()->getGlobalSettings();
|
d->m_settings = SettingsManager::self()->getGlobalSettings();
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
#ifndef UKUI_NOTIFICATION_NOTIFICATION_GLOBAL_SETTINGS_H
|
#ifndef UKUI_NOTIFICATION_NOTIFICATION_GLOBAL_SETTINGS_H
|
||||||
#define UKUI_NOTIFICATION_NOTIFICATION_GLOBAL_SETTINGS_H
|
#define UKUI_NOTIFICATION_NOTIFICATION_GLOBAL_SETTINGS_H
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
|
#include <QTime>
|
||||||
#include "settings-properties.h"
|
#include "settings-properties.h"
|
||||||
namespace UkuiNotification {
|
namespace UkuiNotification {
|
||||||
class NotificationGlobalSettingsPrivate;
|
class NotificationGlobalSettingsPrivate;
|
||||||
|
|
|
@ -25,17 +25,6 @@ class ServerPrivate : public QObject, protected QDBusContext
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
//dbus interface
|
//dbus interface
|
||||||
public:
|
public:
|
||||||
/**
|
|
||||||
* The reason a notification was closed
|
|
||||||
*/
|
|
||||||
enum CloseReason {
|
|
||||||
Expired = 1, // The notification expired(timed out).
|
|
||||||
DismissedByUser = 2, // The notification was dismissed by the user.
|
|
||||||
Revoked = 3, //< The notification was closed by sender by a call to CloseNotification.
|
|
||||||
Undefined = 4, //Undefined/reserved reasons.
|
|
||||||
};
|
|
||||||
Q_ENUM(CloseReason)
|
|
||||||
|
|
||||||
QStringList GetCapabilities() const;
|
QStringList GetCapabilities() const;
|
||||||
uint Notify(const QString &app_name,
|
uint Notify(const QString &app_name,
|
||||||
uint replaces_id,
|
uint replaces_id,
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
#include "notificationserveradaptor.h"
|
#include "notificationserveradaptor.h"
|
||||||
#include "notification-server-config.h"
|
#include "notification-server-config.h"
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
|
#include "notification-close-reason.h"
|
||||||
|
|
||||||
using namespace NotificationServer;
|
using namespace NotificationServer;
|
||||||
|
|
||||||
|
@ -93,7 +94,7 @@ void ServerPrivate::CloseNotification(uint id)
|
||||||
QStringLiteral("/NotificationClient"),
|
QStringLiteral("/NotificationClient"),
|
||||||
QStringLiteral("org.ukui.NotificationClient"),
|
QStringLiteral("org.ukui.NotificationClient"),
|
||||||
QStringLiteral("CloseNotification"));
|
QStringLiteral("CloseNotification"));
|
||||||
msg.setArguments({id, CloseReason::Revoked});
|
msg.setArguments({id, UkuiNotification::NotificationCloseReason::Revoked});
|
||||||
QDBusConnection::sessionBus().call(msg, QDBus::NoBlock);
|
QDBusConnection::sessionBus().call(msg, QDBus::NoBlock);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue