3
* Ekiga -- A VoIP and Video-Conferencing application
4
* Copyright (C) 2000-2008 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
* videooutput-gmconf-bridge.cpp - description
29
* ------------------------------------------
30
* begin : written in 2008 by Matthias Schneider
31
* copyright : (c) 2008 by Matthias Schneider
32
* description : Declaration of the bridge between the gmconf
33
* and the videooutput-core.
39
#include "videooutput-gmconf-bridge.h"
40
#include "videooutput-core.h"
42
#define USER_INTERFACE_KEY "/apps/" PACKAGE_NAME "/general/user_interface/"
43
#define VIDEO_DISPLAY_KEY USER_INTERFACE_KEY "video_display/"
45
using namespace Ekiga;
47
VideoOutputCoreConfBridge::VideoOutputCoreConfBridge (Ekiga::Service & _service)
48
: Ekiga::ConfBridge (_service)
51
property_changed.connect (sigc::mem_fun (this, &VideoOutputCoreConfBridge::on_property_changed));
53
keys.push_back (VIDEO_DISPLAY_KEY "video_view");
54
keys.push_back (VIDEO_DISPLAY_KEY "zoom");
55
keys.push_back (VIDEO_DISPLAY_KEY "stay_on_top");
56
keys.push_back (VIDEO_DISPLAY_KEY "disable_hw_accel");
57
keys.push_back (VIDEO_DISPLAY_KEY "allow_pip_sw_scaling");
58
keys.push_back (VIDEO_DISPLAY_KEY "sw_scaling_algorithm");
63
void VideoOutputCoreConfBridge::on_property_changed (std::string key, GmConfEntry */*entry*/)
65
VideoOutputCore & display_core = (VideoOutputCore &) service;
66
if (key == VIDEO_DISPLAY_KEY "video_view") {
68
DisplayInfo display_info;
69
PTRACE(4, "VideoOutputCoreConfBridge\tUpdating video view");
71
if (( gm_conf_get_int (VIDEO_DISPLAY_KEY "video_view") < 0) || ( gm_conf_get_int (VIDEO_DISPLAY_KEY "video_view") > 4))
72
gm_conf_set_int (VIDEO_DISPLAY_KEY "video_view", 0);
74
display_info.mode = (VideoOutputMode) gm_conf_get_int (VIDEO_DISPLAY_KEY "video_view");
75
display_core.set_display_info(display_info);
77
else if ( (key == VIDEO_DISPLAY_KEY "zoom") ) {
79
DisplayInfo display_info;
80
PTRACE(4, "VideoOutputCoreConfBridge\tUpdating zoom");
82
display_info.zoom = gm_conf_get_int (VIDEO_DISPLAY_KEY "zoom");
83
if ((display_info.zoom != 100) && (display_info.zoom != 50) && (display_info.zoom != 200)) {
84
display_info.zoom = 100;
85
gm_conf_set_int (VIDEO_DISPLAY_KEY "zoom", 100);
88
display_core.set_display_info(display_info);
93
PTRACE(4, "VideoOutputCoreConfBridge\tUpdating Video Settings");
94
DisplayInfo display_info;
96
display_info.on_top = gm_conf_get_bool (VIDEO_DISPLAY_KEY "stay_on_top");
97
display_info.disable_hw_accel = gm_conf_get_bool (VIDEO_DISPLAY_KEY "disable_hw_accel");
98
display_info.allow_pip_sw_scaling = gm_conf_get_bool (VIDEO_DISPLAY_KEY "allow_pip_sw_scaling");
99
display_info.sw_scaling_algorithm = gm_conf_get_int (VIDEO_DISPLAY_KEY "sw_scaling_algorithm");
100
if (display_info.sw_scaling_algorithm > 3) {
101
display_info.sw_scaling_algorithm = 0;
102
gm_conf_set_int (VIDEO_DISPLAY_KEY "sw_scaling_algorithm", 0);
104
display_info.config_info_set = TRUE;
106
display_core.set_display_info(display_info);