bool SystemSession::logout(bool force) const { #ifdef Q_OS_LINUX if(mCapabilities & GnomeSessionManager) { QDBusInterface dbusInterface("org.gnome.SessionManager", "/org/gnome/SessionManager", "org.gnome.SessionManager", QDBusConnection::sessionBus()); unsigned int code = (force ? 2 : 1); QDBusMessage reply = dbusInterface.call("Logout", code); if(reply.type() != QDBusMessage::ErrorMessage) return true; } if(mCapabilities & KdeKSMServer) { QDBusInterface dbusInterface("org.kde.ksmserver", "/KSMServer", "org.kde.KSMServerInterface", QDBusConnection::sessionBus()); QDBusMessage reply = dbusInterface.call("logout", 0, 3, (force ? 2 : 1)); if(reply.type() != QDBusMessage::ErrorMessage) return true; } return false; #endif #ifdef Q_OS_WIN return ExitWindowsEx(EWX_LOGOFF | (force ? EWX_FORCE : 0), SHTDN_REASON_MAJOR_OTHER | SHTDN_REASON_MINOR_OTHER); #endif }
bool SystemSession::restart(bool force) const { #ifdef Q_OS_LINUX if(mCapabilities & GnomeSessionManager) { QDBusInterface dbusInterface("org.gnome.SessionManager", "/org/gnome/SessionManager", "org.gnome.SessionManager", QDBusConnection::sessionBus()); QDBusMessage reply = dbusInterface.call("RequestReboot"); if(reply.type() != QDBusMessage::ErrorMessage) return true; } if(mCapabilities & KdeKSMServer) { QDBusInterface dbusInterface("org.kde.ksmserver", "/KSMServer", "org.kde.KSMServerInterface", QDBusConnection::sessionBus()); QDBusMessage reply = dbusInterface.call("logout", 0, 1, (force ? 2 : 1)); if(reply.type() != QDBusMessage::ErrorMessage) return true; } if(mCapabilities & FreedesktopConsoleKit) { QDBusInterface dbusInterface("org.freedesktop.ConsoleKit", "/org/freedesktop/ConsoleKit/Manager", "org.freedesktop.ConsoleKit.Manager", QDBusConnection::systemBus()); QDBusMessage reply = dbusInterface.call("Restart"); if(reply.type() != QDBusMessage::ErrorMessage) return true; } if(mCapabilities & FreedesktopHal) { QDBusInterface dbusInterface("org.freedesktop.Hal", "/org/freedesktop/Hal/devices/computer", "org.freedesktop.Hal.Device.SystemPowerManagement", QDBusConnection::systemBus()); QDBusMessage reply = dbusInterface.call("Reboot"); if(reply.type() != QDBusMessage::ErrorMessage) return true; } return false; #endif #ifdef Q_OS_WIN return ExitWindowsEx(EWX_REBOOT | (force ? EWX_FORCE : 0), SHTDN_REASON_MAJOR_OTHER | SHTDN_REASON_MINOR_OTHER); #endif }
void QOfonoModemInterface::onModemInterfacesChanged(const QStringList &interfaces) { if (interfaces.contains(privateData()->interfaceName)) { Q_ASSERT(!objectPath().isEmpty()); if (!dbusInterface()) { setDbusInterface(createDbusInterface(objectPath()), NULL); } } else { setDbusInterface(NULL, NULL); } }
void AboutViewController::openStoreClient(const QString &url) { // Based on // https://gitorious.org/n9-apps-client/n9-apps-client/blobs/master/daemon/notificationhandler.cpp#line178 qDebug() << Q_FUNC_INFO << "opening:" << url; QDBusInterface dbusInterface(STORE_DBUS_IFACE, "/", STORE_DBUS_IFACE, QDBusConnection::sessionBus()); QStringList callParams; callParams << url; dbusInterface.asyncCall("LaunchWithLink", QVariant::fromValue(callParams)); }
QStringList Wagnis::getImeis() { QStringList imeis; QDBusConnection dbusConnection = QDBusConnection::connectToBus(QDBusConnection::SystemBus, "system"); QDBusInterface dbusInterface("org.ofono", "/", "org.nemomobile.ofono.ModemManager", dbusConnection); QDBusMessage reply = dbusInterface.call(QLatin1String("GetIMEI")); QList<QVariant> imeiResponseList = reply.arguments(); QListIterator<QVariant> imeiResponseIterator(imeiResponseList); while (imeiResponseIterator.hasNext()) { QList<QVariant> imeiList = imeiResponseIterator.next().toList(); qDebug() << "[Wagnis] We found IMEI(s)." << QString::number(imeiList.size()); QListIterator<QVariant> imeiListIterator(imeiList); while (imeiListIterator.hasNext()) { imeis.append(imeiListIterator.next().toString()); } } return imeis; }
void NetworkRegistrationWatcher::getPropertiesAsync() { if (!interfaceAvailable()) return; QDBusInterface dbusInterface(OfonoConstants::OFONO_SERVICE, objectPath(), interface(), QDBusConnection::systemBus()); if (!dbusInterface.isValid()) { log_error("Dbus interface %s of path %s is invalid.", interface().toStdString().c_str(), objectPath().toStdString().c_str()); return; } QDBusPendingCall async = dbusInterface.asyncCall("GetProperties"); QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(async, this); QObject::connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), this, SLOT(getPropertiesAsyncCallback(QDBusPendingCallWatcher*))); }
ActionReply KeyboardAuthHelper::save( const QVariantMap& args ) { QString model = args["model"].toString(); QString layout = args["layout"].toString(); QString variant = args["variant"].toString(); bool error = false; bool isKeyboardctlInstalled = QFile::exists( "/usr/bin/keyboardctl" ); if ( isKeyboardctlInstalled ) { QProcess* keyboardctl = new QProcess( this ); keyboardctl->start( "/usr/bin/keyboardctl", QStringList() << "--set-layout" << model << layout << variant ); keyboardctl->waitForStarted(); keyboardctl->waitForFinished(); if ( keyboardctl->exitStatus() ) error = true; } else { // remove leftover keyboardctl files const QString keyboardctlXorgConf( "/etc/X11/xorg.conf.d/20-keyboard.conf" ); const QString keyboardctlConf( "/etc/keyboard.conf" ); if ( QFile::exists( keyboardctlXorgConf ) ) QFile::remove( keyboardctlXorgConf ); if ( QFile::exists( keyboardctlConf ) ) QFile::remove( keyboardctlConf ); } // localed d-bus interface to set X11 keyboard layout QDBusInterface dbusInterface( "org.freedesktop.locale1", "/org/freedesktop/locale1", "org.freedesktop.locale1", QDBusConnection::systemBus() ); QVariant optionsVariant = dbusInterface.property( "X11Options" ); if ( optionsVariant.isValid() ) { QString options = optionsVariant.toString(); /* SetX11Keyboard -> ssssbb * string -> layout * string -> model * string -> variant * string -> options * boolean -> convert (set vconsole keyboard too) * boolean -> arg_ask_password */ QDBusMessage reply; reply = dbusInterface.call( "SetX11Keyboard", layout, model, variant, options, true, true ); if ( reply.type() == QDBusMessage::ErrorMessage ) error = true; } else { SetKeyboardLayoutJob job( model, layout, variant ); if ( job.exec() == false ) error = true; } if ( error ) return ActionReply::HelperErrorReply(); return ActionReply::SuccessReply(); }
/* * Read system locales using org.freedesktop.locale1 dbus interface */ void EnabledLocalesModel::updateSystemLocales() { QDBusInterface dbusInterface( "org.freedesktop.locale1", "/org/freedesktop/locale1", "org.freedesktop.locale1", QDBusConnection::systemBus() ); QStringList localeEnviromentVariables = dbusInterface.property( "Locale" ).toStringList(); QModelIndex defaultIndex = QModelIndex(); for ( QString lev : localeEnviromentVariables ) { if ( lev.startsWith( "LANG=" ) ) { int defaultLocaleRow = findKey( lev.section( '=', 1 ) ); defaultIndex = index( defaultLocaleRow,0 ); } } setAddress( defaultIndex ); setCollate( defaultIndex ); setCtype( defaultIndex ); setIdentification( defaultIndex ); setLang( defaultIndex ); setLanguage( defaultIndex ); setMeasurement( defaultIndex ); setMonetary( defaultIndex ); setMessages( defaultIndex ); setName( defaultIndex ); setNumeric( defaultIndex ); setPaper( defaultIndex ); setTelephone( defaultIndex ); setTime( defaultIndex ); for ( QString lev : localeEnviromentVariables ) { QString value = lev.section( '=', 1 ); if ( lev.startsWith( "LC_ADDRESS=" ) ) { if ( value.isEmpty() ) setAddress( defaultIndex ); else { int row = findKey( value ); setAddress( index( row, 0 ) ); } } else if ( lev.startsWith( "LC_COLLATE=" ) ) { if ( value.isEmpty() ) setCollate( defaultIndex ); else { int row = findKey( value ); setCollate( index( row, 0 ) ); } } else if ( lev.startsWith( "LC_CTYPE=" ) ) { if ( value.isEmpty() ) setCtype( defaultIndex ); else { int row = findKey( value ); setCtype( index( row, 0 ) ); } } else if ( lev.startsWith( "LC_IDENTIFICATION=" ) ) { if ( value.isEmpty() ) setIdentification( defaultIndex ); else { int row = findKey( value ); setIdentification( index( row, 0 ) ); } } else if ( lev.startsWith( "LANG=" ) ) { if ( value.isEmpty() ) setLang( defaultIndex ); else { int row = findKey( value ); setLang( index( row, 0 ) ); } } else if ( lev.startsWith( "LANGUAGE=" ) ) { if ( value.isEmpty() ) setLanguage( defaultIndex ); else { int row = findKey( value ); setLanguage( index( row, 0 ) ); } } else if ( lev.startsWith( "LC_MEASUREMENT=" ) ) { if ( value.isEmpty() ) setMeasurement( defaultIndex ); else { int row = findKey( value ); setMeasurement( index( row, 0 ) ); } } else if ( lev.startsWith( "LC_MESSAGES=" ) ) { if ( value.isEmpty() ) setMessages( defaultIndex ); else { int row = findKey( value ); setMessages( index( row, 0 ) ); } } else if ( lev.startsWith( "LC_MONETARY=" ) ) { if ( value.isEmpty() ) setMonetary( defaultIndex ); else { int row = findKey( value ); setMonetary( index( row, 0 ) ); } } else if ( lev.startsWith( "LC_NAME=" ) ) { if ( value.isEmpty() ) setName( defaultIndex ); else { int row = findKey( value ); setName( index( row, 0 ) ); } } else if ( lev.startsWith( "LC_NUMERIC=" ) ) { if ( value.isEmpty() ) setNumeric( defaultIndex ); else { int row = findKey( value ); setNumeric( index( row, 0 ) ); } } else if ( lev.startsWith( "LC_PAPER=" ) ) { if ( value.isEmpty() ) setPaper( defaultIndex ); else { int row = findKey( value ); setPaper( index( row, 0 ) ); } } else if ( lev.startsWith( "LC_TELEPHONE=" ) ) { if ( value.isEmpty() ) setTelephone( defaultIndex ); else { int row = findKey( value ); setTelephone( index( row, 0 ) ); } } else if ( lev.startsWith( "LC_TIME=" ) ) { if ( value.isEmpty() ) setTime( defaultIndex ); else { int row = findKey( value ); setTime( index( row, 0 ) ); } } } }