diff -r cb885ee44618 -r 781db4177ba2 maemo-ui-old/src/mmyth_uisettings.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/maemo-ui-old/src/mmyth_uisettings.c Fri Dec 21 14:07:54 2007 +0000 @@ -0,0 +1,196 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +#include "mmyth_uisettings.h" + +#include + +static GtkWidget *settings_dialog; +static GtkWidget *entry_hostname; +static GtkWidget *entry_dbname; +static GtkWidget *entry_username; +static GtkWidget *entry_passwd; +static GtkWidget *entry_port; + +static void settings_dialog_update_data(void); +static GtkWidget *add_entry_to_table(GtkWidget * table, + const gchar * init_str, + guint pos_left, guint pos_right, + guint pos_top, guint pos_bottom); +static GtkWidget *add_label_to_table(GtkWidget * table, const gchar * str, + guint pos_left, guint pos_right, + guint pos_top, guint pos_bottom); + +static GMythBackendInfo *backend_info = NULL; + +gboolean +mmyth_uisettings_run(GtkWindow * main_window) +{ + + GtkWidget *settings_table; + GtkWidget *label_hostname, + *label_dbname; + GtkWidget *label_username, + *label_passwd, + *label_port; + + backend_info = gmyth_backend_info_new_full("localhost", "mythtv", + "mythtv", "mythconverg", + 6543); + + settings_dialog = gtk_dialog_new_with_buttons("Settings", + main_window, + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_STOCK_OK, + GTK_RESPONSE_ACCEPT, + GTK_STOCK_CANCEL, + GTK_RESPONSE_REJECT, + NULL); + + gtk_widget_set_size_request(settings_dialog, 400, 244); + + /* + * scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL); + * gtk_widget_show (scrolledwindow1); gtk_container_add (GTK_CONTAINER + * (window1), scrolledwindow1); gtk_scrolled_window_set_policy + * (GTK_SCROLLED_WINDOW (scrolledwindow1), GTK_POLICY_AUTOMATIC, + * GTK_POLICY_NEVER); + * + * viewport1 = gtk_viewport_new (NULL, NULL); gtk_widget_show + * (viewport1); gtk_container_add (GTK_CONTAINER (scrolledwindow1), + * viewport1); gtk_viewport_set_shadow_type (GTK_VIEWPORT (viewport1), + * GTK_SHADOW_NONE); + */ + + // Creates the table and attach it to the settings dialog + settings_table = gtk_table_new(5, 2, FALSE); + gtk_widget_show(settings_table); + gtk_box_pack_start(GTK_BOX(GTK_DIALOG(settings_dialog)->vbox), + settings_table, FALSE, TRUE, 0); + gtk_container_set_border_width(GTK_CONTAINER(settings_table), 3); + gtk_table_set_row_spacings(GTK_TABLE(settings_table), 5); + gtk_table_set_col_spacings(GTK_TABLE(settings_table), 10); + + label_hostname = + add_label_to_table(settings_table, "Host Name:", 0, 1, 0, 1); + label_dbname = + add_label_to_table(settings_table, "Database Name:", 0, 1, 1, 2); + label_username = + add_label_to_table(settings_table, "Username:", 0, 1, 2, 3); + label_passwd = + add_label_to_table(settings_table, "Password:", 0, 1, 3, 4); + label_port = + add_label_to_table(settings_table, "Server port:", 0, 1, 4, 5); + + entry_hostname = add_entry_to_table(settings_table, + gmyth_backend_info_get_hostname + (backend_info), 1, 2, 0, 1); + entry_dbname = + add_entry_to_table(settings_table, + gmyth_backend_info_get_db_name(backend_info), 1, + 2, 1, 2); + entry_username = + add_entry_to_table(settings_table, + gmyth_backend_info_get_username(backend_info), + 1, 2, 2, 3); + entry_passwd = + add_entry_to_table(settings_table, + gmyth_backend_info_get_password(backend_info), + 1, 2, 3, 4); + + entry_port = + add_entry_to_table(settings_table, + g_strdup_printf("%d", + gmyth_backend_info_get_port + (backend_info)), 1, 2, 4, 5); + + if (gtk_dialog_run(GTK_DIALOG(settings_dialog)) == GTK_RESPONSE_ACCEPT) { + settings_dialog_update_data(); + gtk_widget_destroy(settings_dialog); + return TRUE; + } + + gtk_widget_destroy(settings_dialog); + + return FALSE; + +} + +static GtkWidget * +add_label_to_table(GtkWidget * table, const gchar * str, guint pos_left, + guint pos_right, guint pos_top, guint pos_bottom) +{ + GtkWidget *tmp_label = gtk_label_new(str); + + gtk_widget_show(tmp_label); + gtk_table_attach(GTK_TABLE(table), tmp_label, + pos_left, pos_right, pos_top, pos_bottom, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_misc_set_alignment(GTK_MISC(tmp_label), 0, 0.5); + + return tmp_label; +} + +static GtkWidget * +add_entry_to_table(GtkWidget * table, const gchar * init_str, + guint pos_left, guint pos_right, guint pos_top, + guint pos_bottom) +{ + GtkWidget *tmp_entry = gtk_entry_new(); + gtk_widget_show(tmp_entry); + gtk_table_attach(GTK_TABLE(table), tmp_entry, + pos_left, pos_right, pos_top, pos_bottom, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + if (init_str) + gtk_entry_set_text(GTK_ENTRY(tmp_entry), init_str); + + // gtk_entry_set_invisible_char (GTK_ENTRY (entry_port), 9679); + + return tmp_entry; +} + +static void +settings_dialog_update_data(void) +{ + // GMythSettings *backend_info = gmyth_context_get_settings(); + + if (!backend_info) { + g_warning + ("[%s] Could not get GMythSettings instance from context\n", + __FUNCTION__); + return; + } + + gmyth_backend_info_set_hostname(backend_info, + gtk_entry_get_text(GTK_ENTRY + (entry_hostname))); + + gmyth_backend_info_set_db_name(backend_info, + gtk_entry_get_text(GTK_ENTRY + (entry_dbname))); + + gmyth_backend_info_set_username(backend_info, + gtk_entry_get_text(GTK_ENTRY + (entry_username))); + + gmyth_backend_info_set_password(backend_info, + gtk_entry_get_text(GTK_ENTRY + (entry_passwd))); + + gmyth_backend_info_set_port(backend_info, + (gint) + g_ascii_strtoull(gtk_entry_get_text + (GTK_ENTRY(entry_port)), + NULL, 10)); + + // gmyth_backend_info_save (backend_info); + +}