@@ -18,9 +18,11 @@
1818
1919#include "UsersModelPrivate.h"
2020
21+#include <glib.h>
2122#include <QDir>
2223#include <QSettings>
2324#include <QStringList>
25+#include <unistd.h>
2426
2527namespace QLightDM
2628{
@@ -28,14 +30,38 @@ namespace QLightDM
2830UsersModelPrivate::UsersModelPrivate(UsersModel* parent)
2931 : q_ptr(parent)
3032{
31− QSettings settings(QDir::homePath() + "/.unity8-greeter-demo", QSettings::NativeFormat);
32− QStringList users = settings.value(QStringLiteral("users"), QStringList() << qgetenv("USER")).toStringList();
33+ QFileInfo demoFile(QDir::homePath() + "/.unity8-greeter-demo");
34+ QString currentUser = g_get_user_name();
3335
34− entries.reserve(users.count());
35− Q_FOREACH(const QString &user, users)
36− {
37− QString name = settings.value(user + "/name", user).toString();
38− entries.append({user, name, 0, 0, false, false, 0, 0});
36+ if (demoFile.exists()) {
37+ QSettings settings(demoFile.filePath(), QSettings::NativeFormat);
38+ QStringList users = settings.value(QStringLiteral("users"), QStringList() << currentUser).toStringList();
39+
40+ entries.reserve(users.count());
41+ Q_FOREACH(const QString &user, users)
42+ {
43+ QString name = settings.value(user + "/name", user).toString();
44+ entries.append({user, name, 0, 0, false, false, 0, 0});
45+ }
46+ } else {
47+ // If we were using the actual liblightdm, we could just ask it
48+ // for the user's real name. But we aren't. We *should* ask
49+ // AccountsService for the real name, like liblightdm does internally,
50+ // but this is close enough since AS and passwd are always in sync.
51+ QString realName = g_get_real_name(); // gets name from passwd entry
52+ if (realName == QStringLiteral("Unknown")) { // glib doesn't translate this string
53+ realName = QStringLiteral("");
54+ }
55+ if (realName == QStringLiteral("phablet")
56+ && currentUser == QStringLiteral("phablet")
57+ && getuid() == 32011
58+ && getgid() == 32011) {
59+ // This *should* be set at image-creation time, but it hasn't
60+ // always been, so we have to do it here for at least the upgrade
61+ // case. And until it is fixed at image-creation.
62+ realName = QStringLiteral("Ubuntu"); // is brand name, so not translated
63+ }
64+ entries.append({currentUser, realName, 0, 0, false, false, 0, 0});
3965 }
4066}
4167