Notification support icon

pull/15/head
reionwong 4 years ago
parent 6f9f8406c0
commit 9337102924

@ -3,6 +3,7 @@ set(SRCS main.cpp
notificationsmodel.cpp
notificationserver.cpp
notification.cpp
utils.cpp
dbus/notificationsadaptor.cpp
resources.qrc
)

@ -6,6 +6,7 @@
#include "notificationserver.h"
#include "dbus/notificationsadaptor.h"
#include "utils.h"
#include <QDebug>
@ -69,6 +70,9 @@ uint NotificationServer::Notify(const QString &app_name,
notification.actions = actions;
notification.timeout = timeout;
if (notification.appIcon.startsWith("file://"))
notification.appIcon = notification.appIcon.replace("file://", "");
uint pid = 0;
QDBusReply<uint> pidReply = connection().interface()->servicePid(message().service());
if (pidReply.isValid()) {
@ -77,8 +81,9 @@ uint NotificationServer::Notify(const QString &app_name,
if (pid > 0) {
// 查找 app name
if (notification.appName.isEmpty()) {
if (notification.appIcon.isEmpty()) {
// const QString processName = Utils::processNameFromPid(pid);
// notification.appIcon = processName;
}
}

@ -88,6 +88,8 @@ Window {
source: "image://icontheme/%1".arg(model.iconName)
sourceSize: Qt.size(width, height)
Layout.alignment: Qt.AlignVCenter
antialiasing: true
smooth: true
}
ColumnLayout {

@ -0,0 +1,31 @@
#include "utils.h"
#include <QFile>
Utils::Utils(QObject *parent) : QObject(parent)
{
}
QString Utils::processNameFromPid(uint pid)
{
QFile file(QString("/proc/%1/cmdline").arg(pid));
QString name;
if (file.open(QIODevice::ReadOnly)) {
QByteArray cmd = file.readAll();
if (!cmd.isEmpty()) {
// extract non-truncated name from cmdline
int zeroIndex = cmd.indexOf('\0');
int processNameStart = cmd.lastIndexOf('/', zeroIndex);
if (processNameStart == -1) {
processNameStart = 0;
} else {
processNameStart++;
}
name = QString::fromLocal8Bit(cmd.mid(processNameStart, zeroIndex - processNameStart));
}
}
return name;
}

@ -0,0 +1,16 @@
#ifndef UTILS_H
#define UTILS_H
#include <QObject>
class Utils : public QObject
{
Q_OBJECT
public:
explicit Utils(QObject *parent = nullptr);
static QString processNameFromPid(uint pid);
};
#endif // UTILS_H
Loading…
Cancel
Save