throbgress plugin: show messages in the top left corner

https://bugs.freedesktop.org/show_bug.cgi?id=50845
This commit is contained in:
Richard Hughes 2012-06-07 16:18:19 +01:00 committed by Ray Strode
parent 3c72dd09f2
commit e4a1a05e3c

View file

@ -79,6 +79,7 @@ typedef struct
ply_throbber_t *throbber;
ply_progress_bar_t *progress_bar;
ply_label_t *label;
ply_label_t *message_label;
ply_rectangle_t box_area, lock_area, logo_area, bar_area;
} view_t;
@ -122,6 +123,9 @@ view_new (ply_boot_splash_plugin_t *plugin,
"throbber-");
view->progress_bar = ply_progress_bar_new ();
view->label = ply_label_new ();
view->message_label = ply_label_new ();
ply_label_set_text (view->message_label, "");
ply_label_show (view->message_label, view->display, 10, 10);
return view;
}
@ -134,6 +138,7 @@ view_free (view_t *view)
ply_throbber_free (view->throbber);
ply_progress_bar_free (view->progress_bar);
ply_label_free (view->label);
ply_label_free (view->message_label);
free (view);
}
@ -596,6 +601,9 @@ on_draw (view_t *view,
ply_progress_bar_draw_area (view->progress_bar,
pixel_buffer, x, y, width, height);
}
ply_label_draw_area (view->message_label,
pixel_buffer,
x, y, width, height);
}
static void
@ -819,6 +827,28 @@ hide_prompt (ply_boot_splash_plugin_t *plugin)
}
}
static void
show_message (ply_boot_splash_plugin_t *plugin,
const char *message)
{
ply_trace ("Showing message '%s'", message);
ply_list_node_t *node;
node = ply_list_get_first_node (plugin->views);
while (node != NULL)
{
ply_list_node_t *next_node;
view_t *view;
view = ply_list_node_get_data (node);
next_node = ply_list_get_next_node (plugin->views, node);
ply_label_set_text (view->message_label, message);
ply_pixel_display_draw_area (view->display, 10, 10,
ply_label_get_width (view->message_label),
ply_label_get_height(view->message_label));
node = next_node;
}
}
static void
display_normal (ply_boot_splash_plugin_t *plugin)
{
@ -862,6 +892,13 @@ display_question (ply_boot_splash_plugin_t *plugin,
unpause_views (plugin);
}
static void
display_message (ply_boot_splash_plugin_t *plugin,
const char *message)
{
show_message (plugin, message);
}
ply_boot_splash_plugin_interface_t *
ply_boot_splash_plugin_get_interface (void)
{
@ -880,6 +917,7 @@ ply_boot_splash_plugin_get_interface (void)
.display_normal = display_normal,
.display_password = display_password,
.display_question = display_question,
.display_message = display_message,
};
return &plugin_interface;