static helper function.
* ut/hildon-widgets_tests.c (test46): New.
+ * hildon-widgets/hildon-grid-item.c
+ (hildon_grid_item_set_property), (hildon_grid_item_get_property),
+ (hildon_grid_item_class_init): Add icon-basename property.
+ (hildon_grid_item_new, hildon_grid_item_new_with_label): Move code
+ from here to hildon_grid_item_init(), so we can just call
+ g_object_new().
+ (hildon_grid_item_set_label): Convert NULL label to empty string.
+ Bug fix: don't cast the label widget to a string and compare it
+ against the new label text, use gtk_label_get_label instead.
+ Expect priv->label to always be non-NULL.
+ (update_icon): Don't pass NULL icon name to
+ gtk_icon_theme_load_icon, use default icon instead in that case.
+ * hildon-widgets/hildon-grid-item.h: Make
+ _hildon_grid_item_set_label into public
+ hildon_grid_item_set_label(), so that language bindings can use
+ it.
+ * ut/hildon-widgets_tests.c (VALID_ICON): Use existing icon.
+ (test33a2, test33b4, test33b4): Expect them to succeed now that a
+ HildonGridItem can handle NULL icons.
+
2006-04-21 Luc Pionchon <luc.pionchon@nokia.com>
* configure.ac: 0.12.11
enum{
PROP_NONE = 0,
- PROP_EMBLEM_TYPE
+ PROP_EMBLEM_TYPE,
+ PROP_ICON_BASENAME
};
/* Prototypes. */
case PROP_EMBLEM_TYPE:
hildon_grid_item_set_emblem_type(item, g_value_get_string(value));
break;
+ case PROP_ICON_BASENAME:
+ if(priv->icon_basename)
+ g_free(priv->icon_basename);
+
+ priv->icon_basename = g_strdup(g_value_get_string(value));
+ update_icon(item);
+
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
break;
string = hildon_grid_item_get_emblem_type(item);
g_value_set_string(value, string);
break;
+ case PROP_ICON_BASENAME:
+ g_value_set_string(value, priv->icon_basename);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
break;
"The emblem's basename",
NULL,
G_PARAM_WRITABLE));
+
+ g_object_class_install_property
+ (gobject_class,
+ PROP_ICON_BASENAME,
+ g_param_spec_string ("icon-basename",
+ "Icon Basename",
+ "The icon's basename",
+ NULL,
+ G_PARAM_WRITABLE));
}
priv->pending_icon_width = priv->icon_width = 64;
priv->pending_icon_height = priv->icon_height = 54;
priv->pending_label_height = priv->label_height = 30;
+
+
+ GTK_WIDGET_SET_FLAGS(GTK_WIDGET(item), GTK_CAN_FOCUS);
+
+ priv->label = gtk_label_new(NULL);
+ gtk_widget_set_name(priv->label, "hildon-grid-item-label");
+ gtk_widget_set_parent(priv->label, GTK_WIDGET(item));
+
+ update_icon(item);
+ set_label_justify(item);
+
+ gtk_widget_show(priv->label);
}
/**
hildon_grid_item_new(const gchar *icon_basename)
{
HildonGridItem *item;
- HildonGridItemPrivate *priv;
-
- item = g_object_new(HILDON_TYPE_GRID_ITEM, NULL);
- GTK_WIDGET_SET_FLAGS(GTK_WIDGET(item), GTK_CAN_FOCUS);
-
- priv = HILDON_GRID_ITEM_GET_PRIVATE(item);
- priv->icon_basename = g_strdup(icon_basename);
- priv->label = gtk_label_new("");
- gtk_widget_set_parent(priv->label, GTK_WIDGET(item));
- gtk_widget_set_name(priv->label, "hildon-grid-item-label");
-
- update_icon(item);
- set_label_justify(item);
-
- gtk_widget_show(priv->label);
+ item = g_object_new(HILDON_TYPE_GRID_ITEM, "icon-basename", icon_basename, NULL);
return GTK_WIDGET(item);
}
const gchar *label)
{
HildonGridItem *item;
- HildonGridItemPrivate *priv;
-
-
- item = g_object_new(HILDON_TYPE_GRID_ITEM, NULL);
- GTK_WIDGET_SET_FLAGS(GTK_WIDGET(item), GTK_CAN_FOCUS);
-
- priv = HILDON_GRID_ITEM_GET_PRIVATE(item);
- priv->icon_basename = g_strdup(icon_basename);
-
- priv->label = gtk_label_new(label != NULL ? label : "");
- gtk_widget_set_name(priv->label, "hildon-grid-item-label");
- gtk_widget_set_parent(priv->label, GTK_WIDGET(item));
- update_icon(item);
- set_label_justify(item);
+ item = g_object_new(HILDON_TYPE_GRID_ITEM, "icon-basename", icon_basename, NULL);
- gtk_widget_show(priv->label);
+ hildon_grid_item_set_label(item, label);
return GTK_WIDGET(item);
}
icon_theme = gtk_icon_theme_get_default();
- /* Load icon. Fall to default it loading fails. */
- error = NULL;
- icon = gtk_icon_theme_load_icon(icon_theme,
- priv->icon_basename,
- priv->icon_size, 0, &error);
- if (icon == NULL) {
- g_warning("Couldn't load icon \"%s\": %s", priv->icon_basename,
- error->message);
- g_error_free(error);
+ /* Load icon. Fall to default if loading fails. */
+ icon = NULL;
+ if (priv->icon_basename)
+ {
+ error = NULL;
+ icon = gtk_icon_theme_load_icon(icon_theme,
+ priv->icon_basename,
+ priv->icon_size, 0, &error);
+ if (icon == NULL) {
+ g_warning("Couldn't load icon \"%s\": %s", priv->icon_basename,
+ error->message);
+ g_error_free(error);
+ }
+ }
+ if (icon == NULL) {
error = NULL;
icon = gtk_icon_theme_load_icon(icon_theme,
DEFAULT_ICON_BASENAME,
}
void
-_hildon_grid_item_set_label(HildonGridItem *item, const gchar *label)
+hildon_grid_item_set_label(HildonGridItem *item, const gchar *label)
{
HildonGridItemPrivate *priv;
g_return_if_fail(HILDON_IS_GRID_ITEM(item));
+ if (label == NULL)
+ label = "";
+
priv = HILDON_GRID_ITEM_GET_PRIVATE(item);
- if ((priv->label == NULL && label == NULL) ||
- (priv->label != NULL && label != NULL &&
- strcmp((char *) priv->label, (char *) label) == 0)) {
- return;
- }
+ if (strcmp (gtk_label_get_label (GTK_LABEL (priv->label)), label) == 0)
+ return;
gtk_label_set_label(GTK_LABEL(priv->label), label);
}
#include <outo.h>
/* Icon which must exist (HildonGridItem). */
-#define VALID_ICON "Help"
+#define VALID_ICON "qgn_list_gene_default_app"
/*prototypes to keep the compiler happy*/
testcase *get_tests(void);
{*test32a, "hildon_rename_dialog: ok", EXPECT_OK},
{*test32b, "hildon_rename_dialog: NULL(ok)", EXPECT_OK},
{*test33a1, "grid_item_new (\"foo\")", EXPECT_OK},
- {*test33a2, "grid_item_new (NULL)", EXPECT_ASSERT},
+ {*test33a2, "grid_item_new (NULL)", EXPECT_OK},
{*test33b1, "grid_item_new_label (\"foo\", \"bar\")", EXPECT_OK},
{*test33b2, "grid_item_new_label (\"foo\", NULL)", EXPECT_OK},
- {*test33b3, "grid_item_new_label (NULL, \"bar\")", EXPECT_ASSERT},
- {*test33b4, "grid_item_new_label (NULL, NULL)", EXPECT_ASSERT},
+ {*test33b3, "grid_item_new_label (NULL, \"bar\")", EXPECT_OK},
+ {*test33b4, "grid_item_new_label (NULL, NULL)", EXPECT_OK},
{*test33c1, "grid_item_set_emblem (foo, \"bar\")", EXPECT_OK},
{*test33c2, "grid_item_set_emblem (foo, NULL)", EXPECT_OK},
{*test33c3, "grid_item_set_emblem (NULL, \"bar\")", EXPECT_ASSERT},