Mercurial > pidgin
changeset 22775:0be4c1f0fa55
This patch from Jaywalker enables text to appear in the screen name entry box.
This text is intended to be helpful and let the user know what to enter.
| author | John Bailey <rekkanoryo@rekkanoryo.org> |
|---|---|
| date | Wed, 30 Apr 2008 03:24:35 +0000 |
| parents | d25182f21748 |
| children | 01e375e9b681 087c3ed328d3 |
| files | libpurple/protocols/msn/msn.c libpurple/protocols/msnp9/msn.c libpurple/protocols/myspace/myspace.c libpurple/prpl.h pidgin/gtkaccount.c |
| diffstat | 5 files changed, 56 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/libpurple/protocols/msn/msn.c Tue Apr 29 03:59:45 2008 +0000 +++ b/libpurple/protocols/msn/msn.c Wed Apr 30 03:24:35 2008 +0000 @@ -132,6 +132,9 @@ return list; } +const char *msn_get_login_label() { + return _("E-mail Address..."); +} static PurpleCmdRet msn_cmd_nudge(PurpleConversation *conv, const gchar *cmd, gchar **args, gchar **error, void *data) @@ -2306,9 +2309,7 @@ NULL, /* unregister_user */ msn_send_attention, /* send_attention */ msn_attention_types, /* attention_types */ - - /* padding */ - NULL + msn_get_login_label /* account_login_label */ }; static PurplePluginInfo info =
--- a/libpurple/protocols/msnp9/msn.c Tue Apr 29 03:59:45 2008 +0000 +++ b/libpurple/protocols/msnp9/msn.c Wed Apr 30 03:24:35 2008 +0000 @@ -134,6 +134,10 @@ } +const char *msn_get_login_label() { + return _("E-mail Address..."); +} + static PurpleCmdRet msn_cmd_nudge(PurpleConversation *conv, const gchar *cmd, gchar **args, gchar **error, void *data) { @@ -2147,9 +2151,7 @@ NULL, /* unregister_user */ msn_send_attention, /* send_attention */ msn_attention_types, /* attention_types */ - - /* padding */ - NULL + msn_get_login_label /* account_login_label */ }; static PurplePluginInfo info =
--- a/libpurple/protocols/myspace/myspace.c Tue Apr 29 03:59:45 2008 +0000 +++ b/libpurple/protocols/myspace/myspace.c Wed Apr 30 03:24:35 2008 +0000 @@ -2449,6 +2449,10 @@ return normalized; } +const char *msim_get_login_label() { + return _("E-mail Address..."); +} + /** Return whether the buddy can be messaged while offline. * * The protocol supports offline messages in just the same way as online @@ -3131,7 +3135,7 @@ NULL, /* unregister_user */ msim_send_attention, /* send_attention */ msim_attention_types, /* attention_types */ - NULL /* _purple_reserved4 */ + msim_get_login_label /* get screen name field title */ };
--- a/libpurple/prpl.h Tue Apr 29 03:59:45 2008 +0000 +++ b/libpurple/prpl.h Wed Apr 30 03:24:35 2008 +0000 @@ -398,7 +398,11 @@ gboolean (*send_attention)(PurpleConnection *gc, const char *username, guint type); GList *(*get_attention_types)(PurpleAccount *acct); - void (*_purple_reserved4)(void); + /* This allows protocols to specify a more specific term for the "ScreenName" field + * in the add account window. This helps avoid confusion for users using protocols + * such as MySpace or MSN + */ + const char *(*account_login_label)(void); }; #define PURPLE_IS_PROTOCOL_PLUGIN(plugin) \
--- a/pidgin/gtkaccount.c Tue Apr 29 03:59:45 2008 +0000 +++ b/pidgin/gtkaccount.c Wed Apr 30 03:24:35 2008 +0000 @@ -255,6 +255,16 @@ } } +static gboolean +screenname_focus_cb(GtkWidget *widget, GdkEventFocus *event, AccountPrefsDialog *dialog) +{ + if (!strcmp(gtk_entry_get_text(GTK_ENTRY(widget)),dialog->prpl_info->account_login_label())) { + gtk_entry_set_text(GTK_ENTRY(widget),""); + gtk_widget_modify_text(widget,GTK_STATE_NORMAL,NULL); + } + return FALSE; +} + static void screenname_changed_cb(GtkEntry *entry, AccountPrefsDialog *dialog) { @@ -270,6 +280,23 @@ } } +static gboolean +screenname_nofocus_cb(GtkWidget *widget, GdkEventFocus *event, AccountPrefsDialog *dialog) +{ + GdkColor color = {0, 34952, 35466, 34181}; + if (*gtk_entry_get_text(GTK_ENTRY(widget)) == '\0') { + /* We have to avoid hitting the screenname_changed_cb function + * because it enables buttons we don't want enabled yet ;) + */ + g_signal_handlers_block_by_func(widget, G_CALLBACK(screenname_changed_cb), dialog); + gtk_entry_set_text(GTK_ENTRY(widget),dialog->prpl_info->account_login_label()); + /* Make sure we can hit it again */ + g_signal_handlers_unblock_by_func(widget, G_CALLBACK(screenname_changed_cb), dialog); + gtk_widget_modify_text(widget,GTK_STATE_NORMAL,&color); + } + return FALSE; +} + static void icon_filesel_choose_cb(const char *filename, gpointer data) { @@ -364,6 +391,7 @@ GList *user_splits; GList *l, *l2; char *username = NULL; + GdkColor color = {0, 34952, 35466, 34181}; if (dialog->protocol_menu != NULL) { @@ -410,6 +438,15 @@ add_pref_box(dialog, vbox, _("Screen _name:"), dialog->screenname_entry); + if (dialog->prpl_info->account_login_label) { + gtk_entry_set_text(dialog->screenname_entry,dialog->prpl_info->account_login_label()); + g_signal_connect(G_OBJECT(dialog->screenname_entry), "focus-in-event", + G_CALLBACK(screenname_focus_cb), dialog); + g_signal_connect(G_OBJECT(dialog->screenname_entry), "focus-out-event", + G_CALLBACK(screenname_nofocus_cb), dialog); + gtk_widget_modify_text(dialog->screenname_entry,GTK_STATE_NORMAL,&color); + } + g_signal_connect(G_OBJECT(dialog->screenname_entry), "changed", G_CALLBACK(screenname_changed_cb), dialog);
