]> cgit.babelmonkeys.de Git - jubjub.git/blobdiff - src/gui/gtk/JubGtkRosterUI.m
Build roster window in JubGtkRosterUI
[jubjub.git] / src / gui / gtk / JubGtkRosterUI.m
index 66a050ef4002b152a0fc7362542a4999da765e8a..b3899e34a1d750edf1e57d0d6961d4a8f4baf326 100644 (file)
@@ -80,14 +80,14 @@ static gboolean filter_roster_by_presence(GtkTreeModel *model,
 }
 
 @implementation JubGtkRosterUI
-- initWithBuilder: (GtkBuilder*)builder_
-       connection: (XMPPConnection*)connection_
+- initWithConnection: (XMPPConnection*)connection_
 {
        self = [super init];
 
        @try {
                GtkTreeView *roster_view;
                GtkComboBox *presence_combo;
+               GtkBuilder *builder;
 
                groupMap = [[OFMapTable alloc]
                    initWithKeyFunctions: keyFunctions
@@ -97,7 +97,14 @@ static gboolean filter_roster_by_presence(GtkTreeModel *model,
                presences = [[OFCountedSet alloc] init];
                connection = [connection_ retain];
 
-               builder = g_object_ref(builder_);
+               builder = gtk_builder_new();
+               gtk_builder_add_from_file(builder, "data/gtk/roster.ui", NULL);
+               gtk_builder_connect_signals(builder, NULL);
+
+               roster_window =
+                   GTK_WIDGET(gtk_builder_get_object(builder, "RosterWindow"));
+
+               gtk_widget_show(roster_window);
 
                roster_model = GTK_TREE_STORE(gtk_builder_get_object(builder,
                    "RosterTreeStore"));
@@ -119,6 +126,8 @@ static gboolean filter_roster_by_presence(GtkTreeModel *model,
 
                g_signal_connect(presence_combo, "changed",
                    G_CALLBACK(presence_changed), connection);
+
+               g_object_unref(G_OBJECT(builder));
        } @catch (id e) {
                [self release];
                @throw e;
@@ -131,16 +140,11 @@ static gboolean filter_roster_by_presence(GtkTreeModel *model,
 {
        [groupMap release];
        [contactMap release];
+       [chatMap release];
        [presences release];
        [connection release];
 
-       if (roster_model)
-               g_object_unref(roster_model);
-
-       if (roster_filter)
-               g_object_unref(roster_filter);
-
-       g_object_unref(builder);
+       gtk_widget_destroy(roster_window);
 
        [super dealloc];
 }