[ekiga/ds-gtk-application] CallWindow: First shot at GTK3 porting.
- From: Damien Sandras <dsandras src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [ekiga/ds-gtk-application] CallWindow: First shot at GTK3 porting.
- Date: Sun, 2 Nov 2014 15:30:57 +0000 (UTC)
commit e65dcb0eb264a2b9446e431b58650adfd8d414ab
Author: Damien Sandras <dsandras seconix com>
Date: Sun Nov 2 16:25:54 2014 +0100
CallWindow: First shot at GTK3 porting.
- We now use a GtkHeaderBar with icons and a GtkBuilderMenu.
- Ekiga::Call is now an Actor:
* Most actions are now dynamically added thanks to GActorMenu
* We do not need to sensitive/unsensitive menus and toolbars items
following the call progress events. The Ekiga::Call implementation
is taking care of adding and removing Actions dynamicall. The GIO
stuff will sensitive/unsensitive things accordingly.
* The call transfer popup is now implemented by the Ekiga::Call
implementation in two lines of code. That simplifies our code.
This is still partial code, but already usable.
lib/engine/gui/gtk-frontend/call-window.cpp | 1572 ++++++++++++---------------
1 files changed, 675 insertions(+), 897 deletions(-)
---
diff --git a/lib/engine/gui/gtk-frontend/call-window.cpp b/lib/engine/gui/gtk-frontend/call-window.cpp
index e03697a..e1a6ac3 100644
--- a/lib/engine/gui/gtk-frontend/call-window.cpp
+++ b/lib/engine/gui/gtk-frontend/call-window.cpp
@@ -51,6 +51,7 @@
#include "gmentrydialog.h"
#include "gmstatusbar.h"
#include "gmstockicons.h"
+#include "gactor-menu.h"
#include <boost/smart_ptr.hpp>
#include "gmmenuaddon.h"
#include "gmpowermeter.h"
@@ -58,6 +59,7 @@
#include "scoped-connections.h"
#include "menu-builder-tools.h"
#include "menu-builder-gtk.h"
+#include "form-dialog-gtk.h"
#include "ext-window.h"
#ifndef WIN32
@@ -111,6 +113,7 @@ struct _EkigaCallWindowPrivate
GtkWidget *event_box;
GtkWidget *spinner;
GtkWidget *info_text;
+ GtkBuilder *builder;
GtkWidget *video_widget;
bool fullscreen;
@@ -118,13 +121,7 @@ struct _EkigaCallWindowPrivate
GtkWidget *call_frame;
GtkWidget *camera_image;
- GtkWidget *main_menu;
GtkWidget *call_panel_toolbar;
- GtkWidget *pick_up_button;
- GtkWidget *hang_up_button;
- GtkWidget *hold_button;
- GtkWidget *audio_settings_button;
- GtkWidget *video_settings_button;
GtkWidget *audio_settings_window;
GtkWidget *audio_input_volume_frame;
@@ -157,13 +154,13 @@ struct _EkigaCallWindowPrivate
std::string received_video_codec;
std::string received_audio_codec;
+ Ekiga::GActorMenuPtr menu;
+
/* Statusbar */
GtkWidget *statusbar;
GtkWidget *statusbar_ebox;
GtkWidget *qualitymeter;
- GtkWidget *transfer_call_popup;
-
Ekiga::scoped_connections connections;
boost::shared_ptr<Ekiga::Settings> video_display_settings;
};
@@ -176,32 +173,29 @@ enum {
CHANNEL_LAST
};
-static bool notify_has_actions (EkigaCallWindow* cw);
-static void show_extended_video_window_cb (GtkWidget *widget,
+static bool notify_has_actions (EkigaCallWindow* self);
+
+static void show_extended_video_window_cb (G_GNUC_UNUSED GSimpleAction *action,
+ G_GNUC_UNUSED GVariant *parameter,
gpointer data);
-static void fullscreen_changed_cb (GtkWidget *widget,
+static void fullscreen_changed_cb (G_GNUC_UNUSED GSimpleAction *action,
+ G_GNUC_UNUSED GVariant *parameter,
gpointer data);
-static void pick_up_call_cb (GtkWidget * /*widget*/,
- gpointer data);
+static void show_audio_settings_cb (G_GNUC_UNUSED GSimpleAction *action,
+ G_GNUC_UNUSED GVariant *parameter,
+ gpointer data);
-static void hang_up_call_cb (GtkWidget * /*widget*/,
- gpointer data);
-
-static void hold_current_call_cb (GtkWidget *widget,
- gpointer data);
-
-static void toggle_audio_stream_pause_cb (GtkWidget * /*widget*/,
- gpointer data);
+static void show_video_settings_cb (G_GNUC_UNUSED GSimpleAction *action,
+ G_GNUC_UNUSED GVariant *parameter,
+ gpointer data);
-static void toggle_video_stream_pause_cb (GtkWidget * /*widget*/,
+static void toggle_video_stream_pause_cb (G_GNUC_UNUSED GSimpleAction *action,
+ G_GNUC_UNUSED GVariant *parameter,
gpointer data);
-static void transfer_current_call_cb (GtkWidget *widget,
- gpointer data);
-
static void audio_volume_changed_cb (GtkAdjustment * /*adjustment*/,
gpointer data);
@@ -282,12 +276,8 @@ static void on_audiooutput_device_error_cb (Ekiga::AudioOutputManager & /*manage
Ekiga::AudioOutputErrorCodes error_code,
gpointer self);
-static void on_setup_call_cb (boost::shared_ptr<Ekiga::CallManager> manager,
- boost::shared_ptr<Ekiga::Call> call,
- gpointer self);
-
static void on_ringing_call_cb (boost::shared_ptr<Ekiga::CallManager> manager,
- boost::shared_ptr<Ekiga::Call> call,
+ boost::shared_ptr<Ekiga::Call> call,
gpointer self);
static void on_established_call_cb (boost::shared_ptr<Ekiga::CallManager> /*manager*/,
@@ -307,6 +297,10 @@ static void on_held_call_cb (boost::shared_ptr<Ekiga::CallManager> /*manager*/,
boost::shared_ptr<Ekiga::Call> /*call*/,
gpointer self);
+static void on_setup_call_cb (boost::shared_ptr<Ekiga::CallManager> manager,
+ boost::shared_ptr<Ekiga::Call> call,
+ gpointer self);
+
static void on_retrieved_call_cb (boost::shared_ptr<Ekiga::CallManager> /*manager*/,
boost::shared_ptr<Ekiga::Call> /*call*/,
gpointer self);
@@ -338,26 +332,28 @@ static void on_stream_resumed_cb (boost::shared_ptr<Ekiga::CallManager> /*manag
Ekiga::Call::StreamType type,
gpointer self);
+static bool on_handle_questions (Ekiga::FormRequestPtr request,
+ gpointer data);
+
static gboolean on_stats_refresh_cb (gpointer self);
+static gboolean on_delayed_destroy_cb (gpointer self);
+
static gboolean ekiga_call_window_delete_event_cb (GtkWidget *widget,
G_GNUC_UNUSED GdkEventAny *event);
static gboolean ekiga_call_window_fullscreen_event_cb (GtkWidget *widget,
G_GNUC_UNUSED GdkEventAny *event);
-static void window_closed_from_menu_cb (G_GNUC_UNUSED GtkWidget *,
- gpointer);
-
/**/
-static void ekiga_call_window_update_calling_state (EkigaCallWindow *cw,
+static void ekiga_call_window_update_calling_state (EkigaCallWindow *self,
unsigned calling_state);
-static void ekiga_call_window_clear_signal_levels (EkigaCallWindow *cw);
+static void ekiga_call_window_clear_signal_levels (EkigaCallWindow *self);
-static void ekiga_call_window_clear_stats (EkigaCallWindow *cw);
+static void ekiga_call_window_clear_stats (EkigaCallWindow *self);
-static void ekiga_call_window_update_stats (EkigaCallWindow *cw,
+static void ekiga_call_window_update_stats (EkigaCallWindow *self,
float lost,
float late,
float out_of_order,
@@ -369,53 +365,90 @@ static void ekiga_call_window_update_stats (EkigaCallWindow *cw,
const char *tr_audio_codec,
const char *tr_video_codec);
-static void ekiga_call_window_set_status (EkigaCallWindow *cw,
- const char *status,
- ...);
-
-static void ekiga_call_window_set_bandwidth (EkigaCallWindow *cw,
+static void ekiga_call_window_set_bandwidth (EkigaCallWindow *self,
float ta,
float ra,
float tv,
float rv);
-static void ekiga_call_window_set_call_hold (EkigaCallWindow *cw,
+static void ekiga_call_window_set_call_hold (EkigaCallWindow *self,
bool is_on_hold);
-static void ekiga_call_window_set_channel_pause (EkigaCallWindow *cw,
+static void ekiga_call_window_set_channel_pause (EkigaCallWindow *self,
gboolean pause,
gboolean is_video);
-static void ekiga_call_window_init_menu (EkigaCallWindow *cw);
+static void ekiga_call_window_init_menu (EkigaCallWindow *self);
-static void ekiga_call_window_init_clutter (EkigaCallWindow *cw);
+static void ekiga_call_window_init_clutter (EkigaCallWindow *self);
-static GtkWidget * gm_cw_audio_settings_window_new (EkigaCallWindow *cw);
+static GtkWidget *gm_call_window_audio_settings_window_new (EkigaCallWindow *call_window);
-static GtkWidget *gm_cw_video_settings_window_new (EkigaCallWindow *cw);
+static GtkWidget *gm_call_window_video_settings_window_new (EkigaCallWindow *call_window);
-static void ekiga_call_window_toggle_fullscreen (EkigaCallWindow *cw);
+static void ekiga_call_window_toggle_fullscreen (EkigaCallWindow *self);
-static void ekiga_call_window_channels_menu_update_sensitivity (EkigaCallWindow *cw,
+static void ekiga_call_window_channels_menu_update_sensitivity (EkigaCallWindow *self,
bool is_video,
bool is_transmitting);
-static gboolean ekiga_call_window_transfer_dialog_run (EkigaCallWindow *cw,
- GtkWidget *parent_window,
- const char *u);
+static void ekiga_call_window_connect_engine_signals (EkigaCallWindow *self);
-static void ekiga_call_window_connect_engine_signals (EkigaCallWindow *cw);
+static void ekiga_call_window_init_gui (EkigaCallWindow *self);
+
+/**/
+static const char* win_menu =
+ "<?xml version='1.0'?>"
+ "<interface>"
+ " <menu id='menubar'>"
+ " <section>"
+ " <item>"
+ " <attribute name='label' translatable='yes'>Transmit Video</attribute>"
+ " <attribute name='action'>win.transmit-video</attribute>"
+ " </item>"
+ " </section>"
+ " <section>"
+ " <item>"
+ " <attribute name='label' translatable='yes'>Change _Volume</attribute>"
+ " <attribute name='action'>win.audio-volume-settings</attribute>"
+ " </item>"
+ " <item>"
+ " <attribute name='label' translatable='yes'>Change _Color Settings</attribute>"
+ " <attribute name='action'>win.video-color-settings</attribute>"
+ " </item>"
+ " </section>"
+ " <section>"
+ " <item>"
+ " <attribute name='label' translatable='yes'>_Picture-In-Picture Mode</attribute>"
+ " <attribute name='action'>win.enable-pip</attribute>"
+ " </item>"
+ " <item>"
+ " <attribute name='label' translatable='yes'>_Extended Video</attribute>"
+ " <attribute name='action'>win.show-extended-video</attribute>"
+ " </item>"
+ " </section>"
+ " </menu>"
+ "</interface>";
+
+static GActionEntry win_entries[] =
+{
+ { "audio-volume-settings", show_audio_settings_cb, NULL, NULL, NULL, 0 },
+ { "video-color-settings", show_video_settings_cb, NULL, NULL, NULL, 0 },
+ { "show-extended-video", show_extended_video_window_cb, NULL, NULL, NULL, 0 },
+ { "enable-fullscreen", fullscreen_changed_cb, NULL, NULL, NULL, 0 },
+ { "transmit-video", toggle_video_stream_pause_cb, NULL, "true", NULL, 0 }
+};
+/**/
-static void ekiga_call_window_init_gui (EkigaCallWindow *cw);
static bool
-notify_has_actions (EkigaCallWindow *cw)
+notify_has_actions (EkigaCallWindow *self)
{
bool result = false;
- if (cw->priv->libnotify) {
+ if (self->priv->libnotify) {
- boost::optional<bool> val = cw->priv->libnotify->get_bool_property ("actions");
+ boost::optional<bool> val = self->priv->libnotify->get_bool_property ("actions");
if (val) {
result = *val;
@@ -425,18 +458,20 @@ notify_has_actions (EkigaCallWindow *cw)
}
static void
-show_extended_video_window_cb (G_GNUC_UNUSED GtkWidget *widget,
+show_extended_video_window_cb (G_GNUC_UNUSED GSimpleAction *action,
+ G_GNUC_UNUSED GVariant *parameter,
gpointer data)
{
g_return_if_fail (EKIGA_IS_CALL_WINDOW (data));
- EkigaCallWindow *cw = EKIGA_CALL_WINDOW (data);
+ EkigaCallWindow *self = EKIGA_CALL_WINDOW (data);
- if (cw->priv->ext_video_win)
- gtk_widget_show (GTK_WIDGET (cw->priv->ext_video_win));
+ if (self->priv->ext_video_win)
+ gtk_widget_show (GTK_WIDGET (self->priv->ext_video_win));
}
static void
-fullscreen_changed_cb (G_GNUC_UNUSED GtkWidget *widget,
+fullscreen_changed_cb (G_GNUC_UNUSED GSimpleAction *action,
+ G_GNUC_UNUSED GVariant *parameter,
gpointer data)
{
g_return_if_fail (data);
@@ -445,118 +480,93 @@ fullscreen_changed_cb (G_GNUC_UNUSED GtkWidget *widget,
}
static void
-pick_up_call_cb (GtkWidget * /*widget*/,
- gpointer data)
-{
- EkigaCallWindow *cw = EKIGA_CALL_WINDOW (data);
-
- if (cw->priv->current_call)
- cw->priv->current_call->answer ();
-}
-
-static void
-hang_up_call_cb (GtkWidget * /*widget*/,
- gpointer data)
+show_audio_settings_cb (G_GNUC_UNUSED GSimpleAction *action,
+ G_GNUC_UNUSED GVariant *parameter,
+ gpointer data)
{
- EkigaCallWindow *cw = EKIGA_CALL_WINDOW (data);
+ g_return_if_fail (EKIGA_IS_CALL_WINDOW (data));
+ EkigaCallWindow *self = EKIGA_CALL_WINDOW (data);
- if (cw->priv->current_call)
- cw->priv->current_call->hang_up ();
+ if (self->priv->audio_settings_window)
+ gtk_widget_show (GTK_WIDGET (self->priv->audio_settings_window));
}
-
static void
-hold_current_call_cb (G_GNUC_UNUSED GtkWidget *widget,
- gpointer data)
+show_video_settings_cb (G_GNUC_UNUSED GSimpleAction *action,
+ G_GNUC_UNUSED GVariant *parameter,
+ gpointer data)
{
- EkigaCallWindow *cw = EKIGA_CALL_WINDOW (data);
+ g_return_if_fail (EKIGA_IS_CALL_WINDOW (data));
+ EkigaCallWindow *self = EKIGA_CALL_WINDOW (data);
- if (cw->priv->current_call)
- cw->priv->current_call->toggle_hold ();
+ if (self->priv->video_settings_window)
+ gtk_widget_show (GTK_WIDGET (self->priv->video_settings_window));
}
static void
-toggle_audio_stream_pause_cb (GtkWidget * /*widget*/,
+toggle_video_stream_pause_cb (G_GNUC_UNUSED GSimpleAction *action,
+ G_GNUC_UNUSED GVariant *parameter,
gpointer data)
{
- EkigaCallWindow *cw = EKIGA_CALL_WINDOW (data);
+ EkigaCallWindow *self = EKIGA_CALL_WINDOW (data);
- if (cw->priv->current_call)
- cw->priv->current_call->toggle_stream_pause (Ekiga::Call::Audio);
+ if (self->priv->current_call)
+ self->priv->current_call->toggle_stream_pause (Ekiga::Call::Video);
}
-static void
-toggle_video_stream_pause_cb (GtkWidget * /*widget*/,
- gpointer data)
-{
- EkigaCallWindow *cw = EKIGA_CALL_WINDOW (data);
-
- if (cw->priv->current_call)
- cw->priv->current_call->toggle_stream_pause (Ekiga::Call::Video);
-}
-
-static void
-transfer_current_call_cb (G_GNUC_UNUSED GtkWidget *widget,
- gpointer data)
-{
- EkigaCallWindow *cw = EKIGA_CALL_WINDOW (data);
-
- g_return_if_fail (data != NULL);
- ekiga_call_window_transfer_dialog_run (EKIGA_CALL_WINDOW (cw), GTK_WIDGET (data), NULL);
-}
static void
audio_volume_changed_cb (GtkAdjustment * /*adjustment*/,
gpointer data)
{
- EkigaCallWindow *cw = EKIGA_CALL_WINDOW (data);
+ EkigaCallWindow *self = EKIGA_CALL_WINDOW (data);
- cw->priv->audiooutput_core->set_volume (Ekiga::primary, (unsigned) gtk_adjustment_get_value
(GTK_ADJUSTMENT (cw->priv->adj_output_volume)));
- cw->priv->audioinput_core->set_volume ((unsigned) gtk_adjustment_get_value (GTK_ADJUSTMENT
(cw->priv->adj_input_volume)));
+ self->priv->audiooutput_core->set_volume (Ekiga::primary, (unsigned) gtk_adjustment_get_value
(GTK_ADJUSTMENT (self->priv->adj_output_volume)));
+ self->priv->audioinput_core->set_volume ((unsigned) gtk_adjustment_get_value (GTK_ADJUSTMENT
(self->priv->adj_input_volume)));
}
static void
audio_volume_window_shown_cb (GtkWidget * /*widget*/,
gpointer data)
{
- EkigaCallWindow *cw = EKIGA_CALL_WINDOW (data);
+ EkigaCallWindow *self = EKIGA_CALL_WINDOW (data);
- cw->priv->audioinput_core->set_average_collection (true);
- cw->priv->audiooutput_core->set_average_collection (true);
- cw->priv->levelmeter_timeout_id = g_timeout_add_full (G_PRIORITY_DEFAULT_IDLE, 50,
on_signal_level_refresh_cb, data, NULL);
+ self->priv->audioinput_core->set_average_collection (true);
+ self->priv->audiooutput_core->set_average_collection (true);
+ self->priv->levelmeter_timeout_id = g_timeout_add_full (G_PRIORITY_DEFAULT_IDLE, 50,
on_signal_level_refresh_cb, data, NULL);
}
static void
audio_volume_window_hidden_cb (GtkWidget * /*widget*/,
gpointer data)
{
- EkigaCallWindow *cw = EKIGA_CALL_WINDOW (data);
+ EkigaCallWindow *self = EKIGA_CALL_WINDOW (data);
- g_source_remove (cw->priv->levelmeter_timeout_id);
- cw->priv->audioinput_core->set_average_collection (false);
- cw->priv->audiooutput_core->set_average_collection (false);
+ g_source_remove (self->priv->levelmeter_timeout_id);
+ self->priv->audioinput_core->set_average_collection (false);
+ self->priv->audiooutput_core->set_average_collection (false);
}
static void
video_settings_changed_cb (GtkAdjustment * /*adjustment*/,
gpointer data)
{
- EkigaCallWindow *cw = EKIGA_CALL_WINDOW (data);
+ EkigaCallWindow *self = EKIGA_CALL_WINDOW (data);
- cw->priv->videoinput_core->set_whiteness ((unsigned) gtk_adjustment_get_value (GTK_ADJUSTMENT
(cw->priv->adj_whiteness)));
- cw->priv->videoinput_core->set_brightness ((unsigned) gtk_adjustment_get_value (GTK_ADJUSTMENT
(cw->priv->adj_brightness)));
- cw->priv->videoinput_core->set_colour ((unsigned) gtk_adjustment_get_value (GTK_ADJUSTMENT
(cw->priv->adj_colour)));
- cw->priv->videoinput_core->set_contrast ((unsigned) gtk_adjustment_get_value (GTK_ADJUSTMENT
(cw->priv->adj_contrast)));
+ self->priv->videoinput_core->set_whiteness ((unsigned) gtk_adjustment_get_value (GTK_ADJUSTMENT
(self->priv->adj_whiteness)));
+ self->priv->videoinput_core->set_brightness ((unsigned) gtk_adjustment_get_value (GTK_ADJUSTMENT
(self->priv->adj_brightness)));
+ self->priv->videoinput_core->set_colour ((unsigned) gtk_adjustment_get_value (GTK_ADJUSTMENT
(self->priv->adj_colour)));
+ self->priv->videoinput_core->set_contrast ((unsigned) gtk_adjustment_get_value (GTK_ADJUSTMENT
(self->priv->adj_contrast)));
}
static gboolean
on_signal_level_refresh_cb (gpointer /*self*/)
{
- //EkigaCallWindow *cw = EKIGA_CALL_WINDOW (self);
+ //EkigaCallWindow *self = EKIGA_CALL_WINDOW (self);
- //gm_level_meter_set_level (GM_LEVEL_METER (cw->priv->output_signal),
cw->priv->audiooutput_core->get_average_level());
- //gm_level_meter_set_level (GM_LEVEL_METER (cw->priv->input_signal),
cw->priv->audioinput_core->get_average_level());
+ //gm_level_meter_set_level (GM_LEVEL_METER (self->priv->output_signal),
self->priv->audiooutput_core->get_average_level());
+ //gm_level_meter_set_level (GM_LEVEL_METER (self->priv->input_signal),
self->priv->audioinput_core->get_average_level());
return true;
}
@@ -567,28 +577,27 @@ on_videooutput_device_opened_cb (Ekiga::VideoOutputManager & /* manager */,
unsigned height,
bool both_streams,
G_GNUC_UNUSED bool ext_stream,
- gpointer self)
+ gpointer data)
{
- g_return_if_fail (EKIGA_IS_CALL_WINDOW (self));
+ g_return_if_fail (EKIGA_IS_CALL_WINDOW (data));
- EkigaCallWindow *cw = EKIGA_CALL_WINDOW (self);
+ EkigaCallWindow *self = EKIGA_CALL_WINDOW (data);
GtkWidget *video_widget = NULL;
if (type == Ekiga::VideoOutputManager::EXTENDED) {
- if (!cw->priv->ext_video_win) {
- cw->priv->ext_video_win =
+ if (!self->priv->ext_video_win) {
+ self->priv->ext_video_win =
gm_window_new_with_key (USER_INTERFACE ".video-settings-window");
video_widget = gm_video_widget_new ();
gtk_widget_set_size_request (video_widget, STAGE_WIDTH, STAGE_HEIGHT);
gtk_widget_show (video_widget);
- gtk_container_add (GTK_CONTAINER (cw->priv->ext_video_win), video_widget);
+ gtk_container_add (GTK_CONTAINER (self->priv->ext_video_win), video_widget);
- cw->priv->videooutput_core->set_ext_display_info (gm_video_widget_get_stream (GM_VIDEO_WIDGET
(video_widget),
+ self->priv->videooutput_core->set_ext_display_info (gm_video_widget_get_stream (GM_VIDEO_WIDGET
(video_widget),
PRIMARY_STREAM));
- gtk_menu_set_sensitive (cw->priv->main_menu, "extended_video", TRUE);
}
- gtk_widget_show (GTK_WIDGET (cw->priv->ext_video_win));
+ gtk_widget_show (GTK_WIDGET (self->priv->ext_video_win));
gm_video_widget_set_stream_natural_size (GM_VIDEO_WIDGET (video_widget),
PRIMARY_STREAM, width, height);
gm_video_widget_set_stream_state (GM_VIDEO_WIDGET (video_widget),
@@ -598,36 +607,32 @@ on_videooutput_device_opened_cb (Ekiga::VideoOutputManager & /* manager */,
GM_STREAM_TYPE t =
(type == Ekiga::VideoOutputManager::REMOTE) ? PRIMARY_STREAM : SECONDARY_STREAM;
- gtk_widget_show (GTK_WIDGET (cw));
- gm_video_widget_set_stream_natural_size (GM_VIDEO_WIDGET (cw->priv->video_widget),
+ gtk_widget_show (GTK_WIDGET (self));
+ gm_video_widget_set_stream_natural_size (GM_VIDEO_WIDGET (self->priv->video_widget),
t, width, height);
- gm_video_widget_set_stream_state (GM_VIDEO_WIDGET (cw->priv->video_widget),
+ gm_video_widget_set_stream_state (GM_VIDEO_WIDGET (self->priv->video_widget),
t, STREAM_STATE_PLAYING);
- gtk_menu_section_set_sensitive (cw->priv->main_menu, "pip", both_streams);
}
}
static void
on_videooutput_device_closed_cb (Ekiga::VideoOutputManager & /* manager */,
- gpointer self)
+ gpointer data)
{
- g_return_if_fail (self);
+ g_return_if_fail (data);
- EkigaCallWindow *cw = EKIGA_CALL_WINDOW (self);
+ EkigaCallWindow *self = EKIGA_CALL_WINDOW (data);
for (int i = 0 ; i < MAX_STREAM ; i++) {
GM_STREAM_TYPE type = (GM_STREAM_TYPE) i;
- gm_video_widget_set_stream_state (GM_VIDEO_WIDGET (cw->priv->video_widget),
+ gm_video_widget_set_stream_state (GM_VIDEO_WIDGET (self->priv->video_widget),
type, STREAM_STATE_STOPPED);
}
- if (cw->priv->ext_video_win) {
- cw->priv->videooutput_core->set_ext_display_info (NULL);
- gtk_widget_destroy (cw->priv->ext_video_win);
- cw->priv->ext_video_win = NULL;
- gtk_menu_set_sensitive (cw->priv->main_menu, "extended_video", FALSE);
+ if (self->priv->ext_video_win) {
+ self->priv->videooutput_core->set_ext_display_info (NULL);
+ gtk_widget_destroy (self->priv->ext_video_win);
+ self->priv->ext_video_win = NULL;
}
-
- gtk_menu_section_set_sensitive (cw->priv->main_menu, "pip", FALSE);
}
static void
@@ -655,13 +660,13 @@ on_size_changed_cb (Ekiga::VideoOutputManager & /* manager */,
Ekiga::VideoOutputManager::VideoView type,
unsigned width,
unsigned height,
- gpointer self)
+ gpointer data)
{
- EkigaCallWindow *cw = EKIGA_CALL_WINDOW (self);
+ EkigaCallWindow *self = EKIGA_CALL_WINDOW (data);
GM_STREAM_TYPE t =
(type == Ekiga::VideoOutputManager::REMOTE) ? PRIMARY_STREAM : SECONDARY_STREAM;
- gm_video_widget_set_stream_natural_size (GM_VIDEO_WIDGET (cw->priv->video_widget),
+ gm_video_widget_set_stream_natural_size (GM_VIDEO_WIDGET (self->priv->video_widget),
t, width, height);
}
@@ -669,30 +674,27 @@ static void
on_videoinput_device_opened_cb (Ekiga::VideoInputManager & /* manager */,
Ekiga::VideoInputDevice & /* device */,
Ekiga::VideoInputSettings & settings,
- gpointer self)
+ gpointer data)
{
- EkigaCallWindow *cw = EKIGA_CALL_WINDOW (self);
+ EkigaCallWindow *self = EKIGA_CALL_WINDOW (data);
- gtk_widget_set_sensitive (cw->priv->video_settings_frame, settings.modifyable ? true : false);
- gtk_widget_set_sensitive (cw->priv->video_settings_button, settings.modifyable ? true : false);
- gtk_adjustment_set_value (GTK_ADJUSTMENT (cw->priv->adj_whiteness), settings.whiteness);
- gtk_adjustment_set_value (GTK_ADJUSTMENT (cw->priv->adj_brightness), settings.brightness);
- gtk_adjustment_set_value (GTK_ADJUSTMENT (cw->priv->adj_colour), settings.colour);
- gtk_adjustment_set_value (GTK_ADJUSTMENT (cw->priv->adj_contrast), settings.contrast);
+ gtk_widget_set_sensitive (self->priv->video_settings_frame, settings.modifyable ? true : false);
+ gtk_adjustment_set_value (GTK_ADJUSTMENT (self->priv->adj_whiteness), settings.whiteness);
+ gtk_adjustment_set_value (GTK_ADJUSTMENT (self->priv->adj_brightness), settings.brightness);
+ gtk_adjustment_set_value (GTK_ADJUSTMENT (self->priv->adj_colour), settings.colour);
+ gtk_adjustment_set_value (GTK_ADJUSTMENT (self->priv->adj_contrast), settings.contrast);
- gtk_widget_queue_draw (cw->priv->video_settings_frame);
+ gtk_widget_queue_draw (self->priv->video_settings_frame);
}
static void
on_videoinput_device_closed_cb (Ekiga::VideoInputManager & /* manager */,
Ekiga::VideoInputDevice & /*device*/,
- gpointer self)
+ gpointer data)
{
- EkigaCallWindow *cw = EKIGA_CALL_WINDOW (self);
-
- ekiga_call_window_channels_menu_update_sensitivity (cw, true, false);
+ EkigaCallWindow *self = EKIGA_CALL_WINDOW (data);
- gtk_widget_set_sensitive (cw->priv->video_settings_button, false);
+ ekiga_call_window_channels_menu_update_sensitivity (self, true, false);
}
static void
@@ -759,28 +761,24 @@ static void
on_audioinput_device_opened_cb (Ekiga::AudioInputManager & /* manager */,
Ekiga::AudioInputDevice & /* device */,
Ekiga::AudioInputSettings & settings,
- gpointer self)
+ gpointer data)
{
- EkigaCallWindow *cw = EKIGA_CALL_WINDOW (self);
+ EkigaCallWindow *self = EKIGA_CALL_WINDOW (data);
- gtk_widget_set_sensitive (cw->priv->audio_input_volume_frame, settings.modifyable);
- if (cw->priv->audio_settings_button)
- gtk_widget_set_sensitive (cw->priv->audio_settings_button, settings.modifyable);
- gtk_adjustment_set_value (GTK_ADJUSTMENT (cw->priv->adj_input_volume), settings.volume);
+ gtk_widget_set_sensitive (self->priv->audio_input_volume_frame, settings.modifyable);
+ gtk_adjustment_set_value (GTK_ADJUSTMENT (self->priv->adj_input_volume), settings.volume);
- gtk_widget_queue_draw (cw->priv->audio_input_volume_frame);
+ gtk_widget_queue_draw (self->priv->audio_input_volume_frame);
}
static void
on_audioinput_device_closed_cb (Ekiga::AudioInputManager & /* manager */,
Ekiga::AudioInputDevice & /*device*/,
- gpointer self)
+ gpointer data)
{
- EkigaCallWindow *cw = EKIGA_CALL_WINDOW (self);
+ EkigaCallWindow *self = EKIGA_CALL_WINDOW (data);
- if (cw->priv->audio_settings_button)
- gtk_widget_set_sensitive (cw->priv->audio_settings_button, false);
- gtk_widget_set_sensitive (cw->priv->audio_input_volume_frame, false);
+ gtk_widget_set_sensitive (self->priv->audio_input_volume_frame, false);
}
static void
@@ -836,35 +834,31 @@ on_audiooutput_device_opened_cb (Ekiga::AudioOutputManager & /*manager*/,
Ekiga::AudioOutputPS ps,
Ekiga::AudioOutputDevice & /*device*/,
Ekiga::AudioOutputSettings & settings,
- gpointer self)
+ gpointer data)
{
- EkigaCallWindow *cw = EKIGA_CALL_WINDOW (self);
+ EkigaCallWindow *self = EKIGA_CALL_WINDOW (data);
if (ps == Ekiga::secondary)
return;
- if (cw->priv->audio_settings_button)
- gtk_widget_set_sensitive (cw->priv->audio_settings_button, settings.modifyable);
- gtk_widget_set_sensitive (cw->priv->audio_output_volume_frame, settings.modifyable);
- gtk_adjustment_set_value (GTK_ADJUSTMENT (cw->priv->adj_output_volume), settings.volume);
+ gtk_widget_set_sensitive (self->priv->audio_output_volume_frame, settings.modifyable);
+ gtk_adjustment_set_value (GTK_ADJUSTMENT (self->priv->adj_output_volume), settings.volume);
- gtk_widget_queue_draw (cw->priv->audio_output_volume_frame);
+ gtk_widget_queue_draw (self->priv->audio_output_volume_frame);
}
static void
on_audiooutput_device_closed_cb (Ekiga::AudioOutputManager & /*manager*/,
Ekiga::AudioOutputPS ps,
Ekiga::AudioOutputDevice & /*device*/,
- gpointer self)
+ gpointer data)
{
- EkigaCallWindow *cw = EKIGA_CALL_WINDOW (self);
+ EkigaCallWindow *self = EKIGA_CALL_WINDOW (data);
if (ps == Ekiga::secondary)
return;
- if (cw->priv->audio_settings_button)
- gtk_widget_set_sensitive (cw->priv->audio_settings_button, false);
- gtk_widget_set_sensitive (cw->priv->audio_output_volume_frame, false);
+ gtk_widget_set_sensitive (self->priv->audio_output_volume_frame, false);
}
static void
@@ -917,127 +911,132 @@ on_audiooutput_device_error_cb (Ekiga::AudioOutputManager & /*manager */,
}
static void
-on_setup_call_cb (G_GNUC_UNUSED boost::shared_ptr<Ekiga::CallManager> manager,
+on_ringing_call_cb (G_GNUC_UNUSED boost::shared_ptr<Ekiga::CallManager> manager,
+ G_GNUC_UNUSED boost::shared_ptr<Ekiga::Call> call,
+ gpointer data)
+{
+ EkigaCallWindow *self = EKIGA_CALL_WINDOW (data);
+
+ g_return_if_fail (self);
+
+ self->priv->calling_state = Ringing;
+
+ ekiga_call_window_update_calling_state (self, self->priv->calling_state);
+}
+
+
+static void
+on_setup_call_cb (boost::shared_ptr<Ekiga::CallManager> manager,
boost::shared_ptr<Ekiga::Call> call,
- gpointer self)
+ gpointer data)
{
- EkigaCallWindow *cw = EKIGA_CALL_WINDOW (self);
+ EkigaCallWindow *self = EKIGA_CALL_WINDOW (data);
+ boost::signals2::connection conn;
+
+ self->priv->menu = Ekiga::GActorMenuPtr (new Ekiga::GActorMenu (*call));
if (!call->is_outgoing () && !manager->get_auto_answer ()) {
- if (cw->priv->current_call)
+ if (self->priv->current_call)
return; // No call setup needed if already in a call
- cw->priv->current_call = call;
- cw->priv->calling_state = Called;
+ self->priv->current_call = call;
+ self->priv->calling_state = Called;
}
else {
- cw->priv->current_call = call;
- cw->priv->calling_state = Calling;
+ self->priv->current_call = call;
+ self->priv->calling_state = Calling;
}
- gtk_window_set_title (GTK_WINDOW (cw), call->get_remote_uri ().c_str ());
+ gtk_window_set_title (GTK_WINDOW (self), call->get_remote_uri ().c_str ());
- if (call->is_outgoing ())
- ekiga_call_window_set_status (cw, _("Calling %s..."), call->get_remote_uri ().c_str ());
+ ekiga_call_window_update_calling_state (self, self->priv->calling_state);
- ekiga_call_window_update_calling_state (cw, cw->priv->calling_state);
+ conn = call->questions.connect (boost::bind (&on_handle_questions, _1, (gpointer) self));
+ self->priv->connections.add (conn);
}
-static void
-on_ringing_call_cb (G_GNUC_UNUSED boost::shared_ptr<Ekiga::CallManager> manager,
- G_GNUC_UNUSED boost::shared_ptr<Ekiga::Call> call,
- gpointer self)
-{
- EkigaCallWindow *cw = EKIGA_CALL_WINDOW (self);
-
- g_return_if_fail (cw);
-
- cw->priv->calling_state = Ringing;
-
- ekiga_call_window_update_calling_state (cw, cw->priv->calling_state);
-}
static void
on_established_call_cb (boost::shared_ptr<Ekiga::CallManager> /*manager*/,
boost::shared_ptr<Ekiga::Call> call,
- gpointer self)
+ gpointer data)
{
- EkigaCallWindow *cw = EKIGA_CALL_WINDOW (self);
+ EkigaCallWindow *self = EKIGA_CALL_WINDOW (data);
- gtk_window_set_title (GTK_WINDOW (cw), call->get_remote_party_name ().c_str ());
+ gtk_window_set_title (GTK_WINDOW (self), call->get_remote_party_name ().c_str ());
- ekiga_call_window_set_status (cw, _("Connected with %s"), call->get_remote_party_name ().c_str ());
- ekiga_call_window_update_calling_state (cw, Connected);
+ ekiga_call_window_update_calling_state (self, Connected);
- cw->priv->current_call = call;
+ self->priv->current_call = call;
- cw->priv->timeout_id = g_timeout_add_seconds (1, on_stats_refresh_cb, self);
+ self->priv->timeout_id = g_timeout_add_seconds (1, on_stats_refresh_cb, self);
}
static void
on_cleared_call_cb (G_GNUC_UNUSED boost::shared_ptr<Ekiga::CallManager> manager,
boost::shared_ptr<Ekiga::Call> call,
G_GNUC_UNUSED std::string reason,
- gpointer self)
+ gpointer data)
{
- EkigaCallWindow *cw = EKIGA_CALL_WINDOW (self);
+ EkigaCallWindow *self = EKIGA_CALL_WINDOW (data);
- if (cw->priv->current_call && cw->priv->current_call->get_id () != call->get_id ()) {
+ if (self->priv->current_call && self->priv->current_call->get_id () != call->get_id ()) {
return; // Trying to clear another call than the current active one
}
- ekiga_call_window_update_calling_state (cw, Standby);
- ekiga_call_window_set_status (cw, _("Standby"));
- ekiga_call_window_set_bandwidth (cw, 0.0, 0.0, 0.0, 0.0);
- ekiga_call_window_clear_stats (cw);
+ ekiga_call_window_update_calling_state (self, Standby);
+ ekiga_call_window_set_bandwidth (self, 0.0, 0.0, 0.0, 0.0);
+ ekiga_call_window_clear_stats (self);
- if (cw->priv->current_call) {
- cw->priv->current_call = boost::shared_ptr<Ekiga::Call>();
- g_source_remove (cw->priv->timeout_id);
- cw->priv->timeout_id = -1;
+ if (self->priv->current_call) {
+ self->priv->current_call = boost::shared_ptr<Ekiga::Call>();
+ g_source_remove (self->priv->timeout_id);
+ self->priv->timeout_id = -1;
+ self->priv->menu.reset ();
}
- ekiga_call_window_clear_signal_levels (cw);
+ ekiga_call_window_clear_signal_levels (self);
- gtk_window_set_title (GTK_WINDOW (cw), _("Call Window"));
+ gtk_window_set_title (GTK_WINDOW (self), _("Call Window"));
}
static void on_missed_call_cb (boost::shared_ptr<Ekiga::CallManager> /*manager*/,
boost::shared_ptr<Ekiga::Call> call,
- gpointer self)
+ gpointer data)
{
- EkigaCallWindow *cw = EKIGA_CALL_WINDOW (self);
+ EkigaCallWindow *self = EKIGA_CALL_WINDOW (data);
- if (cw->priv->current_call && call && cw->priv->current_call->get_id () != call->get_id ()) {
+ if (self->priv->current_call && call && self->priv->current_call->get_id () != call->get_id ()) {
return; // Trying to clear another call than the current active one
}
+ self->priv->menu.reset ();
- gtk_window_set_title (GTK_WINDOW (cw), _("Call Window"));
- ekiga_call_window_update_calling_state (cw, Standby);
- ekiga_call_window_set_status (cw, _("Standby"));
+ gtk_window_set_title (GTK_WINDOW (self), _("Call Window"));
+ ekiga_call_window_update_calling_state (self, Standby);
}
static void
on_held_call_cb (boost::shared_ptr<Ekiga::CallManager> /*manager*/,
boost::shared_ptr<Ekiga::Call> /*call*/,
- gpointer self)
+ gpointer data)
{
- EkigaCallWindow *cw = EKIGA_CALL_WINDOW (self);
+ EkigaCallWindow *self = EKIGA_CALL_WINDOW (data);
- ekiga_call_window_set_call_hold (cw, true);
- gm_statusbar_flash_message (GM_STATUSBAR (cw->priv->statusbar), _("Call on hold"));
+ ekiga_call_window_set_call_hold (self, true);
+ gm_statusbar_flash_message (GM_STATUSBAR (self->priv->statusbar), _("Call on hold"));
}
+
static void
on_retrieved_call_cb (boost::shared_ptr<Ekiga::CallManager> /*manager*/,
boost::shared_ptr<Ekiga::Call> /*call*/,
- gpointer self)
+ gpointer data)
{
- EkigaCallWindow *cw = EKIGA_CALL_WINDOW (self);
+ EkigaCallWindow *self = EKIGA_CALL_WINDOW (data);
- ekiga_call_window_set_call_hold (cw, false);
- gm_statusbar_flash_message (GM_STATUSBAR (cw->priv->statusbar), _("Call retrieved"));
+ ekiga_call_window_set_call_hold (self, false);
+ gm_statusbar_flash_message (GM_STATUSBAR (self->priv->statusbar), _("Call retrieved"));
}
static void
@@ -1065,13 +1064,13 @@ on_stream_opened_cb (boost::shared_ptr<Ekiga::CallManager> /*manager*/,
std::string name,
Ekiga::Call::StreamType type,
bool is_transmitting,
- gpointer self)
+ gpointer data)
{
- EkigaCallWindow *cw = EKIGA_CALL_WINDOW (self);
+ EkigaCallWindow *self = EKIGA_CALL_WINDOW (data);
bool is_video = (type == Ekiga::Call::Video);
- set_codec (cw->priv, name, is_video, is_transmitting);
- ekiga_call_window_channels_menu_update_sensitivity (cw, is_video, true);
+ set_codec (self->priv, name, is_video, is_transmitting);
+ ekiga_call_window_channels_menu_update_sensitivity (self, is_video, true);
}
@@ -1081,13 +1080,13 @@ on_stream_closed_cb (boost::shared_ptr<Ekiga::CallManager> /*manager*/,
G_GNUC_UNUSED std::string name,
Ekiga::Call::StreamType type,
bool is_transmitting,
- gpointer self)
+ gpointer data)
{
- EkigaCallWindow *cw = EKIGA_CALL_WINDOW (self);
+ EkigaCallWindow *self = EKIGA_CALL_WINDOW (data);
bool is_video = (type == Ekiga::Call::Video);
- set_codec (cw->priv, "", is_video, is_transmitting);
- ekiga_call_window_channels_menu_update_sensitivity (cw, is_video, false);
+ set_codec (self->priv, "", is_video, is_transmitting);
+ ekiga_call_window_channels_menu_update_sensitivity (self, is_video, false);
}
static void
@@ -1095,11 +1094,11 @@ on_stream_paused_cb (boost::shared_ptr<Ekiga::CallManager> /*manager*/,
boost::shared_ptr<Ekiga::Call> /*call*/,
std::string /*name*/,
Ekiga::Call::StreamType type,
- gpointer self)
+ gpointer data)
{
- EkigaCallWindow *cw = EKIGA_CALL_WINDOW (self);
+ EkigaCallWindow *self = EKIGA_CALL_WINDOW (data);
- ekiga_call_window_set_channel_pause (cw, true, (type == Ekiga::Call::Video));
+ ekiga_call_window_set_channel_pause (self, true, (type == Ekiga::Call::Video));
}
static void
@@ -1107,67 +1106,87 @@ on_stream_resumed_cb (boost::shared_ptr<Ekiga::CallManager> /*manager*/,
boost::shared_ptr<Ekiga::Call> /*call*/,
std::string /*name*/,
Ekiga::Call::StreamType type,
- gpointer self)
+ gpointer data)
+{
+ EkigaCallWindow *self = EKIGA_CALL_WINDOW (data);
+
+ ekiga_call_window_set_channel_pause (self, false, (type == Ekiga::Call::Video));
+}
+
+static bool
+on_handle_questions (Ekiga::FormRequestPtr request,
+ gpointer data)
{
- EkigaCallWindow *cw = EKIGA_CALL_WINDOW (self);
+ FormDialog dialog (request, GTK_WIDGET (data));
+
+ dialog.run ();
- ekiga_call_window_set_channel_pause (cw, false, (type == Ekiga::Call::Video));
+ return true;
}
static gboolean
-on_stats_refresh_cb (gpointer self)
+on_stats_refresh_cb (gpointer data)
{
- EkigaCallWindow *cw = EKIGA_CALL_WINDOW (self);
+ EkigaCallWindow *self = EKIGA_CALL_WINDOW (data);
unsigned local_width = 0;
unsigned local_height = 0;
unsigned remote_width = 0;
unsigned remote_height = 0;
- if (cw->priv->calling_state == Connected && cw->priv->current_call) {
-
- ekiga_call_window_set_status (cw, _("Connected with %s\n%s"),
- cw->priv->current_call->get_remote_party_name ().c_str (),
- cw->priv->current_call->get_duration ().c_str ());
- ekiga_call_window_set_bandwidth (cw,
- cw->priv->current_call->get_transmitted_audio_bandwidth (),
- cw->priv->current_call->get_received_audio_bandwidth (),
- cw->priv->current_call->get_transmitted_video_bandwidth (),
- cw->priv->current_call->get_received_video_bandwidth ());
-
- unsigned int jitter = cw->priv->current_call->get_jitter_size ();
- double lost = cw->priv->current_call->get_lost_packets ();
- double late = cw->priv->current_call->get_late_packets ();
- double out_of_order = cw->priv->current_call->get_out_of_order_packets ();
- gm_video_widget_get_stream_natural_size (GM_VIDEO_WIDGET (cw->priv->video_widget),
+ if (self->priv->calling_state == Connected && self->priv->current_call) {
+
+ gtk_header_bar_set_title (GTK_HEADER_BAR (self->priv->call_panel_toolbar),
+ self->priv->current_call->get_remote_party_name ().c_str ());
+ gtk_header_bar_set_subtitle (GTK_HEADER_BAR (self->priv->call_panel_toolbar),
+ self->priv->current_call->get_duration ().c_str ());
+ ekiga_call_window_set_bandwidth (self,
+ self->priv->current_call->get_transmitted_audio_bandwidth (),
+ self->priv->current_call->get_received_audio_bandwidth (),
+ self->priv->current_call->get_transmitted_video_bandwidth (),
+ self->priv->current_call->get_received_video_bandwidth ());
+
+ unsigned int jitter = self->priv->current_call->get_jitter_size ();
+ double lost = self->priv->current_call->get_lost_packets ();
+ double late = self->priv->current_call->get_late_packets ();
+ double out_of_order = self->priv->current_call->get_out_of_order_packets ();
+ gm_video_widget_get_stream_natural_size (GM_VIDEO_WIDGET (self->priv->video_widget),
PRIMARY_STREAM, &remote_width, &remote_height);
- gm_video_widget_get_stream_natural_size (GM_VIDEO_WIDGET (cw->priv->video_widget),
+ gm_video_widget_get_stream_natural_size (GM_VIDEO_WIDGET (self->priv->video_widget),
SECONDARY_STREAM, &local_width, &local_height);
- ekiga_call_window_update_stats (cw, lost, late, out_of_order, jitter,
+ ekiga_call_window_update_stats (self, lost, late, out_of_order, jitter,
local_width, local_height, remote_width, remote_height,
- cw->priv->transmitted_audio_codec.c_str (),
- cw->priv->transmitted_video_codec.c_str ());
+ self->priv->transmitted_audio_codec.c_str (),
+ self->priv->transmitted_video_codec.c_str ());
}
return true;
}
static gboolean
+on_delayed_destroy_cb (gpointer self)
+{
+ gtk_widget_destroy (GTK_WIDGET (self));
+
+ return FALSE;
+}
+
+static gboolean
ekiga_call_window_delete_event_cb (GtkWidget *widget,
G_GNUC_UNUSED GdkEventAny *event)
{
- EkigaCallWindow *cw = NULL;
+ EkigaCallWindow *self = NULL;
GSettings *settings = NULL;
- cw = EKIGA_CALL_WINDOW (widget);
- g_return_val_if_fail (EKIGA_IS_CALL_WINDOW (cw), false);
+ self = EKIGA_CALL_WINDOW (widget);
+ g_return_val_if_fail (EKIGA_IS_CALL_WINDOW (self), false);
/* Hang up or disable preview */
- if (cw->priv->calling_state != Standby && cw->priv->current_call) {
- cw->priv->current_call->hang_up ();
+ if (self->priv->calling_state != Standby && self->priv->current_call) {
+ self->priv->current_call->hang_up ();
}
- else if (cw->priv->fullscreen) {
- ekiga_call_window_toggle_fullscreen (cw);
+ else if (self->priv->fullscreen) {
+ ekiga_call_window_toggle_fullscreen (self);
}
else {
settings = g_settings_new (VIDEO_DEVICES_SCHEMA);
@@ -1175,127 +1194,87 @@ ekiga_call_window_delete_event_cb (GtkWidget *widget,
g_clear_object (&settings);
}
- return true; // Do not relay the event anymore
+ /* Destroying the call window directly is not nice
+ * from the user perspective.
+ */
+ g_timeout_add_seconds (2, on_delayed_destroy_cb, self);
+
+ return true;
}
static gboolean
ekiga_call_window_fullscreen_event_cb (GtkWidget *widget,
G_GNUC_UNUSED GdkEventAny *event)
{
- EkigaCallWindow *cw = NULL;
+ EkigaCallWindow *self = NULL;
- cw = EKIGA_CALL_WINDOW (widget);
- g_return_val_if_fail (EKIGA_IS_CALL_WINDOW (cw), false);
- ekiga_call_window_toggle_fullscreen (cw);
+ self = EKIGA_CALL_WINDOW (widget);
+ g_return_val_if_fail (EKIGA_IS_CALL_WINDOW (self), false);
+ ekiga_call_window_toggle_fullscreen (self);
return true; // Do not relay the event anymore
}
static void
-window_closed_from_menu_cb (G_GNUC_UNUSED GtkWidget *w,
- gpointer data)
-{
- EkigaCallWindow *cw = NULL;
-
- cw = EKIGA_CALL_WINDOW (data);
- g_return_if_fail (EKIGA_IS_CALL_WINDOW (cw));
-
- ekiga_call_window_delete_event_cb (GTK_WIDGET (cw), NULL);
-}
-
-static void
-ekiga_call_window_update_calling_state (EkigaCallWindow *cw,
+ekiga_call_window_update_calling_state (EkigaCallWindow *self,
unsigned calling_state)
{
- g_return_if_fail (cw != NULL);
+ g_return_if_fail (self != NULL);
switch (calling_state)
{
case Standby:
/* Update the hold state */
- ekiga_call_window_set_call_hold (cw, false);
+ ekiga_call_window_set_call_hold (self, false);
/* Update the sensitivity, all channels are closed */
- ekiga_call_window_channels_menu_update_sensitivity (cw, true, false);
- ekiga_call_window_channels_menu_update_sensitivity (cw, false, false);
-
- /* Update the menus and toolbar items */
- gtk_menu_set_sensitive (cw->priv->main_menu, "connect", false);
- gtk_menu_set_sensitive (cw->priv->main_menu, "disconnect", false);
- gtk_menu_section_set_sensitive (cw->priv->main_menu, "hold_call", false);
- gtk_widget_set_sensitive (GTK_WIDGET (cw->priv->pick_up_button), false);
- gtk_widget_set_sensitive (GTK_WIDGET (cw->priv->hang_up_button), false);
- gtk_widget_set_sensitive (GTK_WIDGET (cw->priv->hold_button), false);
+ ekiga_call_window_channels_menu_update_sensitivity (self, true, false);
+ ekiga_call_window_channels_menu_update_sensitivity (self, false, false);
/* Spinner updates */
- gtk_widget_show (cw->priv->camera_image);
- gtk_widget_hide (cw->priv->spinner);
- gtk_spinner_stop (GTK_SPINNER (cw->priv->spinner));
+ gtk_widget_show (self->priv->camera_image);
+ gtk_widget_hide (self->priv->spinner);
+ gtk_spinner_stop (GTK_SPINNER (self->priv->spinner));
/* Show/hide call frame */
- gtk_widget_hide (cw->priv->call_frame);
-
- /* Destroy the transfer call popup */
- if (cw->priv->transfer_call_popup)
- gtk_dialog_response (GTK_DIALOG (cw->priv->transfer_call_popup),
- GTK_RESPONSE_REJECT);
+ gtk_widget_hide (self->priv->call_frame);
break;
case Calling:
/* Show/hide call frame */
- gtk_widget_show (cw->priv->call_frame);
-
- /* Update the menus and toolbar items */
- gtk_widget_set_sensitive (GTK_WIDGET (cw->priv->pick_up_button), false);
- gtk_widget_set_sensitive (GTK_WIDGET (cw->priv->hang_up_button), true);
- gtk_menu_set_sensitive (cw->priv->main_menu, "connect", false);
- gtk_menu_set_sensitive (cw->priv->main_menu, "disconnect", true);
+ gtk_widget_show (self->priv->call_frame);
break;
case Ringing:
/* Spinner updates */
- gtk_widget_hide (cw->priv->camera_image);
- gtk_widget_show (cw->priv->spinner);
- gtk_spinner_start (GTK_SPINNER (cw->priv->spinner));
+ gtk_widget_hide (self->priv->camera_image);
+ gtk_widget_show (self->priv->spinner);
+ gtk_spinner_start (GTK_SPINNER (self->priv->spinner));
break;
case Connected:
/* Show/hide call frame */
- gtk_widget_show (cw->priv->call_frame);
+ gtk_widget_show (self->priv->call_frame);
/* Spinner updates */
- gtk_widget_show (cw->priv->camera_image);
- gtk_widget_hide (cw->priv->spinner);
- gtk_spinner_start (GTK_SPINNER (cw->priv->spinner));
-
- /* Update the menus and toolbar items */
- gtk_menu_set_sensitive (cw->priv->main_menu, "connect", false);
- gtk_menu_set_sensitive (cw->priv->main_menu, "disconnect", true);
- gtk_menu_section_set_sensitive (cw->priv->main_menu, "hold_call", true);
- gtk_widget_set_sensitive (GTK_WIDGET (cw->priv->pick_up_button), false);
- gtk_widget_set_sensitive (GTK_WIDGET (cw->priv->hang_up_button), true);
- gtk_widget_set_sensitive (GTK_WIDGET (cw->priv->hold_button), true);
+ gtk_widget_show (self->priv->camera_image);
+ gtk_widget_hide (self->priv->spinner);
+ gtk_spinner_start (GTK_SPINNER (self->priv->spinner));
break;
case Called:
- /* Update the menus and toolbar items */
- gtk_widget_set_sensitive (GTK_WIDGET (cw->priv->pick_up_button), true);
- gtk_widget_set_sensitive (GTK_WIDGET (cw->priv->hang_up_button), true);
- gtk_menu_set_sensitive (cw->priv->main_menu, "connect", true);
- gtk_menu_set_sensitive (cw->priv->main_menu, "disconnect", true);
-
/* Show/hide call frame and call window (if no notifications */
- gtk_widget_show (cw->priv->call_frame);
- if (!notify_has_actions (cw)) {
- gtk_window_present (GTK_WINDOW (cw));
- gtk_widget_show (GTK_WIDGET (cw));
+ gtk_widget_show (self->priv->call_frame);
+ if (!notify_has_actions (self)) {
+ gtk_window_present (GTK_WINDOW (self));
+ gtk_widget_show (GTK_WIDGET (self));
}
break;
@@ -1303,31 +1282,31 @@ ekiga_call_window_update_calling_state (EkigaCallWindow *cw,
break;
}
- cw->priv->calling_state = calling_state;
+ self->priv->calling_state = calling_state;
}
static void
-ekiga_call_window_clear_signal_levels (EkigaCallWindow *cw)
+ekiga_call_window_clear_signal_levels (EkigaCallWindow *self)
{
- g_return_if_fail (EKIGA_IS_CALL_WINDOW (cw));
+ g_return_if_fail (EKIGA_IS_CALL_WINDOW (self));
- //gm_level_meter_clear (GM_LEVEL_METER (cw->priv->output_signal));
- //gm_level_meter_clear (GM_LEVEL_METER (cw->priv->input_signal));
+ //gm_level_meter_clear (GM_LEVEL_METER (self->priv->output_signal));
+ //gm_level_meter_clear (GM_LEVEL_METER (self->priv->input_signal));
}
static void
-ekiga_call_window_clear_stats (EkigaCallWindow *cw)
+ekiga_call_window_clear_stats (EkigaCallWindow *self)
{
- g_return_if_fail (EKIGA_IS_CALL_WINDOW (cw));
+ g_return_if_fail (EKIGA_IS_CALL_WINDOW (self));
- ekiga_call_window_update_stats (cw, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL);
- if (cw->priv->qualitymeter)
- gm_powermeter_set_level (GM_POWERMETER (cw->priv->qualitymeter), 0.0);
+ ekiga_call_window_update_stats (self, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL);
+ if (self->priv->qualitymeter)
+ gm_powermeter_set_level (GM_POWERMETER (self->priv->qualitymeter), 0.0);
}
static void
-ekiga_call_window_update_stats (EkigaCallWindow *cw,
+ekiga_call_window_update_stats (EkigaCallWindow *self,
float lost,
float late,
float out_of_order,
@@ -1347,7 +1326,7 @@ ekiga_call_window_update_stats (EkigaCallWindow *cw,
int jitter_quality = 0;
gfloat quality_level = 0.0;
- g_return_if_fail (EKIGA_IS_CALL_WINDOW (cw));
+ g_return_if_fail (EKIGA_IS_CALL_WINDOW (self));
if ((tr_width > 0) && (tr_height > 0))
/* Translators: TX is a common abbreviation for "transmit". As it
@@ -1383,7 +1362,7 @@ ekiga_call_window_update_stats (EkigaCallWindow *cw,
g_free(stats_msg_re);
g_free(stats_msg_codecs);
- gtk_widget_set_tooltip_text (GTK_WIDGET (cw->priv->event_box), stats_msg);
+ gtk_widget_set_tooltip_text (GTK_WIDGET (self->priv->event_box), stats_msg);
g_free (stats_msg);
/* "arithmetics" for the quality level */
@@ -1417,46 +1396,14 @@ ekiga_call_window_update_stats (EkigaCallWindow *cw,
quality_level = 0;
}
- if (cw->priv->qualitymeter)
- gm_powermeter_set_level (GM_POWERMETER (cw->priv->qualitymeter),
+ if (self->priv->qualitymeter)
+ gm_powermeter_set_level (GM_POWERMETER (self->priv->qualitymeter),
quality_level);
}
static void
-ekiga_call_window_set_status (EkigaCallWindow *cw,
- const char *msg,
- ...)
-{
- GtkTextIter iter;
- GtkTextBuffer *text_buffer = NULL;
-
- char buffer [1025];
- va_list args;
-
- g_return_if_fail (EKIGA_IS_CALL_WINDOW (cw));
-
- text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (cw->priv->info_text));
-
- va_start (args, msg);
-
- if (msg == NULL)
- buffer[0] = 0;
- else
- vsnprintf (buffer, 1024, msg, args);
-
- gtk_text_buffer_set_text (text_buffer, buffer, -1);
- if (!g_strrstr (buffer, "\n")) {
- gtk_text_buffer_get_end_iter (text_buffer, &iter);
- gtk_text_buffer_insert (text_buffer, &iter, "\n", -1);
- }
-
- va_end (args);
-}
-
-
-static void
-ekiga_call_window_set_bandwidth (EkigaCallWindow *cw,
+ekiga_call_window_set_bandwidth (EkigaCallWindow *self,
float ta,
float ra,
float tv,
@@ -1464,7 +1411,7 @@ ekiga_call_window_set_bandwidth (EkigaCallWindow *cw,
{
gchar *msg = NULL;
- g_return_if_fail (EKIGA_IS_CALL_WINDOW (cw));
+ g_return_if_fail (EKIGA_IS_CALL_WINDOW (self));
if (ta > 0.0 || ra > 0.0 || tv > 0.0 || rv > 0.0)
/* Translators: A = Audio, V = Video */
@@ -1472,21 +1419,22 @@ ekiga_call_window_set_bandwidth (EkigaCallWindow *cw,
ta, ra, tv, rv);
if (msg)
- gm_statusbar_push_message (GM_STATUSBAR (cw->priv->statusbar), "%s", msg);
+ gm_statusbar_push_message (GM_STATUSBAR (self->priv->statusbar), "%s", msg);
else
- gm_statusbar_push_message (GM_STATUSBAR (cw->priv->statusbar), NULL);
+ gm_statusbar_push_message (GM_STATUSBAR (self->priv->statusbar), NULL);
g_free (msg);
}
static void
-ekiga_call_window_set_call_hold (EkigaCallWindow *cw,
+ekiga_call_window_set_call_hold (EkigaCallWindow *self,
bool is_on_hold)
{
GtkWidget *child = NULL;
- g_return_if_fail (EKIGA_IS_CALL_WINDOW (cw));
+ g_return_if_fail (EKIGA_IS_CALL_WINDOW (self));
- child = gtk_bin_get_child (GTK_BIN (gtk_menu_get_widget (cw->priv->main_menu, "hold_call")));
+ /* FIXME
+ child = gtk_bin_get_child (GTK_BIN (gtk_menu_get_widget (self->priv->main_menu, "hold_call")));
if (is_on_hold) {
@@ -1494,12 +1442,11 @@ ekiga_call_window_set_call_hold (EkigaCallWindow *cw,
gtk_label_set_text_with_mnemonic (GTK_LABEL (child),
_("_Retrieve Call"));
- /* Set the audio and video menu to unsensitive */
- gtk_menu_set_sensitive (cw->priv->main_menu, "suspend_audio", false);
- gtk_menu_set_sensitive (cw->priv->main_menu, "suspend_video", false);
+ gtk_menu_set_sensitive (self->priv->main_menu, "suspend_audio", false);
+ gtk_menu_set_sensitive (self->priv->main_menu, "suspend_video", false);
- ekiga_call_window_set_channel_pause (cw, true, false);
- ekiga_call_window_set_channel_pause (cw, true, true);
+ ekiga_call_window_set_channel_pause (self, true, false);
+ ekiga_call_window_set_channel_pause (self, true, true);
}
else {
@@ -1507,33 +1454,35 @@ ekiga_call_window_set_call_hold (EkigaCallWindow *cw,
gtk_label_set_text_with_mnemonic (GTK_LABEL (child),
_("H_old Call"));
- gtk_menu_set_sensitive (cw->priv->main_menu, "suspend_audio", true);
- gtk_menu_set_sensitive (cw->priv->main_menu, "suspend_video", true);
+ gtk_menu_set_sensitive (self->priv->main_menu, "suspend_audio", true);
+ gtk_menu_set_sensitive (self->priv->main_menu, "suspend_video", true);
- ekiga_call_window_set_channel_pause (cw, false, false);
- ekiga_call_window_set_channel_pause (cw, false, true);
+ ekiga_call_window_set_channel_pause (self, false, false);
+ ekiga_call_window_set_channel_pause (self, false, true);
}
- g_signal_handlers_block_by_func (cw->priv->hold_button,
+ g_signal_handlers_block_by_func (self->priv->hold_button,
(gpointer) hold_current_call_cb,
- cw);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (cw->priv->hold_button),
+ self);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->priv->hold_button),
is_on_hold);
- g_signal_handlers_unblock_by_func (cw->priv->hold_button,
+ g_signal_handlers_unblock_by_func (self->priv->hold_button,
(gpointer) hold_current_call_cb,
- cw);
+ self);
+ */
}
static void
-ekiga_call_window_set_channel_pause (EkigaCallWindow *cw,
+ekiga_call_window_set_channel_pause (EkigaCallWindow *self,
gboolean pause,
gboolean is_video)
{
+ /* FIXME
GtkWidget *widget = NULL;
GtkWidget *child = NULL;
gchar *msg = NULL;
- g_return_if_fail (EKIGA_IS_CALL_WINDOW (cw));
+ g_return_if_fail (EKIGA_IS_CALL_WINDOW (self));
if (!pause && !is_video)
msg = _("Suspend _Audio");
@@ -1544,16 +1493,17 @@ ekiga_call_window_set_channel_pause (EkigaCallWindow *cw,
else if (pause && is_video)
msg = _("Resume _Video");
- widget = gtk_menu_get_widget (cw->priv->main_menu,
+ widget = gtk_menu_get_widget (self->priv->main_menu,
is_video ? "suspend_video" : "suspend_audio");
child = gtk_bin_get_child (GTK_BIN (widget));
if (GTK_IS_LABEL (child))
gtk_label_set_text_with_mnemonic (GTK_LABEL (child), msg);
+ */
}
static GtkWidget *
-gm_cw_video_settings_window_new (EkigaCallWindow *cw)
+gm_call_window_video_settings_window_new (EkigaCallWindow *self)
{
GtkWidget *hbox = NULL;
GtkWidget *vbox = NULL;
@@ -1572,24 +1522,24 @@ gm_cw_video_settings_window_new (EkigaCallWindow *cw)
gtk_window_set_title (GTK_WINDOW (window), _("Video Settings"));
/* Webcam Control Frame, we need it to disable controls */
- cw->priv->video_settings_frame = gtk_frame_new (NULL);
- gtk_frame_set_shadow_type (GTK_FRAME (cw->priv->video_settings_frame),
+ self->priv->video_settings_frame = gtk_frame_new (NULL);
+ gtk_frame_set_shadow_type (GTK_FRAME (self->priv->video_settings_frame),
GTK_SHADOW_NONE);
- gtk_container_set_border_width (GTK_CONTAINER (cw->priv->video_settings_frame), 5);
+ gtk_container_set_border_width (GTK_CONTAINER (self->priv->video_settings_frame), 5);
/* Category */
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
- gtk_container_add (GTK_CONTAINER (cw->priv->video_settings_frame), vbox);
+ gtk_container_add (GTK_CONTAINER (self->priv->video_settings_frame), vbox);
/* Brightness */
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
image = gtk_image_new_from_icon_name ("brightness", GTK_ICON_SIZE_MENU);
gtk_box_pack_start (GTK_BOX (hbox), image, false, false, 0);
- cw->priv->adj_brightness = gtk_adjustment_new (brightness, 0.0,
+ self->priv->adj_brightness = gtk_adjustment_new (brightness, 0.0,
255.0, 1.0, 5.0, 1.0);
hscale_brightness = gtk_scale_new (GTK_ORIENTATION_HORIZONTAL,
- GTK_ADJUSTMENT (cw->priv->adj_brightness));
+ GTK_ADJUSTMENT (self->priv->adj_brightness));
gtk_scale_set_draw_value (GTK_SCALE (hscale_brightness), false);
gtk_scale_set_value_pos (GTK_SCALE (hscale_brightness), GTK_POS_RIGHT);
gtk_box_pack_start (GTK_BOX (hbox), hscale_brightness, true, true, 2);
@@ -1597,19 +1547,19 @@ gm_cw_video_settings_window_new (EkigaCallWindow *cw)
gtk_widget_set_tooltip_text (hscale_brightness, _("Adjust brightness"));
- g_signal_connect (cw->priv->adj_brightness, "value-changed",
+ g_signal_connect (self->priv->adj_brightness, "value-changed",
G_CALLBACK (video_settings_changed_cb),
- (gpointer) cw);
+ (gpointer) self);
/* Whiteness */
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
image = gtk_image_new_from_icon_name ("whiteness", GTK_ICON_SIZE_MENU);
gtk_box_pack_start (GTK_BOX (hbox), image, false, false, 0);
- cw->priv->adj_whiteness = gtk_adjustment_new (whiteness, 0.0,
+ self->priv->adj_whiteness = gtk_adjustment_new (whiteness, 0.0,
255.0, 1.0, 5.0, 1.0);
hscale_whiteness = gtk_scale_new (GTK_ORIENTATION_HORIZONTAL,
- GTK_ADJUSTMENT (cw->priv->adj_whiteness));
+ GTK_ADJUSTMENT (self->priv->adj_whiteness));
gtk_scale_set_draw_value (GTK_SCALE (hscale_whiteness), false);
gtk_scale_set_value_pos (GTK_SCALE (hscale_whiteness), GTK_POS_RIGHT);
gtk_box_pack_start (GTK_BOX (hbox), hscale_whiteness, true, true, 2);
@@ -1617,19 +1567,19 @@ gm_cw_video_settings_window_new (EkigaCallWindow *cw)
gtk_widget_set_tooltip_text (hscale_whiteness, _("Adjust whiteness"));
- g_signal_connect (cw->priv->adj_whiteness, "value-changed",
+ g_signal_connect (self->priv->adj_whiteness, "value-changed",
G_CALLBACK (video_settings_changed_cb),
- (gpointer) cw);
+ (gpointer) self);
/* Colour */
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
image = gtk_image_new_from_icon_name ("color", GTK_ICON_SIZE_MENU);
gtk_box_pack_start (GTK_BOX (hbox), image, false, false, 0);
- cw->priv->adj_colour = gtk_adjustment_new (colour, 0.0,
+ self->priv->adj_colour = gtk_adjustment_new (colour, 0.0,
255.0, 1.0, 5.0, 1.0);
hscale_colour = gtk_scale_new (GTK_ORIENTATION_HORIZONTAL,
- GTK_ADJUSTMENT (cw->priv->adj_colour));
+ GTK_ADJUSTMENT (self->priv->adj_colour));
gtk_scale_set_draw_value (GTK_SCALE (hscale_colour), false);
gtk_scale_set_value_pos (GTK_SCALE (hscale_colour), GTK_POS_RIGHT);
gtk_box_pack_start (GTK_BOX (hbox), hscale_colour, true, true, 2);
@@ -1637,19 +1587,19 @@ gm_cw_video_settings_window_new (EkigaCallWindow *cw)
gtk_widget_set_tooltip_text (hscale_colour, _("Adjust color"));
- g_signal_connect (cw->priv->adj_colour, "value-changed",
+ g_signal_connect (self->priv->adj_colour, "value-changed",
G_CALLBACK (video_settings_changed_cb),
- (gpointer) cw);
+ (gpointer) self);
/* Contrast */
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
image = gtk_image_new_from_icon_name ("contrast", GTK_ICON_SIZE_MENU);
gtk_box_pack_start (GTK_BOX (hbox), image, false, false, 0);
- cw->priv->adj_contrast = gtk_adjustment_new (contrast, 0.0,
+ self->priv->adj_contrast = gtk_adjustment_new (contrast, 0.0,
255.0, 1.0, 5.0, 1.0);
hscale_contrast = gtk_scale_new (GTK_ORIENTATION_HORIZONTAL,
- GTK_ADJUSTMENT (cw->priv->adj_contrast));
+ GTK_ADJUSTMENT (self->priv->adj_contrast));
gtk_scale_set_draw_value (GTK_SCALE (hscale_contrast), false);
gtk_scale_set_value_pos (GTK_SCALE (hscale_contrast), GTK_POS_RIGHT);
gtk_box_pack_start (GTK_BOX (hbox), hscale_contrast, true, true, 2);
@@ -1657,15 +1607,15 @@ gm_cw_video_settings_window_new (EkigaCallWindow *cw)
gtk_widget_set_tooltip_text (hscale_contrast, _("Adjust contrast"));
- g_signal_connect (cw->priv->adj_contrast, "value-changed",
+ g_signal_connect (self->priv->adj_contrast, "value-changed",
G_CALLBACK (video_settings_changed_cb),
- (gpointer) cw);
+ (gpointer) self);
gtk_container_add (GTK_CONTAINER (window),
- cw->priv->video_settings_frame);
- gtk_widget_show_all (cw->priv->video_settings_frame);
+ self->priv->video_settings_frame);
+ gtk_widget_show_all (self->priv->video_settings_frame);
- gtk_widget_set_sensitive (GTK_WIDGET (cw->priv->video_settings_frame), false);
+ gtk_widget_set_sensitive (GTK_WIDGET (self->priv->video_settings_frame), false);
gtk_widget_hide_on_delete (window);
@@ -1673,7 +1623,7 @@ gm_cw_video_settings_window_new (EkigaCallWindow *cw)
}
static GtkWidget *
-gm_cw_audio_settings_window_new (EkigaCallWindow *cw)
+gm_call_window_audio_settings_window_new (EkigaCallWindow *self)
{
GtkWidget *hscale_play = NULL;
GtkWidget *hscale_rec = NULL;
@@ -1688,15 +1638,15 @@ gm_cw_audio_settings_window_new (EkigaCallWindow *cw)
gtk_window_set_title (GTK_WINDOW (window), _("Audio Settings"));
/* Audio control frame, we need it to disable controls */
- cw->priv->audio_output_volume_frame = gtk_frame_new (NULL);
- gtk_frame_set_shadow_type (GTK_FRAME (cw->priv->audio_output_volume_frame),
+ self->priv->audio_output_volume_frame = gtk_frame_new (NULL);
+ gtk_frame_set_shadow_type (GTK_FRAME (self->priv->audio_output_volume_frame),
GTK_SHADOW_NONE);
- gtk_container_set_border_width (GTK_CONTAINER (cw->priv->audio_output_volume_frame), 5);
+ gtk_container_set_border_width (GTK_CONTAINER (self->priv->audio_output_volume_frame), 5);
main_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
/* The vbox */
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
- gtk_container_add (GTK_CONTAINER (cw->priv->audio_output_volume_frame), vbox);
+ gtk_container_add (GTK_CONTAINER (self->priv->audio_output_volume_frame), vbox);
/* Output volume */
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
@@ -1705,31 +1655,31 @@ gm_cw_audio_settings_window_new (EkigaCallWindow *cw)
false, false, 0);
small_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
- cw->priv->adj_output_volume = gtk_adjustment_new (0, 0.0, 101.0, 1.0, 5.0, 1.0);
+ self->priv->adj_output_volume = gtk_adjustment_new (0, 0.0, 101.0, 1.0, 5.0, 1.0);
hscale_play = gtk_scale_new (GTK_ORIENTATION_HORIZONTAL,
- GTK_ADJUSTMENT (cw->priv->adj_output_volume));
+ GTK_ADJUSTMENT (self->priv->adj_output_volume));
gtk_scale_set_value_pos (GTK_SCALE (hscale_play), GTK_POS_RIGHT);
gtk_scale_set_draw_value (GTK_SCALE (hscale_play), false);
gtk_box_pack_start (GTK_BOX (small_vbox), hscale_play, true, true, 0);
- //cw->priv->output_signal = gm_level_meter_new ();
- //gtk_box_pack_start (GTK_BOX (small_vbox), cw->priv->output_signal, true, true, 0);
+ //self->priv->output_signal = gm_level_meter_new ();
+ //gtk_box_pack_start (GTK_BOX (small_vbox), self->priv->output_signal, true, true, 0);
gtk_box_pack_start (GTK_BOX (hbox), small_vbox, true, true, 2);
gtk_box_pack_start (GTK_BOX (vbox), hbox, false, false, 3);
- gtk_box_pack_start (GTK_BOX (main_vbox), cw->priv->audio_output_volume_frame,
+ gtk_box_pack_start (GTK_BOX (main_vbox), self->priv->audio_output_volume_frame,
false, false, 0);
- gtk_widget_set_sensitive (GTK_WIDGET (cw->priv->audio_output_volume_frame), false);
+ gtk_widget_set_sensitive (GTK_WIDGET (self->priv->audio_output_volume_frame), false);
/* Audio control frame, we need it to disable controls */
- cw->priv->audio_input_volume_frame = gtk_frame_new (NULL);
- gtk_frame_set_shadow_type (GTK_FRAME (cw->priv->audio_input_volume_frame),
+ self->priv->audio_input_volume_frame = gtk_frame_new (NULL);
+ gtk_frame_set_shadow_type (GTK_FRAME (self->priv->audio_input_volume_frame),
GTK_SHADOW_NONE);
- gtk_container_set_border_width (GTK_CONTAINER (cw->priv->audio_input_volume_frame), 5);
+ gtk_container_set_border_width (GTK_CONTAINER (self->priv->audio_input_volume_frame), 5);
/* The vbox */
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
- gtk_container_add (GTK_CONTAINER (cw->priv->audio_input_volume_frame), vbox);
+ gtk_container_add (GTK_CONTAINER (self->priv->audio_input_volume_frame), vbox);
/* Input volume */
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
@@ -1739,343 +1689,226 @@ gm_cw_audio_settings_window_new (EkigaCallWindow *cw)
false, false, 0);
small_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
- cw->priv->adj_input_volume = gtk_adjustment_new (0, 0.0, 101.0, 1.0, 5.0, 1.0);
+ self->priv->adj_input_volume = gtk_adjustment_new (0, 0.0, 101.0, 1.0, 5.0, 1.0);
hscale_rec = gtk_scale_new (GTK_ORIENTATION_HORIZONTAL,
- GTK_ADJUSTMENT (cw->priv->adj_input_volume));
+ GTK_ADJUSTMENT (self->priv->adj_input_volume));
gtk_scale_set_value_pos (GTK_SCALE (hscale_rec), GTK_POS_RIGHT);
gtk_scale_set_draw_value (GTK_SCALE (hscale_rec), false);
gtk_box_pack_start (GTK_BOX (small_vbox), hscale_rec, true, true, 0);
- // cw->priv->input_signal = gm_level_meter_new ();
- // gtk_box_pack_start (GTK_BOX (small_vbox), cw->priv->input_signal, true, true, 0);
+ // self->priv->input_signal = gm_level_meter_new ();
+ // gtk_box_pack_start (GTK_BOX (small_vbox), self->priv->input_signal, true, true, 0);
gtk_box_pack_start (GTK_BOX (hbox), small_vbox, true, true, 2);
gtk_box_pack_start (GTK_BOX (vbox), hbox, false, false, 3);
- gtk_box_pack_start (GTK_BOX (main_vbox), cw->priv->audio_input_volume_frame,
+ gtk_box_pack_start (GTK_BOX (main_vbox), self->priv->audio_input_volume_frame,
false, false, 0);
- gtk_widget_set_sensitive (GTK_WIDGET (cw->priv->audio_input_volume_frame), false);
+ gtk_widget_set_sensitive (GTK_WIDGET (self->priv->audio_input_volume_frame), false);
gtk_container_add (GTK_CONTAINER (window), main_vbox);
gtk_widget_show_all (main_vbox);
- g_signal_connect (cw->priv->adj_output_volume, "value-changed",
- G_CALLBACK (audio_volume_changed_cb), cw);
+ g_signal_connect (self->priv->adj_output_volume, "value-changed",
+ G_CALLBACK (audio_volume_changed_cb), self);
- g_signal_connect (cw->priv->adj_input_volume, "value-changed",
- G_CALLBACK (audio_volume_changed_cb), cw);
+ g_signal_connect (self->priv->adj_input_volume, "value-changed",
+ G_CALLBACK (audio_volume_changed_cb), self);
gtk_widget_hide_on_delete (window);
g_signal_connect (window, "show",
- G_CALLBACK (audio_volume_window_shown_cb), cw);
+ G_CALLBACK (audio_volume_window_shown_cb), self);
g_signal_connect (window, "hide",
- G_CALLBACK (audio_volume_window_hidden_cb), cw);
+ G_CALLBACK (audio_volume_window_hidden_cb), self);
return window;
}
static void
-ekiga_call_window_init_menu (EkigaCallWindow *cw)
+ekiga_call_window_init_menu (EkigaCallWindow *self)
{
- g_return_if_fail (cw != NULL);
+ g_return_if_fail (self != NULL);
+ self->priv->builder = gtk_builder_new ();
+ gtk_builder_add_from_string (self->priv->builder, win_menu, -1, NULL);
- cw->priv->main_menu = gtk_menu_bar_new ();
+ g_action_map_add_action (G_ACTION_MAP (g_application_get_default ()),
+ g_settings_create_action (self->priv->video_display_settings->get_g_settings (),
+ "enable-pip"));
- static MenuEntry gnomemeeting_menu [] =
- {
- GTK_MENU_NEW (_("_Call")),
-
- GTK_MENU_THEME_ENTRY("connect", _("_Pick up"), _("Pick up the current call"),
- "phone-pick-up", 'd',
- G_CALLBACK (pick_up_call_cb), cw, false),
-
- GTK_MENU_THEME_ENTRY("disconnect", _("_Hang up"), _("Hang up the current call"),
- "phone-hang-up", 'd',
- G_CALLBACK (hang_up_call_cb), cw, false),
-
- GTK_MENU_SEPARATOR,
-
- GTK_MENU_ENTRY("hold_call", _("H_old Call"), _("Hold the current call"),
- NULL, GDK_KEY_h,
- G_CALLBACK (hold_current_call_cb), cw,
- false),
- GTK_MENU_ENTRY("transfer_call", _("_Transfer Call"),
- _("Transfer the current call"),
- NULL, GDK_KEY_t,
- G_CALLBACK (transfer_current_call_cb), cw,
- false),
-
- GTK_MENU_SEPARATOR,
-
- GTK_MENU_ENTRY("suspend_audio", _("Suspend _Audio"),
- _("Suspend or resume the audio transmission"),
- NULL, GDK_KEY_m,
- G_CALLBACK (toggle_audio_stream_pause_cb),
- cw, false),
- GTK_MENU_ENTRY("suspend_video", _("Suspend _Video"),
- _("Suspend or resume the video transmission"),
- NULL, GDK_KEY_p,
- G_CALLBACK (toggle_video_stream_pause_cb),
- cw, false),
-
- GTK_MENU_SEPARATOR,
-
- GTK_MENU_ENTRY("close", NULL, _("Close the Ekiga Window"),
- GTK_STOCK_CLOSE, 'W',
- G_CALLBACK (window_closed_from_menu_cb),
- cw, TRUE),
-
- GTK_MENU_NEW(_("_View")),
-
- GTK_MENU_TOGGLE_ENTRY("pip", _("Enable _Picture-In-Picture Mode"),
- _("This allows the local video stream to be displayed incrusted in the remote
video stream. This is only effective when sending and receiving video"),
- NULL, 'P',
- cw->priv->video_display_settings->get_g_settings (), "enable-pip",
- FALSE),
-
- GTK_MENU_ENTRY("extended_video", _("_Extended Video"), _("Display the extended video stream window"),
- NULL, 0,
- G_CALLBACK (show_extended_video_window_cb),
- (gpointer) cw, false),
-
- GTK_MENU_SEPARATOR,
-
- GTK_MENU_ENTRY("fullscreen", _("_Fullscreen"), _("Switch to fullscreen"),
- GTK_STOCK_ZOOM_IN, GDK_KEY_F11,
- G_CALLBACK (fullscreen_changed_cb),
- (gpointer) cw, true),
-
- GTK_MENU_END
- };
-
-
- gtk_build_menu (cw->priv->main_menu,
- gnomemeeting_menu,
- cw->priv->accel,
- cw->priv->statusbar);
-
- gtk_widget_show_all (GTK_WIDGET (cw->priv->main_menu));
+ g_action_map_add_action_entries (G_ACTION_MAP (g_application_get_default ()),
+ win_entries, G_N_ELEMENTS (win_entries),
+ self);
+
+ gtk_widget_insert_action_group (GTK_WIDGET (self), "win",
+ G_ACTION_GROUP (g_application_get_default ()));
}
+
static void
-ekiga_call_window_init_clutter (EkigaCallWindow *cw)
+ekiga_call_window_init_clutter (EkigaCallWindow *self)
{
gchar *filename = NULL;
- cw->priv->video_widget = gm_video_widget_new ();
- gtk_widget_show (cw->priv->video_widget);
- gtk_widget_set_size_request (GTK_WIDGET (cw->priv->video_widget),
+ self->priv->video_widget = gm_video_widget_new ();
+ gtk_widget_show (self->priv->video_widget);
+ gtk_widget_set_size_request (GTK_WIDGET (self->priv->video_widget),
STAGE_WIDTH, STAGE_HEIGHT);
- gtk_container_add (GTK_CONTAINER (cw->priv->event_box), cw->priv->video_widget);
+ gtk_container_add (GTK_CONTAINER (self->priv->event_box), self->priv->video_widget);
filename = g_build_filename (DATA_DIR, "pixmaps", PACKAGE_NAME,
PACKAGE_NAME "-full-icon.png", NULL);
- gm_video_widget_set_logo (GM_VIDEO_WIDGET (cw->priv->video_widget), filename);
+ gm_video_widget_set_logo (GM_VIDEO_WIDGET (self->priv->video_widget), filename);
g_free (filename);
- cw->priv->videooutput_core->set_display_info (gm_video_widget_get_stream (GM_VIDEO_WIDGET
(cw->priv->video_widget), SECONDARY_STREAM), gm_video_widget_get_stream (GM_VIDEO_WIDGET
(cw->priv->video_widget), PRIMARY_STREAM));
+ self->priv->videooutput_core->set_display_info (gm_video_widget_get_stream (GM_VIDEO_WIDGET
(self->priv->video_widget), SECONDARY_STREAM), gm_video_widget_get_stream (GM_VIDEO_WIDGET
(self->priv->video_widget), PRIMARY_STREAM));
}
static void
-ekiga_call_window_toggle_fullscreen (EkigaCallWindow *cw)
+ekiga_call_window_toggle_fullscreen (EkigaCallWindow *self)
{
- g_return_if_fail (EKIGA_IS_CALL_WINDOW (cw));
+ g_return_if_fail (EKIGA_IS_CALL_WINDOW (self));
- cw->priv->fullscreen = !cw->priv->fullscreen;
+ self->priv->fullscreen = !self->priv->fullscreen;
- if (cw->priv->fullscreen) {
- gm_window_save (GM_WINDOW (cw));
- gtk_widget_hide (cw->priv->main_menu);
- gtk_widget_hide (cw->priv->call_panel_toolbar);
- gtk_widget_hide (cw->priv->statusbar_ebox);
- gtk_window_maximize (GTK_WINDOW (cw));
- gtk_window_fullscreen (GTK_WINDOW (cw));
- gm_video_widget_set_fullscreen (GM_VIDEO_WIDGET (cw->priv->video_widget), true);
- gtk_window_set_keep_above (GTK_WINDOW (cw), true);
+ if (self->priv->fullscreen) {
+ gm_window_save (GM_WINDOW (self));
+ gtk_widget_hide (self->priv->call_panel_toolbar);
+ gtk_widget_hide (self->priv->statusbar_ebox);
+ gtk_window_maximize (GTK_WINDOW (self));
+ gtk_window_fullscreen (GTK_WINDOW (self));
+ gm_video_widget_set_fullscreen (GM_VIDEO_WIDGET (self->priv->video_widget), true);
+ gtk_window_set_keep_above (GTK_WINDOW (self), true);
}
else {
- gtk_widget_show (cw->priv->main_menu);
- gtk_widget_show (cw->priv->call_panel_toolbar);
- gtk_widget_show (cw->priv->statusbar_ebox);
- gtk_window_unmaximize (GTK_WINDOW (cw));
- gtk_window_unfullscreen (GTK_WINDOW (cw));
- gtk_window_set_keep_above (GTK_WINDOW (cw),
- cw->priv->video_display_settings->get_bool ("stay-on-top"));
- gm_window_restore (GM_WINDOW (cw));
- gm_video_widget_set_fullscreen (GM_VIDEO_WIDGET (cw->priv->video_widget), false);
+ gtk_widget_show (self->priv->call_panel_toolbar);
+ gtk_widget_show (self->priv->statusbar_ebox);
+ gtk_window_unmaximize (GTK_WINDOW (self));
+ gtk_window_unfullscreen (GTK_WINDOW (self));
+ gtk_window_set_keep_above (GTK_WINDOW (self),
+ self->priv->video_display_settings->get_bool ("stay-on-top"));
+ gm_window_restore (GM_WINDOW (self));
+ gm_video_widget_set_fullscreen (GM_VIDEO_WIDGET (self->priv->video_widget), false);
}
}
static void
-ekiga_call_window_channels_menu_update_sensitivity (EkigaCallWindow *cw,
+ekiga_call_window_channels_menu_update_sensitivity (EkigaCallWindow *self,
bool is_video,
bool is_transmitting)
{
- g_return_if_fail (EKIGA_IS_CALL_WINDOW (cw));
+ g_return_if_fail (EKIGA_IS_CALL_WINDOW (self));
+ /* FIXME
if (is_transmitting) {
if (!is_video)
- gtk_menu_set_sensitive (cw->priv->main_menu, "suspend_audio", true);
+ gtk_menu_set_sensitive (self->priv->main_menu, "suspend_audio", true);
else
- gtk_menu_set_sensitive (cw->priv->main_menu, "suspend_video", true);
+ gtk_menu_set_sensitive (self->priv->main_menu, "suspend_video", true);
}
else {
if (!is_video)
- gtk_menu_set_sensitive (cw->priv->main_menu, "suspend_audio", false);
+ gtk_menu_set_sensitive (self->priv->main_menu, "suspend_audio", false);
else
- gtk_menu_set_sensitive (cw->priv->main_menu, "suspend_video", false);
- }
-}
-
-static gboolean
-ekiga_call_window_transfer_dialog_run (EkigaCallWindow *cw,
- GtkWidget *parent_window,
- const char *u)
-{
- gint answer = 0;
-
- const char *forward_url = NULL;
-
- g_return_val_if_fail (EKIGA_IS_CALL_WINDOW (cw), false);
- g_return_val_if_fail (GTK_IS_WINDOW (parent_window), false);
-
- cw->priv->transfer_call_popup =
- gm_entry_dialog_new (_("Transfer call to:"),
- _("Transfer"));
-
- gtk_window_set_transient_for (GTK_WINDOW (cw->priv->transfer_call_popup),
- GTK_WINDOW (parent_window));
-
- gtk_dialog_set_default_response (GTK_DIALOG (cw->priv->transfer_call_popup),
- GTK_RESPONSE_ACCEPT);
-
- if (u && !g_strcmp0 (u, ""))
- gm_entry_dialog_set_text (GM_ENTRY_DIALOG (cw->priv->transfer_call_popup), u);
- else
- gm_entry_dialog_set_text (GM_ENTRY_DIALOG (cw->priv->transfer_call_popup), "sip:");
-
- gtk_widget_show_all (cw->priv->transfer_call_popup);
-
- answer = gtk_dialog_run (GTK_DIALOG (cw->priv->transfer_call_popup));
- switch (answer) {
-
- case GTK_RESPONSE_ACCEPT:
-
- forward_url = gm_entry_dialog_get_text (GM_ENTRY_DIALOG (cw->priv->transfer_call_popup));
- if (g_strcmp0 (forward_url, "") && cw->priv->current_call)
- cw->priv->current_call->transfer (forward_url);
- break;
-
- default:
- break;
+ gtk_menu_set_sensitive (self->priv->main_menu, "suspend_video", false);
}
-
- gtk_widget_destroy (cw->priv->transfer_call_popup);
- cw->priv->transfer_call_popup = NULL;
-
- return (answer == GTK_RESPONSE_ACCEPT);
+ */
}
static void
-ekiga_call_window_connect_engine_signals (EkigaCallWindow *cw)
+ekiga_call_window_connect_engine_signals (EkigaCallWindow *self)
{
boost::signals2::connection conn;
- g_return_if_fail (EKIGA_IS_CALL_WINDOW (cw));
+ g_return_if_fail (EKIGA_IS_CALL_WINDOW (self));
/* New Display Engine signals */
+ conn = self->priv->videooutput_core->device_opened.connect (boost::bind (&on_videooutput_device_opened_cb,
_1, _2, _3, _4, _5, _6, (gpointer) self));
+ self->priv->connections.add (conn);
- conn = cw->priv->videooutput_core->device_opened.connect (boost::bind (&on_videooutput_device_opened_cb,
_1, _2, _3, _4, _5, _6, (gpointer) cw));
- cw->priv->connections.add (conn);
-
- conn = cw->priv->videooutput_core->device_closed.connect (boost::bind (&on_videooutput_device_closed_cb,
_1, (gpointer) cw));
- cw->priv->connections.add (conn);
+ conn = self->priv->videooutput_core->device_closed.connect (boost::bind (&on_videooutput_device_closed_cb,
_1, (gpointer) self));
+ self->priv->connections.add (conn);
- conn = cw->priv->videooutput_core->device_error.connect (boost::bind (&on_videooutput_device_error_cb, _1,
(gpointer) cw));
- cw->priv->connections.add (conn);
+ conn = self->priv->videooutput_core->device_error.connect (boost::bind (&on_videooutput_device_error_cb,
_1, (gpointer) self));
+ self->priv->connections.add (conn);
- conn = cw->priv->videooutput_core->size_changed.connect (boost::bind (&on_size_changed_cb, _1, _2, _3, _4,
(gpointer) cw));
- cw->priv->connections.add (conn);
+ conn = self->priv->videooutput_core->size_changed.connect (boost::bind (&on_size_changed_cb, _1, _2, _3,
_4, (gpointer) self));
+ self->priv->connections.add (conn);
/* New VideoInput Engine signals */
- conn = cw->priv->videoinput_core->device_opened.connect (boost::bind (&on_videoinput_device_opened_cb, _1,
_2, _3, (gpointer) cw));
- cw->priv->connections.add (conn);
+ conn = self->priv->videoinput_core->device_opened.connect (boost::bind (&on_videoinput_device_opened_cb,
_1, _2, _3, (gpointer) self));
+ self->priv->connections.add (conn);
- conn = cw->priv->videoinput_core->device_closed.connect (boost::bind (&on_videoinput_device_closed_cb, _1,
_2, (gpointer) cw));
- cw->priv->connections.add (conn);
+ conn = self->priv->videoinput_core->device_closed.connect (boost::bind (&on_videoinput_device_closed_cb,
_1, _2, (gpointer) self));
+ self->priv->connections.add (conn);
- conn = cw->priv->videoinput_core->device_error.connect (boost::bind (&on_videoinput_device_error_cb, _1,
_2, _3, (gpointer) cw));
- cw->priv->connections.add (conn);
+ conn = self->priv->videoinput_core->device_error.connect (boost::bind (&on_videoinput_device_error_cb, _1,
_2, _3, (gpointer) self));
+ self->priv->connections.add (conn);
/* New AudioInput Engine signals */
+ conn = self->priv->audioinput_core->device_opened.connect (boost::bind (&on_audioinput_device_opened_cb,
_1, _2, _3, (gpointer) self));
+ self->priv->connections.add (conn);
- conn = cw->priv->audioinput_core->device_opened.connect (boost::bind (&on_audioinput_device_opened_cb, _1,
_2, _3, (gpointer) cw));
- cw->priv->connections.add (conn);
-
- conn = cw->priv->audioinput_core->device_closed.connect (boost::bind (&on_audioinput_device_closed_cb, _1,
_2, (gpointer) cw));
- cw->priv->connections.add (conn);
+ conn = self->priv->audioinput_core->device_closed.connect (boost::bind (&on_audioinput_device_closed_cb,
_1, _2, (gpointer) self));
+ self->priv->connections.add (conn);
- conn = cw->priv->audioinput_core->device_error.connect (boost::bind (&on_audioinput_device_error_cb, _1,
_2, _3, (gpointer) cw));
- cw->priv->connections.add (conn);
+ conn = self->priv->audioinput_core->device_error.connect (boost::bind (&on_audioinput_device_error_cb, _1,
_2, _3, (gpointer) self));
+ self->priv->connections.add (conn);
/* New AudioOutput Engine signals */
+ conn = self->priv->audiooutput_core->device_opened.connect (boost::bind (&on_audiooutput_device_opened_cb,
_1, _2, _3, _4, (gpointer) self));
+ self->priv->connections.add (conn);
- conn = cw->priv->audiooutput_core->device_opened.connect (boost::bind (&on_audiooutput_device_opened_cb,
_1, _2, _3, _4, (gpointer) cw));
- cw->priv->connections.add (conn);
+ conn = self->priv->audiooutput_core->device_closed.connect (boost::bind (&on_audiooutput_device_closed_cb,
_1, _2, _3, (gpointer) self));
+ self->priv->connections.add (conn);
- conn = cw->priv->audiooutput_core->device_closed.connect (boost::bind (&on_audiooutput_device_closed_cb,
_1, _2, _3, (gpointer) cw));
- cw->priv->connections.add (conn);
-
- conn = cw->priv->audiooutput_core->device_error.connect (boost::bind (&on_audiooutput_device_error_cb, _1,
_2, _3, _4, (gpointer) cw));
- cw->priv->connections.add (conn);
+ conn = self->priv->audiooutput_core->device_error.connect (boost::bind (&on_audiooutput_device_error_cb,
_1, _2, _3, _4, (gpointer) self));
+ self->priv->connections.add (conn);
/* New Call Engine signals */
+ conn = self->priv->call_core->setup_call.connect (boost::bind (&on_setup_call_cb, _1, _2, (gpointer)
self));
+ self->priv->connections.add (conn);
- conn = cw->priv->call_core->setup_call.connect (boost::bind (&on_setup_call_cb, _1, _2, (gpointer) cw));
- cw->priv->connections.add (conn);
-
- conn = cw->priv->call_core->ringing_call.connect (boost::bind (&on_ringing_call_cb, _1, _2, (gpointer)
cw));
- cw->priv->connections.add (conn);
+ conn = self->priv->call_core->ringing_call.connect (boost::bind (&on_ringing_call_cb, _1, _2, (gpointer)
self));
+ self->priv->connections.add (conn);
- conn = cw->priv->call_core->established_call.connect (boost::bind (&on_established_call_cb, _1, _2,
(gpointer) cw));
- cw->priv->connections.add (conn);
+ conn = self->priv->call_core->established_call.connect (boost::bind (&on_established_call_cb, _1, _2,
(gpointer) self));
+ self->priv->connections.add (conn);
- conn = cw->priv->call_core->cleared_call.connect (boost::bind (&on_cleared_call_cb, _1, _2, _3, (gpointer)
cw));
- cw->priv->connections.add (conn);
+ conn = self->priv->call_core->cleared_call.connect (boost::bind (&on_cleared_call_cb, _1, _2, _3,
(gpointer) self));
+ self->priv->connections.add (conn);
- conn = cw->priv->call_core->missed_call.connect (boost::bind (&on_missed_call_cb, _1, _2, (gpointer) cw));
- cw->priv->connections.add (conn);
+ conn = self->priv->call_core->missed_call.connect (boost::bind (&on_missed_call_cb, _1, _2, (gpointer)
self));
+ self->priv->connections.add (conn);
- conn = cw->priv->call_core->held_call.connect (boost::bind (&on_held_call_cb, _1, _2, (gpointer) cw));
- cw->priv->connections.add (conn);
+ conn = self->priv->call_core->held_call.connect (boost::bind (&on_held_call_cb, _1, _2, (gpointer) self));
+ self->priv->connections.add (conn);
- conn = cw->priv->call_core->retrieved_call.connect (boost::bind (&on_retrieved_call_cb, _1, _2, (gpointer)
cw));
- cw->priv->connections.add (conn);
+ conn = self->priv->call_core->retrieved_call.connect (boost::bind (&on_retrieved_call_cb, _1, _2,
(gpointer) self));
+ self->priv->connections.add (conn);
- conn = cw->priv->call_core->stream_opened.connect (boost::bind (&on_stream_opened_cb, _1, _2, _3, _4, _5,
(gpointer) cw));
- cw->priv->connections.add (conn);
+ conn = self->priv->call_core->stream_opened.connect (boost::bind (&on_stream_opened_cb, _1, _2, _3, _4,
_5, (gpointer) self));
+ self->priv->connections.add (conn);
- conn = cw->priv->call_core->stream_closed.connect (boost::bind (&on_stream_closed_cb, _1, _2, _3, _4, _5,
(gpointer) cw));
- cw->priv->connections.add (conn);
+ conn = self->priv->call_core->stream_closed.connect (boost::bind (&on_stream_closed_cb, _1, _2, _3, _4,
_5, (gpointer) self));
+ self->priv->connections.add (conn);
- conn = cw->priv->call_core->stream_paused.connect (boost::bind (&on_stream_paused_cb, _1, _2, _3, _4,
(gpointer) cw));
- cw->priv->connections.add (conn);
+ conn = self->priv->call_core->stream_paused.connect (boost::bind (&on_stream_paused_cb, _1, _2, _3, _4,
(gpointer) self));
+ self->priv->connections.add (conn);
- conn = cw->priv->call_core->stream_resumed.connect (boost::bind (&on_stream_resumed_cb, _1, _2, _3, _4,
(gpointer) cw));
- cw->priv->connections.add (conn);
+ conn = self->priv->call_core->stream_resumed.connect (boost::bind (&on_stream_resumed_cb, _1, _2, _3, _4,
(gpointer) self));
+ self->priv->connections.add (conn);
}
static void
-ekiga_call_window_init_gui (EkigaCallWindow *cw)
+ekiga_call_window_init_gui (EkigaCallWindow *self)
{
GtkWidget *event_box = NULL;
GtkWidget *vbox = NULL;
GtkWidget *hbox = NULL;
GtkWidget *frame = NULL;
-
- GtkToolItem *item = NULL;
+ GtkWidget *button = NULL;
GtkWidget *image = NULL;
GtkWidget *alignment = NULL;
@@ -2083,11 +1916,11 @@ ekiga_call_window_init_gui (EkigaCallWindow *cw)
GtkShadowType shadow_type;
/* The Audio & Video Settings windows */
- cw->priv->audio_settings_window = gm_cw_audio_settings_window_new (cw);
- cw->priv->video_settings_window = gm_cw_video_settings_window_new (cw);
+ self->priv->audio_settings_window = gm_call_window_audio_settings_window_new (self);
+ self->priv->video_settings_window = gm_call_window_video_settings_window_new (self);
/* The extended video stream window */
- cw->priv->ext_video_win = NULL;
+ self->priv->ext_video_win = NULL;
/* The main table */
event_box = gtk_event_box_new ();
@@ -2098,227 +1931,174 @@ ekiga_call_window_init_gui (EkigaCallWindow *cw)
gtk_container_set_border_width (GTK_CONTAINER (frame), 0);
gtk_container_add (GTK_CONTAINER (event_box), vbox);
gtk_container_add (GTK_CONTAINER (frame), event_box);
- gtk_container_add (GTK_CONTAINER (cw), frame);
+ gtk_container_add (GTK_CONTAINER (self), frame);
gtk_widget_show_all (frame);
/* Menu */
- ekiga_call_window_init_menu (cw);
- gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (cw->priv->main_menu), false, false, 0);
- gtk_widget_show_all (cw->priv->main_menu);
-
- /* The widgets toolbar */
- cw->priv->call_panel_toolbar = gtk_toolbar_new ();
- gtk_toolbar_set_show_arrow (GTK_TOOLBAR (cw->priv->call_panel_toolbar), true);
- gtk_toolbar_set_style (GTK_TOOLBAR (cw->priv->call_panel_toolbar), GTK_TOOLBAR_ICONS);
- gtk_toolbar_set_show_arrow (GTK_TOOLBAR (cw->priv->call_panel_toolbar), false);
+ ekiga_call_window_init_menu (self);
- alignment = gtk_alignment_new (0.0, 0.0, 1.0, 0.0);
- gtk_container_add (GTK_CONTAINER (alignment), cw->priv->call_panel_toolbar);
- gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (alignment), false, false, 0);
- gtk_widget_show_all (alignment);
+ /* The widgets header bar */
+ self->priv->call_panel_toolbar = gtk_header_bar_new ();
+ gtk_header_bar_set_show_close_button (GTK_HEADER_BAR (self->priv->call_panel_toolbar), TRUE);
+ gtk_window_set_titlebar (GTK_WINDOW (self), self->priv->call_panel_toolbar);
+ gtk_header_bar_set_title (GTK_HEADER_BAR (self->priv->call_panel_toolbar),
+ _("Call Window"));
/* The frame that contains the video */
- cw->priv->event_box = gtk_event_box_new ();
- ekiga_call_window_init_clutter (cw);
- gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (cw->priv->event_box), true, true, 0);
- gtk_widget_show_all (cw->priv->event_box);
+ self->priv->event_box = gtk_event_box_new ();
+ ekiga_call_window_init_clutter (self);
+ gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (self->priv->event_box), true, true, 0);
+ gtk_widget_show_all (self->priv->event_box);
/* The frame that contains information about the call */
- cw->priv->call_frame = gtk_frame_new (NULL);
- gtk_frame_set_shadow_type (GTK_FRAME (cw->priv->call_frame), GTK_SHADOW_NONE);
+ self->priv->call_frame = gtk_frame_new (NULL);
+ gtk_frame_set_shadow_type (GTK_FRAME (self->priv->call_frame), GTK_SHADOW_NONE);
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
- cw->priv->camera_image = gtk_image_new_from_icon_name ("camera-web", GTK_ICON_SIZE_LARGE_TOOLBAR);
- gtk_box_pack_start (GTK_BOX (hbox), cw->priv->camera_image, false, false, 12);
+ self->priv->camera_image = gtk_image_new_from_icon_name ("camera-web", GTK_ICON_SIZE_LARGE_TOOLBAR);
+ gtk_box_pack_start (GTK_BOX (hbox), self->priv->camera_image, false, false, 12);
- cw->priv->spinner = gtk_spinner_new ();
- gtk_widget_set_size_request (GTK_WIDGET (cw->priv->spinner), 24, 24);
- gtk_box_pack_start (GTK_BOX (hbox), cw->priv->spinner, false, false, 12);
+ self->priv->spinner = gtk_spinner_new ();
+ gtk_widget_set_size_request (GTK_WIDGET (self->priv->spinner), 24, 24);
+ gtk_box_pack_start (GTK_BOX (hbox), self->priv->spinner, false, false, 12);
- cw->priv->info_text = gtk_text_view_new ();
- gtk_text_view_set_editable (GTK_TEXT_VIEW (cw->priv->info_text), false);
- gtk_widget_set_sensitive (GTK_WIDGET (cw->priv->info_text), false);
- gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (cw->priv->info_text),
+ self->priv->info_text = gtk_text_view_new ();
+ gtk_text_view_set_editable (GTK_TEXT_VIEW (self->priv->info_text), false);
+ gtk_widget_set_sensitive (GTK_WIDGET (self->priv->info_text), false);
+ gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (self->priv->info_text),
GTK_WRAP_NONE);
- gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (cw->priv->info_text), false);
+ gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (self->priv->info_text), false);
alignment = gtk_alignment_new (0.0, 0.0, 1.0, 0.0);
- gtk_container_add (GTK_CONTAINER (alignment), cw->priv->info_text);
+ gtk_container_add (GTK_CONTAINER (alignment), self->priv->info_text);
gtk_box_pack_start (GTK_BOX (hbox), alignment, false, false, 2);
- gtk_container_add (GTK_CONTAINER (cw->priv->call_frame), hbox);
- gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (cw->priv->call_frame), true, true, 2);
- gtk_widget_show_all (cw->priv->call_frame);
- gtk_widget_hide (cw->priv->spinner);
-
- /* Pick up */
- item = gtk_tool_item_new ();
- cw->priv->pick_up_button = gtk_button_new ();
- image = gtk_image_new_from_icon_name ("phone-pick-up", GTK_ICON_SIZE_LARGE_TOOLBAR);
- gtk_container_add (GTK_CONTAINER (cw->priv->pick_up_button), image);
- gtk_container_add (GTK_CONTAINER (item), cw->priv->pick_up_button);
- gtk_button_set_relief (GTK_BUTTON (cw->priv->pick_up_button), GTK_RELIEF_NONE);
- gtk_widget_show (cw->priv->pick_up_button);
- gtk_toolbar_insert (GTK_TOOLBAR (cw->priv->call_panel_toolbar),
- GTK_TOOL_ITEM (item), -1);
- gtk_widget_set_sensitive (GTK_WIDGET (cw->priv->pick_up_button), false);
- gtk_tool_item_set_tooltip_text (GTK_TOOL_ITEM (item),
- _("Pick up the current call"));
- g_signal_connect (cw->priv->pick_up_button, "clicked",
- G_CALLBACK (pick_up_call_cb), cw);
+ gtk_container_add (GTK_CONTAINER (self->priv->call_frame), hbox);
+ gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (self->priv->call_frame), true, true, 2);
+ gtk_widget_show_all (self->priv->call_frame);
+ gtk_widget_hide (self->priv->spinner);
+
+ /* FIXME:
+ * All those actions should be call specific.
+ * We should generate the header bar actions like we generate a menu.
+ * Probably introducing a GActorHeaderBar would be nice.
+ * However, it is unneeded right now as we only support one call at a time.
+ */
/* Hang up */
- item = gtk_tool_item_new ();
- cw->priv->hang_up_button = gtk_button_new ();
- image = gtk_image_new_from_icon_name ("phone-hang-up", GTK_ICON_SIZE_LARGE_TOOLBAR);
- gtk_container_add (GTK_CONTAINER (cw->priv->hang_up_button), image);
- gtk_container_add (GTK_CONTAINER (item), cw->priv->hang_up_button);
- gtk_button_set_relief (GTK_BUTTON (cw->priv->hang_up_button), GTK_RELIEF_NONE);
- gtk_widget_show (cw->priv->hang_up_button);
- gtk_toolbar_insert (GTK_TOOLBAR (cw->priv->call_panel_toolbar),
- GTK_TOOL_ITEM (item), -1);
- gtk_widget_set_sensitive (GTK_WIDGET (cw->priv->hang_up_button), false);
- gtk_tool_item_set_tooltip_text (GTK_TOOL_ITEM (item),
- _("Hang up the current call"));
- g_signal_connect (cw->priv->hang_up_button, "clicked",
- G_CALLBACK (hang_up_call_cb), cw);
-
- /* Separator */
- item = gtk_separator_tool_item_new ();
- gtk_toolbar_insert (GTK_TOOLBAR (cw->priv->call_panel_toolbar),
- GTK_TOOL_ITEM (item), -1);
-
- /* Audio Volume */
- std::vector <Ekiga::AudioOutputDevice> devices;
- cw->priv->audiooutput_core->get_devices (devices);
- if (!(devices.size () == 1 && devices[0].source == "Pulse")) {
-
- item = gtk_tool_item_new ();
- cw->priv->audio_settings_button = gtk_button_new ();
- gtk_button_set_relief (GTK_BUTTON (cw->priv->audio_settings_button), GTK_RELIEF_NONE);
- image = gtk_image_new_from_icon_name ("audio-volume", GTK_ICON_SIZE_MENU);
- gtk_container_add (GTK_CONTAINER (cw->priv->audio_settings_button), image);
- gtk_container_add (GTK_CONTAINER (item), cw->priv->audio_settings_button);
- gtk_tool_item_set_expand (GTK_TOOL_ITEM (item), false);
-
- gtk_widget_show (cw->priv->audio_settings_button);
- gtk_widget_set_sensitive (cw->priv->audio_settings_button, false);
- gtk_toolbar_insert (GTK_TOOLBAR (cw->priv->call_panel_toolbar),
- GTK_TOOL_ITEM (item), -1);
- gtk_tool_item_set_tooltip_text (GTK_TOOL_ITEM (item),
- _("Change the volume of your soundcard"));
- g_signal_connect_swapped (cw->priv->audio_settings_button, "clicked",
- G_CALLBACK (gtk_widget_show),
- (gpointer) cw->priv->audio_settings_window);
- }
+ button = gtk_button_new ();
+ image = gtk_image_new_from_icon_name ("call-end-symbolic", GTK_ICON_SIZE_MENU);
+ gtk_button_set_image (GTK_BUTTON (button), image);
+ gtk_actionable_set_detailed_action_name (GTK_ACTIONABLE (button), "win.hangup");
+ gtk_header_bar_pack_start (GTK_HEADER_BAR (self->priv->call_panel_toolbar), button);
+ gtk_widget_set_tooltip_text (GTK_WIDGET (button),
+ _("Hang up the current call"));
+
+ /* Call Hold */
+ button = gtk_toggle_button_new ();
+ image = gtk_image_new_from_icon_name ("media-playback-pause-symbolic", GTK_ICON_SIZE_MENU);
+ gtk_button_set_image (GTK_BUTTON (button), image);
+ gtk_actionable_set_detailed_action_name (GTK_ACTIONABLE (button), "win.hold");
+ gtk_header_bar_pack_start (GTK_HEADER_BAR (self->priv->call_panel_toolbar), button);
+ gtk_widget_set_tooltip_text (GTK_WIDGET (button),
+ _("Hold or retrieve the current call"));
+
+ /* Call Transfer */
+ button = gtk_button_new ();
+ image = gtk_image_new_from_icon_name ("send-to-symbolic", GTK_ICON_SIZE_MENU);
+ gtk_button_set_image (GTK_BUTTON (button), image);
+ gtk_actionable_set_detailed_action_name (GTK_ACTIONABLE (button), "win.transfer");
+ gtk_header_bar_pack_start (GTK_HEADER_BAR (self->priv->call_panel_toolbar), button);
+ gtk_widget_set_tooltip_text (GTK_WIDGET (button),
+ _("Transfer the current call"));
+
+
+ /* Menu button */
+ button = gtk_menu_button_new ();
+ g_object_set (G_OBJECT (button), "use-popover", true, NULL);
+ image = gtk_image_new_from_icon_name ("document-properties-symbolic", GTK_ICON_SIZE_MENU);
+ gtk_button_set_image (GTK_BUTTON (button), image);
+ gtk_menu_button_set_menu_model (GTK_MENU_BUTTON (button),
+ G_MENU_MODEL (gtk_builder_get_object (self->priv->builder, "menubar")));
+ gtk_header_bar_pack_end (GTK_HEADER_BAR (self->priv->call_panel_toolbar), button);
+
+ /* Full Screen */
+ button = gtk_button_new ();
+ image = gtk_image_new_from_icon_name ("view-fullscreen-symbolic", GTK_ICON_SIZE_MENU);
+ gtk_button_set_image (GTK_BUTTON (button), image);
+ gtk_actionable_set_detailed_action_name (GTK_ACTIONABLE (button), "win.enable-fullscreen");
+ gtk_header_bar_pack_end (GTK_HEADER_BAR (self->priv->call_panel_toolbar), button);
+ gtk_widget_set_tooltip_text (GTK_WIDGET (button),
+ _("Switch to fullscreen"));
+
+ gtk_widget_show_all (self->priv->call_panel_toolbar);
- /* Video Settings */
- item = gtk_tool_item_new ();
- cw->priv->video_settings_button = gtk_button_new ();
- gtk_button_set_relief (GTK_BUTTON (cw->priv->video_settings_button), GTK_RELIEF_NONE);
- image = gtk_image_new_from_icon_name ("video-settings", GTK_ICON_SIZE_MENU);
- gtk_container_add (GTK_CONTAINER (cw->priv->video_settings_button), image);
- gtk_container_add (GTK_CONTAINER (item), cw->priv->video_settings_button);
- gtk_tool_item_set_expand (GTK_TOOL_ITEM (item), false);
-
- gtk_widget_show (cw->priv->video_settings_button);
- gtk_widget_set_sensitive (cw->priv->video_settings_button, false);
- gtk_toolbar_insert (GTK_TOOLBAR (cw->priv->call_panel_toolbar),
- GTK_TOOL_ITEM (item), -1);
- gtk_tool_item_set_tooltip_text (GTK_TOOL_ITEM (item),
- _("Change the color settings of your video device"));
-
- g_signal_connect_swapped (cw->priv->video_settings_button, "clicked",
- G_CALLBACK (gtk_widget_show),
- (gpointer) cw->priv->video_settings_window);
-
- /* Call Pause */
- item = gtk_tool_item_new ();
- cw->priv->hold_button = gtk_toggle_button_new ();
- image = gtk_image_new_from_icon_name ("media-playback-pause", GTK_ICON_SIZE_MENU);
- gtk_button_set_relief (GTK_BUTTON (cw->priv->hold_button), GTK_RELIEF_NONE);
- gtk_container_add (GTK_CONTAINER (cw->priv->hold_button), image);
- gtk_container_add (GTK_CONTAINER (item), cw->priv->hold_button);
- gtk_tool_item_set_expand (GTK_TOOL_ITEM (item), false);
-
- gtk_widget_show (cw->priv->hold_button);
- gtk_toolbar_insert (GTK_TOOLBAR (cw->priv->call_panel_toolbar),
- GTK_TOOL_ITEM (item), -1);
- gtk_tool_item_set_tooltip_text (GTK_TOOL_ITEM (item),
- _("Hold the current call"));
- gtk_widget_set_sensitive (GTK_WIDGET (cw->priv->hold_button), false);
-
- g_signal_connect (cw->priv->hold_button, "clicked",
- G_CALLBACK (hold_current_call_cb), cw);
- gtk_widget_show_all (cw->priv->call_panel_toolbar);
/* The statusbar */
- cw->priv->statusbar = gm_statusbar_new ();
- gtk_widget_style_get (cw->priv->statusbar, "shadow-type", &shadow_type, NULL);
+ self->priv->statusbar = gm_statusbar_new ();
+ gtk_widget_style_get (self->priv->statusbar, "shadow-type", &shadow_type, NULL);
frame = gtk_frame_new (NULL);
gtk_frame_set_shadow_type (GTK_FRAME (frame), shadow_type);
- gtk_box_pack_start (GTK_BOX (cw->priv->statusbar), frame, false, false, 0);
- gtk_box_reorder_child (GTK_BOX (cw->priv->statusbar), frame, 0);
+ gtk_box_pack_start (GTK_BOX (self->priv->statusbar), frame, false, false, 0);
+ gtk_box_reorder_child (GTK_BOX (self->priv->statusbar), frame, 0);
- cw->priv->qualitymeter = gm_powermeter_new ();
- gtk_container_add (GTK_CONTAINER (frame), cw->priv->qualitymeter);
+ self->priv->qualitymeter = gm_powermeter_new ();
+ gtk_container_add (GTK_CONTAINER (frame), self->priv->qualitymeter);
- cw->priv->statusbar_ebox = gtk_event_box_new ();
- gtk_container_add (GTK_CONTAINER (cw->priv->statusbar_ebox), cw->priv->statusbar);
- gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (cw->priv->statusbar_ebox), false, false, 0);
- gtk_widget_show_all (cw->priv->statusbar_ebox);
+ self->priv->statusbar_ebox = gtk_event_box_new ();
+ gtk_container_add (GTK_CONTAINER (self->priv->statusbar_ebox), self->priv->statusbar);
+ gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (self->priv->statusbar_ebox), false, false, 0);
+ gtk_widget_show_all (self->priv->statusbar_ebox);
- gtk_window_set_resizable (GTK_WINDOW (cw), true);
+ gtk_window_set_resizable (GTK_WINDOW (self), true);
/* Init */
- ekiga_call_window_set_status (cw, _("Standby"));
- ekiga_call_window_set_bandwidth (cw, 0.0, 0.0, 0.0, 0.0);
+ ekiga_call_window_set_bandwidth (self, 0.0, 0.0, 0.0, 0.0);
- gtk_widget_hide (cw->priv->call_frame);
+ gtk_widget_hide (self->priv->call_frame);
}
static void
-ekiga_call_window_init (EkigaCallWindow *cw)
+ekiga_call_window_init (EkigaCallWindow *self)
{
- cw->priv = new EkigaCallWindowPrivate ();
+ self->priv = new EkigaCallWindowPrivate ();
- cw->priv->accel = gtk_accel_group_new ();
- gtk_window_add_accel_group (GTK_WINDOW (cw), cw->priv->accel);
- gtk_accel_group_connect (cw->priv->accel, GDK_KEY_Escape, (GdkModifierType) 0, GTK_ACCEL_LOCKED,
+ self->priv->accel = gtk_accel_group_new ();
+ gtk_window_add_accel_group (GTK_WINDOW (self), self->priv->accel);
+ gtk_accel_group_connect (self->priv->accel, GDK_KEY_Escape, (GdkModifierType) 0, GTK_ACCEL_LOCKED,
g_cclosure_new_swap (G_CALLBACK (ekiga_call_window_delete_event_cb),
- (gpointer) cw, NULL));
- gtk_accel_group_connect (cw->priv->accel, GDK_KEY_F11, (GdkModifierType) 0, GTK_ACCEL_LOCKED,
+ (gpointer) self, NULL));
+ gtk_accel_group_connect (self->priv->accel, GDK_KEY_F11, (GdkModifierType) 0, GTK_ACCEL_LOCKED,
g_cclosure_new_swap (G_CALLBACK (ekiga_call_window_fullscreen_event_cb),
- (gpointer) cw, NULL));
- g_object_unref (cw->priv->accel);
-
- cw->priv->transfer_call_popup = NULL;
- cw->priv->current_call = boost::shared_ptr<Ekiga::Call>();
- cw->priv->timeout_id = -1;
- cw->priv->levelmeter_timeout_id = -1;
- cw->priv->calling_state = Standby;
- cw->priv->fullscreen = false;
+ (gpointer) self, NULL));
+ g_object_unref (self->priv->accel);
+
+ self->priv->current_call = boost::shared_ptr<Ekiga::Call>();
+ self->priv->timeout_id = -1;
+ self->priv->levelmeter_timeout_id = -1;
+ self->priv->calling_state = Standby;
+ self->priv->fullscreen = false;
#ifndef WIN32
- cw->priv->gc = NULL;
+ self->priv->gc = NULL;
#endif
- cw->priv->video_display_settings =
+ self->priv->video_display_settings =
boost::shared_ptr<Ekiga::Settings> (new Ekiga::Settings (VIDEO_DISPLAY_SCHEMA));
- g_signal_connect (cw, "delete_event",
+ g_signal_connect (self, "delete_event",
G_CALLBACK (ekiga_call_window_delete_event_cb), NULL);
}
static void
ekiga_call_window_finalize (GObject *gobject)
{
- EkigaCallWindow *cw = EKIGA_CALL_WINDOW (gobject);
+ EkigaCallWindow *self = EKIGA_CALL_WINDOW (gobject);
- gtk_widget_destroy (cw->priv->audio_settings_window);
- gtk_widget_destroy (cw->priv->video_settings_window);
- if (cw->priv->ext_video_win)
- gtk_widget_destroy (cw->priv->ext_video_win);
+ gtk_widget_destroy (self->priv->audio_settings_window);
+ gtk_widget_destroy (self->priv->video_settings_window);
+ if (self->priv->ext_video_win)
+ gtk_widget_destroy (self->priv->ext_video_win);
- delete cw->priv;
+ delete self->priv;
G_OBJECT_CLASS (ekiga_call_window_parent_class)->finalize (gobject);
}
@@ -2326,11 +2106,11 @@ ekiga_call_window_finalize (GObject *gobject)
static void
ekiga_call_window_show (GtkWidget *widget)
{
- EkigaCallWindow *cw = EKIGA_CALL_WINDOW (widget);
+ EkigaCallWindow *self = EKIGA_CALL_WINDOW (widget);
GTK_WIDGET_CLASS (ekiga_call_window_parent_class)->show (widget);
- gtk_widget_queue_draw (GTK_WIDGET (cw));
+ gtk_widget_queue_draw (GTK_WIDGET (self));
}
static gboolean
@@ -2358,40 +2138,38 @@ ekiga_call_window_class_init (EkigaCallWindowClass *klass)
GtkWidget *
call_window_new (GmApplication *app)
{
- EkigaCallWindow *cw;
+ EkigaCallWindow *self;
g_return_val_if_fail (GM_IS_APPLICATION (app), NULL);
- cw = EKIGA_CALL_WINDOW (g_object_new (EKIGA_TYPE_CALL_WINDOW,
+ self = EKIGA_CALL_WINDOW (g_object_new (EKIGA_TYPE_CALL_WINDOW,
"application", GTK_APPLICATION (app),
"key", USER_INTERFACE ".call-window",
"hide_on_delete", false,
"hide_on_esc", false, NULL));
Ekiga::ServiceCorePtr core = gm_application_get_core (app);
- cw->priv->libnotify = core->get ("libnotify");
- cw->priv->videoinput_core = core->get<Ekiga::VideoInputCore> ("videoinput-core");
- cw->priv->videooutput_core = core->get<Ekiga::VideoOutputCore> ("videooutput-core");
- cw->priv->audioinput_core = core->get<Ekiga::AudioInputCore> ("audioinput-core");
- cw->priv->audiooutput_core = core->get<Ekiga::AudioOutputCore> ("audiooutput-core");
- cw->priv->call_core = core->get<Ekiga::CallCore> ("call-core");
-
- ekiga_call_window_connect_engine_signals (cw);
+ self->priv->libnotify = core->get ("libnotify");
+ self->priv->videoinput_core = core->get<Ekiga::VideoInputCore> ("videoinput-core");
+ self->priv->videooutput_core = core->get<Ekiga::VideoOutputCore> ("videooutput-core");
+ self->priv->audioinput_core = core->get<Ekiga::AudioInputCore> ("audioinput-core");
+ self->priv->audiooutput_core = core->get<Ekiga::AudioOutputCore> ("audiooutput-core");
+ self->priv->call_core = core->get<Ekiga::CallCore> ("call-core");
- ekiga_call_window_init_gui (cw);
+ ekiga_call_window_init_gui (self);
- g_settings_bind (cw->priv->video_display_settings->get_g_settings (),
+ g_settings_bind (self->priv->video_display_settings->get_g_settings (),
"stay-on-top",
- cw,
+ self,
"stay_on_top",
G_SETTINGS_BIND_DEFAULT);
- g_settings_bind (cw->priv->video_display_settings->get_g_settings (),
+ g_settings_bind (self->priv->video_display_settings->get_g_settings (),
"enable-pip",
- cw->priv->video_widget,
+ self->priv->video_widget,
"secondary_stream_display",
G_SETTINGS_BIND_DEFAULT);
- gtk_window_set_title (GTK_WINDOW (cw), _("Call Window"));
+ ekiga_call_window_connect_engine_signals (self);
- return GTK_WIDGET (cw);
+ return GTK_WIDGET (self);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]