X-Git-Url: http://git.ozlabs.org/?p=petitboot;a=blobdiff_plain;f=ui%2Fncurses%2Fnc-cui.c;h=6aa2a2869cf0b971c9e41fd6684cf4ba1f5838c5;hp=b734cdcd46c2bd2a6868cd8c25ba831568aa47a5;hb=7cd5a6642af076693874cce340607d712e35d423;hpb=d57d1c9c4cd7365063da7aa1f018736166bb3a50 diff --git a/ui/ncurses/nc-cui.c b/ui/ncurses/nc-cui.c index b734cdc..6aa2a28 100644 --- a/ui/ncurses/nc-cui.c +++ b/ui/ncurses/nc-cui.c @@ -34,6 +34,7 @@ #include "process/process.h" #include "ui/common/discover-client.h" #include "nc-cui.h" +#include "nc-sysinfo.h" static struct cui_opt_data *cod_from_item(struct pmenu_item *item) { @@ -236,6 +237,20 @@ void cui_item_new(struct pmenu *menu) cui_set_current(cui, &boot_editor->scr); } +static void cui_sysinfo_exit(struct cui *cui) +{ + cui_set_current(cui, &cui->main->scr); + talloc_free(cui->sysinfo_screen); + cui->sysinfo_screen = NULL; +} + +void cui_show_sysinfo(struct cui *cui) +{ + cui->sysinfo_screen = sysinfo_screen_init(cui, cui->sysinfo, + cui_sysinfo_exit); + cui_set_current(cui, sysinfo_screen_scr(cui->sysinfo_screen)); +} + /** * cui_set_current - Set the currently active screen and redraw it. */ @@ -506,15 +521,28 @@ static void cui_update_sysinfo(struct system_info *sysinfo, void *arg) { struct cui *cui = cui_from_arg(arg); cui->sysinfo = talloc_steal(cui, sysinfo); + + /* if we're currently displaying the system info screen, inform it + * of the updated information. */ + if (cui->sysinfo_screen) + sysinfo_screen_update(cui->sysinfo_screen, sysinfo); + cui_update_mm_title(cui); } +static void cui_update_config(struct config *config, void *arg) +{ + struct cui *cui = cui_from_arg(arg); + cui->config = talloc_steal(cui, config); +} + static struct discover_client_ops cui_client_ops = { .device_add = NULL, .boot_option_add = cui_boot_option_add, .device_remove = cui_device_remove, .update_status = cui_update_status, .update_sysinfo = cui_update_sysinfo, + .update_config = cui_update_config, }; /**