summaryrefslogtreecommitdiff
path: root/liblightdm-qt
diff options
context:
space:
mode:
authorDavid Edmundson <david@davidedmundson.co.uk>2012-09-08 12:10:33 +0100
committerDavid Edmundson <david@davidedmundson.co.uk>2012-09-08 12:10:33 +0100
commit60ec709b5f386422d4ce65f1b40d5eb18d156691 (patch)
tree3212d8db4fd054e17fa0804aa222eb1d15b88cb2 /liblightdm-qt
parentf79a971f759292764c8ab649c5a5829aed95decf (diff)
downloadlightdm-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.h8
-rw-r--r--liblightdm-qt/sessionsmodel.cpp39
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()