[ekiga] Made the opal presence manager code also do Ekiga::PresenceFetcher



commit 09b131969536c2053581e970235a220a8f7d8113
Author: Snark <jpuydt gnome org>
Date:   Sun Dec 26 21:42:08 2010 +0100

    Made the opal presence manager code also do Ekiga::PresenceFetcher
    
    That leads to a dummy implementation in the opal account code and I'm
    not sure the framework is complete, but it's a start.

 lib/engine/components/opal/opal-account.cpp        |   12 ++++++++++++
 lib/engine/components/opal/opal-account.h          |    6 ++++++
 lib/engine/components/opal/opal-main.cpp           |    1 +
 .../components/opal/opal-presence-manager.cpp      |   18 ++++++++++++++++++
 lib/engine/components/opal/opal-presence-manager.h |    8 +++++++-
 5 files changed, 44 insertions(+), 1 deletions(-)
---
diff --git a/lib/engine/components/opal/opal-account.cpp b/lib/engine/components/opal/opal-account.cpp
index f1980c3..58f1bf0 100644
--- a/lib/engine/components/opal/opal-account.cpp
+++ b/lib/engine/components/opal/opal-account.cpp
@@ -503,6 +503,18 @@ Opal::Account::publish (const Ekiga::PersonalDetails& details)
 }
 
 void
+Opal::Account::fetch (const std::string uri)
+{
+  std::cout << __PRETTY_FUNCTION__ << " " << uri << std::endl;
+}
+
+void
+Opal::Account::unfetch (const std::string uri)
+{
+  std::cout << __PRETTY_FUNCTION__ << " " << uri << std::endl;
+}
+
+void
 Opal::Account::handle_registration_event (RegistrationState state_,
 					  const std::string info) const
 {
diff --git a/lib/engine/components/opal/opal-account.h b/lib/engine/components/opal/opal-account.h
index b552bc0..24f75f2 100644
--- a/lib/engine/components/opal/opal-account.h
+++ b/lib/engine/components/opal/opal-account.h
@@ -145,7 +145,13 @@ public:
 
     boost::signal0<void> trigger_saving;
 
+    /*
+     * This part of the api allows using each account to handle
+     * some piece of the presence
+     */
     void publish (const Ekiga::PersonalDetails& details);
+    void fetch (const std::string uri);
+    void unfetch (const std::string uri);
 
     /* This method is public to be called by an opal endpoint, which will push
      * this Opal::Account's new registration state
diff --git a/lib/engine/components/opal/opal-main.cpp b/lib/engine/components/opal/opal-main.cpp
index 097b65c..8c7de43 100644
--- a/lib/engine/components/opal/opal-main.cpp
+++ b/lib/engine/components/opal/opal-main.cpp
@@ -134,6 +134,7 @@ struct OPALSpark: public Ekiga::Spark
 
       boost::shared_ptr<PresenceManager> presence_manager (new PresenceManager (bank));
       presence_core->add_presence_publisher (presence_manager);
+      presence_core->add_presence_fetcher (presence_manager);
 
 #ifdef HAVE_H323
       unsigned h323_port = gm_conf_get_int (H323_KEY "listen_port");
diff --git a/lib/engine/components/opal/opal-presence-manager.cpp b/lib/engine/components/opal/opal-presence-manager.cpp
index e710e86..a67c77a 100644
--- a/lib/engine/components/opal/opal-presence-manager.cpp
+++ b/lib/engine/components/opal/opal-presence-manager.cpp
@@ -49,3 +49,21 @@ Opal::PresenceManager::publish (const Ekiga::PersonalDetails& details)
        iter++)
     (*iter)->publish (details);
 }
+
+void
+Opal::PresenceManager::fetch (const std::string uri)
+{
+  for (Opal::Bank::iterator iter = bank->begin ();
+       iter != bank->end ();
+       iter++)
+    (*iter)->fetch (uri);
+}
+
+void
+Opal::PresenceManager::unfetch (const std::string uri)
+{
+  for (Opal::Bank::iterator iter = bank->begin ();
+       iter != bank->end ();
+       iter++)
+    (*iter)->unfetch (uri);
+}
diff --git a/lib/engine/components/opal/opal-presence-manager.h b/lib/engine/components/opal/opal-presence-manager.h
index 49d1007..c5523fa 100644
--- a/lib/engine/components/opal/opal-presence-manager.h
+++ b/lib/engine/components/opal/opal-presence-manager.h
@@ -44,7 +44,9 @@
 
 namespace Opal {
 
-  class PresenceManager: public Ekiga::PresencePublisher
+  class PresenceManager:
+    public Ekiga::PresencePublisher,
+    public Ekiga::PresenceFetcher
   {
   public:
 
@@ -52,6 +54,10 @@ namespace Opal {
 
     void publish (const Ekiga::PersonalDetails& details);
 
+    void fetch (const std::string uri);
+
+    void unfetch (const std::string uri);
+
   private:
 
     boost::shared_ptr<Opal::Bank> bank;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]