blob: 7039bc16cea2e9626e3abdeff27d9aecb2a44f1a (
plain) (
tree)
|
|
#include "global.h"
#include <QTimer>
#include <QModelIndex>
#include <QString>
#include <QEventLoop>
#include <QDebug>
#include <QCoreApplication>
bool Global::m_testMode = false;
QLightDM::Greeter* Global::m_Greeter = nullptr;
QLightDM::PowerInterface* Global::m_Power = nullptr;
QLightDM::SessionsModel* Global::m_Sessions = nullptr;
void Global::initGreeter()
{
m_Greeter = new QLightDM::Greeter();
if (!m_Greeter->connectSync()) {
m_Greeter->deleteLater();
m_Greeter = nullptr;
}
}
bool Global::autoLoginGuest()
{
GreeterCb *cb = new GreeterCb();
GreeterCb::connect(greeter(), SIGNAL(authenticationComplete()), cb, SLOT(authenticationComplete()));
GreeterCb::connect(greeter(), SIGNAL(autologinTimerExpired()), cb, SLOT(autologinTimerExpired()));
GreeterCb::connect(greeter(), SIGNAL(reset()), cb, SLOT(reset()));
qWarning() << "Trying to auth as guest";
greeter()->authenticateAsGuest();
QTimer::singleShot(3000, cb, SLOT(customTimeout()));
while (!cb->authComplete && !cb->authError && greeter()->inAuthentication()) {
QCoreApplication::instance()->processEvents(QEventLoop::AllEvents);
}
qWarning() << "Complete:" << cb->authComplete << "Error:"
<< cb->authError << "InAuth:" << greeter()->inAuthentication() << "isAuthenticated" << greeter()->isAuthenticated();
if (cb->authComplete && greeter()->isAuthenticated()) {
cb->deleteLater();
return startSession();
}
cb->deleteLater();
return false;
}
bool Global::startSession()
{
QModelIndex i = sessions()->index(0, 0);
QString s = m_Sessions->data(i, QLightDM::SessionsModel::KeyRole).toString();
return m_Greeter->startSessionSync(s);
}
|