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 (G_OBJECT_CLASS (bonobo_object_parent_class))->finalize (object);
41 login_helper_set_safe (LoginHelper *helper, gboolean safe)
43 LoginHelperClass *klass = LOGIN_HELPER_GET_CLASS (helper);
46 return (* klass->set_safe)(helper, safe);
52 impl_login_helper_set_safe (PortableServer_Servant servant,
53 const CORBA_boolean safe,
54 CORBA_Environment *ev)
56 LoginHelper *helper = LOGIN_HELPER (bonobo_object_from_servant (servant));
58 return login_helper_set_safe (helper, safe);
61 LoginHelperDeviceReqFlags
62 login_helper_get_device_reqs (LoginHelper *helper)
64 LoginHelperClass *klass = LOGIN_HELPER_GET_CLASS (helper);
66 if (klass->get_device_reqs)
67 return (* klass->get_device_reqs)(helper);
72 static Accessibility_LoginHelper_DeviceReqList*
73 impl_login_helper_get_device_reqs (PortableServer_Servant servant,
74 CORBA_Environment *ev)
76 LoginHelper *helper = LOGIN_HELPER (bonobo_object_from_servant (servant));
77 LoginHelperDeviceReqFlags flags = 0;
78 gint n_reqs = 0, i = 1, j = 1;
79 Accessibility_LoginHelper_DeviceReqList *list;
81 flags = login_helper_get_device_reqs (helper);
83 while (i <= LOGIN_HELPER_LAST_DEFINED)
85 if (flags & i) n_reqs++;
89 list = Accessibility_LoginHelper_DeviceReqList__alloc ();
90 list->_length = n_reqs;
91 list->_buffer = Accessibility_LoginHelper_DeviceReqList_allocbuf (list->_length);
93 for (i = 0, j = 1; i < n_reqs; i++)
95 Accessibility_LoginHelper_DeviceReq req;
96 while ((flags & j) == 0) {
101 case LOGIN_HELPER_GUI_EVENTS:
102 req = Accessibility_LoginHelper_GUI_EVENTS;
104 case LOGIN_HELPER_CORE_KEYBOARD:
105 req = Accessibility_LoginHelper_CORE_KEYBOARD;
107 case LOGIN_HELPER_CORE_POINTER:
108 req = Accessibility_LoginHelper_CORE_POINTER;
110 case LOGIN_HELPER_EXT_INPUT:
111 req = Accessibility_LoginHelper_EXT_INPUT;
113 case LOGIN_HELPER_POST_WINDOWS:
114 req = Accessibility_LoginHelper_POST_WINDOWS;
116 case LOGIN_HELPER_AUDIO_OUT:
117 req = Accessibility_LoginHelper_AUDIO_OUT;
119 case LOGIN_HELPER_AUDIO_IN:
120 req = Accessibility_LoginHelper_AUDIO_IN;
122 case LOGIN_HELPER_NETWORK:
123 req = Accessibility_LoginHelper_NETWORK;
125 case LOGIN_HELPER_LOCALHOST:
126 req = Accessibility_LoginHelper_LOCALHOST;
128 case LOGIN_HELPER_SERIAL_OUT:
129 req = Accessibility_LoginHelper_SERIAL_OUT;
131 case LOGIN_HELPER_SERIAL_IN:
132 req = Accessibility_LoginHelper_SERIAL_IN;
138 list->_buffer[i] = req;
146 login_helper_get_raise_windows (LoginHelper *helper)
148 LoginHelperClass *klass = LOGIN_HELPER_GET_CLASS (helper);
150 if (klass->get_raise_windows)
151 return (* klass->get_raise_windows)(helper);
156 static Accessibility_LoginHelper_WindowList*
157 impl_login_helper_get_raise_windows (PortableServer_Servant servant,
158 CORBA_Environment *ev)
160 LoginHelper *helper = LOGIN_HELPER (bonobo_object_from_servant (servant));
162 Accessibility_LoginHelper_WindowList *windows;
164 wids = login_helper_get_raise_windows (helper);
173 windows = Accessibility_LoginHelper_WindowList__alloc ();
174 windows->_length = count;
175 windows->_buffer = Accessibility_LoginHelper_WindowList_allocbuf (windows->_length);
176 for (i = 0; i < count; ++i)
178 Accessibility_LoginHelper_WindowInfo winfo;
179 winfo.winID = wids[i];
180 windows->_buffer [i] = winfo;
192 login_helper_class_init (LoginHelperClass *klass)
194 GObjectClass * object_class = (GObjectClass *) klass;
195 POA_Accessibility_LoginHelper__epv *epv = &klass->epv;
197 bonobo_object_parent_class = g_type_class_peek_parent (klass);
199 object_class->finalize = login_helper_finalize;
201 epv->getRaiseWindows = impl_login_helper_get_raise_windows;
202 epv->getDeviceReqs = impl_login_helper_get_device_reqs;
203 epv->setSafe = impl_login_helper_set_safe;
207 login_helper_init (GObject *object)
211 BONOBO_TYPE_FUNC_FULL (LoginHelper,
212 Accessibility_LoginHelper,
213 PARENT_TYPE, login_helper)