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 */
25 #include <libbonobo.h>
26 #include "login-helper.h"
28 /* Our parent Gtk object type */
29 #define PARENT_TYPE BONOBO_TYPE_OBJECT
31 /* A pointer to our parent object class */
32 static BonoboObjectClass *bonobo_object_parent_class;
35 login_helper_finalize (GObject *object)
37 LoginHelper *helper = (LoginHelper *) object;
40 (G_OBJECT_CLASS (bonobo_object_parent_class))->finalize (object);
44 login_helper_set_safe (LoginHelper *helper, gboolean safe)
46 LoginHelperClass *klass = LOGIN_HELPER_GET_CLASS (helper);
49 return (* klass->set_safe)(helper, safe);
55 impl_login_helper_set_safe (PortableServer_Servant servant,
56 const CORBA_boolean safe,
57 CORBA_Environment *ev)
59 LoginHelper *helper = LOGIN_HELPER (bonobo_object_from_servant (servant));
61 return login_helper_set_safe (helper, safe);
64 LoginHelperDeviceReqFlags
65 login_helper_get_device_reqs (LoginHelper *helper)
67 LoginHelperClass *klass = LOGIN_HELPER_GET_CLASS (helper);
69 if (klass->get_device_reqs)
70 return (* klass->get_device_reqs)(helper);
75 static Accessibility_LoginHelper_DeviceReqList*
76 impl_login_helper_get_device_reqs (PortableServer_Servant servant,
77 CORBA_Environment *ev)
79 LoginHelper *helper = LOGIN_HELPER (bonobo_object_from_servant (servant));
80 LoginHelperDeviceReqFlags flags = 0;
81 gint n_reqs = 0, i = 1, j = 1;
82 Accessibility_LoginHelper_DeviceReqList *list;
84 flags = login_helper_get_device_reqs (helper);
86 while (i <= LOGIN_HELPER_LAST_DEFINED)
88 if (flags & i) n_reqs++;
92 list = Accessibility_LoginHelper_DeviceReqList__alloc ();
93 list->_length = n_reqs;
94 list->_buffer = Accessibility_LoginHelper_DeviceReqList_allocbuf (list->_length);
96 for (i = 0, j = 1; i < n_reqs; i++)
98 Accessibility_LoginHelper_DeviceReq req;
99 while ((flags & j) == 0) {
104 case LOGIN_HELPER_GUI_EVENTS:
105 req = Accessibility_LoginHelper_GUI_EVENTS;
107 case LOGIN_HELPER_CORE_KEYBOARD:
108 req = Accessibility_LoginHelper_CORE_KEYBOARD;
110 case LOGIN_HELPER_CORE_POINTER:
111 req = Accessibility_LoginHelper_CORE_POINTER;
113 case LOGIN_HELPER_EXT_INPUT:
114 req = Accessibility_LoginHelper_EXT_INPUT;
116 case LOGIN_HELPER_POST_WINDOWS:
117 req = Accessibility_LoginHelper_POST_WINDOWS;
119 case LOGIN_HELPER_AUDIO_OUT:
120 req = Accessibility_LoginHelper_AUDIO_OUT;
122 case LOGIN_HELPER_AUDIO_IN:
123 req = Accessibility_LoginHelper_AUDIO_IN;
125 case LOGIN_HELPER_NETWORK:
126 req = Accessibility_LoginHelper_NETWORK;
128 case LOGIN_HELPER_LOCALHOST:
129 req = Accessibility_LoginHelper_LOCALHOST;
131 case LOGIN_HELPER_SERIAL_OUT:
132 req = Accessibility_LoginHelper_SERIAL_OUT;
134 case LOGIN_HELPER_SERIAL_IN:
135 req = Accessibility_LoginHelper_SERIAL_IN;
141 list->_buffer[i] = req;
149 login_helper_get_raise_windows (LoginHelper *helper)
151 LoginHelperClass *klass = LOGIN_HELPER_GET_CLASS (helper);
153 if (klass->get_raise_windows)
154 return (* klass->get_raise_windows)(helper);
159 static Accessibility_LoginHelper_WindowList*
160 impl_login_helper_get_raise_windows (PortableServer_Servant servant,
161 CORBA_Environment *ev)
163 LoginHelper *helper = LOGIN_HELPER (bonobo_object_from_servant (servant));
165 Accessibility_LoginHelper_WindowList *windows;
167 wids = login_helper_get_raise_windows (helper);
176 windows = Accessibility_LoginHelper_WindowList__alloc ();
177 windows->_length = count;
178 windows->_buffer = Accessibility_LoginHelper_WindowList_allocbuf (windows->_length);
179 for (i = 0; i < count; ++i)
181 Accessibility_LoginHelper_WindowInfo winfo;
182 winfo.winID = wids[i];
183 windows->_buffer [i] = winfo;
195 login_helper_class_init (LoginHelperClass *klass)
197 GObjectClass * object_class = (GObjectClass *) klass;
198 POA_Accessibility_LoginHelper__epv *epv = &klass->epv;
200 bonobo_object_parent_class = g_type_class_peek_parent (klass);
202 object_class->finalize = login_helper_finalize;
204 epv->getRaiseWindows = impl_login_helper_get_raise_windows;
205 epv->getDeviceReqs = impl_login_helper_get_device_reqs;
206 epv->setSafe = impl_login_helper_set_safe;
210 login_helper_init (GObject *object)
212 LoginHelper *helper = LOGIN_HELPER (object);
215 BONOBO_TYPE_FUNC_FULL (LoginHelper,
216 Accessibility_LoginHelper,
217 PARENT_TYPE, login_helper)