summaryrefslogtreecommitdiffstats
path: root/src/daemon/NotificationsService.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/daemon/NotificationsService.cpp')
-rw-r--r--src/daemon/NotificationsService.cpp116
1 files changed, 63 insertions, 53 deletions
diff --git a/src/daemon/NotificationsService.cpp b/src/daemon/NotificationsService.cpp
index 4201643..07cd3bf 100644
--- a/src/daemon/NotificationsService.cpp
+++ b/src/daemon/NotificationsService.cpp
@@ -42,14 +42,14 @@ NotificationsService::NotificationsService(TQT_DBusConnection &conn)
NotificationsService::~NotificationsService()
{
- notificationMap.clear();
+ mNotificationMap.clear();
}
void NotificationsService::closeNotifyWidget(TQ_UINT32 id, TQ_UINT32 reason) {
- if (notificationMap[id]) {
- notificationMap[id]->close();
- notificationMap.remove(id);
+ if (mNotificationMap[id]) {
+ mNotificationMap[id]->close();
+ mNotificationMap.remove(id);
}
if ( !emitNotificationClosed(id, reason) ) {
@@ -109,103 +109,113 @@ void NotificationsService::NotifyAsync(
const TQMap<TQString, TQT_DBusVariant>& hints,
TQ_INT32 timeout)
{
- TQ_UINT32 nId=id;
-// if (nId != 0 && !notificationMap.contains(nId))
+ TQ_UINT32 nId = id;
+// if (nId != 0 && !mNotificationMap.contains(nId))
// tqDebug("Requested id %i is not valid", nId);
- bool found = notificationMap.contains(nId);
- if (nId == 0 || !notificationMap.contains(nId)) // new notification
+ if (nId == 0 || !mNotificationMap.contains(nId)) // new notification
{
nId = ++mNotificationId;
- notificationMap[nId] = new NotifyWidget(0, app_name.ascii(), nId);
- notificationMap[nId]->setMinimumSize(200, 40);
- connect(notificationMap[nId], TQ_SIGNAL(notificationClosed(TQ_UINT32, TQ_UINT32)),
+ mNotificationMap[nId] = new NotifyWidget(0, app_name.ascii(), nId);
+ mNotificationMap[nId]->setMinimumSize(200, 40);
+
+ connect(mNotificationMap[nId], TQ_SIGNAL(notificationClosed(TQ_UINT32, TQ_UINT32)),
this, TQ_SLOT(closeNotifyWidget(TQ_UINT32, TQ_UINT32)));
}
+ if (!icon.isEmpty()) {
+ if (!mNotificationMap[nId]->setIcon(icon))
+ tqDebug("There was an error setting the icon");
+ }
+
if(!hints.empty())
{
TQString errStr;
TQMap<TQString, TQT_DBusVariant>::const_iterator it;
for ( it = hints.begin(); it != hints.end(); ++it ) {
bool ok = true;
- if(it.key().latin1()=="category")
+// tqDebug("Processing hint %s", it.key().latin1());
+ if(it.key()=="category")
{
- notificationMap[nId]->setCategory(it.data().value.toString(&ok));
+ mNotificationMap[nId]->setCategory(it.data().value.toString(&ok));
if(!ok) errStr += " category";
}
- else if (it.key().latin1()=="image-path")
+ else if (it.key()=="image-path" || it.key()=="image_path")
{
- notificationMap[nId]->setImage(it.data().value.toString(&ok));
+ mNotificationMap[nId]->setImage(it.data().value.toString(&ok));
if(!ok) errStr += " image-path";
}
- else if (it.key().latin1()=="image-data" || it.key().latin1()=="image_data" || it.key().latin1()=="icon_data")
+ else if (it.key()=="image-data" || it.key()=="image_data" || it.key()=="icon_data")
{
- notificationMap[nId]->setImageData(it.data().value.toTQValueList(&ok));
+ mNotificationMap[nId]->setImageData(it.data().value.toStruct(&ok));
if(!ok) errStr += " image-data";
}
- else if (it.key().latin1()=="sound-file")
+ else if (it.key()=="sound-file")
{
- notificationMap[nId]->setSoundFile(it.data().value.toString(&ok));
+ mNotificationMap[nId]->setSoundFile(it.data().value.toString(&ok));
if(!ok) errStr += " sound-file";
}
- else if (it.key().latin1()=="sound-name")
+ else if (it.key()=="sound-name")
{
- notificationMap[nId]->setSoundName(it.data().value.toString(&ok));
+ mNotificationMap[nId]->setSoundName(it.data().value.toString(&ok));
if(!ok) errStr += " sound-name";
}
- else if (it.key().latin1()=="suppress-sound")
+ else if (it.key()=="suppress-sound")
{
- notificationMap[nId]->setSuppressSound(it.data().value.toBool(&ok));
+ mNotificationMap[nId]->setSuppressSound(it.data().value.toBool(&ok));
if(!ok) errStr += " suppress-sound";
}
- else if (it.key().latin1()=="transient")
+ else if (it.key()=="resident")
+ {
+ mNotificationMap[nId]->setResident(it.data().value.toBool(&ok));
+ if(!ok) errStr += " resident";
+ }
+ else if (it.key()=="transient")
{
- notificationMap[nId]->setTransient(it.data().value.toBool(&ok));
+ mNotificationMap[nId]->setTransient(it.data().value.toBool(&ok));
if(!ok) errStr += " transient";
}
- else if (it.key().latin1()=="urgency")
+ else if (it.key()=="urgency")
{
- notificationMap[nId]->setUrgency(it.data().value.toUInt16(&ok));
+ mNotificationMap[nId]->setUrgency(it.data().value.toByte(&ok));
if(!ok) errStr += " urgency";
}
- else if (it.key().latin1()=="sender-pid")
+ else if (it.key()=="sender-pid")
{
- notificationMap[nId]->setSenderPid(it.data().value.toUInt64(&ok));
+ mNotificationMap[nId]->setSenderPid(it.data().value.toInt64(&ok));
if(!ok) errStr += " sender-pid";
}
}
if(! errStr.isNull() )
- tqDebug("There was an error converting some of the hint values:" + errStr);
- }
-
- notificationMap[nId]->setFrameStyle( TQFrame::NoFrame );
-// notificationMap[nId]->setPaletteBackgroundColor(TQt::black);
-// notificationMap[nId]->setPaletteForegroundColor(TQt::white);
-
- if (icon.isEmpty() || ! notificationMap[nId]->setIcon(icon)) {
- notificationMap[nId]->setTextFormat(TQt::RichText);
- notificationMap[nId]->setText("<b>" + app_name + ": " + summary + "</b><p>" + body + "</p>");
+ tqDebug("There was an error converting some of the hint values: " + errStr);
}
- notificationMap[nId]->setActions(actions);
- notificationMap[nId]->setTimeout(timeout);
- notificationMap[nId]->adjustSize();
- notificationMap[nId]->raise();
- notificationMap[nId]->show();
- notificationMap[nId]->setActiveWindow();
+ else
+ tqDebug("hints is empty ");
+
+ mNotificationMap[nId]->setText("<b>" + app_name + ": " + summary + "</b><p>" + body + "</p>");
+ mNotificationMap[nId]->setActions(actions);
+ if(mNotificationMap[nId]->isTransient() && timeout == 0)
+ timeout = -1; // use server defined timeout (transient bypasses persistence on the server)
+ if(mNotificationMap[nId]->isResident() && timeout != 0)
+ timeout = 0; // resident takes advantage of persistence)
+ mNotificationMap[nId]->setTimeout(timeout);
+ mNotificationMap[nId]->adjustSize();
+ mNotificationMap[nId]->raise();
+ mNotificationMap[nId]->show();
+ mNotificationMap[nId]->setActiveWindow();
// make sure we display the new notification above the older one
// and if we reach the top of the screen we start at the bottom
TQDesktopWidget *d = TQApplication::desktop();
- if (notificationMap.contains(nId-1) && notificationMap[nId-1] != 0) {
- TQPoint pos = notificationMap[nId-1]->pos();
- if(pos.y()-notificationMap[nId-1]->height() < 0)
- pos.setY(d->height()-notificationMap[nId]->height());
- pos.setX(d->width()-notificationMap[nId]->width());
- notificationMap[nId]->move(pos.x(),pos.y()-notificationMap[nId-1]->height());
+ if (mNotificationMap.contains(nId-1) && mNotificationMap[nId-1] != 0) {
+ TQPoint pos = mNotificationMap[nId-1]->pos();
+ if(pos.y()-mNotificationMap[nId-1]->height() < 0)
+ pos.setY(d->height()-mNotificationMap[nId]->height());
+ pos.setX(d->width()-mNotificationMap[nId]->width());
+ mNotificationMap[nId]->move(pos.x(),pos.y()-mNotificationMap[nId-1]->height());
} else {
- notificationMap[nId]->move( d->width()-notificationMap[nId]->width(),
- d->height()-notificationMap[nId]->height());
+ mNotificationMap[nId]->move( d->width()-mNotificationMap[nId]->width(),
+ d->height()-mNotificationMap[nId]->height());
}
NotifyAsyncReply(asyncCallId, nId);