[gnome-software] Show a star widget for each application in the category panel
- From: Richard Hughes <rhughes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-software] Show a star widget for each application in the category panel
- Date: Thu, 23 Jan 2014 08:59:33 +0000 (UTC)
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]