on xenial help sign in
broken merge
a072961Josh Arenson
plugins/LightDM/SessionsModel.cpp+3−2
@@ -18,7 +18,7 @@
18#include "SessionsModel.h"
18#include "SessionsModel.h"
19#include <QtCore/QFile>
19#include <QtCore/QFile>
20#include <QtCore/QSortFilterProxyModel>
20#include <QtCore/QSortFilterProxyModel>
21−
21+#include <QDebug>
22QHash<int, QByteArray> SessionsModel::roleNames() const
22QHash<int, QByteArray> SessionsModel::roleNames() const
23{
23{
24 return m_roleNames;
24 return m_roleNames;
@@ -29,7 +29,6 @@ int SessionsModel::rowCount(const QModelIndex& parent) const
29 return m_model->rowCount(parent);
29 return m_model->rowCount(parent);
30}
30}
31
31
32−// Used for testing
33QList<QUrl> SessionsModel::iconSearchDirectories() const
32QList<QUrl> SessionsModel::iconSearchDirectories() const
34{
33{
35 return m_iconSearchDirectories;
34 return m_iconSearchDirectories;
@@ -38,12 +37,14 @@ QList<QUrl> SessionsModel::iconSearchDirectories() const
38void SessionsModel::setIconSearchDirectories(QList<QUrl> searchDirectories)
37void SessionsModel::setIconSearchDirectories(QList<QUrl> searchDirectories)
39{
38{
40 m_iconSearchDirectories = searchDirectories;
39 m_iconSearchDirectories = searchDirectories;
40+ Q_EMIT iconSearchDirectoriesChanged();
41}
41}
42
42
43QUrl SessionsModel::iconUrl(QString sessionName) const
43QUrl SessionsModel::iconUrl(QString sessionName) const
44{
44{
45 Q_FOREACH(const QUrl& searchDirectory, m_iconSearchDirectories)
45 Q_FOREACH(const QUrl& searchDirectory, m_iconSearchDirectories)
46 {
46 {
47+ qDebug() << "LOOKING IN: " << searchDirectory.toString();
47 // This is an established icon naming convention
48 // This is an established icon naming convention
48 QString iconUrl = searchDirectory.toString(QUrl::StripTrailingSlash) +
49 QString iconUrl = searchDirectory.toString(QUrl::StripTrailingSlash) +
49 "/" + sessionName.toLower() + "_badge.png";
50 "/" + sessionName.toLower() + "_badge.png";
plugins/LightDM/SessionsModel.h+5
@@ -30,6 +30,11 @@ class SessionsModel : public UnitySortFilterProxyModelQML
30
30
31 Q_ENUMS(SessionModelRoles)
31 Q_ENUMS(SessionModelRoles)
32
32
33+ Q_PROPERTY(QList<QUrl> iconSearchDirectories READ iconSearchDirectories
34+ WRITE setIconSearchDirectories NOTIFY iconSearchDirectoriesChanged)
35+Q_SIGNALS:
36+ void iconSearchDirectoriesChanged();
37+
33public:
38public:
34 enum SessionModelRoles {
39 enum SessionModelRoles {
35 /* This is tricky / ugly. Since we are ultimately chaining 3 enums together,
40 /* This is tricky / ugly. Since we are ultimately chaining 3 enums together,
qml/Greeter/LoginList.qml+12
@@ -109,6 +109,8 @@ Item {
109 id: sessionChooser
109 id: sessionChooser
110 objectName: "sessionChooserButton"
110 objectName: "sessionChooserButton"
111
111
112+ readonly property alias imageSource: badge.source
113+
112 visible: LightDMService.sessions.count > 1
114 visible: LightDMService.sessions.count > 1
113
115
114 height: units.gu(2.5)
116 height: units.gu(2.5)
@@ -123,6 +125,7 @@ Item {
123 }
125 }
124
126
125 Image {
127 Image {
128+ id: badge
126 anchors.fill: parent
129 anchors.fill: parent
127 source: LightDMService.sessions.iconUrl(root.currentSession)
130 source: LightDMService.sessions.iconUrl(root.currentSession)
128 }
131 }
@@ -130,6 +133,15 @@ Item {
130 onClicked: {
133 onClicked: {
131 sessionChooserButtonClicked();
134 sessionChooserButtonClicked();
132 }
135 }
136+
137+ // Refresh the icon path if looking at different places at runtime
138+ // this is meainly for testing
139+ Connections {
140+ target: LightDMService.sessions
141+ onIconSearchDirectoriesChanged: {
142+ badge.source = LightDMService.sessions.iconUrl(root.currentSession)
143+ }
144+ }
133 }
145 }
134 }
146 }
135
147
tests/qmltests/Greeter/tst_WideView.qml+10−2
@@ -311,6 +311,7 @@ Item {
311 when: windowShown
311 when: windowShown
312
312
313 property Item view: loader.status === Loader.Ready ? loader.item : null
313 property Item view: loader.status === Loader.Ready ? loader.item : null
314+ property url testIconDirectory: "./test_session_badges"
314
315
315 function init() {
316 function init() {
316 selectIndex(0); // break binding with text field
317 selectIndex(0); // break binding with text field
@@ -376,9 +377,16 @@ Item {
376 }
377 }
377
378
378 function test_sessionIconsAreValid() {
379 function test_sessionIconsAreValid() {
380+ var originalDirectories = LightDM.Sessions.iconSearchDirectories
381+ var sessionChooserButton = findChild(view, "sessionChooserButton")
379 LightDM.Sessions.testScenario = "multipleSessions"
382 LightDM.Sessions.testScenario = "multipleSessions"
380− console.log("THE URL IS: " + LightDM.Sessions.iconUrl("Ubuntu"));
383+ console.log("FIRST JOSH: " + sessionChooserButton.imageSource)
384+ LightDM.Sessions.iconSearchDirectories = [testIconDirectory]
385+
386+ var sessionChooserButton = findChild(view, "sessionChooserButton")
387+ compare(sessionChooserButton.visible, true)
388+ console.log("JOSH: " + sessionChooserButton.imageSource)
381− compare(false, true);
389+ compare(true, false)
382 }
390 }
383
391
384 function test_noSessionsDoesntBreakView() {
392 function test_noSessionsDoesntBreakView() {