diff options
author | Danielle Madeley <danielle.madeley@collabora.co.uk> | 2009-12-18 13:34:38 +0800 |
---|---|---|
committer | Danielle Madeley <danielle.madeley@collabora.co.uk> | 2009-12-19 07:48:55 +0800 |
commit | 270d39eae11b2723a086e10e5dd9c358d1e90ade (patch) | |
tree | 7d440ed230ae054cfe2cc9c155cdffaa13e6e558 | |
parent | 51b0e60035f1125428148dee926e8085a9ba571c (diff) | |
download | gsoc2013-empathy-270d39eae11b2723a086e10e5dd9c358d1e90ade.tar gsoc2013-empathy-270d39eae11b2723a086e10e5dd9c358d1e90ade.tar.gz gsoc2013-empathy-270d39eae11b2723a086e10e5dd9c358d1e90ade.tar.bz2 gsoc2013-empathy-270d39eae11b2723a086e10e5dd9c358d1e90ade.tar.lz gsoc2013-empathy-270d39eae11b2723a086e10e5dd9c358d1e90ade.tar.xz gsoc2013-empathy-270d39eae11b2723a086e10e5dd9c358d1e90ade.tar.zst gsoc2013-empathy-270d39eae11b2723a086e10e5dd9c358d1e90ade.zip |
[EmpathyContactSelectorDialog] make the Account Chooser optional
-rw-r--r-- | libempathy-gtk/empathy-contact-selector-dialog.c | 115 | ||||
-rw-r--r-- | libempathy-gtk/empathy-contact-selector-dialog.h | 6 | ||||
-rw-r--r-- | libempathy-gtk/empathy-contact-selector-dialog.ui | 2 |
3 files changed, 115 insertions, 8 deletions
diff --git a/libempathy-gtk/empathy-contact-selector-dialog.c b/libempathy-gtk/empathy-contact-selector-dialog.c index 291184e10..8f1ec149f 100644 --- a/libempathy-gtk/empathy-contact-selector-dialog.c +++ b/libempathy-gtk/empathy-contact-selector-dialog.c @@ -17,6 +17,7 @@ * * Authors: Xavier Claessens <xclaesse@gmail.com> * Authors: Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> + * Authors: Danielle Madeley <danielle.madeley@collabora.co.uk> */ #include <config.h> @@ -49,9 +50,12 @@ typedef struct _EmpathyContactSelectorDialogPriv \ EmpathyContactSelectorDialogPriv; struct _EmpathyContactSelectorDialogPriv { + GtkWidget *account_chooser_label; GtkWidget *account_chooser; GtkWidget *entry_id; EmpathyContactManager *contact_manager; + + gboolean show_account_chooser; }; #define GET_PRIV(o) \ @@ -59,6 +63,11 @@ struct _EmpathyContactSelectorDialogPriv { EmpathyContactSelectorDialogPriv)) enum { + PROP_0, + PROP_SHOW_ACCOUNT_CHOOSER +}; + +enum { COMPLETION_COL_TEXT, COMPLETION_COL_ID, COMPLETION_COL_NAME, @@ -71,12 +80,9 @@ contact_selector_dialog_account_changed_cb (GtkWidget *widget, EmpathyContactSelectorDialogPriv *priv = GET_PRIV (dialog); EmpathyAccountChooser *chooser; TpConnection *connection; - EmpathyTpContactList *contact_list; GList *members; GtkListStore *store; GtkEntryCompletion *completion; - GtkTreeIter iter; - gchar *tmpstr; /* Remove completions */ completion = gtk_entry_get_completion (GTK_ENTRY (priv->entry_id)); @@ -89,15 +95,27 @@ contact_selector_dialog_account_changed_cb (GtkWidget *widget, if (!connection) return; - contact_list = empathy_contact_manager_get_list (priv->contact_manager, - connection); - members = empathy_contact_list_get_members ( - EMPATHY_CONTACT_LIST (contact_list)); + if (priv->show_account_chooser) + { + EmpathyTpContactList *contact_list; + + contact_list = empathy_contact_manager_get_list (priv->contact_manager, + connection); + members = empathy_contact_list_get_members ( + EMPATHY_CONTACT_LIST (contact_list)); + } + else + { + members = empathy_contact_list_get_members ( + EMPATHY_CONTACT_LIST (priv->contact_manager)); + } /* Add members to the completion */ while (members) { EmpathyContact *contact = members->data; + GtkTreeIter iter; + gchar *tmpstr; DEBUG ("Adding contact ID %s, Name %s", empathy_contact_get_id (contact), @@ -262,6 +280,7 @@ empathy_contact_selector_dialog_init (EmpathyContactSelectorDialog *dialog) "libempathy-gtk"); gui = empathy_builder_get_file (filename, "table_contact", &dialog->table_contact, + "account_chooser_label", &priv->account_chooser_label, "entry_id", &priv->entry_id, NULL); g_free (filename); @@ -327,6 +346,48 @@ empathy_contact_selector_dialog_init (EmpathyContactSelectorDialog *dialog) } static void +empathy_contact_selector_dialog_get_property (GObject *self, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + EmpathyContactSelectorDialog *dialog = EMPATHY_CONTACT_SELECTOR_DIALOG (self); + + switch (prop_id) + { + case PROP_SHOW_ACCOUNT_CHOOSER: + g_value_set_boolean (value, + empathy_contact_selector_dialog_get_show_account_chooser (dialog)); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (self, prop_id, pspec); + break; + } +} + +static void +empathy_contact_selector_dialog_set_property (GObject *self, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + EmpathyContactSelectorDialog *dialog = EMPATHY_CONTACT_SELECTOR_DIALOG (self); + + switch (prop_id) + { + case PROP_SHOW_ACCOUNT_CHOOSER: + empathy_contact_selector_dialog_set_show_account_chooser (dialog, + g_value_get_boolean (value)); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (self, prop_id, pspec); + break; + } +} + +static void empathy_contact_selector_dialog_dispose (GObject *object) { EmpathyContactSelectorDialogPriv *priv = GET_PRIV (object); @@ -350,4 +411,44 @@ empathy_contact_selector_dialog_class_init ( g_type_class_add_private (class, sizeof (EmpathyContactSelectorDialogPriv)); object_class->dispose = empathy_contact_selector_dialog_dispose; + object_class->get_property = empathy_contact_selector_dialog_get_property; + object_class->set_property = empathy_contact_selector_dialog_set_property; + + g_object_class_install_property (object_class, PROP_SHOW_ACCOUNT_CHOOSER, + g_param_spec_boolean ("show-account-chooser", + "Show Account Chooser", + "Whether or not this dialog should show an account chooser", + TRUE, + G_PARAM_READWRITE)); +} + +void +empathy_contact_selector_dialog_set_show_account_chooser ( + EmpathyContactSelectorDialog *self, + gboolean show_account_chooser) +{ + EmpathyContactSelectorDialogPriv *priv; + + g_return_if_fail (EMPATHY_IS_CONTACT_SELECTOR_DIALOG (self)); + + priv = GET_PRIV (self); + priv->show_account_chooser = show_account_chooser; + + gtk_widget_set_visible (priv->account_chooser_label, show_account_chooser); + gtk_widget_set_visible (priv->account_chooser, show_account_chooser); + contact_selector_dialog_account_changed_cb (priv->account_chooser, self); + + g_object_notify (G_OBJECT (self), "show-account-chooser"); +} + +gboolean +empathy_contact_selector_dialog_get_show_account_chooser ( + EmpathyContactSelectorDialog *self) +{ + EmpathyContactSelectorDialogPriv *priv; + + g_return_val_if_fail (EMPATHY_IS_CONTACT_SELECTOR_DIALOG (self), FALSE); + + priv = GET_PRIV (self); + return priv->show_account_chooser; } diff --git a/libempathy-gtk/empathy-contact-selector-dialog.h b/libempathy-gtk/empathy-contact-selector-dialog.h index 5fd6c2139..e317cd7a4 100644 --- a/libempathy-gtk/empathy-contact-selector-dialog.h +++ b/libempathy-gtk/empathy-contact-selector-dialog.h @@ -17,6 +17,7 @@ * * Authors: Xavier Claessens <xclaesse@gmail.com> * Authors: Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> + * Authors: Danielle Madeley <danielle.madeley@collabora.co.uk> */ #ifndef __EMPATHY_CONTACT_SELECTOR_DIALOG_H__ @@ -54,6 +55,11 @@ struct _EmpathyContactSelectorDialog { }; GType empathy_contact_selector_dialog_get_type (void); +void empathy_contact_selector_dialog_set_show_account_chooser ( + EmpathyContactSelectorDialog *self, + gboolean show_account_chooser); +gboolean empathy_contact_selector_dialog_get_show_account_chooser ( + EmpathyContactSelectorDialog *self); /* TYPE MACROS */ #define EMPATHY_TYPE_CONTACT_SELECTOR_DIALOG \ diff --git a/libempathy-gtk/empathy-contact-selector-dialog.ui b/libempathy-gtk/empathy-contact-selector-dialog.ui index 009028ec1..6bf68c62e 100644 --- a/libempathy-gtk/empathy-contact-selector-dialog.ui +++ b/libempathy-gtk/empathy-contact-selector-dialog.ui @@ -9,7 +9,7 @@ <property name="column_spacing">6</property> <property name="row_spacing">6</property> <child> - <object class="GtkLabel" id="label1"> + <object class="GtkLabel" id="account_chooser_label"> <property name="visible">True</property> <property name="xalign">0</property> <property name="label" translatable="yes">Account:</property> |