#include "indicatornotificationbackend.h"
#include <qindicateserver.h>
-#include <qindicateindicatormessage.h>
+#include <qindicateindicator.h>
#include "client.h"
#include "clientsettings.h"
+#include "iconloader.h"
#include "mainwin.h"
#include "networkmodel.h"
#include "qtui.h"
-class Indicator : public QIndicate::IndicatorMessage {
+#define STR(x) #x
+#define XSTR(x) STR(x)
+
+class Indicator : public QIndicate::Indicator {
public:
uint lastNotificationId;
};
: AbstractNotificationBackend(parent)
{
NotificationSettings notificationSettings;
- _enabled = notificationSettings.value("Indicator/Enabled", true).toBool();
+ _enabled = notificationSettings.value("Indicator/Enabled", false).toBool();
notificationSettings.notify("Indicator/Enabled", this, SLOT(enabledChanged(const QVariant &)));
_server = QIndicate::Server::defaultInstance();
- _server->setType("message.im");
- _server->setDesktopFile(DESKTOP_FILE);
+ _server->setType("message.irc");
+ QString desktopFile = QString("%1/%2.desktop")
+ .arg(XSTR(XDG_APPS_INSTALL_DIR))
+ .arg(QCoreApplication::applicationFilePath().section('/', -1));
+ _server->setDesktopFile(desktopFile);
+ connect(_server, SIGNAL(serverDisplay()), SLOT(activateMainWidget()));
+
if (_enabled) {
_server->show();
}
qDeleteAll(_indicatorHash);
}
+void IndicatorNotificationBackend::activateMainWidget() {
+ GraphicalUi::activateMainWidget();
+}
+
void IndicatorNotificationBackend::notify(const Notification ¬ification) {
if(!_enabled) {
return;
if(!indicator) {
indicator = new Indicator;
_indicatorHash.insert(bufferId, indicator);
+ connect(indicator, SIGNAL(display(QIndicate::Indicator*)),
+ SLOT(indicatorDisplayed(QIndicate::Indicator*)));
}
indicator->lastNotificationId = notification.notificationId;
BufferInfo::Type type = Client::networkModel()->bufferType(bufferId);
- QString sender;
+ QString name;
if (type == BufferInfo::QueryBuffer) {
- sender = notification.sender;
+ name = notification.sender;
} else {
- sender = QString("%1 (%2)")
+ name = QString("%1 (%2)")
.arg(Client::networkModel()->bufferName(bufferId))
.arg(notification.sender);
}
- indicator->setProperty("sender", sender);
- indicator->setProperty("time", QTime::currentTime());
- qDebug() << "FIXME icon";
+ indicator->setNameProperty(name);
+
+ indicator->setTimeProperty(QDateTime::currentDateTime());
+
+ 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->setIconProperty(image);
+ }
+
+ indicator->setDrawAttentionProperty(true);
indicator->show();
}
}
}
+void IndicatorNotificationBackend::indicatorDisplayed(QIndicate::Indicator *_indicator) {
+ Indicator *indicator = static_cast<Indicator *>(_indicator);
+ emit activated(indicator->lastNotificationId);
+}
+
SettingsPage *IndicatorNotificationBackend::createConfigWidget() const {
return new ConfigWidget();
}
: SettingsPage("Internal", "IndicatorNotification", parent)
{
ui.setupUi(this);
+ // FIXME find proper icon (this one is used by the plasmoid as well)
+ ui.enabled->setIcon(SmallIcon("mail-message-new"));
connect(ui.enabled, SIGNAL(toggled(bool)), SLOT(widgetChanged()));
}