[ekiga] Call window: use auto window sizing.
- From: Damien Sandras <dsandras src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [ekiga] Call window: use auto window sizing.
- Date: Sun, 8 Jan 2012 17:40:31 +0000 (UTC)
commit 6b821348d052bbec52539ba4ed4cc692c2f04d16
Author: Damien Sandras <dsandras beip be>
Date: Sun Jan 8 18:31:14 2012 +0100
Call window: use auto window sizing.
src/gui/call_window.cpp | 117 +++++++++++++++++++++++++++++++----------------
1 files changed, 77 insertions(+), 40 deletions(-)
---
diff --git a/src/gui/call_window.cpp b/src/gui/call_window.cpp
index 24efb73..853a818 100644
--- a/src/gui/call_window.cpp
+++ b/src/gui/call_window.cpp
@@ -433,6 +433,14 @@ static void ekiga_call_window_toggle_fullscreen (Ekiga::VideoOutputFSToggle togg
static void ekiga_call_window_call_button_set_connected (EkigaCallWindow *cw,
gboolean state);
+static void ekiga_call_window_zooms_menu_update_sensitivity (EkigaCallWindow *cw,
+ unsigned int zoom);
+
+static void ekiga_call_window_channels_menu_update_sensitivity (EkigaCallWindow *cw,
+ bool is_video,
+ G_GNUC_UNUSED bool is_receiving,
+ bool is_transmitting);
+
static gboolean ekiga_call_window_transfer_dialog_run (EkigaCallWindow *cw,
GtkWidget *parent_window,
const char *u);
@@ -497,6 +505,7 @@ zoom_in_changed_cb (G_GNUC_UNUSED GtkWidget *widget,
g_return_if_fail (data != NULL);
Ekiga::DisplayInfo display_info;
+ ekiga_call_window_set_video_size (EKIGA_CALL_WINDOW (call_window), GM_QCIF_WIDTH, GM_QCIF_HEIGHT);
display_info.zoom = gm_conf_get_int ((char *) data);
@@ -504,7 +513,7 @@ zoom_in_changed_cb (G_GNUC_UNUSED GtkWidget *widget,
display_info.zoom = display_info.zoom * 2;
gm_conf_set_int ((char *) data, display_info.zoom);
- // FIXME ekiga_call_window_zooms_menu_update_sensitivity (EKIGA_call_window (call_window), display_info.zoom);
+ ekiga_call_window_zooms_menu_update_sensitivity (EKIGA_CALL_WINDOW (call_window), display_info.zoom);
}
static void
@@ -517,6 +526,7 @@ zoom_out_changed_cb (G_GNUC_UNUSED GtkWidget *widget,
g_return_if_fail (data != NULL);
Ekiga::DisplayInfo display_info;
+ ekiga_call_window_set_video_size (EKIGA_CALL_WINDOW (call_window), GM_QCIF_WIDTH, GM_QCIF_HEIGHT);
display_info.zoom = gm_conf_get_int ((char *) data);
@@ -524,7 +534,7 @@ zoom_out_changed_cb (G_GNUC_UNUSED GtkWidget *widget,
display_info.zoom = (unsigned int) (display_info.zoom / 2);
gm_conf_set_int ((char *) data, display_info.zoom);
-//FIXME ekiga_call_window_zooms_menu_update_sensitivity (EKIGA_call_window (call_window), display_info.zoom);
+ ekiga_call_window_zooms_menu_update_sensitivity (EKIGA_CALL_WINDOW (call_window), display_info.zoom);
}
static void
@@ -537,11 +547,12 @@ zoom_normal_changed_cb (G_GNUC_UNUSED GtkWidget *widget,
g_return_if_fail (data != NULL);
Ekiga::DisplayInfo display_info;
+ ekiga_call_window_set_video_size (EKIGA_CALL_WINDOW (call_window), GM_QCIF_WIDTH, GM_QCIF_HEIGHT);
display_info.zoom = 100;
gm_conf_set_int ((char *) data, display_info.zoom);
-//FIXME ekiga_call_window_zooms_menu_update_sensitivity (EKIGA_call_window (call_window), display_info.zoom);
+ ekiga_call_window_zooms_menu_update_sensitivity (EKIGA_CALL_WINDOW (call_window), display_info.zoom);
}
static void
@@ -636,7 +647,7 @@ place_call_cb (GtkWidget * /*widget*/,
if (uri.substr (++pos).empty ())
return;
-//FIXME ekiga_main_window_update_calling_state (cw, Calling);
+ ekiga_call_window_update_calling_state (cw, Calling);
boost::shared_ptr<Ekiga::CallCore> call_core = cw->priv->core->get<Ekiga::CallCore> ("call-core");
// Remove appended spaces
@@ -652,7 +663,7 @@ place_call_cb (GtkWidget * /*widget*/,
} else {
//FIXME ekiga_main_window_flash_message (cw, _("Could not connect to remote host"));
- //FIXME ekiga_main_window_update_calling_state (cw, Standby);
+ ekiga_call_window_update_calling_state (cw, Standby);
}
}
else if (cw->priv->calling_state == Called && cw->priv->current_call)
@@ -731,10 +742,6 @@ transfer_current_call_cb (G_GNUC_UNUSED GtkWidget *widget,
GtkWidget *cw = NULL;
g_return_if_fail (data != NULL);
-
- //FIXME
-// cw = GnomeMeeting::Process ()->GetCallWindow ();
-
ekiga_call_window_transfer_dialog_run (EKIGA_CALL_WINDOW (cw), GTK_WIDGET (data), NULL);
}
@@ -839,9 +846,7 @@ on_videooutput_device_opened_cb (Ekiga::VideoOutputManager & /* manager */,
if (!both_streams && mode == Ekiga::VO_MODE_LOCAL)
gm_conf_set_int (VIDEO_DISPLAY_KEY "video_view", vv);
- gtk_menu_set_sensitive (cw->priv->main_menu, "zoom_in", zoom != 200);
- gtk_menu_set_sensitive (cw->priv->main_menu, "zoom_out", zoom != 50);
- gtk_menu_set_sensitive (cw->priv->main_menu, "normal_size", zoom != 100);
+ ekiga_call_window_zooms_menu_update_sensitivity (cw, zoom);
}
static void
@@ -959,8 +964,8 @@ on_videoinput_device_closed_cb (Ekiga::VideoInputManager & /* manager */,
gpointer self)
{
EkigaCallWindow *cw = EKIGA_CALL_WINDOW (self);
-// FIXME
-// ekiga_call_window_update_sensitivity (cw, TRUE, FALSE, FALSE);
+
+ ekiga_call_window_channels_menu_update_sensitivity (cw, TRUE, FALSE, FALSE);
ekiga_call_window_update_logo (cw);
gtk_widget_set_sensitive (cw->priv->video_settings_button, FALSE);
@@ -1279,13 +1284,13 @@ ekiga_call_window_update_calling_state (EkigaCallWindow *cw,
// ekiga_call_window_set_call_hold (cw, FALSE);
/* Update the sensitivity, all channels are closed */
- // ekiga_call_window_update_sensitivity (cw, TRUE, FALSE, FALSE);
- // ekiga_call_window_update_sensitivity (cw, FALSE, FALSE, FALSE);
+ ekiga_call_window_channels_menu_update_sensitivity (cw, TRUE, FALSE, FALSE);
+ ekiga_call_window_channels_menu_update_sensitivity (cw, FALSE, FALSE, FALSE);
/* Update the menus and toolbar items */
- //gtk_menu_set_sensitive (cw->priv->main_menu, "connect", TRUE);
- //gtk_menu_set_sensitive (cw->priv->main_menu, "disconnect", FALSE);
- //gtk_menu_section_set_sensitive (cw->priv->main_menu, "hold_call", FALSE);
+ gtk_menu_set_sensitive (cw->priv->main_menu, "connect", TRUE);
+ 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->hold_button), FALSE);
gtk_widget_set_sensitive (GTK_WIDGET (cw->priv->preview_button), TRUE);
@@ -1302,8 +1307,8 @@ ekiga_call_window_update_calling_state (EkigaCallWindow *cw,
case Calling:
/* 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_set_sensitive (cw->priv->main_menu, "connect", FALSE);
+ gtk_menu_set_sensitive (cw->priv->main_menu, "disconnect", TRUE);
gtk_widget_set_sensitive (GTK_WIDGET (cw->priv->preview_button), FALSE);
/* Update the connect button */
@@ -1314,9 +1319,9 @@ ekiga_call_window_update_calling_state (EkigaCallWindow *cw,
case Connected:
/* 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_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->hold_button), TRUE);
gtk_widget_set_sensitive (GTK_WIDGET (cw->priv->preview_button), FALSE);
@@ -1328,7 +1333,7 @@ ekiga_call_window_update_calling_state (EkigaCallWindow *cw,
case Called:
/* Update the menus and toolbar items */
- //gtk_menu_set_sensitive (cw->priv->main_menu, "disconnect", TRUE);
+ gtk_menu_set_sensitive (cw->priv->main_menu, "disconnect", TRUE);
/* Update the connect button */
ekiga_call_window_call_button_set_connected (cw, TRUE);
@@ -1963,17 +1968,6 @@ ekiga_call_window_update_logo (EkigaCallWindow *cw)
}
static void
-ekiga_call_window_call_button_set_connected (EkigaCallWindow *cw,
- gboolean state)
-{
- GtkWidget* image;
-
- cw->priv->ekiga_call_window_call_button_connected = state;
- image = gtk_button_get_image (GTK_BUTTON (cw->priv->call_button));
- gtk_image_set_from_stock (GTK_IMAGE (image), state ? GM_STOCK_PHONE_HANG_UP_24 : GM_STOCK_PHONE_PICK_UP_24, GTK_ICON_SIZE_LARGE_TOOLBAR);
-}
-
-static void
ekiga_call_window_toggle_fullscreen (Ekiga::VideoOutputFSToggle toggle)
{
Ekiga::VideoOutputMode videooutput_mode;
@@ -2012,6 +2006,50 @@ ekiga_call_window_toggle_fullscreen (Ekiga::VideoOutputFSToggle toggle)
}
}
+static void
+ekiga_call_window_zooms_menu_update_sensitivity (EkigaCallWindow *cw,
+ unsigned int zoom)
+{
+ /* between 0.5 and 2.0 zoom */
+ /* like above, also update the popup menus of the separate video windows */
+ gtk_menu_set_sensitive (cw->priv->main_menu, "zoom_in", zoom != 200);
+ gtk_menu_set_sensitive (cw->priv->main_menu, "zoom_out", zoom != 50);
+ gtk_menu_set_sensitive (cw->priv->main_menu, "normal_size", zoom != 100);
+}
+
+static void
+ekiga_call_window_channels_menu_update_sensitivity (EkigaCallWindow *cw,
+ bool is_video,
+ G_GNUC_UNUSED bool is_receiving,
+ bool is_transmitting)
+{
+ g_return_if_fail (EKIGA_IS_CALL_WINDOW (cw));
+
+ if (is_transmitting) {
+ if (!is_video)
+ gtk_menu_set_sensitive (cw->priv->main_menu, "suspend_audio", TRUE);
+ else
+ gtk_menu_set_sensitive (cw->priv->main_menu, "suspend_video", TRUE);
+ }
+ else {
+ if (!is_video)
+ gtk_menu_set_sensitive (cw->priv->main_menu, "suspend_audio", FALSE);
+ else
+ gtk_menu_set_sensitive (cw->priv->main_menu, "suspend_video", FALSE);
+ }
+}
+
+static void
+ekiga_call_window_call_button_set_connected (EkigaCallWindow *cw,
+ gboolean state)
+{
+ GtkWidget* image;
+
+ cw->priv->ekiga_call_window_call_button_connected = state;
+ image = gtk_button_get_image (GTK_BUTTON (cw->priv->call_button));
+ gtk_image_set_from_stock (GTK_IMAGE (image), state ? GM_STOCK_PHONE_HANG_UP_24 : GM_STOCK_PHONE_PICK_UP_24, GTK_ICON_SIZE_LARGE_TOOLBAR);
+}
+
static gboolean
ekiga_call_window_transfer_dialog_run (EkigaCallWindow *cw,
GtkWidget *parent_window,
@@ -2184,8 +2222,8 @@ ekiga_call_window_init_menu (EkigaCallWindow *cw)
G_CALLBACK (show_window_cb), NULL, TRUE),
GTK_MENU_ENTRY("disconnect", _("_Hangup"), _("Hangup the current call"),
- GM_STOCK_PHONE_PICK_UP_16, 'o',
- G_CALLBACK (show_window_cb), NULL, TRUE),
+ GM_STOCK_PHONE_HANG_UP_16, 'd',
+ G_CALLBACK (show_window_cb), NULL, FALSE),
GTK_MENU_SEPARATOR,
@@ -2219,8 +2257,6 @@ ekiga_call_window_init_menu (EkigaCallWindow *cw)
G_CALLBACK (window_closed_from_menu_cb),
(gpointer) cw, TRUE),
- GTK_MENU_SEPARATOR,
-
GTK_MENU_NEW(_("_View")),
GTK_MENU_RADIO_ENTRY("local_video", _("_Local Video"),
@@ -2488,6 +2524,7 @@ ekiga_call_window_init_gui (EkigaCallWindow *cw)
gtk_widget_show_all (frame);
/* Logo */
+ gtk_window_set_resizable (GTK_WINDOW (cw), FALSE);
ekiga_call_window_update_logo (cw);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]