ekiga r6891 - trunk/lib/engine/presence/skel



Author: jpuydt
Date: Tue Sep  9 15:30:06 2008
New Revision: 6891
URL: http://svn.gnome.org/viewvc/ekiga?rev=6891&view=rev

Log:
New Ekiga::URIPresentity, which fixed #550373

Added:
   trunk/lib/engine/presence/skel/uri-presentity.cpp
   trunk/lib/engine/presence/skel/uri-presentity.h
Modified:
   trunk/lib/engine/presence/skel/Makefile.am

Modified: trunk/lib/engine/presence/skel/Makefile.am
==============================================================================
--- trunk/lib/engine/presence/skel/Makefile.am	(original)
+++ trunk/lib/engine/presence/skel/Makefile.am	Tue Sep  9 15:30:06 2008
@@ -16,6 +16,8 @@
 	$(presence_dir)/heap-impl.h		\
 	$(presence_dir)/cluster.h		\
 	$(presence_dir)/cluster-impl.h		\
+	$(presence_dir)/uri-presentity.h	\
+	$(presence_dir)/uri-presentity.cpp	\
 	$(presence_dir)/presence-core.h		\
 	$(presence_dir)/presence-core.cpp
 

Added: trunk/lib/engine/presence/skel/uri-presentity.cpp
==============================================================================
--- (empty file)
+++ trunk/lib/engine/presence/skel/uri-presentity.cpp	Tue Sep  9 15:30:06 2008
@@ -0,0 +1,116 @@
+
+/*
+ * Ekiga -- A VoIP and Video-Conferencing application
+ * Copyright (C) 2000-2008 Damien Sandras
+
+ * This program is free software; you can  redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version. This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Ekiga is licensed under the GPL license and as a special exception, you
+ * have permission to link or otherwise combine this program with the
+ * programs OPAL, OpenH323 and PWLIB, and distribute the combination, without
+ * applying the requirements of the GNU GPL to the OPAL, OpenH323 and PWLIB
+ * programs, as long as you do follow the requirements of the GNU GPL for all
+ * the rest of the software thus combined.
+ */
+
+
+/*
+ *                         uri-presentity.cpp  -  description
+ *                         ------------------------------------------
+ *   begin                : written in 2008 by Julien Puydt
+ *   copyright            : (c) 2008 by Julien Puydt
+ *   description          : implementation of a presentity around a simple URI
+ *
+ */
+
+#include "uri-presentity.h"
+
+Ekiga::URIPresentity::URIPresentity (Ekiga::ServiceCore &_core,
+				     std::string name_,
+				     std::string uri_)
+  : core(_core), name(name_), uri(uri_), presence("unknown")
+{
+  presence_core = dynamic_cast<Ekiga::PresenceCore*>(core.get ("presence-core"));
+  presence_core->presence_received.connect (sigc::mem_fun (this, &Ekiga::URIPresentity::on_presence_received));
+  presence_core->status_received.connect (sigc::mem_fun (this, &Ekiga::URIPresentity::on_status_received));
+  presence_core->fetch_presence (uri);
+}
+
+Ekiga::URIPresentity::~URIPresentity ()
+{
+  presence_core->unfetch_presence (uri);
+}
+
+const std::string
+Ekiga::URIPresentity::get_name () const
+{
+  return name;
+}
+
+const std::string
+Ekiga::URIPresentity::get_presence () const
+{
+  return presence;
+}
+
+const std::string
+Ekiga::URIPresentity::get_status () const
+{
+  return status;
+}
+
+const std::string
+Ekiga::URIPresentity::get_avatar () const
+{
+  return avatar;
+}
+
+const std::set<std::string>
+Ekiga::URIPresentity::get_groups () const
+{
+  return groups;
+}
+
+const std::string
+Ekiga::URIPresentity::get_uri () const
+{
+  return uri;
+}
+
+bool
+Ekiga::URIPresentity::populate_menu (Ekiga::MenuBuilder &builder)
+{
+  return presence_core->populate_presentity_menu (*this, uri, builder);
+}
+
+void
+Ekiga::URIPresentity::on_presence_received (std::string uri_,
+					    std::string presence_)
+{
+  if (uri == uri_) {
+
+    presence = presence_;
+    updated.emit ();
+  }
+}
+
+void
+Ekiga::URIPresentity::on_status_received (std::string uri_,
+					  std::string status_)
+{
+  if (uri == uri_) {
+
+    status = status_;
+    updated.emit ();
+  }
+}

Added: trunk/lib/engine/presence/skel/uri-presentity.h
==============================================================================
--- (empty file)
+++ trunk/lib/engine/presence/skel/uri-presentity.h	Tue Sep  9 15:30:06 2008
@@ -0,0 +1,122 @@
+
+/*
+ * Ekiga -- A VoIP and Video-Conferencing application
+ * Copyright (C) 2000-2008 Damien Sandras
+
+ * This program is free software; you can  redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version. This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Ekiga is licensed under the GPL license and as a special exception, you
+ * have permission to link or otherwise combine this program with the
+ * programs OPAL, OpenH323 and PWLIB, and distribute the combination, without
+ * applying the requirements of the GNU GPL to the OPAL, OpenH323 and PWLIB
+ * programs, as long as you do follow the requirements of the GNU GPL for all
+ * the rest of the software thus combined.
+ */
+
+
+/*
+ *                         uri-presentity.h  -  description
+ *                         ------------------------------------------
+ *   begin                : written in 2008 by Julien Puydt
+ *   copyright            : (c) 2008 by Julien Puydt
+ *   description          : declaration of a presentity around a simple URI
+ *
+ */
+
+
+
+#ifndef __URI_PRESENTITY_H__
+#define __URI_PRESENTITY_H__
+
+#include "form.h"
+#include "presence-core.h"
+#include "presentity.h"
+
+/* The basic use-case is when one has only an uri (and a name), but not much
+ * data, and the presence core is supposed to take care of making it live.
+ */
+
+namespace Ekiga
+{
+
+  /**
+   * @addtogroup presence
+   * @internal
+   * @{
+   */
+
+  /**
+   * This class implements an Ekiga::Presentity.
+   */
+  class URIPresentity:
+    public Ekiga::Presentity,
+    public sigc::trackable
+  {
+  public:
+
+    /**
+     * Constructor and destructor
+     */
+    URIPresentity (Ekiga::ServiceCore& _core,
+		   std::string name_,
+		   std::string uri_);
+
+    ~URIPresentity ();
+
+
+    /**
+     * Getters for the presentity
+     */
+    const std::string get_name () const;
+
+    const std::string get_presence () const;
+
+    const std::string get_status () const;
+
+    const std::string get_avatar () const;
+
+    const std::set<std::string> get_groups () const;
+
+    const std::string get_uri () const;
+
+    /** Populates the given Ekiga::MenuBuilder with the actions.
+     * @param: A MenuBuilder.
+     */
+    bool populate_menu (Ekiga::MenuBuilder& builder);
+
+  private:
+
+    Ekiga::ServiceCore &core;
+    Ekiga::PresenceCore *presence_core;
+
+    std::string name;
+    std::string uri;
+    std::string presence;
+    std::string status;
+    std::string avatar;
+
+    void on_presence_received (std::string uri_,
+			       std::string presence_);
+
+    void on_status_received (std::string uri_,
+			     std::string status_);
+
+    std::set<std::string> groups;
+  };
+
+  /**
+   * @}
+   */
+};
+
+#endif



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