on xenial help sign in
Display the current user's real name on the tablet lockscreen. Fixes: #1536714

Approved by: Michael Zanetti

commit29057a12c303359481f920a7b6cf1b4562be6f70 authorMichael Terry <michael.terry@canonical.com> dateMon 8 Feb 2016, 09:37 (11 years ago) parent67de2ebf895897
10 files changed+29−24
CMakeLists.txt+3 plugins/IntegratedLightDM/liblightdm/CMakeLists.txt+3 plugins/IntegratedLightDM/liblightdm/UsersModelPrivate.cpp+23−7 plugins/Powerd/CMakeLists.txt−2 plugins/Unity/Indicators/CMakeLists.txt−4 plugins/Unity/Session/CMakeLists.txt−2 plugins/Utils/CMakeLists.txt−2 tests/mocks/Utils/CMakeLists.txt−2 tests/mocks/indicator-service/CMakeLists.txt−1 tests/plugins/Unity/Indicators/CMakeLists.txt−4
CMakeLists.txt+3
@@ -58,6 +58,9 @@ find_package(Qt5Concurrent 5.4 REQUIRED)
5858find_package(Qt5Sql 5.4 REQUIRED)
5959
6060pkg_check_modules(APPLICATION_API REQUIRED unity-shell-application=12)
61+pkg_check_modules(GIO REQUIRED gio-2.0>=2.32)
62+pkg_check_modules(GLIB REQUIRED glib-2.0>=2.32)
63+pkg_check_modules(QMENUMODEL REQUIRED qmenumodel)
6164
6265# Standard install paths
6366include(GNUInstallDirs)
plugins/IntegratedLightDM/liblightdm/CMakeLists.txt+3
@@ -13,14 +13,17 @@ add_library(MockLightDM-demo-shared SHARED ${LibLightDM_SOURCES})
1313
1414include_directories(
1515 ${CMAKE_CURRENT_BINARY_DIR}
16+ ${GLIB_INCLUDE_DIRS}
1617 ${LIBUSERMETRICSOUTPUT_INCLUDE_DIRS}
1718)
1819
1920target_link_libraries(integratedLightDM
21+ ${GLIB_LIBRARIES}
2022 ${LIBUSERMETRICSOUTPUT_LDFLAGS}
2123 -lpam
2224)
2325target_link_libraries(MockLightDM-demo-shared
26+ ${GLIB_LIBRARIES}
2427 ${LIBUSERMETRICSOUTPUT_LDFLAGS}
2528 -lpam
2629)
plugins/IntegratedLightDM/liblightdm/UsersModelPrivate.cpp+23−7
@@ -18,6 +18,7 @@
1818
1919#include "UsersModelPrivate.h"
2020
21+#include <glib.h>
2122#include <QDir>
2223#include <QSettings>
2324#include <QStringList>
@@ -28,14 +29,29 @@ namespace QLightDM
2829UsersModelPrivate::UsersModelPrivate(UsersModel* parent)
2930 : q_ptr(parent)
3031{
31− QSettings settings(QDir::homePath() + "/.unity8-greeter-demo", QSettings::NativeFormat);
32− QStringList users = settings.value(QStringLiteral("users"), QStringList() << qgetenv("USER")).toStringList();
32+ QFileInfo demoFile(QDir::homePath() + "/.unity8-greeter-demo");
33+ QString currentUser = g_get_user_name();
3334
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});
35+ if (demoFile.exists()) {
36+ QSettings settings(demoFile.filePath(), QSettings::NativeFormat);
37+ QStringList users = settings.value(QStringLiteral("users"), QStringList() << currentUser).toStringList();
38+
39+ entries.reserve(users.count());
40+ Q_FOREACH(const QString &user, users)
41+ {
42+ QString name = settings.value(user + "/name", user).toString();
43+ entries.append({user, name, 0, 0, false, false, 0, 0});
44+ }
45+ } else {
46+ // If we were using the actual liblightdm, we could just ask it
47+ // for the user's real name. But we aren't. We *should* ask
48+ // AccountsService for the real name, like liblightdm does internally,
49+ // but this is close enough since AS and passwd are always in sync.
50+ QString realName = QString::fromUtf8(g_get_real_name()); // gets name from passwd entry
51+ if (realName == QStringLiteral("Unknown")) { // glib doesn't translate this string
52+ realName.clear();
53+ }
54+ entries.append({currentUser, realName, 0, 0, false, false, 0, 0});
3955 }
4056}
4157
plugins/Powerd/CMakeLists.txt−2
@@ -1,5 +1,3 @@
1−pkg_search_module(GIO REQUIRED gio-2.0)
2−
31include_directories(
42 ${GIO_INCLUDE_DIRS}
53)
plugins/Unity/Indicators/CMakeLists.txt−4
@@ -1,9 +1,5 @@
11project(IndicatorsQml)
22
3−pkg_check_modules(GLIB REQUIRED glib-2.0>=2.32)
4−pkg_check_modules(GIO REQUIRED gio-2.0>=2.32)
5−pkg_check_modules(QMENUMODEL REQUIRED qmenumodel)
6−
73find_package(Qt5Core REQUIRED)
84find_package(Qt5Quick REQUIRED)
95
plugins/Unity/Session/CMakeLists.txt−2
@@ -1,5 +1,3 @@
1−pkg_search_module(GIO REQUIRED gio-2.0)
2−
31include_directories(
42 ${CMAKE_CURRENT_SOURCE_DIR}
53 ${CMAKE_CURRENT_BINARY_DIR}
plugins/Utils/CMakeLists.txt−2
@@ -1,5 +1,3 @@
1−pkg_search_module(GIO REQUIRED gio-2.0)
2−
31include_directories(
42 ${CMAKE_CURRENT_SOURCE_DIR}
53 ${CMAKE_CURRENT_BINARY_DIR}
tests/mocks/Utils/CMakeLists.txt−2
@@ -1,5 +1,3 @@
1−pkg_search_module(GIO REQUIRED gio-2.0)
2−
31include_directories(
42 ${CMAKE_CURRENT_SOURCE_DIR}
53 ${CMAKE_CURRENT_BINARY_DIR}
tests/mocks/indicator-service/CMakeLists.txt−1
@@ -1,5 +1,4 @@
11project(mock-indicator-service)
2−pkg_search_module(GIO REQUIRED gio-2.0)
32
43set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99")
54
tests/plugins/Unity/Indicators/CMakeLists.txt−4
@@ -1,7 +1,3 @@
1−pkg_check_modules(GLIB REQUIRED glib-2.0>=2.32)
2−pkg_check_modules(GIO REQUIRED gio-2.0>=2.32)
3−pkg_check_modules(QMENUMODEL REQUIRED qmenumodel)
4−
51set(INDICATORS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../../plugins/Unity/Indicators)
62set(TEST_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../..)
73