ekiga r6521 - in trunk: . lib/engine/gui/gtk-frontend
- From: jpuydt svn gnome org
- To: svn-commits-list gnome org
- Subject: ekiga r6521 - in trunk: . lib/engine/gui/gtk-frontend
- Date: Sat, 26 Jul 2008 01:47:50 +0000 (UTC)
Author: jpuydt
Date: Sat Jul 26 01:47:49 2008
New Revision: 6521
URL: http://svn.gnome.org/viewvc/ekiga?rev=6521&view=rev
Log:
New "presentity-selected" signal in the roster view
Modified:
trunk/ChangeLog
trunk/lib/engine/gui/gtk-frontend/roster-view-gtk.cpp
trunk/lib/engine/gui/gtk-frontend/roster-view-gtk.h
Modified: trunk/lib/engine/gui/gtk-frontend/roster-view-gtk.cpp
==============================================================================
--- trunk/lib/engine/gui/gtk-frontend/roster-view-gtk.cpp (original)
+++ trunk/lib/engine/gui/gtk-frontend/roster-view-gtk.cpp Sat Jul 26 01:47:49 2008
@@ -73,6 +73,13 @@
TYPE_PRESENTITY
};
+enum {
+ PRESENTITY_SELECTED_SIGNAL,
+ LAST_SIGNAL
+};
+
+static guint signals[LAST_SIGNAL] = { 0 };
+
static GObjectClass *parent_class = NULL;
@@ -137,6 +144,13 @@
GmConfEntry *entry,
gpointer data);
+/* DESCRIPTION : Called when the user selects a presentity
+ * BEHAVIOR : Emit the presentity-selected signal
+ * PRE : The gpointer must point to the RosterViewGtk GObject.
+ */
+static void on_selection_changed (GtkTreeSelection* selection,
+ gpointer data);
+
/* DESCRIPTION : Called when the user right-clicks on a heap, group or
* presentity.
* BEHAVIOR : Update the menu and displays it as a popup.
@@ -493,6 +507,26 @@
}
+static void
+on_selection_changed (GtkTreeSelection* selection,
+ gpointer data)
+{
+ RosterViewGtk* self = NULL;
+ GtkTreeModel* model = NULL;
+ GtkTreeIter iter;
+
+ self = ROSTER_VIEW_GTK (data);
+
+ if (gtk_tree_selection_get_selected (selection, &model, &iter)) {
+
+ Ekiga::Presentity *presentity = NULL;
+ gtk_tree_model_get (model, &iter,
+ COLUMN_PRESENTITY, &presentity,
+ -1);
+ g_signal_emit (self, signals[PRESENTITY_SELECTED_SIGNAL], 0, presentity);
+ }
+}
+
static gint
on_view_clicked (GtkWidget *tree_view,
GdkEventButton *event,
@@ -1088,6 +1122,7 @@
roster_view_gtk_class_init (gpointer g_class,
gpointer /*class_data*/)
{
+ RosterViewGtkClass* roster_view_gtk_class = NULL;
GObjectClass *gobject_class = NULL;
parent_class = (GObjectClass *) g_type_class_peek_parent (g_class);
@@ -1095,6 +1130,20 @@
gobject_class = (GObjectClass *) g_class;
gobject_class->dispose = roster_view_gtk_dispose;
gobject_class->finalize = roster_view_gtk_finalize;
+
+ signals[PRESENTITY_SELECTED_SIGNAL] =
+ g_signal_new ("presentity-selected",
+ G_OBJECT_CLASS_TYPE (gobject_class),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (RosterViewGtkClass, presentity_selected),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE, 1,
+ G_TYPE_POINTER);
+
+ /* FIXME: is it useful? */
+ roster_view_gtk_class = (RosterViewGtkClass*)g_class;
+ roster_view_gtk_class->presentity_selected = NULL;
}
@@ -1257,6 +1306,8 @@
/* Callback when the selection has been changed */
selection = gtk_tree_view_get_selection (self->priv->tree_view);
gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
+ g_signal_connect (G_OBJECT (selection), "changed",
+ G_CALLBACK (on_selection_changed), self);
g_signal_connect (G_OBJECT (self->priv->tree_view), "event-after",
G_CALLBACK (on_view_clicked), self);
Modified: trunk/lib/engine/gui/gtk-frontend/roster-view-gtk.h
==============================================================================
--- trunk/lib/engine/gui/gtk-frontend/roster-view-gtk.h (original)
+++ trunk/lib/engine/gui/gtk-frontend/roster-view-gtk.h Sat Jul 26 01:47:49 2008
@@ -60,6 +60,9 @@
struct _RosterViewGtkClass
{
GtkFrameClass parent;
+
+ void (*presentity_selected) (RosterViewGtk* self,
+ gpointer presentity);
};
#define ROSTER_VIEW_GTK_TYPE (roster_view_gtk_get_type ())
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]