X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=atk-adaptor%2Fvalue-adaptor.c;h=4c0c8d826a0087a437cd065c7bbccb158c103781;hb=be85f6679837d731b2008cb3b0c485c03b661cad;hp=5618e61d8c6bc2421ea94a833c6ea4fab149b182;hpb=c5f078cefdda19b9b4a5e450c9e96855d2f12893;p=platform%2Fcore%2Fuifw%2Fat-spi2-atk.git diff --git a/atk-adaptor/value-adaptor.c b/atk-adaptor/value-adaptor.c index 5618e61..4c0c8d8 100644 --- a/atk-adaptor/value-adaptor.c +++ b/atk-adaptor/value-adaptor.c @@ -29,210 +29,136 @@ #include "spi-common/spi-dbus.h" -static double -get_double_from_gvalue (GValue * gvalue) +static dbus_bool_t +impl_get_minimumValue (DBusMessageIter * iter, + void *user_data) { - double retval = 0; - if (G_TYPE_IS_FUNDAMENTAL (G_VALUE_TYPE (gvalue))) + AtkValue *value = (AtkValue *) user_data; + GValue src = {0}; + GValue dest = {0}; + gdouble dub; + + g_return_val_if_fail (ATK_IS_VALUE (user_data), FALSE); + + atk_value_get_minimum_value (value, &src); + g_value_init (&dest, G_TYPE_DOUBLE); + + if (g_value_transform (&src, &dest)) { - switch (gvalue->g_type) - { - case G_TYPE_DOUBLE: - retval = g_value_get_double (gvalue); - break; - case G_TYPE_FLOAT: - retval = g_value_get_float (gvalue); - break; - case G_TYPE_ULONG: - retval = g_value_get_ulong (gvalue); - break; - case G_TYPE_LONG: - retval = g_value_get_long (gvalue); - break; - case G_TYPE_UINT: - retval = g_value_get_uint (gvalue); - break; - case G_TYPE_INT: - retval = g_value_get_int (gvalue); - break; - case G_TYPE_UCHAR: - retval = g_value_get_uchar (gvalue); - break; - case G_TYPE_CHAR: - retval = g_value_get_char (gvalue); - break; - case G_TYPE_BOOLEAN: - retval = g_value_get_boolean (gvalue); - break; - } + dub = g_value_get_double (&dest); + dbus_message_iter_append_basic (iter, DBUS_TYPE_DOUBLE, &dub); + return TRUE; } else { - g_warning ("SpiValue requested from a non-fundamental type\n"); + return FALSE; } - return retval; } -static gboolean -get_double_from_variant (DBusMessageIter * iter, double *out) +static dbus_bool_t +impl_get_maximumValue (DBusMessageIter * iter, + void *user_data) { - DBusMessageIter sub; + AtkValue *value = (AtkValue *) user_data; + GValue src = {0}; + GValue dest = {0}; + gdouble dub; - dbus_message_iter_recurse (iter, &sub); - switch (dbus_message_iter_get_arg_type (&sub)) - { - case DBUS_TYPE_DOUBLE: - { - dbus_message_iter_get_basic (&sub, out); - return TRUE; - } - case DBUS_TYPE_UINT32: - { - dbus_uint32_t v; - dbus_message_iter_get_basic (&sub, &v); - *out = (double) v; - return TRUE; - } - case DBUS_TYPE_INT32: - { - dbus_int32_t v; - dbus_message_iter_get_basic (&sub, &v); - *out = (double) v; - return TRUE; - } - case DBUS_TYPE_UINT16: - { - dbus_uint16_t v; - dbus_message_iter_get_basic (&sub, &v); - *out = (double) v; - return TRUE; - } - case DBUS_TYPE_INT16: - { - dbus_int16_t v; - dbus_message_iter_get_basic (&sub, &v); - *out = (double) v; - return TRUE; - } - case DBUS_TYPE_BYTE: - { - char v; - dbus_message_iter_get_basic (&sub, &v); - *out = (double) v; - return TRUE; - } - case DBUS_TYPE_BOOLEAN: - { - dbus_bool_t v; - dbus_message_iter_get_basic (&sub, &v); - *out = (double) v; - return TRUE; - } - default: - return FALSE; - } -} + g_return_val_if_fail (ATK_IS_VALUE (user_data), FALSE); -static void -gvalue_set_from_double (GValue * gvalue, double value) -{ - if (G_TYPE_IS_FUNDAMENTAL (G_VALUE_TYPE (gvalue))) + atk_value_get_maximum_value (value, &src); + g_value_init (&dest, G_TYPE_DOUBLE); + + if (g_value_transform (&src, &dest)) { - switch (gvalue->g_type) - { - case G_TYPE_DOUBLE: - g_value_set_double (gvalue, value); - break; - case G_TYPE_FLOAT: - g_value_set_float (gvalue, value); - break; - case G_TYPE_ULONG: - g_value_set_ulong (gvalue, value); - break; - case G_TYPE_LONG: - g_value_set_long (gvalue, value); - break; - case G_TYPE_UINT: - g_value_set_uint (gvalue, value); - break; - case G_TYPE_INT: - g_value_set_int (gvalue, value); - break; - case G_TYPE_UCHAR: - g_value_set_uchar (gvalue, value); - break; - case G_TYPE_CHAR: - g_value_set_char (gvalue, value); - break; - case G_TYPE_BOOLEAN: - g_value_set_boolean (gvalue, ((fabs (value) > 0.5) ? 1 : 0)); - break; - } + dub = g_value_get_double (&dest); + dbus_message_iter_append_basic (iter, DBUS_TYPE_DOUBLE, &dub); + return TRUE; } else { - g_warning ("SpiValue change requested for a non-fundamental type\n"); + return FALSE; } } static dbus_bool_t -impl_get_minimumValue (DBusMessageIter * iter, - void *user_data) +impl_get_minimumIncrement (DBusMessageIter * iter, + void *user_data) { AtkValue *value = (AtkValue *) user_data; - GValue gvalue = { 0, }; - g_return_val_if_fail (ATK_IS_VALUE (user_data), FALSE); - atk_value_get_minimum_value (value, &gvalue); - return droute_return_v_double (iter, get_double_from_gvalue (&gvalue)); -} + GValue src = {0}; + GValue dest = {0}; + gdouble dub; -static dbus_bool_t -impl_get_maximumValue (DBusMessageIter * iter, - void *user_data) -{ - AtkValue *value = (AtkValue *) user_data; - GValue gvalue = { 0, }; g_return_val_if_fail (ATK_IS_VALUE (user_data), FALSE); - atk_value_get_maximum_value (value, &gvalue); - return droute_return_v_double (iter, get_double_from_gvalue (&gvalue)); -} -static dbus_bool_t -impl_get_minimumIncrement (DBusMessageIter * iter, - void *user_data) -{ - AtkValue *value = (AtkValue *) user_data; - GValue gvalue = { 0, }; - g_return_val_if_fail (ATK_IS_VALUE (user_data), FALSE); - atk_value_get_minimum_value (value, &gvalue); - return droute_return_v_double (iter, get_double_from_gvalue (&gvalue)); + atk_value_get_minimum_increment (value, &src); + g_value_init (&dest, G_TYPE_DOUBLE); + + if (g_value_transform (&src, &dest)) + { + dub = g_value_get_double (&dest); + dbus_message_iter_append_basic (iter, DBUS_TYPE_DOUBLE, &dub); + return TRUE; + } + else + { + return FALSE; + } } static dbus_bool_t impl_get_currentValue (DBusMessageIter * iter, - void *user_data) + void *user_data) { AtkValue *value = (AtkValue *) user_data; - GValue gvalue = { 0, }; + GValue src = {0}; + GValue dest = {0}; + gdouble dub; + g_return_val_if_fail (ATK_IS_VALUE (user_data), FALSE); - atk_value_get_current_value (value, &gvalue); - return droute_return_v_double (iter, get_double_from_gvalue (&gvalue)); + + atk_value_get_current_value (value, &src); + g_value_init (&dest, G_TYPE_DOUBLE); + + if (g_value_transform (&src, &dest)) + { + dub = g_value_get_double (&dest); + dbus_message_iter_append_basic (iter, DBUS_TYPE_DOUBLE, &dub); + return TRUE; + } + else + { + return FALSE; + } } static dbus_bool_t impl_set_currentValue (DBusMessageIter * iter, - void *user_data) + void *user_data) { AtkValue *value = (AtkValue *) user_data; - GValue gvalue = { 0, }; - double dbl; + GValue src = {0}; + GValue dest = {0}; + gdouble dub; g_return_val_if_fail (ATK_IS_VALUE (user_data), FALSE); - if (!get_double_from_variant (iter, &dbl)) - return FALSE; - atk_value_get_current_value (value, &gvalue); - gvalue_set_from_double (&gvalue, dbl); - return TRUE; + + dbus_message_iter_get_basic (iter, &dub); + g_value_init (&src, G_TYPE_DOUBLE); + g_value_set_double (&src, dub); + + atk_value_get_current_value (value, &dest); + + if (g_value_transform (&src, &dest)) + { + atk_value_set_current_value (value, &dest); + return TRUE; + } + else + { + return FALSE; + } } static DRouteProperty properties[] = {