diff options
author | Olliver Schinagl <o.schinagl@ultimaker.com> | 2015-04-29 13:35:35 (GMT) |
---|---|---|
committer | Olliver Schinagl <o.schinagl@ultimaker.com> | 2015-04-29 13:35:35 (GMT) |
commit | 1e4dca9a56f4881fe5d73a7fb5f2c020428fc5d7 (patch) | |
tree | 653ae1b6b81b6cb405d5d9c0a30e78363ad4efff /src/eulogium.c | |
parent | 05c3a1d3403ac0187ebdd7b08455832bda0055d1 (diff) | |
download | eulogium-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.c | 27 |
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); } } |