[gnome-software] Update Installed tab label with pending count
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-software] Update Installed tab label with pending count
- Date: Wed, 21 Aug 2013 04:06:44 +0000 (UTC)
commit 4ccb39774ec7ad635532cce34c8ebd5ac4d0113a
Author: Matthias Clasen <mclasen redhat com>
Date: Wed Aug 21 00:05:51 2013 -0400
Update Installed tab label with pending count
Maintain a count of pending operations, and update the
Installed tab with that number.
src/gs-main.c | 35 +++++++++++++++++++++++++++++++----
1 files changed, 31 insertions(+), 4 deletions(-)
---
diff --git a/src/gs-main.c b/src/gs-main.c
index bfc4b5e..f47c080 100644
--- a/src/gs-main.c
+++ b/src/gs-main.c
@@ -57,9 +57,10 @@ typedef struct {
GtkListBox *list_box_installed;
GtkListBox *list_box_updates;
GtkCssProvider *provider;
- gboolean ignore_primary_buttons;
+ gboolean ignore_primary_buttons;
GsPluginLoader *plugin_loader;
guint tab_back_id;
+ gint pending_apps;
} GsMainPrivate;
static void gs_main_set_overview_mode_ui (GsMainPrivate *priv, GsMainMode mode, GsApp *app);
@@ -292,6 +293,26 @@ gs_main_plugin_loader_status_changed_cb (GsPluginLoader *plugin_loader,
}
}
+static void
+update_pending_apps (GsMainPrivate *priv, gint delta)
+{
+ GtkWidget *widget;
+ gchar *label;
+
+ priv->pending_apps += delta;
+ g_assert (priv->pending_apps >= 0);
+
+ widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "label_button_installed"));
+
+ if (priv->pending_apps == 0)
+ label = g_strdup (_("Installed"));
+ else
+ label = g_strdup_printf (_("Installed (%d)"), priv->pending_apps);
+
+ gtk_label_set_label (GTK_LABEL (widget), label);
+ g_free (label);
+}
+
typedef struct {
GsAppWidget *app_widget;
GsMainPrivate *priv;
@@ -315,6 +336,8 @@ gs_main_remove_packages_cb (PkClient *client,
PkResults *results;
GsAppWidget *app_widget;
+ update_pending_apps (data->priv, -1);
+
/* get the results */
results = pk_client_generic_finish (client, res, &error);
if (results == NULL) {
@@ -477,10 +500,11 @@ gs_main_app_widget_button_clicked_cb (GsAppWidget *app_widget, GsMainPrivate *pr
data->priv = priv;
if (kind == GS_APP_WIDGET_KIND_UPDATE) {
+ update_pending_apps (data->priv, 1);
g_debug ("update %s", package_id);
to_array[0] = package_id;
gs_app_widget_set_kind (app_widget, GS_APP_WIDGET_KIND_BUSY);
- gs_app_widget_set_status (app_widget, "Updating...");
+ gs_app_widget_set_status (app_widget, "Updating");
pk_task_update_packages_async (priv->task,
(gchar**)to_array,
priv->cancellable,
@@ -489,10 +513,11 @@ gs_main_app_widget_button_clicked_cb (GsAppWidget *app_widget, GsMainPrivate *pr
(GAsyncReadyCallback) gs_main_remove_packages_cb,
data);
} else if (kind == GS_APP_WIDGET_KIND_INSTALL) {
+ update_pending_apps (data->priv, 1);
g_debug ("install %s", package_id);
to_array[0] = package_id;
gs_app_widget_set_kind (app_widget, GS_APP_WIDGET_KIND_BUSY);
- gs_app_widget_set_status (app_widget, "Installing...");
+ gs_app_widget_set_status (app_widget, "Installing");
pk_task_install_packages_async (priv->task,
(gchar**)to_array,
priv->cancellable,
@@ -526,10 +551,12 @@ gs_main_app_widget_button_clicked_cb (GsAppWidget *app_widget, GsMainPrivate *pr
gtk_dialog_add_button (GTK_DIALOG (dialog), _("Remove"), GTK_RESPONSE_OK);
response = gtk_dialog_run (GTK_DIALOG (dialog));
if (response == GTK_RESPONSE_OK) {
+ update_pending_apps (data->priv, 1);
g_debug ("remove %s", package_id);
to_array[0] = package_id;
gs_app_widget_set_kind (app_widget, GS_APP_WIDGET_KIND_BUSY);
- gs_app_widget_set_status (app_widget, "Removing...");
+ gs_app_widget_set_status (app_widget, "Removing");
+
pk_task_remove_packages_async (priv->task,
(gchar**)to_array,
TRUE, /* allow deps */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]