Skip to content
Snippets Groups Projects
Commit ac6cad2e authored by Emmanuel Milou's avatar Emmanuel Milou
Browse files

[#3681] Browse preferences section with an icon view

parent 9ea4ea48
Branches
Tags
No related merge requests found
...@@ -927,44 +927,6 @@ GtkWidget* alsa_box() ...@@ -927,44 +927,6 @@ GtkWidget* alsa_box()
return ret; return ret;
} }
GtkWidget* noise_box()
{
GtkWidget *ret;
GtkWidget *enableEchoCancel;
GtkWidget *enableNoiseReduction;
gboolean echocancelActive, noisesuppressActive;
gchar *state;
ret = gtk_hbox_new( TRUE , 1);
enableEchoCancel = gtk_check_button_new_with_mnemonic( _("_Echo Suppression"));
state = dbus_get_echo_cancel_state();
echocancelActive = FALSE;
if(strcmp(state, "enabled") == 0)
echocancelActive = TRUE;
else
echocancelActive = FALSE;
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(enableEchoCancel), echocancelActive);
g_signal_connect(G_OBJECT(enableEchoCancel), "clicked", active_echo_cancel, NULL);
gtk_box_pack_start( GTK_BOX(ret), enableEchoCancel, TRUE , TRUE , 1);
enableNoiseReduction = gtk_check_button_new_with_mnemonic( _("_Noise Reduction"));
state = dbus_get_noise_suppress_state();
noisesuppressActive = FALSE;
if(strcmp(state, "enabled") == 0)
noisesuppressActive = TRUE;
else
noisesuppressActive = FALSE;
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(enableNoiseReduction), noisesuppressActive);
gtk_box_pack_start( GTK_BOX(ret) , enableNoiseReduction , TRUE , TRUE , 1);
g_signal_connect(G_OBJECT(enableNoiseReduction), "clicked", active_noise_suppress, NULL);
return ret;
}
static void record_path_changed( GtkFileChooser *chooser , GtkLabel *label UNUSED) static void record_path_changed( GtkFileChooser *chooser , GtkLabel *label UNUSED)
{ {
DEBUG("record_path_changed"); DEBUG("record_path_changed");
...@@ -982,6 +944,10 @@ GtkWidget* create_audio_configuration() ...@@ -982,6 +944,10 @@ GtkWidget* create_audio_configuration()
// Sub boxes // Sub boxes
GtkWidget *box; GtkWidget *box;
GtkWidget *frame; GtkWidget *frame;
GtkWidget *enableEchoCancel;
GtkWidget *enableNoiseReduction;
gboolean echocancelActive, noisesuppressActive;
gchar *state;
ret = gtk_vbox_new(FALSE, 10); ret = gtk_vbox_new(FALSE, 10);
gtk_container_set_border_width(GTK_CONTAINER(ret), 10); gtk_container_set_border_width(GTK_CONTAINER(ret), 10);
...@@ -1068,14 +1034,31 @@ GtkWidget* create_audio_configuration() ...@@ -1068,14 +1034,31 @@ GtkWidget* create_audio_configuration()
gtk_file_chooser_add_filter( GTK_FILE_CHOOSER( fileChooser ) , filter); gtk_file_chooser_add_filter( GTK_FILE_CHOOSER( fileChooser ) , filter);
gtk_table_attach ( GTK_TABLE( table ), fileChooser, 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); gtk_table_attach ( GTK_TABLE( table ), fileChooser, 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
gnome_main_section_new (_("Voice enhancement settings"), &noise_conf);
gtk_box_pack_start(GTK_BOX(ret), noise_conf, FALSE, FALSE, 0);
gtk_widget_show( noise_conf );
// Box for the voice enhancement configuration // Box for the voice enhancement configuration
noisebox = noise_box(); gnome_main_section_new_with_table (_("Voice enhancement settings"), &frame, &table, 2, 1);
gtk_container_add( GTK_CONTAINER(noise_conf) , noisebox ); gtk_box_pack_start(GTK_BOX(ret), frame, FALSE, FALSE, 0);
enableEchoCancel = gtk_check_button_new_with_mnemonic( _("_Echo Suppression"));
state = dbus_get_echo_cancel_state();
echocancelActive = FALSE;
if(strcmp(state, "enabled") == 0)
echocancelActive = TRUE;
else
echocancelActive = FALSE;
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(enableEchoCancel), echocancelActive);
g_signal_connect(G_OBJECT(enableEchoCancel), "clicked", active_echo_cancel, NULL);
gtk_table_attach ( GTK_TABLE(table), enableEchoCancel, 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
enableNoiseReduction = gtk_check_button_new_with_mnemonic( _("_Noise Reduction"));
state = dbus_get_noise_suppress_state();
noisesuppressActive = FALSE;
if(strcmp(state, "enabled") == 0)
noisesuppressActive = TRUE;
else
noisesuppressActive = FALSE;
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(enableNoiseReduction), noisesuppressActive);
g_signal_connect(G_OBJECT(enableNoiseReduction), "clicked", active_noise_suppress, NULL);
gtk_table_attach ( GTK_TABLE(table), enableNoiseReduction, 0, 1, 1, 2, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
gtk_widget_show_all(ret); gtk_widget_show_all(ret);
......
...@@ -32,22 +32,14 @@ ...@@ -32,22 +32,14 @@
*/ */
#include <gtk/gtk.h> #include <gtk/gtk.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <accountlist.h>
#include <accountconfigdialog.h> #include <accountconfigdialog.h>
#include <actions.h>
#include <config.h>
#include <dbus/dbus.h>
#include <mainwindow.h>
#include <audioconf.h>
#include <addressbook-config.h> #include <addressbook-config.h>
#include <shortcuts-config.h> #include <shortcuts-config.h>
#include <hooks-config.h> #include <hooks-config.h>
#include <utils.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
/** /**
* Local variables * Local variables
...@@ -56,18 +48,35 @@ gboolean accDialogOpen = FALSE; ...@@ -56,18 +48,35 @@ gboolean accDialogOpen = FALSE;
gboolean dialogOpen = FALSE; gboolean dialogOpen = FALSE;
gboolean ringtoneEnabled = TRUE; gboolean ringtoneEnabled = TRUE;
GtkWidget * localPortSpinBox;
GtkWidget * localAddressCombo;
GtkWidget * history_value;
GtkWidget * status; GtkWidget * status;
GtkWidget * history_value;
GtkWidget *showstatusicon;
GtkWidget *starthidden; GtkWidget *starthidden;
GtkWidget *popupwindow; GtkWidget *popupwindow;
GtkWidget *neverpopupwindow; GtkWidget *neverpopupwindow;
GtkWidget *treeView;
GtkWidget *iconview;
GtkCellRenderer *renderer;
GtkTreeViewColumn *column;
GtkTreeSelection *selection;
GtkWidget * notebook;
enum {
PIXBUF_COL,
TEXT_COL,
PAGE_NUMBER
};
typedef struct {
gchar* icon_descr;
gchar* icon_name;
gint page_number;
} browser_t;
static int history_limit; static int history_limit;
static gboolean history_enabled = TRUE; static gboolean history_enabled = TRUE;
...@@ -147,7 +156,7 @@ GtkWidget* ...@@ -147,7 +156,7 @@ GtkWidget*
create_general_settings () create_general_settings ()
{ {
GtkWidget *ret, *notifAll, *trayItem, *frame, *checkBoxWidget, *label, *table; GtkWidget *ret, *notifAll, *trayItem, *frame, *checkBoxWidget, *label, *table, *showstatusicon;
gboolean statusicon; gboolean statusicon;
// Load history configuration // Load history configuration
...@@ -268,6 +277,33 @@ history_load_configuration () ...@@ -268,6 +277,33 @@ history_load_configuration ()
history_enabled = eel_gconf_get_integer (HISTORY_ENABLED); history_enabled = eel_gconf_get_integer (HISTORY_ENABLED);
} }
gboolean selection_changed_cb (GtkIconView *view, gpointer user_data) {
GtkTreeModel *model;
GtkTreeIter iter;
GList *list;
gint page;
model = gtk_icon_view_get_model (view);
list = gtk_icon_view_get_selected_items (view);
if (list == NULL)
return;
if (g_list_length (list) > 1)
return;
gtk_tree_model_get_iter (model, &iter, list->data);
gtk_tree_model_get (model, &iter, PAGE_NUMBER, &page, -1);
gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook), page);
g_list_foreach (list, (GFunc)gtk_tree_path_free, NULL);
g_list_free (list);
}
/** /**
* Show configuration window with tabs * Show configuration window with tabs
*/ */
...@@ -275,7 +311,7 @@ void ...@@ -275,7 +311,7 @@ void
show_preferences_dialog () show_preferences_dialog ()
{ {
GtkDialog * dialog; GtkDialog * dialog;
GtkWidget * notebook; GtkWidget * hbox;
GtkWidget * tab; GtkWidget * tab;
guint result; guint result;
...@@ -293,9 +329,28 @@ show_preferences_dialog () ...@@ -293,9 +329,28 @@ show_preferences_dialog ()
gtk_window_set_default_size (GTK_WINDOW(dialog), 600, 400); gtk_window_set_default_size (GTK_WINDOW(dialog), 600, 400);
gtk_container_set_border_width (GTK_CONTAINER(dialog), 0); gtk_container_set_border_width (GTK_CONTAINER(dialog), 0);
hbox = gtk_hbox_new(FALSE, 10);
// Create tree view
iconview = gtk_icon_view_new_with_model (createModel ());
g_object_set (iconview,
"selection-mode", GTK_SELECTION_BROWSE,
"text-column", TEXT_COL,
"pixbuf-column", PIXBUF_COL,
"columns", 1,
"margin", 10,
NULL);
// Connect the callback when clicking on an item
g_signal_connect(G_OBJECT (iconview), "selection-changed", G_CALLBACK (selection_changed_cb), NULL);
gtk_box_pack_start (GTK_BOX (hbox), iconview, TRUE, TRUE, 0);
// Create tabs container // Create tabs container
notebook = gtk_notebook_new (); notebook = gtk_notebook_new ();
gtk_box_pack_start (GTK_BOX (dialog->vbox), notebook, TRUE, TRUE, 0); gtk_notebook_set_show_tabs(GTK_NOTEBOOK(notebook), FALSE);
gtk_box_pack_end (GTK_BOX (hbox), notebook, TRUE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (dialog->vbox), hbox, TRUE, TRUE, 0);
gtk_widget_show_all(dialog->vbox);
gtk_container_set_border_width (GTK_CONTAINER(notebook), 10); gtk_container_set_border_width (GTK_CONTAINER(notebook), 10);
gtk_widget_show (notebook); gtk_widget_show (notebook);
...@@ -328,7 +383,10 @@ show_preferences_dialog () ...@@ -328,7 +383,10 @@ show_preferences_dialog ()
gtk_notebook_append_page(GTK_NOTEBOOK(notebook), tab, gtk_label_new(_("Shortcuts"))); gtk_notebook_append_page(GTK_NOTEBOOK(notebook), tab, gtk_label_new(_("Shortcuts")));
gtk_notebook_page_num(GTK_NOTEBOOK(notebook), tab); gtk_notebook_page_num(GTK_NOTEBOOK(notebook), tab);
// By default, general settings
gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook), 0); gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook), 0);
// Highlight the corresponding icon
gtk_icon_view_select_path (iconview, gtk_tree_path_new_first ());
result = gtk_dialog_run (dialog); result = gtk_dialog_run (dialog);
...@@ -340,3 +398,46 @@ show_preferences_dialog () ...@@ -340,3 +398,46 @@ show_preferences_dialog ()
gtk_widget_destroy (GTK_WIDGET(dialog)); gtk_widget_destroy (GTK_WIDGET(dialog));
} }
GtkTreeModel* createModel() {
browser_t browser_entries[5] = {
{_("General"), "start-here", 0},
{_("Audio"), "multimedia-volume-control", 1},
{_("Address Book"), "address-book-new", 2},
{_("Hooks"), "gnome-globe", 3},
{_("Shortcuts"), "preferences-desktop-keyboard", 4}
};
GdkPixbuf *pixbuf;
GtkTreeIter iter;
GtkListStore *store;
GError *error = NULL;
GtkIconSet *icon = NULL;
gint i;
store = gtk_list_store_new (3, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_INT);
GtkIconTheme* theme = gtk_icon_theme_get_default();
for(i = 0; i < 5; i++) {
gtk_list_store_append(store, &iter);
pixbuf = gtk_icon_theme_load_icon (theme, browser_entries[i].icon_name, 48, 0, &error);
gtk_list_store_set(store, &iter,
PIXBUF_COL, pixbuf,
TEXT_COL, browser_entries[i].icon_descr,
PAGE_NUMBER, browser_entries[i].page_number,
-1);
if (pixbuf != NULL) {
gdk_pixbuf_unref (pixbuf);
} else {
DEBUG("Couldn't load icon: %s", error->message);
g_error_free (error);
}
}
return GTK_TREE_MODEL(store);
}
...@@ -121,4 +121,6 @@ void save_configuration_parameters (void); ...@@ -121,4 +121,6 @@ void save_configuration_parameters (void);
void history_load_configuration (void); void history_load_configuration (void);
GtkTreeModel* createModel();
#endif #endif
...@@ -29,6 +29,8 @@ ...@@ -29,6 +29,8 @@
*/ */
#include "icon_factory.h" #include "icon_factory.h"
#include "icons/pixmap_data.h"
static GtkIconFactory *icon_factory = NULL; static GtkIconFactory *icon_factory = NULL;
...@@ -59,6 +61,11 @@ void add_icon (GtkIconFactory *factory, const gchar *stock_id, const guint8 *ico ...@@ -59,6 +61,11 @@ void add_icon (GtkIconFactory *factory, const gchar *stock_id, const guint8 *ico
DEBUG ("Icon %s already exists in factory\n", stock_id); DEBUG ("Icon %s already exists in factory\n", stock_id);
} }
GtkIconSet* lookup_sflphone_factory (const gchar *stock_id) {
return gtk_icon_factory_lookup (icon_factory, stock_id);
}
void register_sflphone_stock_icons (GtkIconFactory *factory) void register_sflphone_stock_icons (GtkIconFactory *factory)
{ {
add_icon (factory, GTK_STOCK_PICKUP, gnome_stock_pickup, GTK_ICON_SIZE_SMALL_TOOLBAR); add_icon (factory, GTK_STOCK_PICKUP, gnome_stock_pickup, GTK_ICON_SIZE_SMALL_TOOLBAR);
......
...@@ -49,6 +49,8 @@ G_BEGIN_DECLS ...@@ -49,6 +49,8 @@ G_BEGIN_DECLS
void init_icon_factory (void); void init_icon_factory (void);
GtkIconSet* lookup_sflphone_factory (const gchar *stock_id);
G_END_DECLS G_END_DECLS
#endif #endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment