[gnome-software] Bring GsAppWidget close to mockups



commit a67b08829f53c1ab47ad17e9844a2a30efb807ff
Author: Matthias Clasen <mclasen redhat com>
Date:   Wed Aug 21 00:04:55 2013 -0400

    Bring GsAppWidget close to mockups
    
    Center the button vertically, put the spinner next to it, and
    put the status inside the button when the row is busy.

 src/gs-app-widget.c |   54 +++++++++++++++++++-------------------------------
 1 files changed, 21 insertions(+), 33 deletions(-)
---
diff --git a/src/gs-app-widget.c b/src/gs-app-widget.c
index 4f5207b..7e19c2e 100644
--- a/src/gs-app-widget.c
+++ b/src/gs-app-widget.c
@@ -39,7 +39,6 @@ struct _GsAppWidgetPrivate
        GtkWidget       *widget_image;
        GtkWidget       *widget_name;
        GtkWidget       *widget_spinner;
-       GtkWidget       *widget_status;
        GtkWidget       *widget_version;
 };
 
@@ -70,46 +69,47 @@ gs_app_widget_refresh (GsAppWidget *app_widget)
        gtk_label_set_label (GTK_LABEL (priv->widget_name),
                             gs_app_get_name (priv->app));
        gtk_label_set_markup (GTK_LABEL (priv->widget_description), priv->description);
-       gtk_label_set_label (GTK_LABEL (priv->widget_status), priv->status);
        gtk_label_set_label (GTK_LABEL (priv->widget_version),
                             gs_app_get_version (priv->app));
        gtk_image_set_from_pixbuf (GTK_IMAGE (priv->widget_image),
                                   gs_app_get_pixbuf (priv->app));
        gtk_widget_set_visible (priv->widget_name, TRUE);
        gtk_widget_set_visible (priv->widget_description, TRUE);
-       gtk_widget_set_visible (priv->widget_status, priv->status != NULL);
        gtk_widget_set_visible (priv->widget_version, TRUE);
        gtk_widget_set_visible (priv->widget_image, TRUE);
        gtk_widget_set_visible (priv->widget_button, TRUE);
+       gtk_widget_set_sensitive (priv->widget_button, TRUE);
 
        /* show / hide widgets depending on kind */
+       context = gtk_widget_get_style_context (priv->widget_button);
+       gtk_style_context_remove_class (context, "destructive-action");
+       gtk_style_context_remove_class (context, "suggested-action");
+
        switch (app_widget->priv->kind) {
        case GS_APP_WIDGET_KIND_INSTALL:
                gtk_widget_set_visible (priv->widget_spinner, FALSE);
                gtk_widget_set_visible (priv->widget_button, TRUE);
-               gtk_button_set_label (GTK_BUTTON (priv->widget_button),
-                                     _("Install"));
-               context = gtk_widget_get_style_context (priv->widget_button);
-               gtk_style_context_remove_class (context, "destructive-action");
+               gtk_button_set_label (GTK_BUTTON (priv->widget_button), _("Install"));
+               gtk_style_context_add_class (context, "suggested-action");
                break;
        case GS_APP_WIDGET_KIND_REMOVE:
                gtk_widget_set_visible (priv->widget_spinner, FALSE);
                gtk_widget_set_visible (priv->widget_button, TRUE);
-               gtk_button_set_label (GTK_BUTTON (priv->widget_button),
-                                     _("Remove"));
-               context = gtk_widget_get_style_context (priv->widget_button);
+               gtk_button_set_label (GTK_BUTTON (priv->widget_button), _("Remove"));
                gtk_style_context_add_class (context, "destructive-action");
                break;
        case GS_APP_WIDGET_KIND_UPDATE:
                gtk_widget_set_visible (priv->widget_spinner, FALSE);
                gtk_widget_set_visible (priv->widget_button, FALSE);
-               gtk_button_set_label (GTK_BUTTON (priv->widget_button),
-                                     _("Update"));
+               gtk_button_set_label (GTK_BUTTON (priv->widget_button), _("Update"));
+               gtk_style_context_add_class (context, "suggested-action");
                break;
        case GS_APP_WIDGET_KIND_BUSY:
                gtk_spinner_start (GTK_SPINNER (priv->widget_spinner));
                gtk_widget_set_visible (priv->widget_spinner, TRUE);
-               gtk_widget_set_visible (priv->widget_button, FALSE);
+               gtk_widget_set_visible (priv->widget_button, TRUE);
+               gtk_widget_set_sensitive (priv->widget_button, FALSE);
+               gtk_button_set_label (GTK_BUTTON (priv->widget_button), priv->status);
                break;
        default:
                gtk_widget_set_visible (priv->widget_button, FALSE);
@@ -309,7 +309,6 @@ static void
 gs_app_widget_init (GsAppWidget *app_widget)
 {
        GsAppWidgetPrivate *priv;
-       GtkStyleContext *context;
        GtkWidget *box;
        PangoAttrList *attr_list;
 
@@ -357,7 +356,7 @@ gs_app_widget_init (GsAppWidget *app_widget)
                            FALSE, FALSE, 0);
        gtk_box_pack_start (GTK_BOX (box),
                            GTK_WIDGET (priv->widget_version),
-                           FALSE, FALSE, 12);
+                           FALSE, FALSE, 6);
        gtk_box_pack_start (GTK_BOX (app_widget),
                            GTK_WIDGET (box),
                            FALSE, TRUE, 0);
@@ -387,29 +386,18 @@ gs_app_widget_init (GsAppWidget *app_widget)
 
        /* spinner */
        priv->widget_spinner = gtk_spinner_new ();
-       gtk_widget_set_margin_right (GTK_WIDGET (priv->widget_spinner), 18);
-       gtk_widget_set_size_request (priv->widget_spinner, 48, 48);
-
-       /* status */
-       priv->widget_status = gtk_label_new ("status");
-       gtk_misc_set_alignment (GTK_MISC (priv->widget_status), 1.0, 0.0);
-       context = gtk_widget_get_style_context (priv->widget_status);
-       gtk_style_context_add_class (context, "dim-label");
-       gtk_label_set_ellipsize (GTK_LABEL (priv->widget_status),
-                                PANGO_ELLIPSIZE_NONE);
-       gtk_label_set_line_wrap (GTK_LABEL (priv->widget_status), TRUE);
-       gtk_label_set_max_width_chars (GTK_LABEL (priv->widget_status), 20);
-       gtk_widget_set_margin_right (GTK_WIDGET (priv->widget_status), 9);
-       box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
+       gtk_widget_set_margin_left (GTK_WIDGET (priv->widget_spinner), 6);
+       gtk_widget_set_margin_right (GTK_WIDGET (priv->widget_spinner), 6);
+
+       box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 3);
+       gtk_widget_set_halign (box, GTK_ALIGN_END);
+       gtk_widget_set_valign (box, GTK_ALIGN_CENTER);
        gtk_widget_set_visible (box, TRUE);
        gtk_box_pack_start (GTK_BOX (box),
-                           GTK_WIDGET (priv->widget_button),
-                           FALSE, FALSE, 0);
-       gtk_box_pack_start (GTK_BOX (box),
                            GTK_WIDGET (priv->widget_spinner),
                            FALSE, FALSE, 0);
        gtk_box_pack_start (GTK_BOX (box),
-                           GTK_WIDGET (priv->widget_status),
+                           GTK_WIDGET (priv->widget_button),
                            FALSE, FALSE, 0);
        gtk_box_pack_start (GTK_BOX (app_widget),
                            GTK_WIDGET (box),


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