4 Eina_Bool screen_reader_switch_enabled_get(Eina_Bool * value)
6 Eldbus_Connection *conn;
9 Eldbus_Message *req, *reply;
10 const char *errname = NULL, *errmsg = NULL;
11 Eina_Bool ret = EINA_FALSE;
12 Eldbus_Message_Iter *iter;
16 if (!(conn = eldbus_connection_get(ELDBUS_CONNECTION_TYPE_SESSION))) {
17 ERROR("Connection to session bus failed");
20 if (!(dobj = eldbus_object_get(conn, "org.a11y.Bus", "/org/a11y/bus"))) {
21 ERROR("Failed to create eldbus object for /org/a11y/bus");
24 if (!(proxy = eldbus_proxy_get(dobj, "org.freedesktop.DBus.Properties"))) {
25 ERROR("Failed to create proxy object for 'org.freedesktop.DBus.Properties'");
28 if (!(req = eldbus_proxy_method_call_new(proxy, "Get"))) {
29 ERROR("Failed to create method call on org.freedesktop.DBus.Properties.Get");
32 eldbus_message_ref(req);
34 if (!eldbus_message_arguments_append(req, "ss", "org.a11y.Status", "ScreenReaderEnabled")) {
35 ERROR("Failed to append message args");
39 reply = eldbus_proxy_send_and_block(proxy, req, 100);
40 if (!reply || eldbus_message_error_get(reply, &errname, &errmsg)) {
41 ERROR("Unable to call method org.freedesktop.DBus.Properties.Get: %s %s", errname, errmsg);
45 if (!eldbus_message_arguments_get(reply, "v", &iter)) {
46 ERROR("Invalid answer signature");
49 if (!eldbus_message_iter_arguments_get(iter, "b", value)) {
50 ERROR("Invalid variant signature");
56 eldbus_message_unref(req);
58 eldbus_object_unref(dobj);
60 eldbus_connection_unref(conn);
67 Eina_Bool screen_reader_switch_enabled_set(Eina_Bool value)
69 Eldbus_Connection *conn;
74 Eina_Bool ret = EINA_FALSE;
75 Eldbus_Message_Iter *iter;
79 if (!(conn = eldbus_connection_get(ELDBUS_CONNECTION_TYPE_SESSION))) {
80 ERROR("Connection to session bus failed");
83 if (!(dobj = eldbus_object_get(conn, "org.a11y.Bus", "/org/a11y/bus"))) {
84 ERROR("Failed to create eldbus object");
87 if (!(proxy = eldbus_proxy_get(dobj, "org.freedesktop.DBus.Properties"))) {
88 ERROR("Failed to create proxy object for 'org.freedesktop.DBus.Properties'");
91 if (!(req = eldbus_proxy_method_call_new(proxy, "Set"))) {
92 ERROR("Failed to create method call on org.freedesktop.DBus.Properties.Set");
95 eldbus_message_ref(req);
97 if (!eldbus_message_arguments_append(req, "ss", "org.a11y.Status", "ScreenReaderEnabled")) {
98 ERROR("Failed to append message args");
101 if (!(iter = eldbus_message_iter_container_new(eldbus_message_iter_get(req), 'v', "b"))) {
102 ERROR("Unable to create variant iterator");
105 if (!eldbus_message_iter_arguments_append(iter, "b", value)) {
106 ERROR("Unable to append to variant iterator");
109 if (!eldbus_message_iter_container_close(eldbus_message_iter_get(req), iter)) {
110 ERROR("Failed to close variant iterator");
113 eldbus_proxy_send(proxy, req, NULL, NULL, -1.0);
117 eldbus_message_unref(req);
119 eldbus_object_unref(dobj);
121 eldbus_connection_unref(conn);