~ubuntu-branches/ubuntu/maverick/ekiga/maverick

« back to all changes in this revision

Viewing changes to lib/engine/presence/local-roster/local-presentity.h

  • Committer: Bazaar Package Importer
  • Author(s): Eugen Dedu, Eugen Dedu, Loic Minier
  • Date: 2008-09-27 10:00:00 UTC
  • mfrom: (1.1.8 upstream)
  • mto: (1.4.1 squeeze)
  • mto: This revision was merged to the branch mainline in revision 38.
  • Revision ID: james.westby@ubuntu.com-20080927100000-l5k5werb6czr5b3h
Tags: 3.0.1-1
[ Eugen Dedu ]
* New version.  (Closes: #500089).
* Add our own changelog file in /usr/share/doc.
* Remove gnomemeeting transitional package.
* Discover new interfaces.  (Closes: #488199).
* Compile with dbus support.  (Closes: #467212).
* Numeric keypad inserts digits at correct position.  (Closes: #440159).
* Use libnotify upon call.  (Closes: #412604).
* Symlink identical GNOME help files, to reduce size.  (Closes: #505536).
* Explicitely build-depends on a few dev packages, even if they were
  pulled out anyway by the other dependencies.

[ Loic Minier ]
* Use clean:: instead of clean: in rules.
* Don't disable Uploaders: generation for control.in -> control generation
  in rules.
* Fix some tabs which were size 4 anyway.
* Generate a PO template during build by calling intltool-update -p in
  install; thanks Ubuntu and Martin Pitt; closes: #505535.
* Also let the -dbg depend on ${misc:Depends}.
* Cleanup rules; in particular, use dpkg-parsechangelog and honor
  distclean/clean failures, remove old clean rules, commented out stuff,
  gtk-only stuff.
* Pass -s to dh_* in binary-arch.
* Use debian/*.links and debian/*.manpages instead of symlink manually or
  passing files to dh_installman.
* Use ftp.gnome.org in copyright.
* Switch to quilt and fix target deps in the process; build-dep on quilt
  instead of dpatch; rename news.dpatch to 00_news.patch and refresh;
  replace 00list with series.
* Install autotools-dev config.guess and .sub after patching.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
/*
 
3
 * Ekiga -- A VoIP and Video-Conferencing application
 
4
 * Copyright (C) 2000-2007 Damien Sandras
 
5
 
 
6
 * This program is free software; you can  redistribute it and/or modify
 
7
 * it under the terms of the GNU General Public License as published by
 
8
 * the Free Software Foundation; either version 2 of the License, or (at
 
9
 * your option) any later version. This program is distributed in the hope
 
10
 * that it will be useful, but WITHOUT ANY WARRANTY; without even the
 
11
 * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
12
 * See the GNU General Public License for more details.
 
13
 *
 
14
 * You should have received a copy of the GNU General Public License along
 
15
 * with this program; if not, write to the Free Software Foundation, Inc.,
 
16
 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
 
17
 *
 
18
 * Ekiga is licensed under the GPL license and as a special exception, you
 
19
 * have permission to link or otherwise combine this program with the
 
20
 * programs OPAL, OpenH323 and PWLIB, and distribute the combination, without
 
21
 * applying the requirements of the GNU GPL to the OPAL, OpenH323 and PWLIB
 
22
 * programs, as long as you do follow the requirements of the GNU GPL for all
 
23
 * the rest of the software thus combined.
 
24
 */
 
25
 
 
26
 
 
27
/*
 
28
 *                         local-presentity.h  -  description
 
29
 *                         ------------------------------------------
 
30
 *   begin                : written in 2007 by Julien Puydt
 
31
 *   copyright            : (c) 2007 by Julien Puydt
 
32
 *   description          : declaration of a presentity for the local roster
 
33
 *
 
34
 */
 
35
 
 
36
 
 
37
 
 
38
#ifndef __LOCAL_PRESENTITY_H__
 
39
#define __LOCAL_PRESENTITY_H__
 
40
 
 
41
#include "form.h"
 
42
#include "presence-core.h"
 
43
#include "presentity.h"
 
44
 
 
45
 
 
46
namespace Local
 
47
{
 
48
 
 
49
/**
 
50
 * @addtogroup presence
 
51
 * @internal
 
52
 * @{
 
53
 */
 
54
 
 
55
  /**
 
56
   * This class implements an Ekiga::Presentity.
 
57
   *
 
58
   * The Presentity is represented by an internal XML document.
 
59
   *
 
60
   * There is a private signal, 'trigger_saving', which will be emitted
 
61
   * when appropriate to signal the Local::Heap that the XML tree has been
 
62
   * modified, and hence needs saving.
 
63
   */
 
64
  class Presentity: public Ekiga::Presentity
 
65
  {
 
66
  public:
 
67
 
 
68
    /**
 
69
     * Constructors (and destructor)
 
70
     */
 
71
    Presentity (Ekiga::ServiceCore &_core,
 
72
                xmlNodePtr _node);
 
73
 
 
74
    Presentity (Ekiga::ServiceCore &_core,
 
75
                const std::string _name,
 
76
                const std::string _uri,
 
77
                const std::set<std::string> _groups);
 
78
 
 
79
    ~Presentity ();
 
80
 
 
81
 
 
82
    /**
 
83
     * Get elements of the presentity
 
84
     */
 
85
    const std::string get_name () const;
 
86
 
 
87
    const std::string get_presence () const;
 
88
 
 
89
    const std::string get_status () const;
 
90
 
 
91
    const std::string get_avatar () const;
 
92
 
 
93
    const std::set<std::string> get_groups () const;
 
94
 
 
95
    const std::string get_uri () const;
 
96
 
 
97
 
 
98
    /**
 
99
     * This will set a new presence string
 
100
     * and emit the 'updated' signal to announce
 
101
     * to the various components that the GmConf::Presentity
 
102
     * has been updated.
 
103
     */
 
104
    void set_presence (const std::string _presence);
 
105
 
 
106
 
 
107
    /**
 
108
     * This will set a new status string
 
109
     * and emit the 'updated' signal to announce
 
110
     * to the various components that the GmConf::Presentity
 
111
     * has been updated.
 
112
     */
 
113
    void set_status (const std::string _status);
 
114
 
 
115
 
 
116
    /** Populates the given Ekiga::MenuBuilder with the actions.
 
117
     * Inherits from Ekiga::Presentity.
 
118
     * @param: A MenuBuilder.
 
119
     * @return: A populated menu.
 
120
     */
 
121
    bool populate_menu (Ekiga::MenuBuilder &);
 
122
 
 
123
 
 
124
    /** Return the current node in the XML document
 
125
     * describing the Presentity.
 
126
     * @return: A pointer to the node.
 
127
     */
 
128
    xmlNodePtr get_node () const;
 
129
 
 
130
 
 
131
    /** Rename the given group, if this Presentity belongs to it
 
132
     *
 
133
     */
 
134
    void rename_group (const std::string old_name,
 
135
                       const std::string new_name);
 
136
 
 
137
 
 
138
    /** Remove the current node from the XML document,
 
139
     * emit the 'removed' signal so the different views
 
140
     * know we're going away, and finally emit 'trigger_saving'
 
141
     * so the Local::Heap knows about it.
 
142
     *
 
143
     */
 
144
    void remove ();
 
145
 
 
146
    /** Private signal.
 
147
     * This signal makes the Local::Heap know that the XML tree changed
 
148
     * and hence should be saved
 
149
     */
 
150
    sigc::signal<void> trigger_saving;
 
151
 
 
152
 
 
153
  private:
 
154
 
 
155
    /** This function should be called when a presentity has
 
156
     * to be edited. It uses a form with the known
 
157
     * fields already filled in.
 
158
     */
 
159
    void edit_presentity ();
 
160
 
 
161
 
 
162
    /** This is called when a form from edit_presentity
 
163
     * is submitted.
 
164
     *
 
165
     * It does error checking and edits the Presentity.
 
166
     * It will also emit the 'updated' signal and the
 
167
     * private 'trigger_saving' signal to trigger saving
 
168
     * from the Local::Heap.
 
169
     */
 
170
    void edit_presentity_form_submitted (Ekiga::Form &result);
 
171
 
 
172
 
 
173
    Ekiga::ServiceCore &core;
 
174
    Ekiga::PresenceCore *presence_core;
 
175
 
 
176
    xmlNodePtr node;
 
177
    xmlNodePtr name_node;
 
178
 
 
179
    std::string name;
 
180
    std::string uri;
 
181
    std::string presence;
 
182
    std::string status;
 
183
    std::string avatar;
 
184
 
 
185
    std::map<std::string, xmlNodePtr> group_nodes;
 
186
    std::set<std::string> groups;
 
187
  };
 
188
 
 
189
/**
 
190
 * @}
 
191
 */
 
192
};
 
193
 
 
194
#endif