X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fstatusnotifieritemdbus.cpp;h=2d5e2d2155d0c059e7ceac963870231a0a6e00fc;hp=893b24dd7a9023082ab908cd2f2a5907ea7a3f22;hb=f04db2cb802b1296ca739c823495930c71d3b4ab;hpb=0ec85b3e2ce83908af510a25d40eb2b9a0f0ffed diff --git a/src/qtui/statusnotifieritemdbus.cpp b/src/qtui/statusnotifieritemdbus.cpp index 893b24dd..2d5e2d21 100644 --- a/src/qtui/statusnotifieritemdbus.cpp +++ b/src/qtui/statusnotifieritemdbus.cpp @@ -16,7 +16,7 @@ * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #include "mainwin.h" @@ -42,14 +42,17 @@ #ifdef Q_OS_WIN64 __inline int toInt(WId wid) { - return (int)((__int64)wid); + return (int)((__int64)wid); } + #else __inline int toInt(WId wid) { - return (int)wid; + return (int)wid; } + + #endif // Marshall the ImageStruct data into a D-BUS argument @@ -63,6 +66,7 @@ const QDBusArgument &operator<<(QDBusArgument &argument, const DBusImageStruct & return argument; } + // Retrieve the ImageStruct data from the D-BUS argument const QDBusArgument &operator>>(const QDBusArgument &argument, DBusImageStruct &icon) { @@ -88,31 +92,32 @@ const QDBusArgument &operator>>(const QDBusArgument &argument, DBusImageStruct & const QDBusArgument &operator<<(QDBusArgument &argument, const DBusImageVector &iconVector) { argument.beginArray(qMetaTypeId()); - for (int i=0; i>(const QDBusArgument &argument, DBusImageVector &iconVector) { argument.beginArray(); iconVector.clear(); - while ( !argument.atEnd() ) { - DBusImageStruct element; - argument >> element; - iconVector.append(element); + while (!argument.atEnd()) { + DBusImageStruct element; + argument >> element; + iconVector.append(element); } argument.endArray(); - return argument; } + // Marshall the ToolTipStruct data into a D-BUS argument const QDBusArgument &operator<<(QDBusArgument &argument, const DBusToolTipStruct &toolTip) { @@ -125,6 +130,7 @@ const QDBusArgument &operator<<(QDBusArgument &argument, const DBusToolTipStruct return argument; } + // Retrieve the ToolTipStruct data from the D-BUS argument const QDBusArgument &operator>>(const QDBusArgument &argument, DBusToolTipStruct &toolTip) { @@ -152,28 +158,31 @@ const QDBusArgument &operator>>(const QDBusArgument &argument, DBusToolTipStruct int StatusNotifierItemDBus::s_serviceCount = 0; StatusNotifierItemDBus::StatusNotifierItemDBus(StatusNotifierItem *parent) - : QObject(parent), + : QObject(parent), m_statusNotifierItem(parent), m_service(QString("org.kde.StatusNotifierItem-%1-%2") - .arg(QCoreApplication::applicationPid()) - .arg(++s_serviceCount)), + .arg(QCoreApplication::applicationPid()) + .arg(++s_serviceCount)), m_dbus(QDBusConnection::connectToBus(QDBusConnection::SessionBus, m_service)) { - new StatusNotifierItemAdaptor(this); - //qDebug() << "service is" << m_service; - registerService(); + new StatusNotifierItemAdaptor(this); + //qDebug() << "service is" << m_service; + registerService(); } + StatusNotifierItemDBus::~StatusNotifierItemDBus() { unregisterService(); } + QDBusConnection StatusNotifierItemDBus::dbusConnection() const { return m_dbus; } + // FIXME: prevent double registrations, also test this on platforms != KDE // void StatusNotifierItemDBus::registerService() @@ -183,21 +192,24 @@ void StatusNotifierItemDBus::registerService() m_dbus.registerObject("/StatusNotifierItem", this); } + // FIXME: see above void StatusNotifierItemDBus::unregisterService() { //qDebug() << "unregistering from" << m_service; - if(m_dbus.isConnected()) { + if (m_dbus.isConnected()) { m_dbus.unregisterObject("/StatusNotifierItem"); m_dbus.unregisterService(m_service); } } + QString StatusNotifierItemDBus::service() const { return m_service; } + //DBUS slots //Values and calls have been adapted to Quassel @@ -206,21 +218,25 @@ QString StatusNotifierItemDBus::Category() const return QString("Communications"); // no need to make this configurable for Quassel } + QString StatusNotifierItemDBus::Title() const { return m_statusNotifierItem->title(); } + QString StatusNotifierItemDBus::Id() const { return QString("QuasselIRC"); } + QString StatusNotifierItemDBus::Status() const { return m_statusNotifierItem->metaObject()->enumerator(m_statusNotifierItem->metaObject()->indexOfEnumerator("State")).valueToKey(m_statusNotifierItem->state()); } + int StatusNotifierItemDBus::WindowId() const { return toInt(QtUi::mainWindow()->winId()); @@ -235,21 +251,25 @@ QString StatusNotifierItemDBus::IconName() const return m_statusNotifierItem->iconName(); } + DBusImageVector StatusNotifierItemDBus::IconPixmap() const { return DBusImageVector(); } + QString StatusNotifierItemDBus::OverlayIconName() const { return QString(); } + DBusImageVector StatusNotifierItemDBus::OverlayIconPixmap() const { return DBusImageVector(); } + //Requesting attention icon and movie QString StatusNotifierItemDBus::AttentionIconName() const @@ -257,11 +277,13 @@ QString StatusNotifierItemDBus::AttentionIconName() const return m_statusNotifierItem->attentionIconName(); } + DBusImageVector StatusNotifierItemDBus::AttentionIconPixmap() const { return DBusImageVector(); } + QString StatusNotifierItemDBus::AttentionMovieName() const { return QString(); @@ -281,11 +303,13 @@ DBusToolTipStruct StatusNotifierItemDBus::ToolTip() const return toolTip; } + QString StatusNotifierItemDBus::IconThemePath() const { return m_statusNotifierItem->iconThemePath(); } + //Menu QDBusObjectPath StatusNotifierItemDBus::Menu() const @@ -307,22 +331,25 @@ void StatusNotifierItemDBus::ContextMenu(int x, int y) #ifdef HAVE_KDE m_statusNotifierItem->trayMenu()->setWindowFlags(Qt::Window|Qt::FramelessWindowHint); #endif - m_statusNotifierItem->trayMenu()->popup(QPoint(x,y)); + m_statusNotifierItem->trayMenu()->popup(QPoint(x, y)); #ifdef HAVE_KDE KWindowSystem::setState(m_statusNotifierItem->trayMenu()->winId(), NET::SkipTaskbar|NET::SkipPager|NET::KeepAbove); KWindowSystem::setType(m_statusNotifierItem->trayMenu()->winId(), NET::PopupMenu); KWindowSystem::forceActiveWindow(m_statusNotifierItem->trayMenu()->winId()); #endif - } else { + } + else { m_statusNotifierItem->trayMenu()->hide(); } } + void StatusNotifierItemDBus::Activate(int x, int y) { - m_statusNotifierItem->activated(QPoint(x,y)); + m_statusNotifierItem->activated(QPoint(x, y)); } + void StatusNotifierItemDBus::SecondaryActivate(int x, int y) { Q_UNUSED(x) @@ -330,6 +357,7 @@ void StatusNotifierItemDBus::SecondaryActivate(int x, int y) // emit m_statusNotifierItem->secondaryActivateRequested(QPoint(x,y)); } + void StatusNotifierItemDBus::Scroll(int delta, const QString &orientation) { Q_UNUSED(delta)