[gnome-initial-setup/wip/feborges/generate-user-pics: 3/4] accounts: Set generated user pic when no pic is set
- From: Felipe Borges <felipeborges src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-initial-setup/wip/feborges/generate-user-pics: 3/4] accounts: Set generated user pic when no pic is set
- Date: Mon, 4 Feb 2019 12:19:09 +0000 (UTC)
commit 6f48a20bee82924285cca69d4f129314f8d94f1f
Author: Felipe Borges <felipeborges gnome org>
Date: Tue Oct 23 12:15:12 2018 +0200
accounts: Set generated user pic when no pic is set
The default user picture is blank.
https://wiki.gnome.org/Design/OS/AvatarChooser#Tentative_Design
Fixes #6
.../pages/account/gis-account-page-local.c | 1 +
gnome-initial-setup/pages/account/um-photo-dialog.c | 19 ++++++++++++++++++-
gnome-initial-setup/pages/account/um-utils.c | 13 ++++++++++---
3 files changed, 29 insertions(+), 4 deletions(-)
---
diff --git a/gnome-initial-setup/pages/account/gis-account-page-local.c
b/gnome-initial-setup/pages/account/gis-account-page-local.c
index d8273a9..70a8242 100644
--- a/gnome-initial-setup/pages/account/gis-account-page-local.c
+++ b/gnome-initial-setup/pages/account/gis-account-page-local.c
@@ -433,6 +433,7 @@ gis_account_page_local_constructed (GObject *object)
priv->photo_dialog = um_photo_dialog_new (priv->avatar_button,
avatar_callback,
page);
+ um_photo_dialog_generate_avatar (priv->photo_dialog, "");
validate (page);
diff --git a/gnome-initial-setup/pages/account/um-photo-dialog.c
b/gnome-initial-setup/pages/account/um-photo-dialog.c
index e4ac51b..f7bd5ee 100644
--- a/gnome-initial-setup/pages/account/um-photo-dialog.c
+++ b/gnome-initial-setup/pages/account/um-photo-dialog.c
@@ -56,6 +56,7 @@ struct _UmPhotoDialog {
GListStore *recent_faces;
GListStore *faces;
GFile *generated_avatar;
+ gboolean custom_avatar_was_chosen;
SelectAvatarCallback *callback;
gpointer data;
@@ -83,6 +84,7 @@ webcam_response_cb (GtkDialog *dialog,
pb2 = gdk_pixbuf_scale_simple (pb, 96, 96, GDK_INTERP_BILINEAR);
um->callback (pb2, NULL, um->data);
+ um->custom_avatar_was_chosen = TRUE;
g_object_unref (pb2);
g_object_unref (pb);
@@ -146,10 +148,20 @@ face_widget_activated (GtkFlowBox *flowbox,
filename = g_object_get_data (G_OBJECT (image), "filename");
um->callback (NULL, filename, um->data);
+ um->custom_avatar_was_chosen = TRUE;
gtk_popover_popdown (GTK_POPOVER (um));
}
+static void
+generated_avatar_activated (GtkFlowBox *flowbox,
+ GtkFlowBoxChild *child,
+ UmPhotoDialog *um)
+{
+ face_widget_activated (flowbox, child, um);
+ um->custom_avatar_was_chosen = FALSE;
+}
+
static GtkWidget *
create_face_widget (gpointer item,
gpointer user_data)
@@ -197,7 +209,8 @@ setup_photo_popup (UmPhotoDialog *um)
um,
NULL);
g_signal_connect (um->recent_pictures, "child-activated",
- G_CALLBACK (face_widget_activated), um);
+ G_CALLBACK (generated_avatar_activated), um);
+ um->custom_avatar_was_chosen = FALSE;
dirs = g_get_system_data_dirs ();
for (i = 0; dirs[i] != NULL; i++) {
@@ -301,6 +314,10 @@ um_photo_dialog_generate_avatar (UmPhotoDialog *um,
g_list_store_insert (um->recent_faces, 0,
um->generated_avatar);
gtk_widget_show_all (um->recent_pictures);
+
+ if (!um->custom_avatar_was_chosen) {
+ um->callback (NULL, g_file_get_path (um->generated_avatar), um->data);
+ }
}
UmPhotoDialog *
diff --git a/gnome-initial-setup/pages/account/um-utils.c b/gnome-initial-setup/pages/account/um-utils.c
index 678f1eb..6cb418d 100644
--- a/gnome-initial-setup/pages/account/um-utils.c
+++ b/gnome-initial-setup/pages/account/um-utils.c
@@ -547,9 +547,16 @@ get_color_for_name (const gchar *name)
};
GdkRGBA color = { 255, 255, 255, 1.0 };
- guint hash = g_str_hash (name);
- gint number_of_colors = G_N_ELEMENTS (gnome_color_palette);
- gint idx = hash % number_of_colors;
+ guint hash;
+ gint number_of_colors;
+ gint idx;
+
+ if (name == NULL || strlen (name) == 0)
+ return color;
+
+ hash = g_str_hash (name);
+ number_of_colors = G_N_ELEMENTS (gnome_color_palette);
+ idx = hash % number_of_colors;
color.red = gnome_color_palette[idx][0];
color.green = gnome_color_palette[idx][1];
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]