[gnome-software] Show a star widget for each application in the category panel



commit e0948888c37297cc3417a0963f2bf581bfacbaa2
Author: Richard Hughes <richard hughsie com>
Date:   Wed Jan 22 17:46:42 2014 +0000

    Show a star widget for each application in the category panel

 src/app-tile.ui         |   19 ++++++++++++++++---
 src/gs-app-tile.c       |    8 ++++++++
 src/gs-shell-category.c |    3 ++-
 src/gs-star-widget.c    |   16 ++++++++++++++++
 src/gs-star-widget.h    |    2 ++
 5 files changed, 44 insertions(+), 4 deletions(-)
---
diff --git a/src/app-tile.ui b/src/app-tile.ui
index 72bf2df..117580d 100644
--- a/src/app-tile.ui
+++ b/src/app-tile.ui
@@ -54,7 +54,7 @@
               <object class="GtkGrid" id="grid">
                 <property name="visible">True</property>
                 <property name="margin">12</property>
-                <property name="row-spacing">6</property>
+                <property name="row-spacing">2</property>
                 <property name="column-spacing">6</property>
                 <child>
                   <object class="GtkImage" id="image">
@@ -64,7 +64,7 @@
                     <property name="left-attach">0</property>
                     <property name="top-attach">0</property>
                     <property name="width">1</property>
-                    <property name="height">2</property>
+                    <property name="height">3</property>
                   </packing>
                 </child>
                 <child>
@@ -84,14 +84,27 @@
                   </packing>
                 </child>
                 <child>
+                  <object class="GsStarWidget" id="stars">
+                    <property name="visible">False</property>
+                    <property name="halign">start</property>
+                  </object>
+                  <packing>
+                    <property name="left-attach">1</property>
+                    <property name="top-attach">1</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
                   <object class="GtkLabel" id="summary">
                     <property name="visible">True</property>
                     <property name="ellipsize">end</property>
                     <property name="xalign">0.0</property>
+                    <property name="margin-top">4</property>
                   </object>
                   <packing>
                     <property name="left-attach">1</property>
-                    <property name="top-attach">1</property>
+                    <property name="top-attach">2</property>
                     <property name="width">1</property>
                     <property name="height">1</property>
                   </packing>
diff --git a/src/gs-app-tile.c b/src/gs-app-tile.c
index a87101d..5516315 100644
--- a/src/gs-app-tile.c
+++ b/src/gs-app-tile.c
@@ -25,6 +25,7 @@
 #include <gtk/gtk.h>
 
 #include "gs-app-tile.h"
+#include "gs-star-widget.h"
 
 struct _GsAppTilePrivate
 {
@@ -35,6 +36,7 @@ struct _GsAppTilePrivate
        GtkWidget       *summary;
        GtkWidget       *eventbox;
        GtkWidget       *waiting;
+       GtkWidget       *stars;
 };
 
 G_DEFINE_TYPE_WITH_PRIVATE (GsAppTile, gs_app_tile, GTK_TYPE_BIN)
@@ -130,6 +132,10 @@ gs_app_tile_set_app (GsAppTile *tile, GsApp *app)
        if (!app)
                return;
        priv->app = g_object_ref (app);
+       gs_star_widget_set_rating (GS_STAR_WIDGET (priv->stars),
+                                  gs_app_get_rating_kind (priv->app),
+                                  gs_app_get_rating (priv->app));
+       gtk_widget_set_visible (priv->stars, TRUE);
 
        gtk_widget_hide (priv->waiting);
 
@@ -179,6 +185,7 @@ gs_app_tile_init (GsAppTile *tile)
        priv = gs_app_tile_get_instance_private (tile);
        g_signal_connect_swapped (priv->button, "clicked",
                                  G_CALLBACK (button_clicked), tile);
+       gs_star_widget_set_icon_size (GS_STAR_WIDGET (priv->stars), 12);
 }
 
 static void
@@ -204,6 +211,7 @@ gs_app_tile_class_init (GsAppTileClass *klass)
        gtk_widget_class_bind_template_child_private (widget_class, GsAppTile, summary);
         gtk_widget_class_bind_template_child_private (widget_class, GsAppTile, eventbox);
         gtk_widget_class_bind_template_child_private (widget_class, GsAppTile, waiting);
+        gtk_widget_class_bind_template_child_private (widget_class, GsAppTile, stars);
 }
 
 GtkWidget *
diff --git a/src/gs-shell-category.c b/src/gs-shell-category.c
index dc7da72..4b4cbb3 100644
--- a/src/gs-shell-category.c
+++ b/src/gs-shell-category.c
@@ -153,7 +153,8 @@ gs_shell_category_populate_filtered (GsShellCategory *shell)
 
        gs_plugin_loader_get_category_apps_async (priv->plugin_loader,
                                                  priv->category,
-                                                 GS_PLUGIN_REFINE_FLAGS_DEFAULT,
+                                                 GS_PLUGIN_REFINE_FLAGS_DEFAULT |
+                                                 GS_PLUGIN_REFINE_FLAGS_REQUIRE_RATING,
                                                  priv->cancellable,
                                                  gs_shell_category_get_apps_cb,
                                                  shell);
diff --git a/src/gs-star-widget.c b/src/gs-star-widget.c
index 79c185f..d30837b 100644
--- a/src/gs-star-widget.c
+++ b/src/gs-star-widget.c
@@ -92,6 +92,22 @@ gs_star_widget_set_image_rating (GtkImage *image, GsAppRatingKind rating_kind,
 }
 
 /**
+ * gs_star_widget_set_icon_size:
+ **/
+void
+gs_star_widget_set_icon_size (GsStarWidget *star, guint pixel_size)
+{
+       GsStarWidgetPrivate *priv;
+       g_return_if_fail (GS_IS_STAR_WIDGET (star));
+       priv = gs_star_widget_get_instance_private (star);
+       gtk_image_set_pixel_size (GTK_IMAGE (priv->image1), pixel_size);
+       gtk_image_set_pixel_size (GTK_IMAGE (priv->image2), pixel_size);
+       gtk_image_set_pixel_size (GTK_IMAGE (priv->image3), pixel_size);
+       gtk_image_set_pixel_size (GTK_IMAGE (priv->image4), pixel_size);
+       gtk_image_set_pixel_size (GTK_IMAGE (priv->image5), pixel_size);
+}
+
+/**
  * gs_star_widget_refresh:
  **/
 static void
diff --git a/src/gs-star-widget.h b/src/gs-star-widget.h
index e3118ba..e625d6d 100644
--- a/src/gs-star-widget.h
+++ b/src/gs-star-widget.h
@@ -58,6 +58,8 @@ gint           gs_star_widget_get_rating              (GsStarWidget   *star);
 void            gs_star_widget_set_rating              (GsStarWidget   *star,
                                                         GsAppRatingKind rating_kind,
                                                         gint            rating);
+void            gs_star_widget_set_icon_size           (GsStarWidget   *star,
+                                                        guint           pixel_size);
 
 G_END_DECLS
 


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