/** * pk_offline_update_progress_cb: **/ static void pk_offline_update_progress_cb (PkProgress *progress, PkProgressType type, gpointer user_data) { gchar *msg = NULL; gint percentage; PkInfoEnum info; PkPackage *pkg = NULL; PkProgressBar *progressbar = PK_PROGRESS_BAR (user_data); switch (type) { case PK_PROGRESS_TYPE_ROLE: pk_progress_bar_start (progressbar, "Updating system"); break; case PK_PROGRESS_TYPE_PACKAGE: g_object_get (progress, "package", &pkg, NULL); info = pk_package_get_info (pkg); if (info == PK_INFO_ENUM_UPDATING) { msg = g_strdup_printf ("Updating %s", pk_package_get_name (pkg)); pk_progress_bar_start (progressbar, msg); } else if (info == PK_INFO_ENUM_INSTALLING) { msg = g_strdup_printf ("Installing %s", pk_package_get_name (pkg)); pk_progress_bar_start (progressbar, msg); } else if (info == PK_INFO_ENUM_REMOVING) { msg = g_strdup_printf ("Removing %s", pk_package_get_name (pkg)); pk_progress_bar_start (progressbar, msg); } break; case PK_PROGRESS_TYPE_PERCENTAGE: g_object_get (progress, "percentage", &percentage, NULL); if (percentage < 0) goto out; /* print on terminal */ pk_progress_bar_set_percentage (progressbar, percentage); /* update plymouth */ pk_offline_update_set_plymouth_percentage (percentage); break; default: break; } out: if (pkg != NULL) g_object_unref (pkg); g_free (msg); }
/** * pk_debuginfo_install_progress_cb: **/ static void pk_debuginfo_install_progress_cb (PkProgress *progress, PkProgressType type, PkDebuginfoInstallPrivate *priv) { gint percentage; gchar *package_id = NULL; if (type == PK_PROGRESS_TYPE_PERCENTAGE) { g_object_get (progress, "percentage", &percentage, NULL); pk_progress_bar_set_percentage (priv->progress_bar, percentage); goto out; } if (type == PK_PROGRESS_TYPE_PACKAGE_ID) { g_object_get (progress, "package-id", &package_id, NULL); g_debug ("now downloading %s", package_id); goto out; } out: g_free (package_id); }
/** * pk_generate_pack_progress_cb: **/ static void pk_generate_pack_progress_cb (PkProgress *progress, PkProgressType type, gpointer data) { gint percentage; PkRoleEnum role; PkStatusEnum status; const gchar *text; /* role */ if (type == PK_PROGRESS_TYPE_ROLE) { g_object_get (progress, "role", &role, NULL); /* show new role on the bar */ text = pk_role_enum_to_localised_present (role); pk_progress_bar_start (progressbar, text); } /* percentage */ if (type == PK_PROGRESS_TYPE_PERCENTAGE) { g_object_get (progress, "percentage", &percentage, NULL); pk_progress_bar_set_percentage (progressbar, percentage); } /* status */ if (type == PK_PROGRESS_TYPE_STATUS) { g_object_get (progress, "status", &status, NULL); if (status == PK_STATUS_ENUM_FINISHED) return; /* show status on the bar */ text = pk_status_enum_to_localised_text (status); pk_progress_bar_start (progressbar, text); } }
/** * pk_offline_update_progress_cb: **/ static void pk_offline_update_progress_cb (PkProgress *progress, PkProgressType type, gpointer user_data) { PkInfoEnum info; PkProgressBar *progressbar = PK_PROGRESS_BAR (user_data); PkStatusEnum status; gint percentage; _cleanup_free_ gchar *msg = NULL; _cleanup_object_unref_ PkPackage *pkg = NULL; switch (type) { case PK_PROGRESS_TYPE_ROLE: sd_journal_print (LOG_INFO, "assigned role"); pk_progress_bar_start (progressbar, "Updating system"); break; case PK_PROGRESS_TYPE_PACKAGE: g_object_get (progress, "package", &pkg, NULL); info = pk_package_get_info (pkg); if (info == PK_INFO_ENUM_UPDATING) { msg = g_strdup_printf ("Updating %s", pk_package_get_name (pkg)); pk_progress_bar_start (progressbar, msg); } else if (info == PK_INFO_ENUM_INSTALLING) { msg = g_strdup_printf ("Installing %s", pk_package_get_name (pkg)); pk_progress_bar_start (progressbar, msg); } else if (info == PK_INFO_ENUM_REMOVING) { msg = g_strdup_printf ("Removing %s", pk_package_get_name (pkg)); pk_progress_bar_start (progressbar, msg); } sd_journal_print (LOG_INFO, "package %s\t%s-%s.%s (%s)", pk_info_enum_to_string (info), pk_package_get_name (pkg), pk_package_get_version (pkg), pk_package_get_arch (pkg), pk_package_get_data (pkg)); break; case PK_PROGRESS_TYPE_PERCENTAGE: g_object_get (progress, "percentage", &percentage, NULL); if (percentage < 0) return; sd_journal_print (LOG_INFO, "percentage %i%%", percentage); /* TRANSLATORS: this is the message we send plymouth to * advise of the new percentage completion */ msg = g_strdup_printf ("%s - %i%%", _("Installing Updates"), percentage); if (percentage > 10) pk_offline_update_set_plymouth_msg (msg); /* print on terminal */ pk_progress_bar_set_percentage (progressbar, percentage); /* update plymouth */ pk_offline_update_set_plymouth_percentage (percentage); break; case PK_PROGRESS_TYPE_STATUS: g_object_get (progress, "status", &status, NULL); sd_journal_print (LOG_INFO, "status %s", pk_status_enum_to_string (status)); default: break; } }