#include <qindicateserver.h>
#include <qindicateindicatormessage.h>
+#include "client.h"
#include "clientsettings.h"
#include "mainwin.h"
+#include "networkmodel.h"
#include "qtui.h"
class Indicator : public QIndicate::IndicatorMessage {
_server = QIndicate::Server::defaultInstance();
_server->setType("message.im");
_server->setDesktopFile(DESKTOP_FILE);
+ connect(_server, SIGNAL(serverDisplay()), QtUi::mainWindow(), SLOT(forceActivated()));
+
if (_enabled) {
_server->show();
}
if (notification.type != Highlight && notification.type != PrivMsg) {
return;
}
- Indicator *indicator = _indicatorHash.value(notification.bufferId);
+ BufferId bufferId = notification.bufferId;
+ Indicator *indicator = _indicatorHash.value(bufferId);
if(!indicator) {
indicator = new Indicator;
- _indicatorHash.insert(notification.bufferId, indicator);
+ _indicatorHash.insert(bufferId, indicator);
}
indicator->lastNotificationId = notification.notificationId;
- indicator->setProperty("sender", notification.sender);
+
+ BufferInfo::Type type = Client::networkModel()->bufferType(bufferId);
+ QString sender;
+ if (type == BufferInfo::QueryBuffer) {
+ sender = notification.sender;
+ } else {
+ sender = QString("%1 (%2)")
+ .arg(Client::networkModel()->bufferName(bufferId))
+ .arg(notification.sender);
+ }
+ indicator->setProperty("sender", sender);
+
indicator->setProperty("time", QTime::currentTime());
- qDebug() << "FIXME icon";
+
+ QModelIndex index = Client::networkModel()->bufferIndex(bufferId);
+ QVariant icon = QtUi::style()->bufferViewItemData(index, Qt::DecorationRole);
+ if (icon.canConvert<QPixmap>()) {
+ QImage image = icon.value<QPixmap>().toImage();
+ indicator->setProperty("icon", image);
+ }
+
indicator->show();
}