1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
#include "MessageCenter.h"
#include <LuminaXDG.h>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QDBusConnection>
#include <QDBusConnectionInterface>
MessageCenterPlugin::MessageCenterPlugin(QWidget* parent, QString ID) : LDPlugin(parent, ID){
//Setup the UI
QVBoxLayout *vlay = new QVBoxLayout();
this->setLayout( new QVBoxLayout() );
this->layout()->setContentsMargins(0,0,0,0);
vlay->setContentsMargins(3,3,3,3);
frame = new QFrame(this);
frame->setObjectName("messagecenterbase");
this->layout()->addWidget(frame);
frame->setLayout(vlay);
//Setup the title bar header buttons
QHBoxLayout *hlay = new QHBoxLayout();
tool_clearall = new QToolButton(this);
tool_clearall->setAutoRaise(true);
tool_clearone = new QToolButton(this);
tool_clearone->setAutoRaise(true);
QWidget *spacer = new QWidget(this);
spacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
hlay->addWidget(spacer);
hlay->addWidget(tool_clearone);
hlay->addWidget(tool_clearall);
vlay->addLayout(hlay);
//Setup the main text widget
list_messages = new QListWidget(this);
list_messages->setSelectionMode(QAbstractItemView::SingleSelection);
list_messages->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
vlay->addWidget(list_messages);
//Now setup the initial values
this->setInitialSize(200,300);
//Setup the button connections
connect(tool_clearall, SIGNAL(clicked()), this, SLOT(clearAllMessages()) );
connect(tool_clearone, SIGNAL(clicked()), this, SLOT(clearSelectedMessage()) );
//Setup the DBUS signals/slots
if(QDBusConnection::sessionBus().isConnected()){
if( QDBusConnection::sessionBus().registerService("org.freedesktop.Notifications") ){
//Was able to register this service, also register everything it can do...
//SUPPORTED: "body", "body-hyperlinks", "body-markup", "icon-static"
}
QDBusConnection::sessionBus().connect("", "", "org.freedesktop.Notifications", "Notify", this, SLOT(newMessage(QString, uint, QString, QString, QString, QStringList, dict, int)) );
QDBusConnection::sessionBus().interface().call("AddMatch", "interface='org.freedesktop.Notifications',member='Notify',type='method_call',eavesdrop='true'");
qDebug() << "Available Session DBUS Services:" << QDBusConnection::sessionBus().interface()->registeredServiceNames().value();
//connect(QString(), QString(),
}
if(QDBusConnection::systemBus().isConnected()){
qDebug() << "Available System DBUS Services:" << QDBusConnection::systemBus().interface()->registeredServiceNames().value();
}
QTimer::singleShot(0,this, SLOT(loadIcons()) );
}
MessageCenterPlugin::~MessageCenterPlugin(){
}
void MessageCenterPlugin::newMessage(QString summary, QString body){
qDebug() << "New Message:" << summary, body;
}
void MessageCenterPlugin::clearAllMessages(){
list_messages->clear();
}
void MessageCenterPlugin::clearSelectedMessage(){
if( list_messages->currentItem()==0){ return; } //nothing selected
list_messages->removeItemWidget( list_messages->currentItem() );
}
void MessageCenterPlugin::loadIcons(){
tool_clearall->setIcon( LXDG::findIcon("edit-clear-list","") );
tool_clearall->setToolTip( tr("Clear all messages") );
tool_clearone->setIcon( LXDG::findIcon("edit-delete","") );
tool_clearone->setToolTip( tr("Clear selected message") );
}
|