/** * pk_progress_bar_new: * * Return value: A new progress_bar class instance. **/ PkProgressBar * pk_progress_bar_new (void) { PkProgressBar *self; self = g_object_new (PK_TYPE_PROGRESS_BAR, NULL); return PK_PROGRESS_BAR (self); }
/** * pk_progress_bar_finalize: **/ static void pk_progress_bar_finalize (GObject *object) { PkProgressBar *self; g_return_if_fail (PK_IS_PROGRESS_BAR (object)); self = PK_PROGRESS_BAR (object); if (self->priv->timer_id != 0) g_source_remove (self->priv->timer_id); G_OBJECT_CLASS (pk_progress_bar_parent_class)->finalize (object); }
/** * 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_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; } }