From bfe4734f01b202ae448616e6c711a46c5d0d7f6e Mon Sep 17 00:00:00 2001 From: Xavier Claessens Date: Tue, 9 Oct 2007 09:38:12 +0000 Subject: Makes avatar looks better in information and edit dialogs. 2007-10-09 Xavier Claessens * libempathy-gtk/empathy-contact-widget.glade: * libempathy-gtk/empathy-contact-widget.c: * libempathy-gtk/empathy-avatar-chooser.c: * libempathy-gtk/empathy-avatar-image.c: Makes avatar looks better in information and edit dialogs. svn path=/trunk/; revision=364 --- libempathy-gtk/empathy-avatar-chooser.c | 38 ++++------ libempathy-gtk/empathy-avatar-image.c | 2 +- libempathy-gtk/empathy-contact-widget.c | 12 +-- libempathy-gtk/empathy-contact-widget.glade | 111 ++++++++++++++++------------ 4 files changed, 84 insertions(+), 79 deletions(-) (limited to 'libempathy-gtk') diff --git a/libempathy-gtk/empathy-avatar-chooser.c b/libempathy-gtk/empathy-avatar-chooser.c index 2ef3de429..bc5f07e9b 100644 --- a/libempathy-gtk/empathy-avatar-chooser.c +++ b/libempathy-gtk/empathy-avatar-chooser.c @@ -40,13 +40,13 @@ #define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), EMPATHY_AVATAR_CHOOSER_TYPE, EmpathyAvatarChooserPriv)) -#define AVATAR_MAX 96 +#define AVATAR_SIZE_SAVE 96 +#define AVATAR_SIZE_VIEW 64 #define DEFAULT_DIR DATADIR"/pixmaps/faces" typedef struct { - GdkPixbuf *pixbuf; - gchar *image_data; - gsize image_data_size; + gchar *image_data; + gsize image_data_size; } EmpathyAvatarChooserPriv; static void avatar_chooser_finalize (GObject *object); @@ -160,9 +160,6 @@ avatar_chooser_finalize (GObject *object) priv = GET_PRIV (object); - if (priv->pixbuf) { - g_object_unref (priv->pixbuf); - } g_free (priv->image_data); G_OBJECT_CLASS (empathy_avatar_chooser_parent_class)->finalize (object); @@ -174,22 +171,19 @@ avatar_chooser_set_pixbuf (EmpathyAvatarChooser *chooser, { EmpathyAvatarChooserPriv *priv = GET_PRIV (chooser); GtkWidget *image; + GdkPixbuf *pixbuf_view = NULL; + GdkPixbuf *pixbuf_save = NULL; GError *error = NULL; - if (priv->pixbuf) { - g_object_unref (priv->pixbuf); - priv->pixbuf = NULL; - } g_free (priv->image_data); priv->image_data = NULL; priv->image_data_size = 0; if (pixbuf) { - priv->pixbuf = empathy_pixbuf_scale_down_if_necessary (pixbuf, AVATAR_MAX); - } + pixbuf_view = empathy_pixbuf_scale_down_if_necessary (pixbuf, AVATAR_SIZE_VIEW); + pixbuf_save = empathy_pixbuf_scale_down_if_necessary (pixbuf, AVATAR_SIZE_SAVE); - if (priv->pixbuf) { - if (!gdk_pixbuf_save_to_buffer (priv->pixbuf, + if (!gdk_pixbuf_save_to_buffer (pixbuf_save, &priv->image_data, &priv->image_data_size, "png", @@ -197,16 +191,14 @@ avatar_chooser_set_pixbuf (EmpathyAvatarChooser *chooser, empathy_debug (DEBUG_DOMAIN, "Failed to save pixbuf: %s", error ? error->message : "No error given"); g_clear_error (&error); - g_object_unref (priv->pixbuf); - priv->pixbuf = NULL; } - } + image = gtk_image_new_from_pixbuf (pixbuf_view); - if (!priv->pixbuf) { + g_object_unref (pixbuf_save); + g_object_unref (pixbuf_view); + } else { image = gtk_image_new_from_icon_name ("stock_person", GTK_ICON_SIZE_DIALOG); - } else { - image = gtk_image_new_from_pixbuf (priv->pixbuf); } gtk_button_set_image (GTK_BUTTON (chooser), image); @@ -399,7 +391,7 @@ avatar_chooser_update_preview_cb (GtkFileChooser *file_chooser, image = gtk_file_chooser_get_preview_widget (file_chooser); if (pixbuf) { - scaled_pixbuf = empathy_pixbuf_scale_down_if_necessary (pixbuf, AVATAR_MAX); + scaled_pixbuf = empathy_pixbuf_scale_down_if_necessary (pixbuf, AVATAR_SIZE_SAVE); gtk_image_set_from_pixbuf (GTK_IMAGE (image), scaled_pixbuf); g_object_unref (scaled_pixbuf); g_object_unref (pixbuf); @@ -507,7 +499,7 @@ avatar_chooser_clicked_cb (GtkWidget *button, /* Setup preview image */ image = gtk_image_new (); gtk_file_chooser_set_preview_widget (chooser_dialog, image); - gtk_widget_set_size_request (image, AVATAR_MAX, AVATAR_MAX); + gtk_widget_set_size_request (image, AVATAR_SIZE_SAVE, AVATAR_SIZE_SAVE); gtk_widget_show (image); gtk_file_chooser_set_use_preview_label (chooser_dialog, FALSE); g_signal_connect (chooser_dialog, "update-preview", diff --git a/libempathy-gtk/empathy-avatar-image.c b/libempathy-gtk/empathy-avatar-image.c index cc4ecbf45..5a5f0aafb 100644 --- a/libempathy-gtk/empathy-avatar-image.c +++ b/libempathy-gtk/empathy-avatar-image.c @@ -38,7 +38,7 @@ #define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), EMPATHY_TYPE_AVATAR_IMAGE, EmpathyAvatarImagePriv)) -#define MAX_SMALL 48 +#define MAX_SMALL 64 #define MAX_LARGE 400 typedef struct { diff --git a/libempathy-gtk/empathy-contact-widget.c b/libempathy-gtk/empathy-contact-widget.c index b6fd4937d..2d26f4a4b 100644 --- a/libempathy-gtk/empathy-contact-widget.c +++ b/libempathy-gtk/empathy-contact-widget.c @@ -67,7 +67,7 @@ typedef struct { GtkWidget *image_state; GtkWidget *label_status; GtkWidget *table_contact; - GtkWidget *hbox_contact; + GtkWidget *vbox_avatar; /* Groups */ GtkWidget *vbox_groups; @@ -172,7 +172,7 @@ empathy_contact_widget_new (EmpathyContact *contact, "image_state", &information->image_state, "label_status", &information->label_status, "table_contact", &information->table_contact, - "hbox_contact", &information->hbox_contact, + "vbox_avatar", &information->vbox_avatar, "vbox_groups", &information->vbox_groups, "entry_group", &information->entry_group, "button_group", &information->button_group, @@ -348,10 +348,10 @@ contact_widget_contact_setup (EmpathyContactWidget *information) } else { information->widget_avatar = empathy_avatar_image_new (); } - gtk_box_pack_end (GTK_BOX (information->hbox_contact), - information->widget_avatar, - FALSE, FALSE, - 6); + gtk_box_pack_start (GTK_BOX (information->vbox_avatar), + information->widget_avatar, + FALSE, FALSE, + 6); gtk_widget_show (information->widget_avatar); /* Setup account label/chooser */ diff --git a/libempathy-gtk/empathy-contact-widget.glade b/libempathy-gtk/empathy-contact-widget.glade index 6eb601987..4b204b7b6 100644 --- a/libempathy-gtk/empathy-contact-widget.glade +++ b/libempathy-gtk/empathy-contact-widget.glade @@ -25,53 +25,53 @@ 6 - + True False - 0 + 6 - + True - False - 6 + <b>Contact</b> + False + True + GTK_JUSTIFY_LEFT + False + False + 0 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + False + False + + - - - True - <b>Contact</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - + + + True + 0.5 + 0.5 + 1 + 1 + 0 + 0 + 12 + 0 - + True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 + False + 6 @@ -233,25 +233,38 @@ + + 0 + True + True + + + + + + True + False + 0 + + + + + + + 0 + False + False + - - 0 - False - False - 0 - True - True + False + False - - - - 0 -- cgit v1.2.3