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