1 /* 2 * Copyright (C) 2010-2011 Robert Ancell. 3 * Author: Robert Ancell <robert.ancell@canonical.com> 4 * 5 * This program is free software: you can redistribute it and/or modify it under 6 * the terms of the GNU General Public License as published by the Free Software 7 * Foundation, either version 3 of the License, or (at your option) any later 8 * version. See http://www.gnu.org/copyleft/gpl.html the full text of the 9 * license. 10 */ 11 12 #ifndef SEAT_H_ 13 #define SEAT_H_ 14 15 #include <glib-object.h> 16 #include "display-server.h" 17 #include "greeter-session.h" 18 #include "session.h" 19 #include "process.h" 20 #include "logger.h" 21 22 G_BEGIN_DECLS 23 24 #define SEAT_TYPE (seat_get_type()) 25 #define SEAT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SEAT_TYPE, Seat)) 26 #define SEAT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SEAT_TYPE, SeatClass)) 27 #define SEAT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SEAT_TYPE, SeatClass)) 28 29 #define SEAT_SIGNAL_SESSION_ADDED "session-added" 30 #define SEAT_SIGNAL_RUNNING_USER_SESSION "running-user-session" 31 #define SEAT_SIGNAL_SESSION_REMOVED "session-removed" 32 #define SEAT_SIGNAL_STOPPED "stopped" 33 34 typedef struct 35 { 36 GObject parent_instance; 37 } Seat; 38 39 typedef struct 40 { 41 GObjectClass parent_class; 42 43 void (*setup)(Seat *seat); 44 gboolean (*start)(Seat *seat); 45 DisplayServer *(*create_display_server) (Seat *seat, Session *session); 46 gboolean (*display_server_is_used) (Seat *seat, DisplayServer *display_server); 47 GreeterSession *(*create_greeter_session) (Seat *seat); 48 Session *(*create_session) (Seat *seat); 49 void (*set_active_session)(Seat *seat, Session *session); 50 void (*set_next_session)(Seat *seat, Session *session); 51 Session *(*get_active_session)(Seat *seat); 52 void (*run_script)(Seat *seat, DisplayServer *display_server, Process *script); 53 void (*stop)(Seat *seat); 54 55 void (*session_added)(Seat *seat, Session *session); 56 void (*running_user_session)(Seat *seat, Session *session); 57 void (*session_removed)(Seat *seat, Session *session); 58 void (*stopped)(Seat *seat); 59 } SeatClass; 60 61 G_DEFINE_AUTOPTR_CLEANUP_FUNC (Seat, g_object_unref) 62 63 GType seat_get_type (void); 64 65 void seat_register_module (const gchar *name, GType type); 66 67 Seat *seat_new (const gchar *module_name); 68 69 void seat_set_name (Seat *seat, const gchar *name); 70 71 void seat_set_property (Seat *seat, const gchar *name, const gchar *value); 72 73 const gchar *seat_get_string_property (Seat *seat, const gchar *name); 74 75 gchar **seat_get_string_list_property (Seat *seat, const gchar *name); 76 77 gboolean seat_get_boolean_property (Seat *seat, const gchar *name); 78 79 gint seat_get_integer_property (Seat *seat, const gchar *name); 80 81 const gchar *seat_get_name (Seat *seat); 82 83 void seat_set_supports_multi_session (Seat *seat, gboolean supports_multi_session); 84 85 void seat_set_share_display_server (Seat *seat, gboolean share_display_server); 86 87 gboolean seat_start (Seat *seat); 88 89 GList *seat_get_sessions (Seat *seat); 90 91 void seat_set_active_session (Seat *seat, Session *session); 92 93 Session *seat_get_active_session (Seat *seat); 94 95 Session *seat_get_next_session (Seat *seat); 96 97 void seat_set_externally_activated_session (Seat *seat, Session *session); 98 99 Session *seat_get_expected_active_session (Seat *seat); 100 101 Session *seat_find_session_by_login1_id (Seat *seat, const gchar *login1_session_id); 102 103 gboolean seat_get_can_switch (Seat *seat); 104 105 gboolean seat_get_allow_guest (Seat *seat); 106 107 gboolean seat_get_greeter_allow_guest (Seat *seat); 108 109 gboolean seat_switch_to_greeter (Seat *seat); 110 111 gboolean seat_switch_to_user (Seat *seat, const gchar *username, const gchar *session_name); 112 113 gboolean seat_switch_to_guest (Seat *seat, const gchar *session_name); 114 115 gboolean seat_lock (Seat *seat, const gchar *username); 116 117 void seat_stop (Seat *seat); 118 119 gboolean seat_get_is_stopping (Seat *seat); 120 121 G_END_DECLS 122 123 #endif /* SEAT_H_ */ 124