diff options
author | David Edmundson <david@davidedmundson.co.uk> | 2012-09-08 12:10:33 +0100 |
---|---|---|
committer | David Edmundson <david@davidedmundson.co.uk> | 2012-09-08 12:10:33 +0100 |
commit | 60ec709b5f386422d4ce65f1b40d5eb18d156691 (patch) | |
tree | 3212d8db4fd054e17fa0804aa222eb1d15b88cb2 /liblightdm-qt | |
parent | f79a971f759292764c8ab649c5a5829aed95decf (diff) | |
download | lightdm-git-60ec709b5f386422d4ce65f1b40d5eb18d156691.tar.gz |
add parameter to session model to show either local or remote sessions
Diffstat (limited to 'liblightdm-qt')
-rw-r--r-- | liblightdm-qt/QLightDM/sessionsmodel.h | 8 | ||||
-rw-r--r-- | liblightdm-qt/sessionsmodel.cpp | 39 |
2 files changed, 39 insertions, 8 deletions
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/sessionsmodel.cpp b/liblightdm-qt/sessionsmodel.cpp index a43d8d73..f2e6e714 100644 --- a/liblightdm-qt/sessionsmodel.cpp +++ b/liblightdm-qt/sessionsmodel.cpp @@ -33,7 +33,7 @@ public: SessionsModelPrivate(SessionsModel *parent); QList<SessionItem> items; - void loadSessions(); + void loadSessions(SessionsModel::SessionType sessionType); protected: SessionsModel* q_ptr; @@ -47,14 +47,23 @@ 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) { 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() |