service/tray: mostly complete StatusNotifierItem implementation

Notably missing dbusmenu which makes it actually useful.
This commit is contained in:
outfoxxed 2024-04-06 02:19:40 -07:00
parent d47a7f2cff
commit 6214ac1002
No known key found for this signature in database
GPG key ID: 4C88A185FB89301E
25 changed files with 1321 additions and 4 deletions

View file

@ -0,0 +1,33 @@
#include "trayimageprovider.hpp"
#include <qlogging.h>
#include <qloggingcategory.h>
#include <qpixmap.h>
#include <qsize.h>
#include <qstring.h>
#include "host.hpp"
namespace qs::service::sni {
QPixmap
TrayImageProvider::requestPixmap(const QString& id, QSize* size, const QSize& requestedSize) {
auto split = id.split('/');
if (split.size() != 2) {
qCWarning(logStatusNotifierHost) << "Invalid image request:" << id;
return QPixmap();
}
auto* item = StatusNotifierHost::instance()->itemByService(split[0]);
if (item == nullptr) {
qCWarning(logStatusNotifierHost) << "Image requested for nonexistant service" << split[0];
return QPixmap();
}
auto pixmap = item->createPixmap(requestedSize);
if (size != nullptr) *size = pixmap.size();
return pixmap;
}
} // namespace qs::service::sni