summaryrefslogtreecommitdiffstats
path: root/src/eulogium.c
diff options
context:
space:
mode:
authorOlliver Schinagl <o.schinagl@ultimaker.com>2015-04-29 13:35:35 (GMT)
committerOlliver Schinagl <o.schinagl@ultimaker.com>2015-04-29 13:35:35 (GMT)
commit1e4dca9a56f4881fe5d73a7fb5f2c020428fc5d7 (patch)
tree653ae1b6b81b6cb405d5d9c0a30e78363ad4efff /src/eulogium.c
parent05c3a1d3403ac0187ebdd7b08455832bda0055d1 (diff)
downloadeulogium-1e4dca9a56f4881fe5d73a7fb5f2c020428fc5d7.zip
eulogium-1e4dca9a56f4881fe5d73a7fb5f2c020428fc5d7.tar.gz
eulogium-1e4dca9a56f4881fe5d73a7fb5f2c020428fc5d7.tar.bz2
Add error printing if the printer is in an error state, open the option for an error dialog
Signed-off-by: Olliver Schinagl <o.schinagl@ultimaker.com>
Diffstat (limited to '')
-rw-r--r--src/eulogium.c27
1 files changed, 23 insertions, 4 deletions
diff --git a/src/eulogium.c b/src/eulogium.c
index b7ecf50..c7631bb 100644
--- a/src/eulogium.c
+++ b/src/eulogium.c
@@ -990,15 +990,34 @@ static void on_name_owner_changed(void *data EINA_UNUSED, const char *bus, const
printf("Bus=%s | old=%s | new=%s\n", bus, old_id, new_id);
}
+static void _on_get_error_ret(void *data EINA_UNUSED, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED)
+{
+ const char *errname, *errmsg, *errormsg;
+
+ if (eldbus_message_error_get(msg, &errname, &errmsg)) {
+ EINA_LOG_ERR("%s %s", errname, errmsg);
+ return;
+ }
+ if (eldbus_message_arguments_get(msg, "s", &errormsg)) {
+ EINA_LOG_ERR("Failed to get error message.");
+ return;
+ }
+ EINA_LOG_ERR("%s", errormsg);
+ /* TODO Call generic error screen in case of trouble here? */
+}
+
struct _status_msg {
int16_t i;
char *s;
};
-static void eulogium_printer_status_set(struct printer_data *printer, struct _status_msg *status)
+static void eulogium_printer_status_set(struct eulogium_data *eulogium, struct _status_msg *status)
{
EINA_LOG_INFO("Printer status: %s", status->s);
- printer->status = status->i;
+ eulogium->printer.status = status->i;
+
+ if (eulogium->printer.status == ERROR)
+ eldbus_proxy_call(eulogium->dbus.proxy[PRINTER], "getError", _on_get_error_ret, eulogium, -1, "");
}
static void _on_get_status_ret(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED)
@@ -1012,7 +1031,7 @@ static void _on_get_status_ret(void *data, const Eldbus_Message *msg, Eldbus_Pen
} else if (eldbus_message_arguments_get(msg, "(ns)", &status)) {
EINA_LOG_ERR("Failed to get printer status.");
} else {
- eulogium_printer_status_set(&eulogium->printer, &status);
+ eulogium_printer_status_set(eulogium, &status);
}
}
@@ -1027,7 +1046,7 @@ static void _on_status_changed_ret(void *data, const Eldbus_Message *msg)
} else if (eldbus_message_arguments_get(msg, "(ns)", &status)) {
EINA_LOG_ERR("Failed to get printer status.");
} else {
- eulogium_printer_status_set(&eulogium->printer, &status);
+ eulogium_printer_status_set(eulogium, &status);
}
}