3
* Ekiga -- A VoIP and Video-Conferencing application
4
* Copyright (C) 2000-2007 Damien Sandras
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.
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.
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.
28
* gmconf-bridge.h - description
29
* ------------------------------------------
30
* begin : written in 2008 by Damien Sandras
31
* copyright : (c) 2008 by Damien Sandras
32
* description : declaration of an object able to do the bridging
33
* between gmconf and any object
37
#ifndef __GMCONF_BRIDGE_H__
38
#define __GMCONF_BRIDGE_H__
41
#include <sigc++/sigc++.h>
49
* This is a vector of string corresponding to the GMConf keys
51
typedef std::vector<std::string> ConfKeys;
55
* This class implements a bridge between an Ekiga::Service and its
56
* configuration stored in GMConf.
58
* This class has several purposes :
59
* - abstract the configuration stuff from the engine classes
60
* - keep the GMConf idea of notifiers triggered when the value associated
61
* with a key changes, but instead of reacting to it in the object,
62
* directly, update it using its public API
64
* This could be replaced at some point by a C++ implementation of GMConf,
65
* but for now it is a good abstraction layer : The service exposes its API
66
* but does not care about storing the configuration. GMConf stores the
67
* configuration (the model), and the bridge updates the Ekiga::Service (the
68
* view), when a controller updates the configuration (the prefs window or
69
* an external program).
71
* It should only monitor keys representing properties of the Ekiga::Service.
79
* @param _service is the Ekiga::Service the bridge will update
81
ConfBridge (Ekiga::Service & _service) : service (_service) {};
84
/** Load notifiers for the vector of keys given as argument
85
* @param keys is a vector of keys for which the ConfBridge will trigger
86
* GmConf notifers. They are triggered when the value associated with the
87
* key changes, or when this method is called.
89
void load (ConfKeys & keys);
92
/** This signal is emitted when a notifier is triggered for a key
93
* @param key is the GmConf key whose value changed
94
* @param entry is the new GmConf entry
96
sigc::signal<void, std::string /*key*/, GmConfEntry * /*entry*/> property_changed;
99
Ekiga::Service & service;