]> rtime.felk.cvut.cz Git - sojka/lightdm.git/blob - liblightdm-qt/greeter.cpp
Add remote sessions
[sojka/lightdm.git] / liblightdm-qt / greeter.cpp
1 /*
2  * Copyright (C) 2010-2011 David Edmundson
3  * Copyright (C) 2010-2011 Robert Ancell
4  * Author: David Edmundson <kde@davidedmundson.co.uk>
5  *
6  * This library is free software; you can redistribute it and/or modify it under
7  * the terms of the GNU Lesser General Public License as published by the Free
8  * Software Foundation; either version 3 of the License, or (at your option) any
9  * later version. See http://www.gnu.org/copyleft/lgpl.html the full text of the
10  * license.
11  */
12
13
14 #include "QLightDM/greeter.h"
15
16 #include <QtCore/QDebug>
17 #include <QtCore/QDir>
18 #include <QtCore/QVariant>
19 #include <QtCore/QSettings>
20
21 #include <lightdm.h>
22
23 using namespace QLightDM;
24
25 class QLightDM::GreeterPrivate
26 {
27 public:
28     GreeterPrivate(Greeter *parent);
29     LightDMGreeter *ldmGreeter;
30 protected:
31     Greeter* q_ptr;
32     
33     static void cb_showPrompt(LightDMGreeter *greeter, const gchar *text, LightDMPromptType type, gpointer data);
34     static void cb_showMessage(LightDMGreeter *greeter, const gchar *text, LightDMMessageType type, gpointer data);
35     static void cb_authenticationComplete(LightDMGreeter *greeter, gpointer data);
36     static void cb_autoLoginExpired(LightDMGreeter *greeter, gpointer data);
37     
38 private:
39     Q_DECLARE_PUBLIC(Greeter)
40 };
41
42 GreeterPrivate::GreeterPrivate(Greeter *parent) :
43     q_ptr(parent)
44 {
45     g_type_init();
46     ldmGreeter = lightdm_greeter_new();
47
48     g_signal_connect (ldmGreeter, "show-prompt", G_CALLBACK (cb_showPrompt), this);
49     g_signal_connect (ldmGreeter, "show-message", G_CALLBACK (cb_showMessage), this);
50     g_signal_connect (ldmGreeter, "authentication-complete", G_CALLBACK (cb_authenticationComplete), this);
51     g_signal_connect (ldmGreeter, "autologin-timer-expired", G_CALLBACK (cb_autoLoginExpired), this);
52 }
53
54 void GreeterPrivate::cb_showPrompt(LightDMGreeter *greeter, const gchar *text, LightDMPromptType type, gpointer data)
55 {
56     Q_UNUSED(greeter);
57     
58     GreeterPrivate *that = static_cast<GreeterPrivate*>(data);
59     QString message = QString::fromUtf8(text);
60     
61     //FIXME prompt type
62
63     Q_EMIT that->q_func()->showPrompt(message, Greeter::PromptTypeSecret);
64 }
65
66 void GreeterPrivate::cb_showMessage(LightDMGreeter *greeter, const gchar *text, LightDMMessageType type, gpointer data)
67 {
68     Q_UNUSED(greeter);
69
70     GreeterPrivate *that = static_cast<GreeterPrivate*>(data);
71     QString message = QString::fromUtf8(text);
72
73     //FIXME prompt type
74
75     Q_EMIT that->q_func()->showMessage(message, Greeter::MessageTypeInfo);
76 }
77
78 void GreeterPrivate::cb_authenticationComplete(LightDMGreeter *greeter, gpointer data)
79 {
80     Q_UNUSED(greeter);
81     GreeterPrivate *that = static_cast<GreeterPrivate*>(data);
82     Q_EMIT that->q_func()->authenticationComplete();
83 }
84
85 void GreeterPrivate::cb_autoLoginExpired(LightDMGreeter *greeter, gpointer data)
86 {
87     Q_UNUSED(greeter);
88     GreeterPrivate *that = static_cast<GreeterPrivate*>(data);
89     Q_EMIT that->q_func()->autologinTimerExpired();
90 }
91
92 Greeter::Greeter(QObject *parent) :
93     QObject(parent),
94     d_ptr(new GreeterPrivate(this))
95 {
96 }
97
98 Greeter::~Greeter()
99 {
100     delete d_ptr;
101 }
102
103
104 bool Greeter::connectSync()
105 {
106     Q_D(Greeter);
107     return lightdm_greeter_connect_sync(d->ldmGreeter, NULL);
108 }
109
110 void Greeter::authenticate(const QString &username)
111 {
112     Q_D(Greeter);
113     lightdm_greeter_authenticate(d->ldmGreeter, username.toLocal8Bit().data());
114 }
115
116 void Greeter::authenticateAsGuest()
117 {
118     Q_D(Greeter);
119     lightdm_greeter_authenticate_as_guest(d->ldmGreeter);
120 }
121
122 void Greeter::authenticateRemote(const QString &session, const QString &username)
123 {
124     Q_D(Greeter);
125     lightdm_greeter_authenticate_remote(d->ldmGreeter, session.toLocal8Bit().data(), username.toLocal8Bit().data());
126 }
127
128 void Greeter::respond(const QString &response)
129 {
130     Q_D(Greeter);
131     lightdm_greeter_respond(d->ldmGreeter, response.toLocal8Bit().data());
132 }
133
134 void Greeter::cancelAuthentication()
135 {
136     Q_D(Greeter);
137     lightdm_greeter_cancel_authentication(d->ldmGreeter);
138 }
139
140 bool Greeter::inAuthentication() const
141 {
142     Q_D(const Greeter);
143     return lightdm_greeter_get_in_authentication(d->ldmGreeter);
144 }
145
146 bool Greeter::isAuthenticated() const
147 {
148     Q_D(const Greeter);
149     return lightdm_greeter_get_is_authenticated(d->ldmGreeter);
150 }
151
152 QString Greeter::authenticationUser() const
153 {
154     Q_D(const Greeter);
155     return QString::fromUtf8(lightdm_greeter_get_authentication_user(d->ldmGreeter));
156 }
157
158 void Greeter::setLanguage (const QString &language)
159 {
160     Q_D(Greeter);
161     lightdm_greeter_set_language(d->ldmGreeter, language.toLocal8Bit().constData());
162 }
163
164 bool Greeter::startSessionSync(const QString &session)
165 {
166     Q_D(Greeter);
167     return lightdm_greeter_start_session_sync(d->ldmGreeter, session.toLocal8Bit().constData(), NULL);
168 }
169
170
171 QString Greeter::getHint(const QString &name) const
172 {
173     Q_D(const Greeter);
174     return lightdm_greeter_get_hint(d->ldmGreeter, name.toLocal8Bit().constData());
175 }
176
177 QString Greeter::defaultSessionHint() const
178 {
179     Q_D(const Greeter);
180     return QString::fromUtf8(lightdm_greeter_get_default_session_hint(d->ldmGreeter));
181 }
182
183 bool Greeter::hideUsersHint() const
184 {
185     Q_D(const Greeter);
186     return lightdm_greeter_get_hide_users_hint(d->ldmGreeter);
187 }
188
189 bool Greeter::showManualLoginHint() const
190 {
191     Q_D(const Greeter);
192     return lightdm_greeter_get_show_manual_login_hint(d->ldmGreeter);
193 }
194
195 bool Greeter::lockHint() const
196 {
197     Q_D(const Greeter);
198     return lightdm_greeter_get_lock_hint(d->ldmGreeter);
199 }
200
201 bool Greeter::hasGuestAccountHint() const
202 {
203     Q_D(const Greeter);
204     return lightdm_greeter_get_has_guest_account_hint(d->ldmGreeter);
205 }
206
207 QString Greeter::selectUserHint() const
208 {
209     Q_D(const Greeter);
210     return QString::fromUtf8(lightdm_greeter_get_select_user_hint(d->ldmGreeter));
211 }
212
213 bool Greeter::selectGuestHint() const
214 {
215     Q_D(const Greeter);
216     return lightdm_greeter_get_select_guest_hint(d->ldmGreeter);
217 }
218
219 QString Greeter::autologinUserHint() const
220 {
221     Q_D(const Greeter);
222     return QString::fromUtf8(lightdm_greeter_get_autologin_user_hint(d->ldmGreeter));
223 }
224
225 bool Greeter::autologinGuestHint() const
226 {
227     Q_D(const Greeter);
228     return lightdm_greeter_get_autologin_guest_hint(d->ldmGreeter);
229 }
230
231 int Greeter::autologinTimeoutHint() const
232 {
233     Q_D(const Greeter);
234     return lightdm_greeter_get_autologin_timeout_hint(d->ldmGreeter);
235 }
236
237 QString Greeter::hostname() const
238 {
239     return QString::fromUtf8(lightdm_get_hostname());
240 }
241
242 #include "greeter_moc.cpp"