ekiga r6978 - in trunk: lib/engine/components/avahi-publisher lib/engine/presence/skel src/endpoints
- From: jpuydt svn gnome org
- To: svn-commits-list gnome org
- Subject: ekiga r6978 - in trunk: lib/engine/components/avahi-publisher lib/engine/presence/skel src/endpoints
- Date: Sun, 14 Sep 2008 18:01:03 +0000 (UTC)
Author: jpuydt
Date: Sun Sep 14 18:01:03 2008
New Revision: 6978
URL: http://svn.gnome.org/viewvc/ekiga?rev=6978&view=rev
Log:
Fixed #550275
Modified:
trunk/lib/engine/components/avahi-publisher/avahi-publisher-main.cpp
trunk/lib/engine/components/avahi-publisher/avahi-publisher.h
trunk/lib/engine/presence/skel/presence-core.cpp
trunk/lib/engine/presence/skel/presence-core.h
trunk/src/endpoints/opal-main.cpp
Modified: trunk/lib/engine/components/avahi-publisher/avahi-publisher-main.cpp
==============================================================================
--- trunk/lib/engine/components/avahi-publisher/avahi-publisher-main.cpp (original)
+++ trunk/lib/engine/components/avahi-publisher/avahi-publisher-main.cpp Sun Sep 14 18:01:03 2008
@@ -40,6 +40,34 @@
#include <iostream>
+class Service: public Ekiga::Service
+{
+public:
+
+ Service (Ekiga::PresenceCore& core_,
+ Avahi::PresencePublisher* publisher_):
+ core(core_), publisher(publisher_)
+ {
+ core.add_presence_publisher (*publisher);
+ }
+
+ ~Service ()
+ {
+ core.remove_presence_publisher (*publisher);
+ delete publisher;
+ }
+
+ const std::string get_name () const
+ { return "avahi-presence-publisher"; }
+
+ const std::string get_description () const
+ { return "\tObject bringing in Avahi presence publishing"; }
+
+private:
+ Ekiga::PresenceCore& core;
+ Avahi::PresencePublisher* publisher;
+};
+
bool
avahi_publisher_init (Ekiga::ServiceCore &core,
int* /*argc*/,
@@ -62,9 +90,10 @@
&& details != NULL) {
Avahi::PresencePublisher* publisher = NULL;
+ Service* service = NULL;
publisher = new Avahi::PresencePublisher (core, *details, *call_core);
- presence_core->add_presence_publisher (*publisher);
- core.add (*publisher);
+ service = new Service (*presence_core, publisher);
+ core.add (*service);
result = true;
}
Modified: trunk/lib/engine/components/avahi-publisher/avahi-publisher.h
==============================================================================
--- trunk/lib/engine/components/avahi-publisher/avahi-publisher.h (original)
+++ trunk/lib/engine/components/avahi-publisher/avahi-publisher.h Sun Sep 14 18:01:03 2008
@@ -54,8 +54,7 @@
namespace Avahi
{
- class PresencePublisher: public Ekiga::Service,
- public Ekiga::PresencePublisher
+ class PresencePublisher: public Ekiga::PresencePublisher
{
public:
@@ -65,12 +64,6 @@
~PresencePublisher ();
- const std::string get_name () const
- { return "avahi-presence-publisher"; }
-
- const std::string get_description () const
- { return "\tObject bringing in Avahi presence publishing"; }
-
void publish (const Ekiga::PersonalDetails & details);
/* public only to be called by C callbacks... */
Modified: trunk/lib/engine/presence/skel/presence-core.cpp
==============================================================================
--- trunk/lib/engine/presence/skel/presence-core.cpp (original)
+++ trunk/lib/engine/presence/skel/presence-core.cpp Sun Sep 14 18:01:03 2008
@@ -135,6 +135,12 @@
presentity_decorators.push_back (&decorator);
}
+void
+Ekiga::PresenceCore::remove_presentity_decorator (PresentityDecorator& decorator)
+{
+ presentity_decorators.remove (&decorator);
+}
+
bool
Ekiga::PresenceCore::populate_presentity_menu (Presentity& presentity,
const std::string uri,
@@ -156,7 +162,7 @@
void
Ekiga::PresenceCore::add_presence_fetcher (PresenceFetcher &fetcher)
{
- presence_fetchers.insert (&fetcher);
+ presence_fetchers.push_back (&fetcher);
fetcher.presence_received.connect (sigc::mem_fun (this,
&Ekiga::PresenceCore::on_presence_received));
fetcher.status_received.connect (sigc::mem_fun (this,
@@ -169,13 +175,20 @@
}
void
+Ekiga::PresenceCore::remove_presence_fetcher (PresenceFetcher& fetcher)
+{
+ presence_fetchers.remove (&fetcher);
+ // FIXME: unconnect the signals!
+}
+
+void
Ekiga::PresenceCore::fetch_presence (const std::string uri)
{
uri_infos[uri].count++;
if (uri_infos[uri].count == 1) {
- for (std::set<PresenceFetcher *>::iterator iter
+ for (std::list<PresenceFetcher*>::iterator iter
= presence_fetchers.begin ();
iter != presence_fetchers.end ();
iter++)
@@ -194,7 +207,7 @@
uri_infos.erase (uri_infos.find (uri));
- for (std::set<PresenceFetcher *>::iterator iter
+ for (std::list<PresenceFetcher*>::iterator iter
= presence_fetchers.begin ();
iter != presence_fetchers.end ();
iter++)
@@ -221,12 +234,18 @@
void
Ekiga::PresenceCore::add_presence_publisher (PresencePublisher &publisher)
{
- presence_publishers.insert (&publisher);
+ presence_publishers.push_back (&publisher);
+}
+
+void
+Ekiga::PresenceCore::remove_presence_publisher (PresencePublisher& publisher)
+{
+ presence_publishers.remove (&publisher);
}
void Ekiga::PresenceCore::publish (const PersonalDetails* details)
{
- for (std::set<PresencePublisher *>::iterator iter
+ for (std::list<PresencePublisher*>::iterator iter
= presence_publishers.begin ();
iter != presence_publishers.end ();
iter++)
Modified: trunk/lib/engine/presence/skel/presence-core.h
==============================================================================
--- trunk/lib/engine/presence/skel/presence-core.h (original)
+++ trunk/lib/engine/presence/skel/presence-core.h Sun Sep 14 18:01:03 2008
@@ -220,6 +220,11 @@
*/
void add_presentity_decorator (PresentityDecorator &decorator);
+ /** Removes a decorator from the pool of presentity decorators.
+ * @param The presentity decorator.
+ */
+ void remove_presentity_decorator (PresentityDecorator& decorator);
+
/** Populates a menu with the actions available on a given uri.
* @param The uri for which the decoration is needed.
* @param The builder to populate.
@@ -230,7 +235,7 @@
private:
- std::list<PresentityDecorator *> presentity_decorators;
+ std::list<PresentityDecorator*> presentity_decorators;
/*** API to help presentities get presence ***/
public:
@@ -240,6 +245,11 @@
*/
void add_presence_fetcher (PresenceFetcher &fetcher);
+ /** Removes a fetcher from the pool of presentce fetchers.
+ * @param The presence fetcher.
+ */
+ void remove_presence_fetcher (PresenceFetcher &fetcher);
+
/** Tells the PresenceCore that someone is interested in presence
* information for the given uri.
* @param: The uri for which presence is requested.
@@ -260,7 +270,7 @@
private:
- std::set<PresenceFetcher *> presence_fetchers;
+ std::list<PresenceFetcher*> presence_fetchers;
void on_presence_received (const std::string uri,
const std::string presence);
void on_status_received (const std::string uri,
@@ -281,10 +291,11 @@
public:
void add_presence_publisher (PresencePublisher &publisher);
+ void remove_presence_publisher (PresencePublisher& publisher);
private:
- std::set<PresencePublisher *> presence_publishers;
+ std::list<PresencePublisher*> presence_publishers;
void publish (const PersonalDetails* details);
void on_personal_details_updated (PersonalDetails &details);
void on_registration_event (const Ekiga::Account & account,
Modified: trunk/src/endpoints/opal-main.cpp
==============================================================================
--- trunk/src/endpoints/opal-main.cpp (original)
+++ trunk/src/endpoints/opal-main.cpp Sun Sep 14 18:01:03 2008
@@ -73,6 +73,9 @@
return false;
}
+/* FIXME: add here an Ekiga::Service which will add&remove publishers,
+ * decorators and fetchers
+ */
using namespace Opal;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]