2 * AT-SPI - Assistive Technology Service Provider Interface
3 * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
5 * LoginHelper interface
6 * Copyright 2004 Sun Microsystems Inc.,
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Library General Public
10 * License as published by the Free Software Foundation; either
11 * version 2 of the License, or (at your option) any later version.
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Library General Public License for more details.
18 * You should have received a copy of the GNU Library General Public
19 * License along with this library; if not, write to the
20 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
21 * Boston, MA 02111-1307, USA.
24 /* login-helper.c: minimal implementation of Accessibility_LoginHelper.idl */
26 #include <libbonobo.h>
27 #include "login-helper.h"
29 /* Our parent Gtk object type */
30 #define PARENT_TYPE BONOBO_TYPE_OBJECT
32 /* A pointer to our parent object class */
33 static BonoboObjectClass *bonobo_object_parent_class;
36 login_helper_finalize (GObject *object)
38 (G_OBJECT_CLASS (bonobo_object_parent_class))->finalize (object);
42 login_helper_set_safe (LoginHelper *helper, gboolean safe)
44 LoginHelperClass *klass = LOGIN_HELPER_GET_CLASS (helper);
47 return (* klass->set_safe)(helper, safe);
53 impl_login_helper_set_safe (PortableServer_Servant servant,
54 const CORBA_boolean safe,
55 CORBA_Environment *ev)
57 LoginHelper *helper = LOGIN_HELPER (bonobo_object_from_servant (servant));
59 return login_helper_set_safe (helper, safe);
62 static LoginHelperDeviceReqFlags
63 login_helper_get_device_reqs (LoginHelper *helper)
65 LoginHelperClass *klass = LOGIN_HELPER_GET_CLASS (helper);
67 if (klass->get_device_reqs)
68 return (* klass->get_device_reqs)(helper);
73 static Accessibility_LoginHelper_DeviceReqList*
74 impl_login_helper_get_device_reqs (PortableServer_Servant servant,
75 CORBA_Environment *ev)
77 LoginHelper *helper = LOGIN_HELPER (bonobo_object_from_servant (servant));
78 LoginHelperDeviceReqFlags flags = 0;
79 gint n_reqs = 0, i = 1, j = 1;
80 Accessibility_LoginHelper_DeviceReqList *list;
82 flags = login_helper_get_device_reqs (helper);
84 while (i <= LOGIN_HELPER_LAST_DEFINED)
86 if (flags & i) n_reqs++;
90 list = Accessibility_LoginHelper_DeviceReqList__alloc ();
91 list->_length = n_reqs;
92 list->_buffer = Accessibility_LoginHelper_DeviceReqList_allocbuf (list->_length);
94 for (i = 0, j = 1; i < n_reqs; i++)
96 Accessibility_LoginHelper_DeviceReq req;
97 while ((flags & j) == 0) {
102 case LOGIN_HELPER_GUI_EVENTS:
103 req = Accessibility_LoginHelper_GUI_EVENTS;
105 case LOGIN_HELPER_CORE_KEYBOARD:
106 req = Accessibility_LoginHelper_CORE_KEYBOARD;
108 case LOGIN_HELPER_CORE_POINTER:
109 req = Accessibility_LoginHelper_CORE_POINTER;
111 case LOGIN_HELPER_EXT_INPUT:
112 req = Accessibility_LoginHelper_EXT_INPUT;
114 case LOGIN_HELPER_POST_WINDOWS:
115 req = Accessibility_LoginHelper_POST_WINDOWS;
117 case LOGIN_HELPER_AUDIO_OUT:
118 req = Accessibility_LoginHelper_AUDIO_OUT;
120 case LOGIN_HELPER_AUDIO_IN:
121 req = Accessibility_LoginHelper_AUDIO_IN;
123 case LOGIN_HELPER_NETWORK:
124 req = Accessibility_LoginHelper_NETWORK;
126 case LOGIN_HELPER_LOCALHOST:
127 req = Accessibility_LoginHelper_LOCALHOST;
129 case LOGIN_HELPER_SERIAL_OUT:
130 req = Accessibility_LoginHelper_SERIAL_OUT;
132 case LOGIN_HELPER_SERIAL_IN:
133 req = Accessibility_LoginHelper_SERIAL_IN;
139 list->_buffer[i] = req;
147 login_helper_get_raise_windows (LoginHelper *helper)
149 LoginHelperClass *klass = LOGIN_HELPER_GET_CLASS (helper);
151 if (klass->get_raise_windows)
152 return (* klass->get_raise_windows)(helper);
157 static Accessibility_LoginHelper_WindowList*
158 impl_login_helper_get_raise_windows (PortableServer_Servant servant,
159 CORBA_Environment *ev)
161 LoginHelper *helper = LOGIN_HELPER (bonobo_object_from_servant (servant));
163 Accessibility_LoginHelper_WindowList *windows;
165 wids = login_helper_get_raise_windows (helper);
174 windows = Accessibility_LoginHelper_WindowList__alloc ();
175 windows->_length = count;
176 windows->_buffer = Accessibility_LoginHelper_WindowList_allocbuf (windows->_length);
177 for (i = 0; i < count; ++i)
179 Accessibility_LoginHelper_WindowInfo winfo;
180 winfo.winID = wids[i];
181 windows->_buffer [i] = winfo;
193 login_helper_class_init (LoginHelperClass *klass)
195 GObjectClass * object_class = (GObjectClass *) klass;
196 POA_Accessibility_LoginHelper__epv *epv = &klass->epv;
198 bonobo_object_parent_class = g_type_class_peek_parent (klass);
200 object_class->finalize = login_helper_finalize;
202 epv->getRaiseWindows = impl_login_helper_get_raise_windows;
203 epv->getDeviceReqs = impl_login_helper_get_device_reqs;
204 epv->setSafe = impl_login_helper_set_safe;
208 login_helper_init (GObject *object)
212 BONOBO_TYPE_FUNC_FULL (LoginHelper,
213 Accessibility_LoginHelper,
214 PARENT_TYPE, login_helper)