[gnome-packagekit/glib2: 79/79] moo



commit 286b7a0122fdbeee4b5342244fba245bb15bb9ea
Author: Richard Hughes <richard hughsie com>
Date:   Mon Oct 5 17:39:23 2009 +0100

    moo

 src/gpk-common.c        |    9 ++-
 src/gpk-update-viewer.c |  161 +++++++++++++----------------------------------
 2 files changed, 50 insertions(+), 120 deletions(-)
---
diff --git a/src/gpk-common.c b/src/gpk-common.c
index 472e232..c713c6f 100644
--- a/src/gpk-common.c
+++ b/src/gpk-common.c
@@ -289,14 +289,18 @@ gchar *
 gpk_package_id_format_twoline (const gchar *package_id, const gchar *summary)
 {
 	gchar *summary_safe;
-	gchar *text;
+	gchar *text = NULL;
 	GString *string;
-	gchar **split;
+	gchar **split = NULL;
 
 	g_return_val_if_fail (package_id != NULL, NULL);
 
 	/* optional */
 	split = pk_package_id_split (package_id);
+	if (split == NULL) {
+		egg_warning ("could not parse %s", package_id);
+		goto out;
+	}
 	if (summary == NULL || summary[PK_PACKAGE_ID_NAME] == '\0') {
 		string = g_string_new (split[PK_PACKAGE_ID_NAME]);
 	} else {
@@ -313,6 +317,7 @@ gpk_package_id_format_twoline (const gchar *package_id, const gchar *summary)
 		g_string_append_printf (string, " (%s)", split[PK_PACKAGE_ID_ARCH]);
 
 	text = g_string_free (string, FALSE);
+out:
 	g_strfreev (split);
 	return text;
 }
diff --git a/src/gpk-update-viewer.c b/src/gpk-update-viewer.c
index 231efd4..7b70c71 100644
--- a/src/gpk-update-viewer.c
+++ b/src/gpk-update-viewer.c
@@ -611,11 +611,12 @@ gpk_update_viewer_find_iter_model_cb (GtkTreeModel *model, GtkTreePath *path, Gt
  * gpk_update_viewer_model_get_path:
  **/
 static GtkTreePath *
-gpk_update_viewer_model_get_path (GtkTreeModel *model, const gchar *id)
+gpk_update_viewer_model_get_path (GtkTreeModel *model, const gchar *package_id)
 {
 	GtkTreePath *path = NULL;
+	g_return_val_if_fail (package_id != NULL, NULL);
 	g_object_set_data (G_OBJECT(model), "_path", (gpointer) &path);
-	gtk_tree_model_foreach (model, (GtkTreeModelForeachFunc) gpk_update_viewer_find_iter_model_cb, (gpointer) id);
+	gtk_tree_model_foreach (model, (GtkTreeModelForeachFunc) gpk_update_viewer_find_iter_model_cb, (gpointer) package_id);
 	g_object_steal_data (G_OBJECT(model), "_path");
 	return path;
 }
@@ -633,6 +634,7 @@ gpk_update_viewer_progress_cb (PkProgress *progress, PkProgressType type, GMainL
 	gchar *package_id;
 	GtkWidget *widget;
 	PkInfoEnum info = PK_INFO_ENUM_UNKNOWN;
+	gchar *text;
 
 	g_object_get (progress,
 		      "status", &status,
@@ -662,8 +664,29 @@ gpk_update_viewer_progress_cb (PkProgress *progress, PkProgressType type, GMainL
 		/* update icon */
 		path = gpk_update_viewer_model_get_path (model, package_id);
 		if (path == NULL) {
-			egg_debug ("not found ID for package");
-			goto out;
+			text = gpk_package_id_format_twoline (package_id, NULL); //TODO: summary
+			egg_debug ("adding: id=%s, text=%s", package_id, text);
+			gtk_list_store_append (array_store_updates, &iter);
+			gtk_list_store_set (array_store_updates, &iter,
+					    GPK_UPDATES_COLUMN_TEXT, text,
+					    GPK_UPDATES_COLUMN_ID, package_id,
+					    GPK_UPDATES_COLUMN_INFO, PK_INFO_ENUM_NORMAL, //TODO info
+					    GPK_UPDATES_COLUMN_SELECT, TRUE,
+					    GPK_UPDATES_COLUMN_SENSITIVE, FALSE,
+					    GPK_UPDATES_COLUMN_CLICKABLE, FALSE,
+					    GPK_UPDATES_COLUMN_RESTART, PK_RESTART_ENUM_NONE,
+					    GPK_UPDATES_COLUMN_STATUS, PK_INFO_ENUM_UNKNOWN,
+					    GPK_UPDATES_COLUMN_SIZE, 0,
+					    GPK_UPDATES_COLUMN_SIZE_DISPLAY, 0,
+					    GPK_UPDATES_COLUMN_PERCENTAGE, 0,
+					    GPK_UPDATES_COLUMN_PULSE, -1,
+					    -1);
+			g_free (text);
+			path = gpk_update_viewer_model_get_path (model, package_id);
+			if (path == NULL) {
+				egg_warning ("found no package %s", package_id);
+				goto out;
+			}
 		}
 
 		gtk_tree_model_get_iter (model, &iter, path);
@@ -688,15 +711,10 @@ gpk_update_viewer_progress_cb (PkProgress *progress, PkProgressType type, GMainL
 
 		gtk_tree_path_free (path);
 
-		/* set package description */
-		//widget = GTK_WIDGET (gtk_builder_get_object (builder, "label_package"));
-		//gtk_label_set_label (GTK_LABEL (widget), item->summary);
-
-
 	} else if (type == PK_PROGRESS_TYPE_STATUS) {
 
 		GdkWindow *window;
-		const gchar *text;
+		const gchar *title;
 		GdkDisplay *display;
 		GdkCursor *cursor;
 
@@ -719,44 +737,33 @@ gpk_update_viewer_progress_cb (PkProgress *progress, PkProgressType type, GMainL
 			gdk_cursor_unref (cursor);
 		}
 
-		/* clear package */
-		if (status == PK_STATUS_ENUM_WAIT) {
-			widget = GTK_WIDGET (gtk_builder_get_object (builder, "label_package"));
-			gtk_label_set_label (GTK_LABEL (widget), "");
-		}
-
 		/* set status */
 		widget = GTK_WIDGET (gtk_builder_get_object (builder, "label_status"));
 		if (status == PK_STATUS_ENUM_FINISHED) {
 			gtk_label_set_label (GTK_LABEL (widget), "");
 			widget = GTK_WIDGET (gtk_builder_get_object (builder, "image_progress"));
 			gtk_widget_hide (widget);
-		}
-		if (status == PK_STATUS_ENUM_QUERY || status == PK_STATUS_ENUM_SETUP) {
-			/* TRANSLATORS: querying update array */
-			text = _("Getting the array of updates");
-		} else {
-			text = gpk_status_enum_to_localised_text (status);
-		}
-
-		/* set label */
-		gtk_label_set_label (GTK_LABEL (widget), text);
-		widget = GTK_WIDGET (gtk_builder_get_object (builder, "image_progress"));
-
-		/* set icon */
-		gtk_image_set_from_icon_name (GTK_IMAGE (widget), gpk_status_enum_to_icon_name (status), GTK_ICON_SIZE_BUTTON);
-		gtk_widget_show (widget);
-
-		/* clear UI */
-		if (status == PK_STATUS_ENUM_FINISHED) {
-			widget = GTK_WIDGET (gtk_builder_get_object (builder, "label_package"));
-			gtk_label_set_label (GTK_LABEL (widget), "");
 
 			widget = GTK_WIDGET (gtk_builder_get_object (builder, "progressbar_progress"));
 			gtk_widget_hide (widget);
 
 			widget = GTK_WIDGET (gtk_builder_get_object (builder, "button_quit"));
 			gtk_widget_set_sensitive (widget, TRUE);
+		} else {
+			if (status == PK_STATUS_ENUM_QUERY || status == PK_STATUS_ENUM_SETUP) {
+				/* TRANSLATORS: querying update array */
+				title = _("Getting the list of updates");
+			} else if (status == PK_STATUS_ENUM_WAIT) {
+				title = "";
+			} else {
+				title = gpk_status_enum_to_localised_text (status);
+			}
+			gtk_label_set_label (GTK_LABEL (widget), title);
+
+			/* set icon */
+			widget = GTK_WIDGET (gtk_builder_get_object (builder, "image_progress"));
+			gtk_image_set_from_icon_name (GTK_IMAGE (widget), gpk_status_enum_to_icon_name (status), GTK_ICON_SIZE_BUTTON);
+			gtk_widget_show (widget);
 		}
 
 	} else if (type == PK_PROGRESS_TYPE_PERCENTAGE) {
@@ -1706,88 +1713,6 @@ out:
 		g_object_unref (results);
 }
 
-#if 0
-/**
- * gpk_update_viewer_deps_update_event_cb:
- **/
-static void
-gpk_update_viewer_deps_update_event_cb (gpointer *helper, GtkResponseType type, GPtrArray *deps_array, gpointer data)
-{
-	GtkTreeView *treeview;
-	GtkTreeModel *model;
-	gboolean valid;
-	GtkTreeIter iter;
-	gchar *package_id;
-	gchar *package_id_temp;
-	guint len;
-	guint i;
-	gboolean found;
-	gchar *text;
-	const PkItemPackage *item;
-
-	/* get model */
-	treeview = GTK_TREE_VIEW (gtk_builder_get_object (builder, "treeview_updates"));
-	model = gtk_tree_view_get_model (treeview);
-
-	/* need to select or add packages in deps_array */
-	len = deps_array->len;
-	for (i=0; i<len; i++) {
-		item = g_ptr_array_index (deps_array, i);
-		found = FALSE;
-
-		/* find it and select it */
-		valid = gtk_tree_model_get_iter_first (model, &iter);
-		while (valid && !found) {
-			gtk_tree_model_get (model, &iter, GPK_UPDATES_COLUMN_ID, &package_id_temp, -1);
-
-			/* we found a match */
-			if (g_strcmp0 (package_id_temp, item->package_id)) {
-				egg_debug ("selecting %s", item->package_id);
-				gtk_list_store_set (GTK_LIST_STORE (model), &iter,
-						    GPK_UPDATES_COLUMN_SELECT, TRUE, -1);
-				found = TRUE;
-			}
-
-			g_free (package_id_temp);
-			valid = gtk_tree_model_iter_next (model, &iter);
-		}
-
-		/* not found, so add */
-		if (!found) {
-			text = gpk_package_id_format_twoline (item->package_id, item->summary);
-			egg_debug ("adding: id=%s, text=%s", item->package_id, text);
-			gtk_list_store_append (array_store_updates, &iter);
-			gtk_list_store_set (array_store_updates, &iter,
-					    GPK_UPDATES_COLUMN_TEXT, text,
-					    GPK_UPDATES_COLUMN_ID, item->package_id,
-					    GPK_UPDATES_COLUMN_INFO, item->info,
-					    GPK_UPDATES_COLUMN_SELECT, TRUE,
-					    GPK_UPDATES_COLUMN_SENSITIVE, FALSE,
-					    GPK_UPDATES_COLUMN_CLICKABLE, FALSE,
-					    GPK_UPDATES_COLUMN_RESTART, PK_RESTART_ENUM_NONE,
-					    GPK_UPDATES_COLUMN_STATUS, PK_INFO_ENUM_UNKNOWN,
-					    GPK_UPDATES_COLUMN_SIZE, 0,
-					    GPK_UPDATES_COLUMN_SIZE_DISPLAY, 0,
-					    GPK_UPDATES_COLUMN_PERCENTAGE, 0,
-					    GPK_UPDATES_COLUMN_PULSE, -1,
-					    -1);
-			g_free (text);
-			g_free (package_id);
-		}
-	}
-
-	/* if there are no entries selected, deselect the button */
-	gpk_update_viewer_reconsider_info (model);
-
-	/* actually install packages this time */
-	pk_task_update_packages_async (task, install_package_ids, cancellable,
-				       (PkProgressCallback) gpk_update_viewer_progress_cb, NULL,
-				       (GAsyncReadyCallback) gpk_update_viewer_update_packages_cb, loop);
-out:
-	return;
-}
-#endif
-
 /**
  * gpk_update_viewer_repo_array_changed_cb:
  **/



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]