From d23e7ebee52c513b98b0b7382a41005c3b084efc Mon Sep 17 00:00:00 2001 From: Guillaume Desmottes Date: Tue, 3 Jul 2012 15:49:50 +0200 Subject: add empathy-roster-model-manager --- libempathy-gtk/Makefile.am | 2 + libempathy-gtk/empathy-roster-model-manager.c | 155 ++++++++++++++++++++++++++ libempathy-gtk/empathy-roster-model-manager.h | 73 ++++++++++++ 3 files changed, 230 insertions(+) create mode 100644 libempathy-gtk/empathy-roster-model-manager.c create mode 100644 libempathy-gtk/empathy-roster-model-manager.h (limited to 'libempathy-gtk') diff --git a/libempathy-gtk/Makefile.am b/libempathy-gtk/Makefile.am index 59e495224..e5b211a9e 100644 --- a/libempathy-gtk/Makefile.am +++ b/libempathy-gtk/Makefile.am @@ -77,6 +77,7 @@ libempathy_gtk_handwritten_source = \ empathy-roster-contact.c \ empathy-roster-group.c \ empathy-roster-model.c \ + empathy-roster-model-manager.c \ empathy-roster-view.c \ empathy-search-bar.c \ empathy-share-my-desktop.c \ @@ -146,6 +147,7 @@ libempathy_gtk_headers = \ empathy-roster-contact.h \ empathy-roster-group.h \ empathy-roster-model.h \ + empathy-roster-model-manager.h \ empathy-roster-view.h \ empathy-search-bar.h \ empathy-share-my-desktop.h \ diff --git a/libempathy-gtk/empathy-roster-model-manager.c b/libempathy-gtk/empathy-roster-model-manager.c new file mode 100644 index 000000000..824013b86 --- /dev/null +++ b/libempathy-gtk/empathy-roster-model-manager.c @@ -0,0 +1,155 @@ +/* + * empathy-roster-model-manager.c + * + * Implementation of EmpathyRosterModel using EmpathyIndividualManager as + * source. + * + * Copyright (C) 2012 Collabora Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "config.h" + +#include "empathy-roster-model-manager.h" + +#include "empathy-roster-model.h" + +static void roster_model_iface_init (EmpathyRosterModelInterface *iface); + +G_DEFINE_TYPE_WITH_CODE (EmpathyRosterModelManager, + empathy_roster_model_manager, + G_TYPE_OBJECT, + G_IMPLEMENT_INTERFACE (EMPATHY_TYPE_ROSTER_MODEL, roster_model_iface_init)) + +enum +{ + PROP_FIRST_PROP = 1, + N_PROPS +}; + +/* +enum +{ + LAST_SIGNAL +}; + +static guint signals[LAST_SIGNAL]; +*/ + +struct _EmpathyRosterModelManagerPriv +{ + gpointer badger; +}; + +static void +empathy_roster_model_manager_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + //EmpathyRosterModelManager *self = EMPATHY_ROSTER_MODEL_MANAGER (object); + + switch (property_id) + { + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +empathy_roster_model_manager_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + //EmpathyRosterModelManager *self = EMPATHY_ROSTER_MODEL_MANAGER (object); + + switch (property_id) + { + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +empathy_roster_model_manager_constructed (GObject *object) +{ + //EmpathyRosterModelManager *self = EMPATHY_ROSTER_MODEL_MANAGER (object); + void (*chain_up) (GObject *) = + ((GObjectClass *) empathy_roster_model_manager_parent_class)->constructed; + + if (chain_up != NULL) + chain_up (object); +} + +static void +empathy_roster_model_manager_dispose (GObject *object) +{ + //EmpathyRosterModelManager *self = EMPATHY_ROSTER_MODEL_MANAGER (object); + void (*chain_up) (GObject *) = + ((GObjectClass *) empathy_roster_model_manager_parent_class)->dispose; + + if (chain_up != NULL) + chain_up (object); +} + +static void +empathy_roster_model_manager_finalize (GObject *object) +{ + //EmpathyRosterModelManager *self = EMPATHY_ROSTER_MODEL_MANAGER (object); + void (*chain_up) (GObject *) = + ((GObjectClass *) empathy_roster_model_manager_parent_class)->finalize; + + if (chain_up != NULL) + chain_up (object); +} + +static void +empathy_roster_model_manager_class_init ( + EmpathyRosterModelManagerClass *klass) +{ + GObjectClass *oclass = G_OBJECT_CLASS (klass); + //GParamSpec *spec; + + oclass->get_property = empathy_roster_model_manager_get_property; + oclass->set_property = empathy_roster_model_manager_set_property; + oclass->constructed = empathy_roster_model_manager_constructed; + oclass->dispose = empathy_roster_model_manager_dispose; + oclass->finalize = empathy_roster_model_manager_finalize; + + g_type_class_add_private (klass, sizeof (EmpathyRosterModelManagerPriv)); +} + +static void +empathy_roster_model_manager_init (EmpathyRosterModelManager *self) +{ + self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, + EMPATHY_TYPE_ROSTER_MODEL_MANAGER, EmpathyRosterModelManagerPriv); +} + +EmpathyRosterModelManager * +empathy_roster_model_manager_new (void) +{ + return g_object_new (EMPATHY_TYPE_ROSTER_MODEL_MANAGER, + NULL); +} + +static void +roster_model_iface_init (EmpathyRosterModelInterface *iface) +{ +} diff --git a/libempathy-gtk/empathy-roster-model-manager.h b/libempathy-gtk/empathy-roster-model-manager.h new file mode 100644 index 000000000..79474945c --- /dev/null +++ b/libempathy-gtk/empathy-roster-model-manager.h @@ -0,0 +1,73 @@ +/* + * empathy-roster-model-manager.h + * + * Copyright (C) 2012 Collabora Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef __EMPATHY_ROSTER_MODEL_MANAGER_H__ +#define __EMPATHY_ROSTER_MODEL_MANAGER_H__ + +#include + +G_BEGIN_DECLS + +typedef struct _EmpathyRosterModelManager EmpathyRosterModelManager; +typedef struct _EmpathyRosterModelManagerClass EmpathyRosterModelManagerClass; +typedef struct _EmpathyRosterModelManagerPriv EmpathyRosterModelManagerPriv; + +struct _EmpathyRosterModelManagerClass +{ + /**/ + GObjectClass parent_class; +}; + +struct _EmpathyRosterModelManager +{ + /**/ + GObject parent; + EmpathyRosterModelManagerPriv *priv; +}; + +GType empathy_roster_model_manager_get_type (void); + +/* TYPE MACROS */ +#define EMPATHY_TYPE_ROSTER_MODEL_MANAGER \ + (empathy_roster_model_manager_get_type ()) +#define EMPATHY_ROSTER_MODEL_MANAGER(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj), \ + EMPATHY_TYPE_ROSTER_MODEL_MANAGER, \ + EmpathyRosterModelManager)) +#define EMPATHY_ROSTER_MODEL_MANAGER_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST((klass), \ + EMPATHY_TYPE_ROSTER_MODEL_MANAGER, \ + EmpathyRosterModelManagerClass)) +#define EMPATHY_IS_ROSTER_MODEL_MANAGER(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj), \ + EMPATHY_TYPE_ROSTER_MODEL_MANAGER)) +#define EMPATHY_IS_ROSTER_MODEL_MANAGER_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE((klass), \ + EMPATHY_TYPE_ROSTER_MODEL_MANAGER)) +#define EMPATHY_ROSTER_MODEL_MANAGER_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), \ + EMPATHY_TYPE_ROSTER_MODEL_MANAGER, \ + EmpathyRosterModelManagerClass)) + +EmpathyRosterModelManager * empathy_roster_model_manager_new (void); + +G_END_DECLS + +#endif /* #ifndef __EMPATHY_ROSTER_MODEL_MANAGER_H__*/ -- cgit v1.2.3