diff options
author | Robert Ancell <robert.ancell@canonical.com> | 2012-10-05 14:13:19 +1300 |
---|---|---|
committer | Robert Ancell <robert.ancell@canonical.com> | 2012-10-05 14:13:19 +1300 |
commit | 8b9d8136abbb8d913309ca30547590b16116ce3f (patch) | |
tree | 8c188d30b85a97e50b276730204fc288a36dc464 /liblightdm-qt | |
parent | fc453d31ff0e28d7d79c2ede34581758b231ae55 (diff) | |
parent | 9e4051943d798f4e425a90a47015846a79f146ee (diff) | |
download | lightdm-8b9d8136abbb8d913309ca30547590b16116ce3f.tar.gz |
Changes to QLightDM
- Add default constructor to Qt power interface
- Expose image path in UsersModel
- Add parameter to session model to show either local or remote sessions
Diffstat (limited to 'liblightdm-qt')
-rw-r--r-- | liblightdm-qt/QLightDM/power.h | 2 | ||||
-rw-r--r-- | liblightdm-qt/QLightDM/sessionsmodel.h | 8 | ||||
-rw-r--r-- | liblightdm-qt/QLightDM/usersmodel.h | 4 | ||||
-rw-r--r-- | liblightdm-qt/sessionsmodel.cpp | 49 | ||||
-rw-r--r-- | liblightdm-qt/usersmodel.cpp | 3 |
5 files changed, 51 insertions, 15 deletions
diff --git a/liblightdm-qt/QLightDM/power.h b/liblightdm-qt/QLightDM/power.h index 5479ae99..896e9486 100644 --- a/liblightdm-qt/QLightDM/power.h +++ b/liblightdm-qt/QLightDM/power.h @@ -26,7 +26,7 @@ namespace QLightDM Q_PROPERTY(bool canShutdown READ canShutdown() CONSTANT) Q_PROPERTY(bool canRestart READ canRestart() CONSTANT) - PowerInterface(QObject *parent); + PowerInterface(QObject *parent=0); virtual ~PowerInterface(); bool canSuspend(); diff --git a/liblightdm-qt/QLightDM/sessionsmodel.h b/liblightdm-qt/QLightDM/sessionsmodel.h index e7b5dc66..0c4dc0c0 100644 --- a/liblightdm-qt/QLightDM/sessionsmodel.h +++ b/liblightdm-qt/QLightDM/sessionsmodel.h @@ -28,7 +28,13 @@ namespace QLightDM { IdRole = KeyRole /** Deprecated */ }; - explicit SessionsModel(QObject *parent = 0); + enum SessionType { + LocalSessions, + RemoteSessions + }; + + explicit SessionsModel(QObject *parent = 0); /** Deprecated. Loads local sessions*/ + explicit SessionsModel(SessionsModel::SessionType, QObject *parent = 0); virtual ~SessionsModel(); int rowCount(const QModelIndex &parent) const; diff --git a/liblightdm-qt/QLightDM/usersmodel.h b/liblightdm-qt/QLightDM/usersmodel.h index 24eafc93..01728232 100644 --- a/liblightdm-qt/QLightDM/usersmodel.h +++ b/liblightdm-qt/QLightDM/usersmodel.h @@ -33,7 +33,9 @@ public: LoggedInRole, BackgroundRole, SessionRole, - HasMessagesRole}; + HasMessagesRole, + ImagePathRole + }; int rowCount(const QModelIndex &parent) const; QVariant data(const QModelIndex &index, int role) const; diff --git a/liblightdm-qt/sessionsmodel.cpp b/liblightdm-qt/sessionsmodel.cpp index a43d8d73..3315c71b 100644 --- a/liblightdm-qt/sessionsmodel.cpp +++ b/liblightdm-qt/sessionsmodel.cpp @@ -32,30 +32,39 @@ class SessionsModelPrivate public: SessionsModelPrivate(SessionsModel *parent); QList<SessionItem> items; - - void loadSessions(); - + + void loadSessions(SessionsModel::SessionType sessionType); + protected: SessionsModel* q_ptr; private: Q_DECLARE_PUBLIC(SessionsModel) - + }; SessionsModelPrivate::SessionsModelPrivate(SessionsModel *parent) : q_ptr(parent) { g_type_init(); - loadSessions(); } -void SessionsModelPrivate::loadSessions() +void SessionsModelPrivate::loadSessions(SessionsModel::SessionType sessionType) { - qDebug() << "loading sessions"; + GList *ldmSessions; + + switch (sessionType) { + case SessionsModel::RemoteSessions: + ldmSessions = lightdm_get_remote_sessions(); + break; + case SessionsModel::LocalSessions: + /* Fall through*/ + default: + ldmSessions = lightdm_get_sessions(); + break; + } - GList *ldmSessions = lightdm_get_sessions(); - for (GList* item = ldmSessions; item; item = item->next) { + for (GList* item = ldmSessions; item; item = item->next) { LightDMSession *ldmSession = static_cast<LightDMSession*>(item->data); Q_ASSERT(ldmSession); @@ -64,8 +73,6 @@ void SessionsModelPrivate::loadSessions() session.name = QString::fromUtf8(lightdm_session_get_name(ldmSession)); session.comment = QString::fromUtf8(lightdm_session_get_comment(ldmSession)); - qDebug() << "adding session" << session.key; - items.append(session); } @@ -73,13 +80,31 @@ void SessionsModelPrivate::loadSessions() } +//deprecated constructor for ABI compatability. SessionsModel::SessionsModel(QObject *parent) : QAbstractListModel(parent), d_ptr(new SessionsModelPrivate(this)) { + Q_D(SessionsModel); + + QHash<int, QByteArray> roles = roleNames(); + roles[KeyRole] = "key"; + setRoleNames(roles); + + d->loadSessions(SessionsModel::LocalSessions); +} + +SessionsModel::SessionsModel(SessionsModel::SessionType sessionType, QObject *parent) : + QAbstractListModel(parent), + d_ptr(new SessionsModelPrivate(this)) +{ + Q_D(SessionsModel); + QHash<int, QByteArray> roles = roleNames(); roles[KeyRole] = "key"; setRoleNames(roles); + + d->loadSessions(sessionType); } SessionsModel::~SessionsModel() @@ -90,7 +115,7 @@ SessionsModel::~SessionsModel() int SessionsModel::rowCount(const QModelIndex &parent) const { Q_D(const SessionsModel); - + if (parent == QModelIndex()) { //if top level return d->items.size(); } else { diff --git a/liblightdm-qt/usersmodel.cpp b/liblightdm-qt/usersmodel.cpp index ca57c9ad..f1624938 100644 --- a/liblightdm-qt/usersmodel.cpp +++ b/liblightdm-qt/usersmodel.cpp @@ -184,6 +184,7 @@ UsersModel::UsersModel(QObject *parent) : roles[LoggedInRole] = "loggedIn"; roles[SessionRole] = "session"; roles[HasMessagesRole] = "hasMessages"; + roles[ImagePathRole] = "imagePath"; setRoleNames(roles); d->loadUsers(); @@ -231,6 +232,8 @@ QVariant UsersModel::data(const QModelIndex &index, int role) const return QPixmap(d->users[row].background); case UsersModel::HasMessagesRole: return d->users[row].hasMessages; + case UsersModel::ImagePathRole: + return d->users[row].image; } return QVariant(); |