[gnome-packagekit] Show a GtkInfoBar explaining if updates have been held back and an incomplete update list is shown
- From: Richard Hughes <rhughes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-packagekit] Show a GtkInfoBar explaining if updates have been held back and an incomplete update list is shown
- Date: Sun, 11 Apr 2010 08:09:00 +0000 (UTC)
commit e9f25bcf9d0135660d8c547cb7cd7a08c57b5573
Author: Richard Hughes <richard hughsie com>
Date: Sun Apr 11 09:08:26 2010 +0100
Show a GtkInfoBar explaining if updates have been held back and an incomplete update list is shown
src/gpk-update-viewer.c | 61 +++++++++++++++++++++++++++++++++-------------
1 files changed, 44 insertions(+), 17 deletions(-)
---
diff --git a/src/gpk-update-viewer.c b/src/gpk-update-viewer.c
index 376475f..a073e0f 100644
--- a/src/gpk-update-viewer.c
+++ b/src/gpk-update-viewer.c
@@ -71,8 +71,9 @@ struct GpkUpdateViewerPrivate
PkControl *control;
PkRestartEnum restart_update;
PkTask *task;
- GtkWidget *info_bar;
- GtkWidget *info_bar_label;
+ GtkWidget *info_updates;
+ GtkWidget *info_mobile;
+ GtkWidget *info_mobile_label;
};
enum {
@@ -1284,7 +1285,7 @@ gpk_update_viewer_check_mobile_broadband (GpkUpdateViewer *update_viewer)
NULL);
/* hide by default */
- gtk_widget_hide (priv->info_bar);
+ gtk_widget_hide (priv->info_mobile);
/* not on wireless mobile */
if (state != PK_NETWORK_ENUM_MOBILE)
@@ -1305,10 +1306,10 @@ gpk_update_viewer_check_mobile_broadband (GpkUpdateViewer *update_viewer)
message = ngettext ("Connectivity is being provided by wireless broadband, and it may be expensive to update this package.",
"Connectivity is being provided by wireless broadband, and it may be expensive to update these packages.",
priv->number_total);
- gtk_label_set_label (GTK_LABEL(priv->info_bar_label), message);
+ gtk_label_set_label (GTK_LABEL(priv->info_mobile_label), message);
- gtk_info_bar_set_message_type (GTK_INFO_BAR(priv->info_bar), GTK_MESSAGE_WARNING);
- gtk_widget_show (priv->info_bar);
+ gtk_info_bar_set_message_type (GTK_INFO_BAR(priv->info_mobile), GTK_MESSAGE_WARNING);
+ gtk_widget_show (priv->info_mobile);
out:
return;
}
@@ -2553,7 +2554,10 @@ gpk_update_viewer_get_updates_cb (PkClient *client, GAsyncResult *res, GpkUpdate
PkPackageSack *sack = NULL;
GError *error = NULL;
GPtrArray *array = NULL;
+ GPtrArray *array_messages = NULL;
PkPackage *item;
+ PkMessage *message;
+ PkMessageEnum message_type;
gchar *text = NULL;
gboolean selected;
GtkTreeIter iter;
@@ -2591,6 +2595,17 @@ gpk_update_viewer_get_updates_cb (PkClient *client, GAsyncResult *res, GpkUpdate
goto out;
}
+ /* do we have any important messages we need to show? */
+ array_messages = pk_results_get_message_array (results);
+ for (i=0; i<array_messages->len; i++) {
+ message = g_ptr_array_index (array, i);
+ g_object_get (message,
+ "type", &message_type,
+ NULL);
+ if (message_type == PK_MESSAGE_ENUM_OTHER_UPDATES_HELD_BACK)
+ gtk_widget_show (priv->info_mobile);
+ }
+
/* get data */
sack = pk_results_get_package_sack (results);
pk_package_sack_sort (sack, PK_PACKAGE_SACK_SORT_TYPE_NAME);
@@ -2676,6 +2691,8 @@ out:
g_object_unref (error_code);
if (array != NULL)
g_ptr_array_unref (array);
+ if (array_messages != NULL)
+ g_ptr_array_unref (array_messages);
if (sack != NULL)
g_object_unref (sack);
if (results != NULL)
@@ -3093,6 +3110,7 @@ gpk_update_viewer_init (GpkUpdateViewer *update_viewer)
{
GtkWidget *main_window;
GtkWidget *widget;
+ GtkWidget *label;
GtkTreeSelection *selection;
gboolean ret;
guint retval;
@@ -3244,20 +3262,29 @@ gpk_update_viewer_init (GpkUpdateViewer *update_viewer)
widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "label_info"));
gtk_widget_set_size_request (widget, -1, 32);
- /* add info bar: TODO, fix glade to put this in the ui file */
- priv->info_bar = gtk_info_bar_new ();
- gtk_widget_set_no_show_all (priv->info_bar, TRUE);
+ /* add info bars: TODO, fix glade to put these in the ui file */
+ priv->info_mobile = gtk_info_bar_new ();
+ gtk_widget_set_no_show_all (priv->info_mobile, TRUE);
+ priv->info_updates = gtk_info_bar_new ();
+ gtk_widget_set_no_show_all (priv->info_updates, TRUE);
/* pack label into infobar */
- priv->info_bar_label = gtk_label_new ("");
- widget = gtk_info_bar_get_content_area (GTK_INFO_BAR(priv->info_bar));
- gtk_container_add (GTK_CONTAINER(widget), priv->info_bar_label);
- gtk_widget_show (priv->info_bar_label);
-
- /* pack infobar into main UI */
+ priv->info_mobile_label = gtk_label_new ("");
+ widget = gtk_info_bar_get_content_area (GTK_INFO_BAR(priv->info_mobile));
+ gtk_container_add (GTK_CONTAINER(widget), priv->info_mobile_label);
+ gtk_widget_show (priv->info_mobile_label);
+
+ /* TRANSLATORS: this is when some updates are not being shown as other packages need updating first */
+ label = gtk_label_new (_("Other updates are held back as some important system packages need to be installed first."));
+ widget = gtk_info_bar_get_content_area (GTK_INFO_BAR(priv->info_updates));
+ gtk_container_add (GTK_CONTAINER(widget), label);
+ gtk_widget_show (label);
+
+ /* pack infobars into main UI */
widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "vbox1"));
- gtk_box_pack_start (GTK_BOX(widget), priv->info_bar, FALSE, FALSE, 3);
- gtk_box_reorder_child (GTK_BOX(widget), priv->info_bar, 1);
+ gtk_box_pack_start (GTK_BOX(widget), priv->info_mobile, FALSE, FALSE, 3);
+ gtk_box_reorder_child (GTK_BOX(widget), priv->info_mobile, 1);
+ gtk_box_pack_start (GTK_BOX(widget), priv->info_updates, FALSE, FALSE, 3);
/* show window */
gtk_widget_show (main_window);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]