[ekiga/ds-gtk-application] UI: Regenerate contact menu of the main window on the fly.
- From: Damien Sandras <dsandras src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [ekiga/ds-gtk-application] UI: Regenerate contact menu of the main window on the fly.
- Date: Sun, 23 Mar 2014 16:25:27 +0000 (UTC)
commit ec39c358be8944c75e5dfc10c1fafb20ade258c9
Author: Damien Sandras <dsandras beip be>
Date: Sun Mar 23 16:55:02 2014 +0100
UI: Regenerate contact menu of the main window on the fly.
lib/engine/gui/gtk-frontend/main_window.cpp | 42 +++++++++++++++++++++++---
1 files changed, 37 insertions(+), 5 deletions(-)
---
diff --git a/lib/engine/gui/gtk-frontend/main_window.cpp b/lib/engine/gui/gtk-frontend/main_window.cpp
index 63d35ac..71dd00d 100644
--- a/lib/engine/gui/gtk-frontend/main_window.cpp
+++ b/lib/engine/gui/gtk-frontend/main_window.cpp
@@ -119,8 +119,6 @@ struct _EkigaMainWindowPrivate
GtkWidget *main_notebook;
GtkBuilder *builder;
- boost::shared_ptr<Ekiga::ContactActorMenu> contact_menu;
-
/* Dialpad uri toolbar */
GtkWidget *uri_toolbar;
GtkWidget *entry;
@@ -154,6 +152,9 @@ struct _EkigaMainWindowPrivate
gulong roster_selection_connection_id;
Ekiga::scoped_connections connections;
+ /* Menu */
+ boost::shared_ptr<Ekiga::ContactActorMenu> contact_menu;
+
/* GSettings */
boost::shared_ptr<Ekiga::Settings> user_interface_settings;
boost::shared_ptr<Ekiga::Settings> sound_events_settings;
@@ -696,6 +697,35 @@ statusbar_clicked_cb (G_GNUC_UNUSED GtkWidget *widget,
static void
+menu_button_toggled_cb (GtkToggleButton *togglebutton,
+ gpointer data)
+{
+ GtkBuilder *builder = NULL;
+ GMenu *menu = NULL;
+
+ g_return_if_fail (EKIGA_IS_MAIN_WINDOW (data));
+ EkigaMainWindow *mw = EKIGA_MAIN_WINDOW (data);
+
+ if (!gtk_toggle_button_get_active (togglebutton))
+ return;
+
+ builder = gtk_builder_new ();
+ gtk_builder_add_from_string (builder,
+ Ekiga::ActorMenu::get_xml_menu ("popup",
+ mw->priv->contact_menu->as_xml ("brol"),
+ true).c_str (),
+ -1, NULL);
+
+ menu = G_MENU (gtk_builder_get_object (mw->priv->builder, "menubar"));
+ g_menu_remove (menu, 0);
+ g_menu_insert_section (menu, 0,
+ NULL,
+ G_MENU_MODEL (gtk_builder_get_object (builder, "brol")));
+ g_object_unref (builder);
+}
+
+
+static void
ekiga_main_window_append_call_url (EkigaMainWindow *mw,
const char *url)
{
@@ -890,6 +920,8 @@ ekiga_main_window_init_actions_toolbar (EkigaMainWindow *mw)
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 (mw->priv->builder, "menubar")));
+ g_signal_connect (GTK_TOGGLE_BUTTON (button), "toggled",
+ G_CALLBACK (menu_button_toggled_cb), mw);
gtk_header_bar_pack_end (GTK_HEADER_BAR (mw->priv->actions_toolbar), button);
gtk_widget_set_margin_right (button, 3);
}
@@ -1254,13 +1286,13 @@ gm_main_window_new (GmApplication *app)
mw->priv->history_source
= core->get<History::Source> ("call-history-store");
+ mw->priv->contact_menu =
+ Ekiga::ContactActorMenuPtr (new Ekiga::ContactActorMenu (*mw->priv->contact_core));
+
ekiga_main_window_connect_engine_signals (mw);
ekiga_main_window_init_gui (mw);
- mw->priv->contact_menu =
- Ekiga::ContactActorMenuPtr (Ekiga::ContactActorMenu::create (*mw->priv->contact_core));
-
return GTK_WIDGET(mw);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]