some improvements in helper and gui APIs and replacement and restoring

sessions
This commit is contained in:
arcan1s
2014-08-12 14:01:00 +04:00
parent fddd4703cc
commit b65f761520
11 changed files with 128 additions and 16 deletions

View File

@ -34,11 +34,11 @@
using namespace std;
bool restoreExistSession()
bool existingSessionOperation(const QString operation)
{
QDBusConnection bus = QDBusConnection::sessionBus();
QDBusMessage request = QDBusMessage::createMethodCall(DBUS_SERVICE, DBUS_OBJECT_PATH,
DBUS_INTERFACE, QString("Restore"));
DBUS_INTERFACE, operation);
QDBusMessage response = bus.call(request);
QList<QVariant> arguments = response.arguments();
@ -46,6 +46,18 @@ bool restoreExistSession()
}
unsigned int getUidFromSession(const int type = 0)
{
QDBusConnection bus = QDBusConnection::sessionBus();
QDBusMessage request = QDBusMessage::createMethodCall(DBUS_SERVICE, DBUS_OBJECT_PATH,
DBUS_INTERFACE, QString("UIDs"));
QDBusMessage response = bus.call(request);
QList<QVariant> arguments = response.arguments();
return arguments[0].toStringList()[type].toUInt();
}
int main(int argc, char *argv[])
{
QMap<QString, QVariant> args = getArgs();
@ -164,8 +176,20 @@ int main(int argc, char *argv[])
}
// check if exists
if (restoreExistSession())
return 0;
if (existingSessionOperation(QString("Active"))) {
if ((getuid() == getUidFromSession(0)) && (geteuid() == getUidFromSession(1))) {
// restore session
cout << QCoreApplication::translate("MainWindow", "Restore existing session.")
.toUtf8().data() << endl;
existingSessionOperation(QString("Restore"));
return 0;
} else if ((getuid() == getUidFromSession(0)) && (geteuid() != getUidFromSession(1))) {
cout << QCoreApplication::translate("MainWindow", "Close existing session.")
.toUtf8().data() << endl;
existingSessionOperation(QString("Restore"));
return 0;
}
}
MainWindow w(0, args, &qtTranslator, &translator);
return a.exec();
}