]> git.0d.be Git - empathy.git/blobdiff - src/empathy-invite-participant-dialog.c
Merge branch 'sasl'
[empathy.git] / src / empathy-invite-participant-dialog.c
index 07c12c9b0e5a24d2610c3b6c47e707d2954600b7..da75e72cdb4cec19a12358df8576699cd81df0e9 100644 (file)
 
 #include <glib/gi18n.h>
 
-#include <libempathy/empathy-contact-manager.h>
-
-#include <libempathy-gtk/empathy-contact-selector.h>
-
 #include "empathy-invite-participant-dialog.h"
 
-#define GET_PRIVATE(obj)    (G_TYPE_INSTANCE_GET_PRIVATE ((obj), EMPATHY_TYPE_INVITE_PARTICIPANT_DIALOG, EmpathyInviteParticipantDialogPrivate))
-
-G_DEFINE_TYPE (EmpathyInviteParticipantDialog, empathy_invite_participant_dialog, GTK_TYPE_DIALOG);
-
-typedef struct _EmpathyInviteParticipantDialogPrivate EmpathyInviteParticipantDialogPrivate;
-struct _EmpathyInviteParticipantDialogPrivate
-{
-  GtkWidget *selector;
-};
-
-static void
-invite_participant_enable_join (GtkComboBox *selector,
-                                GtkWidget   *button)
-{
-  gtk_widget_set_sensitive (button, TRUE);
-}
+G_DEFINE_TYPE (EmpathyInviteParticipantDialog,
+    empathy_invite_participant_dialog, EMPATHY_TYPE_CONTACT_SELECTOR_DIALOG);
 
 static void
 empathy_invite_participant_dialog_class_init (EmpathyInviteParticipantDialogClass *klass)
 {
-  GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
-
-  g_type_class_add_private (gobject_class, sizeof (EmpathyInviteParticipantDialogPrivate));
 }
 
 static void
 empathy_invite_participant_dialog_init (EmpathyInviteParticipantDialog *self)
 {
-  EmpathyInviteParticipantDialogPrivate *priv = GET_PRIVATE (self);
-  EmpathyContactManager *manager = empathy_contact_manager_dup_singleton ();
-  GtkWidget *vbox = gtk_vbox_new (FALSE, 6);
-  GtkWidget *label = gtk_label_new (NULL);
-  GtkWidget *join_button;
+  EmpathyContactSelectorDialog *parent = EMPATHY_CONTACT_SELECTOR_DIALOG (self);
+  GtkWidget *label;
   char *str;
 
+  label = gtk_label_new (NULL);
   str = g_strdup_printf (
       "<span size=\"x-large\" weight=\"bold\">%s</span>\n\n%s",
       _("Invite Participant"),
@@ -59,48 +36,28 @@ empathy_invite_participant_dialog_init (EmpathyInviteParticipantDialog *self)
   gtk_label_set_markup (GTK_LABEL (label), str);
   g_free (str);
 
-  priv->selector = empathy_contact_selector_new (
-      EMPATHY_CONTACT_LIST (manager));
-
-  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, TRUE, 0);
-  gtk_box_pack_start (GTK_BOX (vbox), priv->selector, FALSE, TRUE, 0);
-  gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (self))),
-        vbox, TRUE, TRUE, 6);
-
-  gtk_widget_show_all (vbox);
-
-  gtk_dialog_add_button (GTK_DIALOG (self),
-      GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL);
-  join_button = gtk_dialog_add_button (GTK_DIALOG (self),
-      "Invite", GTK_RESPONSE_OK);
-
-  gtk_dialog_set_has_separator (GTK_DIALOG (self), FALSE);
-
-  gtk_widget_set_sensitive (join_button, FALSE);
-  g_signal_connect (priv->selector, "changed",
-      G_CALLBACK (invite_participant_enable_join), join_button);
-
-  g_object_unref (manager);
-}
-
-EmpathyContact *
-empathy_invite_participant_dialog_dup_selected_contact (
-    EmpathyInviteParticipantDialog *self)
-{
-  EmpathyInviteParticipantDialogPrivate *priv;
-
-  g_return_val_if_fail (EMPATHY_IS_INVITE_PARTICIPANT_DIALOG (self), NULL);
+  gtk_box_pack_start (GTK_BOX (parent->vbox), label, FALSE, TRUE, 0);
+  /* move to the top -- wish there was a better way to do this */
+  gtk_box_reorder_child (GTK_BOX (parent->vbox), label, 0);
+  gtk_widget_show (label);
 
-  priv = GET_PRIVATE (self);
+  parent->button_action = gtk_dialog_add_button (GTK_DIALOG (self),
+      _("Invite"), GTK_RESPONSE_ACCEPT);
+  gtk_widget_set_sensitive (parent->button_action, FALSE);
 
-  return empathy_contact_selector_dup_selected (
-      EMPATHY_CONTACT_SELECTOR (priv->selector));
+  gtk_window_set_title (GTK_WINDOW (self), _("Invite Participant"));
+  gtk_window_set_role (GTK_WINDOW (self), "invite_participant");
+  empathy_contact_selector_dialog_set_show_account_chooser (
+      EMPATHY_CONTACT_SELECTOR_DIALOG (self), FALSE);
 }
 
 GtkWidget *
-empathy_invite_participant_dialog_new (GtkWindow *parent)
+empathy_invite_participant_dialog_new (GtkWindow *parent,
+    TpAccount *account)
 {
-  GtkWidget *self = g_object_new (EMPATHY_TYPE_INVITE_PARTICIPANT_DIALOG, NULL);
+  GtkWidget *self = g_object_new (EMPATHY_TYPE_INVITE_PARTICIPANT_DIALOG,
+      "filter-account", account,
+      NULL);
 
   if (parent != NULL)
     {