[Telepathy-commits] [telepathy-mission-control/master] Allow derived objects to override connection creation
Alberto Mardegan
alberto.mardegan at nokia.com
Mon Nov 17 01:44:55 PST 2008
Virtualize the creation of McdConnection objects, so that subclasses can
reimplement it.
---
src/mcd-manager.c | 19 +++++++++++++++----
src/mcd-manager.h | 2 ++
2 files changed, 17 insertions(+), 4 deletions(-)
diff --git a/src/mcd-manager.c b/src/mcd-manager.c
index 5ff3c5e..e81da4a 100644
--- a/src/mcd-manager.c
+++ b/src/mcd-manager.c
@@ -646,6 +646,17 @@ _mcd_manager_get_property (GObject * obj, guint prop_id,
}
}
+static McdConnection *
+create_connection (McdManager *manager, McdAccount *account)
+{
+ McdManagerPrivate *priv = manager->priv;
+
+ return mcd_connection_new (priv->dbus_daemon,
+ TP_PROXY (priv->tp_conn_mgr)->bus_name,
+ priv->tp_conn_mgr, account,
+ priv->dispatcher);
+}
+
static void
mcd_manager_class_init (McdManagerClass * klass)
{
@@ -663,6 +674,8 @@ mcd_manager_class_init (McdManagerClass * klass)
mission_class->connect = _mcd_manager_connect;
mission_class->disconnect = _mcd_manager_disconnect;
+ klass->create_connection = create_connection;
+
/* Properties */
g_object_class_install_property
(object_class, PROP_NAME,
@@ -829,10 +842,8 @@ mcd_manager_create_connection (McdManager *manager, McdAccount *account)
g_debug ("%s: Manager %s created", G_STRFUNC, priv->name);
}
- connection = mcd_connection_new (priv->dbus_daemon,
- TP_PROXY (priv->tp_conn_mgr)->bus_name,
- priv->tp_conn_mgr, account,
- priv->dispatcher);
+ connection = MCD_MANAGER_GET_CLASS (manager)->create_connection
+ (manager, account);
mcd_operation_take_mission (MCD_OPERATION (manager),
MCD_MISSION (connection));
g_debug ("%s: Created a connection %p for account: %s", G_STRFUNC,
diff --git a/src/mcd-manager.h b/src/mcd-manager.h
index aebded1..32c2459 100644
--- a/src/mcd-manager.h
+++ b/src/mcd-manager.h
@@ -58,6 +58,8 @@ struct _McdManager
struct _McdManagerClass
{
McdOperationClass parent_class;
+ McdConnection *(*create_connection) (McdManager *manager,
+ McdAccount *account);
};
GType mcd_manager_get_type (void);
--
1.5.6.5
More information about the Telepathy-commits
mailing list