1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
/*
* empathy-invite-participant-dialog.c
*
* EmpathyInviteParticipantDialog
*
* (c) 2009, Collabora Ltd.
*
* Authors:
* Danielle Madeley <danielle.madeley@collabora.co.uk>
*/
#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);
}
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;
char *str;
str = g_strdup_printf (
"<span size=\"x-large\" weight=\"bold\">%s</span>\n\n%s",
_("Invite Participant"),
_("Choose a contact to invite into the conversation:"));
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);
priv = GET_PRIVATE (self);
return empathy_contact_selector_dup_selected (
EMPATHY_CONTACT_SELECTOR (priv->selector));
}
GtkWidget *
empathy_invite_participant_dialog_new (GtkWindow *parent)
{
GtkWidget *self = g_object_new (EMPATHY_TYPE_INVITE_PARTICIPANT_DIALOG, NULL);
if (parent != NULL)
{
gtk_window_set_transient_for (GTK_WINDOW (self), parent);
}
return self;
}
|