]> rtime.felk.cvut.cz Git - sojka/lightdm.git/blob - greeters/vala-gtk/lightdm-example-vala-gtk-greeter.vala
Drop script code that was never implemented
[sojka/lightdm.git] / greeters / vala-gtk / lightdm-example-vala-gtk-greeter.vala
1 class Greeter
2 {
3     private LightDM.Greeter greeter;
4     private Gtk.Entry username_entry;
5     private Gtk.Entry password_entry;
6     private Gtk.Label message_label;
7
8     public Greeter ()
9     {
10         greeter = new LightDM.Greeter ();
11         greeter.connected.connect (connect_cb);
12         greeter.show_prompt.connect (show_prompt_cb);
13         greeter.show_message.connect (show_message_cb);
14         greeter.authentication_complete.connect (authentication_complete_cb);
15         greeter.timed_login.connect (timed_login_cb);
16         greeter.quit.connect (quit_cb);
17     }
18     
19     public void start ()
20     {
21         greeter.connect_to_server ();
22     }
23
24     private void username_activate_cb (Gtk.Entry entry)
25     {
26         username_entry.sensitive = false;
27         greeter.login (username_entry.text);
28     }
29
30     private void password_activate_cb (Gtk.Entry entry)
31     {
32         password_entry.sensitive = false;
33         greeter.respond (password_entry.text);
34     }
35
36     private void connect_cb (LightDM.Greeter greeter)
37     {
38         var display = Gdk.Display.get_default ();
39         var screen = display.get_default_screen ();
40         
41         var window = new Gtk.Window ();
42         window.set_default_size (screen.get_width (), screen.get_height ());
43         
44         var vbox = new Gtk.VBox (false, 0);
45         window.add (vbox);
46         
47         var login_align = new Gtk.Alignment (0.5f, 0.5f, 0.0f, 0.0f);
48         vbox.pack_start (login_align, true, true, 0);
49         
50         var login_vbox = new Gtk.VBox (false, 6);
51         login_vbox.border_width = 12;
52         login_align.add (login_vbox);
53
54         var logo_image = new Gtk.Image.from_icon_name ("computer", Gtk.IconSize.DIALOG);
55         logo_image.pixel_size = 64;
56         login_vbox.pack_start (logo_image, false, false, 0);
57         login_vbox.pack_start (new Gtk.Label (greeter.hostname), false, false, 0);
58         
59         message_label = new Gtk.Label ("");
60         login_vbox.pack_start (message_label, false, false, 0);
61         message_label.no_show_all = true;
62         
63         username_entry = new Gtk.Entry ();
64         login_vbox.pack_start (username_entry, false, false, 0);
65         username_entry.activate.connect (username_activate_cb);
66         
67         password_entry = new Gtk.Entry ();
68         password_entry.sensitive = false;
69         login_vbox.pack_start (password_entry, false, false, 0);
70         password_entry.activate.connect (password_activate_cb);
71         password_entry.no_show_all = true;
72         
73         window.show_all ();
74         username_entry.grab_focus ();
75     }
76
77     private void show_prompt_cb (LightDM.Greeter greeter, string text, LightDM.PromptType type)
78     {
79         password_entry.show ();
80         password_entry.sensitive = true;
81         password_entry.visibility = type != LightDM.PromptType.SECRET;
82         password_entry.grab_focus ();
83     }
84
85     private void show_message_cb (LightDM.Greeter greeter, string text, LightDM.MessageType type)
86     {
87         message_label.label = text;
88         message_label.show ();
89     }
90
91     private void authentication_complete_cb (LightDM.Greeter greeter)
92     {
93         password_entry.hide ();
94         password_entry.text = "";
95         username_entry.text = "";
96         username_entry.sensitive = true;
97         username_entry.grab_focus ();
98         if (greeter.is_authenticated)
99             greeter.start_default_session ();
100         else
101         {
102             message_label.label = "Failed to authenticate";
103             message_label.show ();
104         }
105     }
106
107     private void timed_login_cb (LightDM.Greeter greeter, string username)
108     {
109         greeter.login (greeter.timed_login_user);
110     }
111
112     private void quit_cb (LightDM.Greeter greeter)
113     {
114         Gtk.main_quit ();
115     }
116     
117     static int main (string[] args)
118     {
119         Gtk.init (ref args);
120
121         var g = new Greeter ();
122         g.start ();
123
124         Gtk.main ();
125
126         return 0;
127     }
128 }