/* * Copyright (C) 2013, 2015 Canonical, Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "AccountsService.h" #include "UsersModel.h" #include #include AccountsService::AccountsService(QObject* parent) : QObject(parent), m_enableFingerprintIdentification(true), m_enableLauncherWhileLocked(true), m_enableIndicatorsWhileLocked(true), m_backgroundFile(), m_statsWelcomeScreen(true), m_failedLogins(0), m_failedFingerprintLogins(0), m_demoEdges(false), m_demoEdgesCompleted(), m_hereEnabled(false), m_hereLicensePath(""), m_usersModel(new UsersModel(this)) { } QString AccountsService::user() const { return m_user; } void AccountsService::setUser(const QString &user) { m_user = user; Q_EMIT userChanged(); Q_EMIT passwordDisplayHintChanged(); Q_EMIT backgroundFileChanged(); } bool AccountsService::demoEdges() const { return m_demoEdges; } void AccountsService::setDemoEdges(bool demoEdges) { m_demoEdges = demoEdges; Q_EMIT demoEdgesChanged(); } QStringList AccountsService::demoEdgesCompleted() const { return m_demoEdgesCompleted; } void AccountsService::markDemoEdgeCompleted(const QString &edge) { if (!m_demoEdgesCompleted.contains(edge)) { m_demoEdgesCompleted << edge; Q_EMIT demoEdgesCompletedChanged(); } } void AccountsService::setDemoEdgesCompleted(const QStringList &demoEdgesCompleted) { m_demoEdgesCompleted = demoEdgesCompleted; Q_EMIT demoEdgesCompletedChanged(); } bool AccountsService::enableFingerprintIdentification() const { return m_enableFingerprintIdentification; } void AccountsService::setEnableFingerprintIdentification(bool enableFingerprintIdentification) { m_enableFingerprintIdentification = enableFingerprintIdentification; Q_EMIT enableFingerprintIdentificationChanged(); } bool AccountsService::enableLauncherWhileLocked() const { return m_enableLauncherWhileLocked; } void AccountsService::setEnableLauncherWhileLocked(bool enableLauncherWhileLocked) { m_enableLauncherWhileLocked = enableLauncherWhileLocked; Q_EMIT enableLauncherWhileLockedChanged(); } bool AccountsService::enableIndicatorsWhileLocked() const { return m_enableIndicatorsWhileLocked; } void AccountsService::setEnableIndicatorsWhileLocked(bool enableIndicatorsWhileLocked) { m_enableIndicatorsWhileLocked = enableIndicatorsWhileLocked; Q_EMIT enableIndicatorsWhileLockedChanged(); } QString AccountsService::backgroundFile() const { if (!m_backgroundFile.isEmpty()) { return m_backgroundFile; } // Check if our mock user has a background set in liblightdm for (int i = 0; i < m_usersModel->count(); i++) { if (m_usersModel->data(i, QLightDM::UsersModel::NameRole) == m_user) { return m_usersModel->data(i, QLightDM::UsersModel::BackgroundPathRole).toString(); } } return QString(); } void AccountsService::setBackgroundFile(const QString &backgroundFile) { m_backgroundFile = backgroundFile; backgroundFileChanged(); } bool AccountsService::statsWelcomeScreen() const { return m_statsWelcomeScreen; } void AccountsService::setStatsWelcomeScreen(bool statsWelcomeScreen) { m_statsWelcomeScreen = statsWelcomeScreen; statsWelcomeScreenChanged(); } AccountsService::PasswordDisplayHint AccountsService::passwordDisplayHint() const { if (m_user == "has-pin") return PasswordDisplayHint::Numeric; else return PasswordDisplayHint::Keyboard; } uint AccountsService::failedLogins() const { return m_failedLogins; } void AccountsService::setFailedLogins(uint failedLogins) { m_failedLogins = failedLogins; failedLoginsChanged(); } uint AccountsService::failedFingerprintLogins() const { return m_failedFingerprintLogins; } void AccountsService::setFailedFingerprintLogins(uint failedFingerprintLogins) { m_failedFingerprintLogins = failedFingerprintLogins; failedFingerprintLoginsChanged(); } bool AccountsService::hereEnabled() const { return m_hereEnabled; } void AccountsService::setHereEnabled(bool enabled) { m_hereEnabled = enabled; hereEnabledChanged(); } QString AccountsService::hereLicensePath() const { return m_hereLicensePath; } void AccountsService::setHereLicensePath(const QString &path) { // Path should always be valid (this code is all synchronous) if (path == " ") { m_hereLicensePath = QString::null; } else if (path.isNull()) { // because qml collapses null and empty m_hereLicensePath = ""; } else { m_hereLicensePath = path; } hereLicensePathChanged(); } bool AccountsService::hereLicensePathValid() const { return !m_hereLicensePath.isNull(); } QString AccountsService::realName() const { return m_realName; } void AccountsService::setRealName(const QString &realName) { m_realName = realName; Q_EMIT realNameChanged(); } QString AccountsService::email() const { return m_email; } void AccountsService::setEmail(const QString &email) { m_email = email; Q_EMIT emailChanged(); } QStringList AccountsService::keymaps() const { if (!m_kbdMap.isEmpty()) { return m_kbdMap; } return {QStringLiteral("us")}; } void AccountsService::setKeymaps(const QStringList &keymaps) { if (keymaps != m_kbdMap) { m_kbdMap = keymaps; Q_EMIT keymapsChanged(); } }