2005-01-25 Padraig O'Briain <padraig.obriain@sun.com>
[platform/core/uifw/at-spi2-atk.git] / libspi / application.c
index 0667885..f494757 100644 (file)
@@ -27,6 +27,7 @@
 #include <config.h>
 #include <atk/atkutil.h>
 #include <libspi/application.h>
+#include <locale.h>
 #include "spi-private.h"
 
 /* Our parent Gtk object type */
@@ -170,6 +171,34 @@ spi_application_toolkit_event_listener (GSignalInvocationHint *signal_hint,
   return TRUE;
 }
 
+static CORBA_string
+impl_accessibility_application_get_locale (PortableServer_Servant servant,
+                                          Accessibility_LOCALE_TYPE lctype,
+                                          CORBA_Environment *ev)
+{
+    int category;
+    switch (lctype) 
+    {
+       case Accessibility_LOCALE_TYPE_COLLATE:
+           category = LC_COLLATE;
+           break;
+       case Accessibility_LOCALE_TYPE_CTYPE:
+           category = LC_CTYPE;
+           break;
+       case Accessibility_LOCALE_TYPE_MONETARY:
+           category = LC_MONETARY;
+           break;
+       case Accessibility_LOCALE_TYPE_NUMERIC:
+           category = LC_NUMERIC;
+           break;
+       case Accessibility_LOCALE_TYPE_MESSAGES:
+       default:
+           category = LC_MESSAGES;
+           break;
+    }
+    return CORBA_string_dup (setlocale (category, NULL));
+}
+
 static void
 impl_accessibility_application_register_toolkit_event_listener (PortableServer_Servant servant,
                                                                Accessibility_EventListener listener,
@@ -242,6 +271,7 @@ spi_application_class_init (SpiApplicationClass *klass)
   epv->_get_id = impl_accessibility_application_get_id;
   epv->_set_id = impl_accessibility_application_set_id;
   epv->registerToolkitEventListener = impl_accessibility_application_register_toolkit_event_listener;
+  epv->getLocale = impl_accessibility_application_get_locale;
   init_toolkit_names (&klass->generic_event_names, &klass->toolkit_event_names);
 }
 
@@ -254,11 +284,11 @@ spi_application_init (SpiApplication *application)
 
 BONOBO_TYPE_FUNC_FULL (SpiApplication,
                       Accessibility_Application,
-                      PARENT_TYPE, spi_application);
+                      PARENT_TYPE, spi_application)
 
 SpiApplication *
 spi_application_new (AtkObject *app_root)
 {
   return SPI_APPLICATION (spi_accessible_construct (
-       SPI_APPLICATION_TYPE, app_root));
+                         SPI_APPLICATION_TYPE, app_root));
 }