SVN commit 1097348 by mzanetti: we can now pause remotes through the tray app M +0 -1 TODO M +3 -1 kded/kremotecontroldaemon.cpp M +2 -0 kded/kremotecontroldaemon.h M +21 -5 krcdnotifieritem/krcdnotifieritem.cpp M +1 -1 krcdnotifieritem/krcdnotifieritem.h M +8 -9 libkremotecontrol/dbusinterface.cpp --- branches/work/kdelirc/TODO #1097347:1097348 @@ -8,7 +8,6 @@ * test/fix behaviour on newly attached or removed remotes during runtime (mzanetti) * rework icons * button selection via buttonpress in kcm -* mute kded by tray app * remove compiler warnings * check why profile stringlist default values are not reaaded from xml * knewstuff --- branches/work/kdelirc/kded/kremotecontroldaemon.cpp #1097347:1097348 @@ -90,11 +90,13 @@ }; void ignoreButtonEvents(const QString& remote){ - m_ignoreNextButtonList << remote; + kDebug() << "muting remote" << remote; + m_ignoreNextButtonList.append(remote); m_ignoreNextButtonList.removeDuplicates(); } void considerButtonEvents(const QString& remote){ + kDebug() << "unmuting remote" << remote; m_ignoreNextButtonList.removeAll(remote); } --- branches/work/kdelirc/kded/kremotecontroldaemon.h #1097347:1097348 @@ -61,7 +61,9 @@ QStringList getModesForRemote(const QString &remoteName); QString getCurrentMode(const QString& remoteName); bool eventsIgnored(const QString& remoteName); + + signals: void modeChanged(const QString &remoteName, const QString &modeName); void buttonPressed(); --- branches/work/kdelirc/krcdnotifieritem/krcdnotifieritem.cpp #1097347:1097348 @@ -39,6 +39,7 @@ setStandardActionsEnabled(false); updateContextMenu(); QDBusConnection::sessionBus().connect("org.kde.kded", "/modules/kremotecontrol", "org.kde.krcd", "buttonPressed", this, SLOT(flash())); + QDBusConnection::sessionBus().connect("org.kde.kded", "/modules/kremotecontrol", "org.kde.krcd", "modeChanged", this, SLOT(updateContextMenu())); } void KrcdNotifierItem::updateTray() { @@ -81,6 +82,13 @@ } entry->setData(QStringList() << remote << mode); } + modeMenu->addSeparator(); + QAction *entry = modeMenu->addAction(i18n("Pause remote")); + entry->setCheckable(true); + entry->setData(QStringList() << remote); + if(DBusInterface::getInstance()->eventsIgnored(remote)){ + entry->setChecked(true); + } m_menu.addMenu(modeMenu); connect(modeMenu, SIGNAL(triggered(QAction*)), this, SLOT(slotModeSelected(QAction*))); @@ -91,11 +99,19 @@ KToolInvocation::startServiceByDesktopName("kcm_remotecontrol"); } -void KrcdNotifierItem::slotModeSelected ( QAction* action ) { - QString remote = action->data().toStringList().first(); - QString mode = action->data().toStringList().last(); - DBusInterface::getInstance()->changeMode(remote, mode); - action->setChecked(true); +void KrcdNotifierItem::slotModeSelected(QAction* action) { + if(action->data().toStringList().count() > 1){ + QString remote = action->data().toStringList().first(); + QString mode = action->data().toStringList().last(); + DBusInterface::getInstance()->changeMode(remote, mode); + action->setChecked(true); + } else { + if(action->isChecked()){ + DBusInterface::getInstance()->ignoreButtonEvents(action->data().toStringList().first()); + } else { + DBusInterface::getInstance()->considerButtonEvents(action->data().toStringList().first()); + } + } updateTray(); } --- branches/work/kdelirc/krcdnotifieritem/krcdnotifieritem.h #1097347:1097348 @@ -34,13 +34,13 @@ KMenu m_menu; void updateTray(); - void updateContextMenu(); private slots: void slotConfigure(); void slotModeSelected(QAction *action); void flash(); void flashOff(); + void updateContextMenu(); }; #endif // KRCDNOTIFICATIONITEM_H --- branches/work/kdelirc/libkremotecontrol/dbusinterface.cpp #1097347:1097348 @@ -219,7 +219,7 @@ QStringList DBusInterface::getConfiguredRemotes() { QStringList remotes; - QDBusMessage m = QDBusMessage::createMethodCall("org.kde.kded", "/modules/kremotecontrol", + QDBusMessage m = QDBusMessage::createMethodCall("org.kde.kded", "/modules/kremotecontrol", "org.kde.krcd", "getConfiguredRemotes"); QDBusMessage response = QDBusConnection::sessionBus().call(m); if (response.type() == QDBusMessage::ErrorMessage) { @@ -233,7 +233,7 @@ void DBusInterface::considerButtonEvents(const QString& remoteName) { QDBusMessage m = QDBusMessage::createMethodCall("org.kde.kded", "/modules/kremotecontrol", "org.kde.krcd", "considerButtonEvents"); - m.arguments().append(remoteName); + m << remoteName; QDBusMessage response = QDBusConnection::sessionBus().call(m); if (response.type() == QDBusMessage::ErrorMessage) { kDebug() << response.errorMessage(); @@ -243,7 +243,7 @@ void DBusInterface::ignoreButtonEvents(const QString& remoteName) { QDBusMessage m = QDBusMessage::createMethodCall("org.kde.kded", "/modules/kremotecontrol", "org.kde.krcd", "ignoreButtonEvents"); - m.arguments().append(remoteName); + m << remoteName; QDBusMessage response = QDBusConnection::sessionBus().call(m); if (response.type() == QDBusMessage::ErrorMessage) { kDebug() << response.errorMessage(); @@ -399,7 +399,6 @@ kDebug() << "Got argument:" << arg.value().type() << "value" << arg.value(); m << arg.value(); } - // theDC->send(program.utf8(), action.object().utf8(), action.method().prototypeNR().utf8(), data); QDBusMessage response = QDBusConnection::sessionBus().call(m); if (response.type() == QDBusMessage::ErrorMessage) { kDebug() << response.errorMessage(); @@ -410,16 +409,16 @@ void DBusInterface::changeMode(const QString& remoteName, const QString& modeName) { - QDBusMessage m = QDBusMessage::createMethodCall("org.kde.kded", "/modules/kremotecontrol", - "org.kde.krcd", "changeMode"); + QDBusMessage m = QDBusMessage::createMethodCall("org.kde.kded", "/modules/kremotecontrol", + "org.kde.krcd", "changeMode"); m << remoteName; m << modeName; QDBusMessage response = QDBusConnection::sessionBus().call(m); QDBusReply reply = QDBusConnection::sessionBus().call(m); if(reply.isValid()){ - if(!reply){ - kDebug() << "Couldn't change to mode " << modeName << " on remote " << remoteName; - } + if(!reply){ + kDebug() << "Couldn't change to mode " << modeName << " on remote " << remoteName; + } }else{ kDebug() << response.errorMessage(); }