Issue
Code backup
This commit is contained in:
@@ -0,0 +1,208 @@
|
||||
//SUSPEND
|
||||
void Converter::suspend()
|
||||
{
|
||||
bool gnome_power1 = false;
|
||||
bool gnome_power2 = false;
|
||||
bool hal_works = false;
|
||||
QDBusMessage response;
|
||||
|
||||
gnome_power1 = QProcess::startDetached("gnome-power-cmd.sh suspend");
|
||||
gnome_power2 = QProcess::startDetached("gnome-power-cmd suspend");
|
||||
if(!gnome_power1 && !gnome_power2 && verbose)
|
||||
qWarning() << "W: gnome-power-cmd and gnome-power-cmd.sh didn't work";
|
||||
|
||||
if(!gnome_power1 && !gnome_power2){
|
||||
QDBusInterface powermanagement("org.freedesktop.Hal",
|
||||
"/org/freedesktop/Hal/devices/computer",
|
||||
"org.freedesktop.Hal.Device.SystemPowerManagement",
|
||||
QDBusConnection::systemBus());
|
||||
response = powermanagement.call("Suspend",0);
|
||||
if(response.type() == QDBusMessage::ErrorMessage){
|
||||
if(verbose)
|
||||
qWarning() << "W: " << response.errorName() << ":" << response.errorMessage();
|
||||
}
|
||||
else
|
||||
hal_works = true;
|
||||
}
|
||||
|
||||
if(!hal_works && !gnome_power1 && !gnome_power2){
|
||||
QDBusInterface powermanagement("org.freedesktop.DeviceKit.Power",
|
||||
"/org/freedesktop/DeviceKit/Power",
|
||||
"org.freedesktop.DeviceKit.Power", QDBusConnection::systemBus());
|
||||
response = powermanagement.call("Suspend");
|
||||
if(response.type() == QDBusMessage::ErrorMessage){
|
||||
if(verbose)
|
||||
qWarning() << "W: " << response.errorName() << ":" << response.errorMessage();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//SHUTDOWN (QProcess::startDetached("shutdown -s -f -t 00");)
|
||||
void Converter::shutdown()
|
||||
{ bool shutdown_works = false;
|
||||
bool gnome_power1 = false;
|
||||
bool gnome_power2 = false;
|
||||
bool hal_works = false;
|
||||
QDBusMessage response;
|
||||
|
||||
QDBusInterface gnomeSessionManager("org.gnome.SessionManager",
|
||||
"/org/gnome/SessionManager", "org.gnome.SessionManager",
|
||||
QDBusConnection::sessionBus());
|
||||
response = gnomeSessionManager.call("RequestShutdown");
|
||||
if(response.type() == QDBusMessage::ErrorMessage){
|
||||
if(verbose)
|
||||
qWarning() << "W: " << response.errorName() << ":" << response.errorMessage();
|
||||
gnome_power1 = QProcess::startDetached("gnome-power-cmd.sh shutdown");
|
||||
gnome_power2 = QProcess::startDetached("gnome-power-cmd shutdown");
|
||||
if(verbose && !gnome_power1 && !gnome_power2)
|
||||
qWarning() << "W: gnome-power-cmd and gnome-power-cmd.sh didn't work";
|
||||
}
|
||||
else
|
||||
shutdown_works = true;
|
||||
|
||||
QDBusInterface kdeSessionManager("org.kde.ksmserver", "/KSMServer",
|
||||
"org.kde.KSMServerInterface", QDBusConnection::sessionBus());
|
||||
response = kdeSessionManager.call("logout", 0, 2, 2);
|
||||
if(response.type() == QDBusMessage::ErrorMessage){
|
||||
if(verbose)
|
||||
qWarning() << "W: " << response.errorName() << ":" << response.errorMessage();
|
||||
}
|
||||
else
|
||||
shutdown_works = true;
|
||||
|
||||
if(!shutdown_works && !gnome_power1 && !gnome_power2){
|
||||
QDBusInterface powermanagement("org.freedesktop.Hal",
|
||||
"/org/freedesktop/Hal/devices/computer",
|
||||
"org.freedesktop.Hal.Device.SystemPowerManagement",
|
||||
QDBusConnection::systemBus());
|
||||
response = powermanagement.call("Shutdown");
|
||||
if(response.type() == QDBusMessage::ErrorMessage){
|
||||
if(verbose)
|
||||
qWarning() << "W: " << response.errorName() << ":" << response.errorMessage();
|
||||
}
|
||||
else
|
||||
hal_works = true;
|
||||
}
|
||||
|
||||
if(!hal_works && !shutdown_works && !gnome_power1 && !gnome_power2){
|
||||
QDBusInterface powermanagement("org.freedesktop.ConsoleKit",
|
||||
"/org/freedesktop/ConsoleKit/Manager", "org.freedesktop.ConsoleKit.Manager",
|
||||
QDBusConnection::systemBus());
|
||||
response = powermanagement.call("Stop");
|
||||
if(response.type() == QDBusMessage::ErrorMessage){
|
||||
if(verbose)
|
||||
qWarning() << "W: " << response.errorName() << ":" << response.errorMessage();
|
||||
QProcess::startDetached("sudo shutdown -P now");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//REBOOT
|
||||
void Converter::reboot()
|
||||
{bool reboot_works = false;
|
||||
bool gnome_power1 = false;
|
||||
bool gnome_power2 = false;
|
||||
bool hal_works = false;
|
||||
QDBusMessage response;
|
||||
|
||||
QDBusInterface gnomeSessionManager("org.gnome.SessionManager",
|
||||
"/org/gnome/SessionManager", "org.gnome.SessionManager",
|
||||
QDBusConnection::sessionBus());
|
||||
response = gnomeSessionManager.call("RequestReboot");
|
||||
if(response.type() == QDBusMessage::ErrorMessage){
|
||||
if(verbose)
|
||||
qWarning() << "W: " << response.errorName() << ":" << response.errorMessage();
|
||||
gnome_power1 = QProcess::startDetached("gnome-power-cmd.sh reboot");
|
||||
gnome_power2 = QProcess::startDetached("gnome-power-cmd reboot");
|
||||
if(verbose && !gnome_power1 && !gnome_power2)
|
||||
qWarning() << "W: gnome-power-cmd and gnome-power-cmd.sh didn't work";
|
||||
}
|
||||
else
|
||||
reboot_works = true;
|
||||
|
||||
QDBusInterface kdeSessionManager("org.kde.ksmserver", "/KSMServer",
|
||||
"org.kde.KSMServerInterface", QDBusConnection::sessionBus());
|
||||
response = kdeSessionManager.call("logout", 0, 2, 1);
|
||||
if(response.type() == QDBusMessage::ErrorMessage){
|
||||
if(verbose)
|
||||
qWarning() << "W: " << response.errorName() << ":" << response.errorMessage();
|
||||
}
|
||||
else
|
||||
reboot_works = true;
|
||||
|
||||
if(!reboot_works && !gnome_power1 && !gnome_power2){
|
||||
QDBusInterface powermanagement("org.freedesktop.Hal",
|
||||
"/org/freedesktop/Hal/devices/computer",
|
||||
"org.freedesktop.Hal.Device.SystemPowerManagement",
|
||||
QDBusConnection::systemBus());
|
||||
response = powermanagement.call("Reboot");
|
||||
if(response.type() == QDBusMessage::ErrorMessage){
|
||||
if(verbose)
|
||||
qWarning() << "W: " << response.errorName() << ":" << response.errorMessage();
|
||||
}
|
||||
else
|
||||
hal_works = true;
|
||||
}
|
||||
|
||||
if(!hal_works && !reboot_works && !gnome_power1 && !gnome_power2){
|
||||
QDBusInterface powermanagement("org.freedesktop.ConsoleKit",
|
||||
"/org/freedesktop/ConsoleKit/Manager", "org.freedesktop.ConsoleKit.Manager",
|
||||
QDBusConnection::systemBus());
|
||||
response = powermanagement.call("Restart");
|
||||
if(response.type() == QDBusMessage::ErrorMessage){
|
||||
if(verbose)
|
||||
qWarning() << "W: " << response.errorName() << ":" << response.errorMessage();
|
||||
QProcess::startDetached("sudo shutdown -r now");
|
||||
}
|
||||
}}
|
||||
//HIBERNATE
|
||||
void Converter::hibernate()
|
||||
{bool gnome_power1 = false;
|
||||
bool gnome_power2 = false;
|
||||
bool hal_works = false;
|
||||
QDBusMessage response;
|
||||
|
||||
gnome_power1 = QProcess::startDetached("gnome-power-cmd.sh hibernate");
|
||||
gnome_power2 = QProcess::startDetached("gnome-power-cmd hibernate");
|
||||
if(!gnome_power1 && !gnome_power2 && verbose)
|
||||
qWarning() << "W: gnome-power-cmd and gnome-power-cmd.sh didn't work";
|
||||
|
||||
if(!gnome_power1 && !gnome_power2){
|
||||
QDBusInterface powermanagement("org.freedesktop.Hal",
|
||||
"/org/freedesktop/Hal/devices/computer",
|
||||
"org.freedesktop.Hal.Device.SystemPowerManagement",
|
||||
QDBusConnection::systemBus());
|
||||
response = powermanagement.call("Hibernate");
|
||||
if(response.type() == QDBusMessage::ErrorMessage){
|
||||
if(verbose)
|
||||
qWarning() << "W: " << response.errorName() << ":" << response.errorMessage();
|
||||
}
|
||||
else
|
||||
hal_works = true;
|
||||
}
|
||||
|
||||
if(!hal_works && !gnome_power1 && !gnome_power2){
|
||||
QDBusInterface powermanagement("org.freedesktop.DeviceKit.Power", "/org/freedesktop/DeviceKit/Power",
|
||||
"org.freedesktop.DeviceKit.Power", QDBusConnection::systemBus());
|
||||
if(response.type() == QDBusMessage::ErrorMessage){
|
||||
if(verbose)
|
||||
qWarning() << "W: " << response.errorName() << ":" << response.errorMessage();
|
||||
}
|
||||
}}
|
||||
//LOCK
|
||||
void Converter::lock()
|
||||
{
|
||||
if(system("gnome-screensaver-command -l") && system("dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock"))
|
||||
QMessageBox::warning(this, "Error", "Unable to lock computer.", QMessageBox::Ok, NULL);
|
||||
|
||||
}
|
||||
|
||||
void MainWindow::on_pushButton_clicked()
|
||||
{
|
||||
QProcess process;;
|
||||
|
||||
process.start("~/helloworld.out");
|
||||
process.waitForStarted();
|
||||
process.waitForFinished();
|
||||
process.close();
|
||||
}
|
||||
Reference in New Issue
Block a user