/*! \internal Constructs a QDBusError from a QDBusMessage. */ QDBusError::QDBusError(const QDBusMessage &qdmsg) : code(NoError) { if (qdmsg.type() != QDBusMessage::ErrorMessage) return; code = ::get(qdmsg.errorName().toUtf8().constData()); nm = qdmsg.errorName(); msg = qdmsg.errorMessage(); }
void HalSuspendJob::resumeDone(const QDBusMessage &reply) { if (reply.type() == QDBusMessage::ErrorMessage) { // We ignore the NoReply error, since we can timeout anyway // if the computer is suspended for too long. if (reply.errorName() != "org.freedesktop.DBus.Error.NoReply") { setError(1); setErrorText(reply.errorName()+": "+reply.arguments().at(0).toString()); } } emitResult(); }
void SIMLockService::LockPhone() { //dbus-send --system --type=method_call //--dest=com.nokia.system_ui /com/nokia/system_ui/request com.nokia.system_ui.request.devlock_open //string:"com.nokia.mce" //string:"/com/nokia/mce/request" //string:"com.nokia.mce.request" //string:"devlock_callback" //uint32:'3' QDBusMessage reply = LockInterface->call("devlock_open", "com.nokia.mce", "/com/nokia/mce/request", "com.nokia.mce.request", "devlock_callback", (quint32)3); if(reply.type() == QDBusMessage::ErrorMessage) qDebug() << "Failed to lock phone:" << reply.errorName() << reply.errorMessage(); if(reply.arguments()[0].toBool() == true) qDebug() << "Phone locked"; else qDebug() << "Phone failed to lock"; }
/************************************************ Helper func ************************************************/ bool dbusGetProperty(const QString &service, const QString &path, const QString &interface, const QDBusConnection &connection, const QString & property ) { QDBusInterface dbus(service, path, interface, connection); if (!dbus.isValid()) { qWarning() << "dbusGetProperty: QDBusInterface is invalid" << service << path << interface << property; // Notification::notify(QObject::tr("LXQt Power Manager"), // "lxqt-logo.png", // QObject::tr("Power Manager Error"), // QObject::tr("QDBusInterface is invalid")+ "\n\n" + service +" " + path +" " + interface +" " + property); return false; } QDBusMessage msg = dbus.call("Get", dbus.interface(), property); if (!msg.errorName().isEmpty()) { printDBusMsg(msg); // Notification::notify(QObject::tr("LXQt Power Manager"), // "lxqt-logo.png", // QObject::tr("Power Manager Error (Get Property)"), // msg.errorName() + "\n\n" + msg.errorMessage()); } return !msg.arguments().isEmpty() && msg.arguments().first().value<QDBusVariant>().variant().toBool(); }
/************************************************ Helper func ************************************************/ void printDBusMsg(const QDBusMessage &msg) { qWarning() << "** Dbus error **************************"; qWarning() << "Error name " << msg.errorName(); qWarning() << "Error msg " << msg.errorMessage(); qWarning() << "****************************************"; }
void NetworkDevice::disconnectDevice() { QDBusMessage query = m_networkDeviceInterface->call("Disconnect"); if(query.type() != QDBusMessage::ReplyMessage) qCWarning(dcNetworkManager()) << query.errorName() << query.errorMessage(); }
/************************************************ Helper func Just like dbusCall(), except that systemd returns a string instead of a bool, and it takes an "interactivity boolean" as an argument. ************************************************/ static bool dbusCallSystemd(const QString &service, const QString &path, const QString &interface, const QDBusConnection &connection, const QString &method, bool needBoolArg, PowerProvider::DbusErrorCheck errorCheck = PowerProvider::CheckDBUS ) { QDBusInterface dbus(service, path, interface, connection); if (!dbus.isValid()) { qWarning() << "dbusCall: QDBusInterface is invalid" << service << path << interface << method; if (errorCheck == PowerProvider::CheckDBUS) { Notification::notify( QObject::tr("Power Manager Error"), QObject::tr("QDBusInterface is invalid")+ "\n\n" + service + " " + path + " " + interface + " " + method, "lxqt-logo.png"); } return false; } QDBusMessage msg = dbus.call(method, needBoolArg ? QVariant(true) : QVariant()); if (!msg.errorName().isEmpty()) { printDBusMsg(msg); if (errorCheck == PowerProvider::CheckDBUS) { Notification::notify( QObject::tr("Power Manager Error (D-BUS call)"), msg.errorName() + "\n\n" + msg.errorMessage(), "lxqt-logo.png"); } } // If the method no returns value, we believe that it was successful. if (msg.arguments().isEmpty() || msg.arguments().first().isNull()) return true; QString response = msg.arguments().first().toString(); qDebug() << "systemd:" << method << "=" << response; return response == "yes" || response == "challenge"; }
/************************************************ Helper func ************************************************/ static bool dbusCall(const QString &service, const QString &path, const QString &interface, const QDBusConnection &connection, const QString & method, PowerProvider::DbusErrorCheck errorCheck = PowerProvider::CheckDBUS ) { QDBusInterface dbus(service, path, interface, connection); if (!dbus.isValid()) { qWarning() << "dbusCall: QDBusInterface is invalid" << service << path << interface << method; if (errorCheck == PowerProvider::CheckDBUS) { Notification::notify( QObject::tr("Power Manager Error"), QObject::tr("QDBusInterface is invalid")+ "\n\n" + service + " " + path + " " + interface + " " + method, "lxqt-logo.png"); } return false; } QDBusMessage msg = dbus.call(method); if (!msg.errorName().isEmpty()) { printDBusMsg(msg); if (errorCheck == PowerProvider::CheckDBUS) { Notification::notify( QObject::tr("Power Manager Error (D-BUS call)"), msg.errorName() + "\n\n" + msg.errorMessage(), "lxqt-logo.png"); } } // If the method no returns value, we believe that it was successful. return msg.arguments().isEmpty() || msg.arguments().first().isNull() || msg.arguments().first().toBool(); }
// // Function to process the reply from a dbus call. QDBusMessage::MessageType shared::processReply(const QDBusMessage& reply) { if (reply.type() != QDBusMessage::ReplyMessage) { QMessageBox::warning(0, QString(TranslateStrings::cmtr("cmst") + qApp->translate("processReply", " Warning") ), qApp->translate("processReply", "<center><b>We received a DBUS reply message indicating an error.</b></center>" "<br><br>Error Name: %1<br><br>Error Message: %2") .arg(reply.errorName()) .arg(TranslateStrings::cmtr(reply.errorMessage())) ); } // if reply is something other than a normal reply message return reply.type(); }
/** * Handle the DBus reply triggered by FdoNotifyPlugin::nowPlaying */ void FdoNotifyPlugin::dbusPlayingReplyReceived( QDBusPendingCallWatcher* watcher ) { QDBusMessage reply = watcher->reply(); watcher->deleteLater(); if ( reply.type() == QDBusMessage::ErrorMessage ) { tLog(LOGVERBOSE) << "Failed to grab media keys" << reply.errorName() << reply.errorMessage(); return; } const QVariantList& list = reply.arguments(); if ( !list.isEmpty() ) m_nowPlayingId = list.first().toInt(); }
QDebug operator<<(QDebug dbg, const QDBusMessage &msg) { dbg.nospace() << "QDBusMessage(type=" << msg.type() << ", service=" << msg.service(); if (msg.type() == QDBusMessage::MethodCallMessage || msg.type() == QDBusMessage::SignalMessage) dbg.nospace() << ", path=" << msg.path() << ", interface=" << msg.interface() << ", member=" << msg.member(); if (msg.type() == QDBusMessage::ErrorMessage) dbg.nospace() << ", error name=" << msg.errorName() << ", error message=" << msg.errorMessage(); dbg.nospace() << ", signature=" << msg.signature() << ", contents=("; debugVariantList(dbg, msg.arguments()); dbg.nospace() << ") )"; return dbg.space(); }
void QuickDBusReply::callFinishedSlot(QDBusPendingCallWatcher *call) { Q_ASSERT(call); setWaiting(false); QDBusMessage msg = call->reply(); if (msg.type() == QDBusMessage::ReplyMessage) { setValues(msg.arguments()); } else { setValid(false); setErrorName(msg.errorName()); setErrorString(msg.errorMessage()); } call->deleteLater(); }
void Camera::startCamera() { QDBusConnection bus = QDBusConnection::sessionBus(); bus.connect("com.nokia.maemo.CameraService", "/", "com.nokia.maemo.meegotouch.CameraInterface", "captureCanceled", this, SLOT(captureCanceled(QString))); bus.connect("com.nokia.maemo.CameraService", "/", "com.nokia.maemo.meegotouch.CameraInterface", "captureCompleted", this, SLOT(captureCompleted(QString,QString))); QDBusMessage message = QDBusMessage::createMethodCall( "com.nokia.maemo.CameraService", "/", "com.nokia.maemo.meegotouch.CameraInterface", "showCamera"); QList<QVariant> args; args << (uint)0 << "" << "still-capture" << true; message.setArguments(args); QDBusMessage reply = bus.call(message); if (reply.type() == QDBusMessage::ErrorMessage) { qDebug() << Q_FUNC_INFO << "reply.type == errormessage; name=" << reply.errorName() << "; message=" << reply.errorMessage(); bus.disconnect("com.nokia.maemo.CameraService", "/", "com.nokia.maemo.meegotouch.CameraInterface", "captureCanceled", this, SLOT(captureCanceled(QString))); bus.disconnect("com.nokia.maemo.CameraService", "/", "com.nokia.maemo.meegotouch.CameraInterface", "captureCompleted", this, SLOT(captureCompleted(QString,QString))); if (m_lastEcId) this->callback(m_lastEcId, ""); } }
void GnomeGlobalShortcutBackend::RegisterFinished( QDBusPendingCallWatcher* watcher) { #ifdef QT_DBUS_LIB QDBusMessage reply = watcher->reply(); watcher->deleteLater(); if (reply.type() == QDBusMessage::ErrorMessage) { qLog(Warning) << "Failed to grab media keys" << reply.errorName() << reply.errorMessage(); return; } connect(interface_, SIGNAL(MediaPlayerKeyPressed(QString, QString)), this, SLOT(GnomeMediaKeyPressed(QString, QString))); is_connected_ = true; qLog(Debug) << "registered"; #endif // QT_DBUS_LIB }
void Mp3tunesAmarokClient::harmonyDownloadReady( const Mp3tunesHarmonyDownload &download ) { qDebug() << "Got message about ready: " << download.trackTitle() << " by " << download.artistName() << " on " << download. albumTitle(); QString name = "org.kde.amarok"; QDBusMessage m = QDBusMessage::createMethodCall( name, "/Mp3tunesHarmonyHandler", "", "emitDownloadReady" ); QList<QVariant> args; args.append( download.serialize() ); m.setArguments(args); QDBusMessage response = QDBusConnection::sessionBus().call( m ); if( response.type() == QDBusMessage::ErrorMessage ) { qDebug() << "Got ERROR response harmonyDownloadReady"; qDebug() << response.errorName() << ": " << response.errorMessage(); } }
void Mp3tunesAmarokClient::dbusEmitMessage( const QString &message, const QString ¶m = QString() ) { QString name = "org.kde.amarok"; QDBusMessage m = QDBusMessage::createMethodCall( name, "/Mp3tunesHarmonyHandler", "", message ); if( !param.isEmpty() ) { QList<QVariant> args; args.append( param ); m.setArguments(args); } QDBusMessage response = QDBusConnection::sessionBus().call( m ); if( response.type() == QDBusMessage::ErrorMessage ) { qDebug() << "Got ERROR response " << message; qDebug() << response.errorName() << ": " << response.errorMessage(); } }
bool DBusComm::sendDBusRegister() { QDBusMessage reply = positioningdProxy->call("registerListener", myService.toAscii().constData(), myPath.toAscii().constData()); if (reply.type() == QDBusMessage::ReplyMessage) { QList<QVariant> values = reply.arguments(); clientId = values.takeFirst().toInt(); quint32 m = values.takeFirst().toUInt(); availablePositioningMethods = (QGeoPositionInfoSource::PositioningMethod) m; minimumUpdateInterval = values.takeFirst().toUInt(); } else { cerr << endl << "DBus error:\n"; cerr << reply.errorName().toAscii().constData() << endl; cerr << reply.errorMessage().toAscii().constData() << endl; return false; } return true; }
/// Returns the name of the current implementor of an interface. If an error /// occurs (e.g., we cannot connect to the Meego service mapper), returns an /// empty string. QString ServiceResolver::implementorName(const QString& interface) { if (resolved.contains(interface)) return resolved[interface]; if (!mapperProxy->isValid()) { LCA_WARNING << "cannot connect to service mapper"; return ""; } // A blocking call QDBusMessage reply = mapperProxy->call("serviceName", interface); if (reply.type() != QDBusMessage::ReplyMessage || reply.arguments().size() == 0) { LCA_WARNING << "invalid reply from service mapper" << reply.errorName(); return ""; } QString service = reply.arguments()[0].toString(); resolved.insert(interface, service); return service; }
void UDiskProvider::update() { QDBusInterface devEnum("org.freedesktop.UDisks", "/org/freedesktop/UDisks", "org.freedesktop.UDisks", QDBusConnection::systemBus()); QDBusMessage enumRes = devEnum.call("EnumerateDevices"); if (enumRes.type() != QDBusMessage::ReplyMessage || !enumRes.arguments().at(0).canConvert<QDBusArgument>()) { if (enumRes.type() == QDBusMessage::ErrorMessage) qWarning() << "ERROR: Can't call EnumerateDevices" << qPrintable(enumRes.errorName()) << qPrintable(enumRes.errorMessage()); else qWarning() << "ERROR: Unexpected result type of EnumerateDevices call"; return; } const QDBusArgument enumArg = enumRes.arguments().at(0).value<QDBusArgument>(); if (enumArg.currentType() != QDBusArgument::ArrayType) { qWarning() << "ERROR: Unexpected argument type of EnumerateDevices call"; return; } enumArg.beginArray(); while (!enumArg.atEnd()) { QDBusObjectPath path = qdbus_cast<QDBusObjectPath>(enumArg); if (mDevicesByPath.contains(path.path())) dbusDeviceChanged(path); else dbusDeviceAdded(path); } enumArg.endArray(); }
/// Returns the name of the current implementor of an interface. If an error /// occurs (e.g., we cannot connect to the Meego service mapper), returns an /// empty string. QString ServiceResolver::implementorName(const QString& interface) { if (resolved.contains(interface)) return resolved[interface]; // A blocking call QDBusMessage message = QDBusMessage::createMethodCall(MAPPER_SERVICENAME, MAPPER_PATH, MAPPER_INTERFACE, "serviceName"); message.setArguments(QVariantList() << interface); QDBusMessage reply = QDBusConnection::sessionBus().call(message); if (reply.type() != QDBusMessage::ReplyMessage || reply.arguments().size() == 0) { LCA_WARNING << "invalid reply from service mapper" << reply.errorName(); return ""; } QString service = reply.arguments()[0].toString(); if (service.size() == 0) { // don't insert to the "resolved" map return ""; } resolved.insert(interface, service); return service; }
AWNService::AWNService() { m_uread = 0; m_item = 0; m_activeAccount = 0; m_iconTimer = 0; //m_cws = 0; m_awn = new QDBusInterface("net.launchpad.DockManager", "/net/launchpad/DockManager", "net.launchpad.DockManager"); QDBusConnection::sessionBus().connect("net.launchpad.DockManager", "/net/launchpad/DockManager", "net.launchpad.DockManager", "ItemRemoved", this, SLOT(onItemRemoved(QDBusObjectPath))); QDBusMessage mes = m_awn->call("GetCapabilities"); if(mes.type()==QDBusMessage::ReplyMessage) { QDBusReply<QStringList> r; r = mes; m_capabilities = r.value(); debug() << "[AWN] dock capabilities: " << m_capabilities; } else { debug() << "[AWN] error: " << mes.errorName() << " : " << mes.errorMessage(); return; } if(! m_capabilities.contains("dock-item-icon-file") || ! m_capabilities.contains("dock-item-message") || ! m_capabilities.contains("menu-item-with-label") || ! m_capabilities.contains("menu-item-icon-name") ) { deleteLater(); return; } m_icon_size = 128; //TODO: а если несколько панелей, как определить на какой находится док? QDBusInterface panel("org.awnproject.Awn", "/org/awnproject/Awn/Panel1", "org.awnproject.Awn.Panel"); QVariant var = panel.property("Size"); if(var.isValid()) m_icon_size = var.toInt(); if(!QDir::temp().exists("qutim-awn")) QDir::temp().mkdir("qutim-awn"); generateIcons(); m_firstIcon = "qutim"; m_currentIcon = "qutim"; m_iconTimer = new QTimer(this); connect(m_iconTimer,SIGNAL(timeout()),this,SLOT(nextIcon())); m_iconTimer->start(500); m_cwc = new ChatWindowController(this); qApp->installEventFilter(this); connect(ChatLayer::instance(), SIGNAL(sessionCreated(qutim_sdk_0_3::ChatSession*)),this, SLOT(onSessionCreated(qutim_sdk_0_3::ChatSession*))); QMap<QString, Protocol*> protocols; foreach (Protocol *proto, Protocol::all()) { protocols.insert(proto->id(), proto); connect(proto, SIGNAL(accountCreated(qutim_sdk_0_3::Account*)), this, SLOT(onAccountCreated(qutim_sdk_0_3::Account*))); foreach(Account *a, proto->accounts()) emit onAccountCreated(a); }
//! [5] static void checkError(QDBusMessage &msg) { if (msg.type() == QDBusMessage::ErrorMessage) qDebug() << msg.errorName() << msg.errorMessage(); }
int main(int argc, char *argv[]){ // here the QT_program is created QApplication app(argc, argv); //Qt translations QTranslator qtTranslator; qtTranslator.load("qt_" + QLocale::system().name(), QLibraryInfo::location(QLibraryInfo::TranslationsPath)); app.installTranslator(&qtTranslator); //My translations QTranslator translator; QString trDir = "/usr/share/qshutdown/translations/"; translator.load(trDir + "qshutdown-" + QLocale::system().name()); app.installTranslator(&translator); QTextStream myOutput(stdout); if(!QProcessEnvironment().isEmpty()) shell = QProcess::systemEnvironment().filter("SHELL").first().remove("SHELL="); if(shell.isEmpty() && QFile("/bin/bash").exists()) shell = "/bin/bash"; else myOutput << "E: No shell found! Custom commands won't work!"; QString infoStr = QString(QObject::tr("qshutdown will show itself 3 times as a warning " "if there are less than 70 seconds left.<br/><br/>This program uses qdbus to send a " "shutdown/reboot/suspend/hibernate request to either the gnome- or " "kde-session-manager, to HAL/ConsoleKit/DeviceKit/UPower and if none of these works, the " "command 'sudo shutdown' will be used (note that when sending the shutdown request to HAL or " "ConsoleKit, or the shutdown command is used, the Session will never be saved. If the " "shutdown command is used, the program will only be able to shutdown and reboot). So " "if nothing happens when the shutdown- or reboot-time is reached, it means that one " "lacks the rights for the shutdown command. In this case one can do the following:" "<br/><br/>Paste the following in a terminal:<pre>EDITOR=nano sudo -E visudo</pre>and " "add this line:<pre>* ALL = NOPASSWD:/sbin/shutdown</pre>whereas * replaces the " "user name or %group name.<br/><br/>The maximum Number of countdown_minutes is " "1440 (24 hours).<br/>The configuration file (and logfile) is located at " "<i>~/.qshutdown/</i> (under Linux/Unix).<br/><br/><b>For admins:</b><br/>If you want " "qshutdown to run with \"parental lock\" for every user, you can do " "\"sudo cp /usr/share/qshutdown/autostart/99qshutdown /etc/X11/Xsession.d/\" " "and set the option Lock_all in /root/.qshutdown/qshutdown.conf to true. Note that " "qshutdown has to start once to generate the qshutdown.conf. Furthermore there is a " "need to add the following line to the sudoers (as above):" "<pre>* ALL = NOPASSWD:/usr/bin/qshutdown</pre><br/>If you should ever forget " "your set password, just remove the whole line starting with \"Password\" manually from " "the qshutdown.conf.<br/><br/><b>Hints on usage:</b><br/>If you want qshutdown to stop " "\"bugging\" you, just remove the hook from " "\"warnings on?\".<br/><br/><b>Hotkeys:</b><table border=\"1\"><tr><td>Ctrl+I</td><td>(this)" " information window</td></tr><tr><td>Ctrl+Q</td><td>Quit</td></tr><tr><td>Ctrl+P</td>" "<td>Preferences</td></tr><tr><td>Ctrl+L</td><td>write the run time once into the logfile (works " "only if qshutdown quits. To make it permanent set it in the preferences.)</td></tr><tr>" "<td>Ctrl+S</td><td>set to shutdown</td></tr><tr><td>Ctrl+R</td><td>set to restart</td></tr>" "<tr><td>Ctrl+U</td><td>set to suspend to RAM</td></tr><tr><td>Ctrl+H</td><td>set to hibernate" "</td></tr><tr><td>Ctrl+E</td><td>stop countdown (only if the countdown has started and the admin " "didn't restrict the access)</td></tr><tr><td>Shift+E</td><td>to edit the configuration file (for " "this a password is necessary. If you are a user, you can set an \"empty password\" (leave the " "password field empty)).</td></tr></table>")); QTextDocumentFragment infoDoc; infoDoc = QTextDocumentFragment::fromHtml(infoStr); QString info = infoDoc.toPlainText(); //Get the arguments passed from the terminal QStringList args = QApplication::arguments(); args.removeFirst(); //this is just the program for(int i=1; i<args.size();args.removeLast()); if(!args.empty()){ QString arg = args[0]; if(arg[0] == '-'){ if(arg[1] == 'h' || arg == "--help") myOutput << "\nqshutdown [ options ... ]\n\nOptions are:\n\t-h " << "or --help\tPrints this message.\n\t-i\t\tPrints " << "information.\n\t-v\t\tPrints all errors and warnings.\n" << "\t-s or --start\tStarts the countdown for the set time." << endl; if(arg[1] == 'i') myOutput << info << endl; } if(arg != "-h" && arg != "--help" && arg != "-i" && !((arg[0] == '-' && (arg.contains("s") || arg.contains("v"))) || args.contains("--start"))) myOutput << "Wrong options! Try qshutdown -h" << endl; if(arg.contains("-") && arg.contains("-v")) verbose = true; } if(!args.empty() && !((args[0][0] == '-' && (args[0].contains("v") || args[0].contains("s"))) || args.contains("--start"))) exit(0); Gui window; //Create the main widget #ifndef Q_OS_WIN32 QDBusConnection::sessionBus().registerObject(OBJECT_NAME, &window, QDBusConnection::ExportScriptableSlots); if(QDBusConnection::sessionBus().registerService(SERVICE_NAME)){ //if possible register qshutdown as a service in the session bus #endif //Q_OS_WIN32 window.information = infoStr; window.loadSettings(); window.center(); window.show(); app.setQuitOnLastWindowClosed(false); if(!args.empty() && ((args[0][0] == '-' && args[0].contains("s")) || args.contains("--start"))) window.set(); return app.exec(); #ifndef Q_OS_WIN32 } else{ //if registering qshutdown fails (also because it is already // registered, show window myOutput << "\nqshutdown is already running!\n" << endl; QDBusInterface iface(SERVICE_NAME, OBJECT_NAME, "", QDBusConnection::sessionBus(), &window); QDBusMessage response = iface.call("showRunningProgram"); if(response.type() == QDBusMessage::ErrorMessage){ if(verbose) myOutput << "QDBusInterface " << iface.interface() << " seems to be valid... -> " << (iface.isValid()? "true":"false") << "\nW: " << response.errorName() << ": " << response.errorMessage() << "\nYou can ignore this.\n\n" << endl; QDBusInterface iface2(SERVICE_NAME, OBJECT_NAME, "local.Gui", QDBusConnection::sessionBus(), &window); QDBusMessage response2 = iface2.call("showRunningProgram"); if(response2.type() == QDBusMessage::ErrorMessage) myOutput << "QDBusInterface " << iface2.interface() << " seems to be valid... -> " << (iface2.isValid()? "true":"false") << "\nW: " << response2.errorName() << ": " << response2.errorMessage() << "\nPlease report this." << endl; else if(!args.empty() && ((args[0][0] == '-' && args[0].contains("s")) || args.contains("--start"))) iface2.call("set"); } else if(!args.empty() && ((args[0][0] == '-' && args[0].contains("s")) || args.contains("--start"))) iface.call("set"); } if(!args.empty() && ((args[0][0] == '-' && args[0].contains("s")) || args.contains("--start"))) myOutput << "Starting countdown!\n"; #endif //Q_OS_WIN32 }