summaryrefslogtreecommitdiff
path: root/liblightdm-qt
diff options
context:
space:
mode:
authorRobert Ancell <robert.ancell@canonical.com>2012-10-05 14:13:19 +1300
committerRobert Ancell <robert.ancell@canonical.com>2012-10-05 14:13:19 +1300
commit8b9d8136abbb8d913309ca30547590b16116ce3f (patch)
tree8c188d30b85a97e50b276730204fc288a36dc464 /liblightdm-qt
parentfc453d31ff0e28d7d79c2ede34581758b231ae55 (diff)
parent9e4051943d798f4e425a90a47015846a79f146ee (diff)
downloadlightdm-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.h2
-rw-r--r--liblightdm-qt/QLightDM/sessionsmodel.h8
-rw-r--r--liblightdm-qt/QLightDM/usersmodel.h4
-rw-r--r--liblightdm-qt/sessionsmodel.cpp49
-rw-r--r--liblightdm-qt/usersmodel.cpp3
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();