maemo-ui/src/mmyth_uisettings.c
author renatofilho
Wed Jul 04 21:49:50 2007 +0100 (2007-07-04)
branchtrunk
changeset 783 08371b4fff76
parent 268 91eb7e03b1b1
permissions -rw-r--r--
[svn r789] removed progress log
renatofilho@20
     1
#include<gtk/gtk.h>
renatofilho@20
     2
#include<glib.h>
renatofilho@20
     3
#include <sys/types.h>
renatofilho@20
     4
#include <sys/stat.h>
renatofilho@20
     5
#include <unistd.h>
renatofilho@20
     6
#include <string.h>
renatofilho@20
     7
#include <stdio.h>
renatofilho@20
     8
#include <stdlib.h>
renatofilho@20
     9
renatofilho@20
    10
#include "mmyth_uisettings.h"
renatofilho@20
    11
rosfran@208
    12
#include <gmyth/gmyth_backendinfo.h>
renatofilho@20
    13
renatofilho@20
    14
static GtkWidget *settings_dialog;
renatofilho@20
    15
static GtkWidget *entry_hostname;
renatofilho@20
    16
static GtkWidget *entry_dbname;
renatofilho@20
    17
static GtkWidget *entry_username;
renatofilho@20
    18
static GtkWidget *entry_passwd;
renatofilho@20
    19
static GtkWidget *entry_port;
renatofilho@20
    20
renatofilho@754
    21
static void     settings_dialog_update_data(void);
renatofilho@754
    22
static GtkWidget *add_entry_to_table(GtkWidget * table,
renatofilho@754
    23
                                     const gchar * init_str,
renatofilho@754
    24
                                     guint pos_left, guint pos_right,
renatofilho@754
    25
                                     guint pos_top, guint pos_bottom);
renatofilho@754
    26
static GtkWidget *add_label_to_table(GtkWidget * table, const gchar * str,
renatofilho@754
    27
                                     guint pos_left, guint pos_right,
renatofilho@754
    28
                                     guint pos_top, guint pos_bottom);
renatofilho@754
    29
rosfran@208
    30
static GMythBackendInfo *backend_info = NULL;
rosfran@208
    31
renatofilho@20
    32
gboolean
renatofilho@754
    33
mmyth_uisettings_run(GtkWindow * main_window)
renatofilho@20
    34
{
renatofilho@20
    35
renatofilho@754
    36
    GtkWidget      *settings_table;
renatofilho@754
    37
    GtkWidget      *label_hostname,
renatofilho@754
    38
                   *label_dbname;
renatofilho@754
    39
    GtkWidget      *label_username,
renatofilho@754
    40
                   *label_passwd,
renatofilho@754
    41
                   *label_port;
renatofilho@20
    42
renatofilho@754
    43
    backend_info = gmyth_backend_info_new_full("localhost", "mythtv",
renatofilho@754
    44
                                               "mythtv", "mythconverg",
renatofilho@754
    45
                                               6543);
renatofilho@20
    46
renatofilho@754
    47
    settings_dialog = gtk_dialog_new_with_buttons("Settings",
renatofilho@754
    48
                                                  main_window,
renatofilho@754
    49
                                                  GTK_DIALOG_DESTROY_WITH_PARENT,
renatofilho@754
    50
                                                  GTK_STOCK_OK,
renatofilho@754
    51
                                                  GTK_RESPONSE_ACCEPT,
renatofilho@754
    52
                                                  GTK_STOCK_CANCEL,
renatofilho@754
    53
                                                  GTK_RESPONSE_REJECT,
renatofilho@754
    54
                                                  NULL);
renatofilho@20
    55
renatofilho@754
    56
    gtk_widget_set_size_request(settings_dialog, 400, 244);
renatofilho@20
    57
renatofilho@754
    58
    /*
renatofilho@754
    59
     * scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL);
renatofilho@754
    60
     * gtk_widget_show (scrolledwindow1); gtk_container_add (GTK_CONTAINER 
renatofilho@754
    61
     * (window1), scrolledwindow1); gtk_scrolled_window_set_policy
renatofilho@754
    62
     * (GTK_SCROLLED_WINDOW (scrolledwindow1), GTK_POLICY_AUTOMATIC,
renatofilho@754
    63
     * GTK_POLICY_NEVER);
renatofilho@754
    64
     * 
renatofilho@754
    65
     * viewport1 = gtk_viewport_new (NULL, NULL); gtk_widget_show
renatofilho@754
    66
     * (viewport1); gtk_container_add (GTK_CONTAINER (scrolledwindow1),
renatofilho@754
    67
     * viewport1); gtk_viewport_set_shadow_type (GTK_VIEWPORT (viewport1), 
renatofilho@754
    68
     * GTK_SHADOW_NONE); 
renatofilho@754
    69
     */
renatofilho@20
    70
renatofilho@754
    71
    // Creates the table and attach it to the settings dialog
renatofilho@754
    72
    settings_table = gtk_table_new(5, 2, FALSE);
renatofilho@754
    73
    gtk_widget_show(settings_table);
renatofilho@754
    74
    gtk_box_pack_start(GTK_BOX(GTK_DIALOG(settings_dialog)->vbox),
renatofilho@754
    75
                       settings_table, FALSE, TRUE, 0);
renatofilho@754
    76
    gtk_container_set_border_width(GTK_CONTAINER(settings_table), 3);
renatofilho@754
    77
    gtk_table_set_row_spacings(GTK_TABLE(settings_table), 5);
renatofilho@754
    78
    gtk_table_set_col_spacings(GTK_TABLE(settings_table), 10);
renatofilho@754
    79
renatofilho@754
    80
    label_hostname =
renatofilho@754
    81
        add_label_to_table(settings_table, "Host Name:", 0, 1, 0, 1);
renatofilho@754
    82
    label_dbname =
renatofilho@754
    83
        add_label_to_table(settings_table, "Database Name:", 0, 1, 1, 2);
renatofilho@754
    84
    label_username =
renatofilho@754
    85
        add_label_to_table(settings_table, "Username:", 0, 1, 2, 3);
renatofilho@754
    86
    label_passwd =
renatofilho@754
    87
        add_label_to_table(settings_table, "Password:", 0, 1, 3, 4);
renatofilho@754
    88
    label_port =
renatofilho@754
    89
        add_label_to_table(settings_table, "Server port:", 0, 1, 4, 5);
renatofilho@754
    90
renatofilho@754
    91
    entry_hostname = add_entry_to_table(settings_table,
renatofilho@754
    92
                                        gmyth_backend_info_get_hostname
renatofilho@754
    93
                                        (backend_info), 1, 2, 0, 1);
renatofilho@754
    94
    entry_dbname =
renatofilho@754
    95
        add_entry_to_table(settings_table,
renatofilho@754
    96
                           gmyth_backend_info_get_db_name(backend_info), 1,
renatofilho@754
    97
                           2, 1, 2);
renatofilho@754
    98
    entry_username =
renatofilho@754
    99
        add_entry_to_table(settings_table,
renatofilho@754
   100
                           gmyth_backend_info_get_username(backend_info),
renatofilho@754
   101
                           1, 2, 2, 3);
renatofilho@754
   102
    entry_passwd =
renatofilho@754
   103
        add_entry_to_table(settings_table,
renatofilho@754
   104
                           gmyth_backend_info_get_password(backend_info),
renatofilho@754
   105
                           1, 2, 3, 4);
renatofilho@754
   106
renatofilho@754
   107
    entry_port =
renatofilho@754
   108
        add_entry_to_table(settings_table,
renatofilho@754
   109
                           g_strdup_printf("%d",
renatofilho@754
   110
                                           gmyth_backend_info_get_port
renatofilho@754
   111
                                           (backend_info)), 1, 2, 4, 5);
renatofilho@754
   112
renatofilho@754
   113
    if (gtk_dialog_run(GTK_DIALOG(settings_dialog)) == GTK_RESPONSE_ACCEPT) {
renatofilho@754
   114
        settings_dialog_update_data();
renatofilho@754
   115
        gtk_widget_destroy(settings_dialog);
renatofilho@754
   116
        return TRUE;
renatofilho@754
   117
    }
renatofilho@754
   118
renatofilho@754
   119
    gtk_widget_destroy(settings_dialog);
renatofilho@754
   120
renatofilho@754
   121
    return FALSE;
renatofilho@754
   122
renatofilho@20
   123
}
renatofilho@20
   124
renatofilho@754
   125
static GtkWidget *
renatofilho@754
   126
add_label_to_table(GtkWidget * table, const gchar * str, guint pos_left,
renatofilho@754
   127
                   guint pos_right, guint pos_top, guint pos_bottom)
renatofilho@20
   128
{
renatofilho@754
   129
    GtkWidget      *tmp_label = gtk_label_new(str);
renatofilho@754
   130
renatofilho@754
   131
    gtk_widget_show(tmp_label);
renatofilho@754
   132
    gtk_table_attach(GTK_TABLE(table), tmp_label,
renatofilho@754
   133
                     pos_left, pos_right, pos_top, pos_bottom,
renatofilho@754
   134
                     (GtkAttachOptions) (GTK_FILL),
renatofilho@754
   135
                     (GtkAttachOptions) (0), 0, 0);
renatofilho@754
   136
    gtk_misc_set_alignment(GTK_MISC(tmp_label), 0, 0.5);
renatofilho@754
   137
renatofilho@754
   138
    return tmp_label;
renatofilho@20
   139
}
renatofilho@20
   140
renatofilho@754
   141
static GtkWidget *
renatofilho@754
   142
add_entry_to_table(GtkWidget * table, const gchar * init_str,
renatofilho@754
   143
                   guint pos_left, guint pos_right, guint pos_top,
renatofilho@754
   144
                   guint pos_bottom)
renatofilho@20
   145
{
renatofilho@754
   146
    GtkWidget      *tmp_entry = gtk_entry_new();
renatofilho@754
   147
    gtk_widget_show(tmp_entry);
renatofilho@754
   148
    gtk_table_attach(GTK_TABLE(table), tmp_entry,
renatofilho@754
   149
                     pos_left, pos_right, pos_top, pos_bottom,
renatofilho@754
   150
                     (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
renatofilho@754
   151
                     (GtkAttachOptions) (0), 0, 0);
renatofilho@20
   152
    if (init_str)
renatofilho@754
   153
        gtk_entry_set_text(GTK_ENTRY(tmp_entry), init_str);
renatofilho@754
   154
renatofilho@754
   155
    // gtk_entry_set_invisible_char (GTK_ENTRY (entry_port), 9679);
renatofilho@754
   156
renatofilho@754
   157
    return tmp_entry;
renatofilho@20
   158
}
renatofilho@20
   159
renatofilho@20
   160
static void
renatofilho@754
   161
settings_dialog_update_data(void)
renatofilho@20
   162
{
renatofilho@754
   163
    // GMythSettings *backend_info = gmyth_context_get_settings();
rosfran@208
   164
renatofilho@754
   165
    if (!backend_info) {
renatofilho@754
   166
        g_warning
renatofilho@754
   167
            ("[%s] Could not get GMythSettings instance from context\n",
renatofilho@754
   168
             __FUNCTION__);
renatofilho@754
   169
        return;
renatofilho@754
   170
    }
renatofilho@754
   171
renatofilho@754
   172
    gmyth_backend_info_set_hostname(backend_info,
renatofilho@754
   173
                                    gtk_entry_get_text(GTK_ENTRY
renatofilho@754
   174
                                                       (entry_hostname)));
renatofilho@754
   175
renatofilho@754
   176
    gmyth_backend_info_set_db_name(backend_info,
renatofilho@754
   177
                                   gtk_entry_get_text(GTK_ENTRY
renatofilho@754
   178
                                                      (entry_dbname)));
renatofilho@754
   179
renatofilho@754
   180
    gmyth_backend_info_set_username(backend_info,
renatofilho@754
   181
                                    gtk_entry_get_text(GTK_ENTRY
renatofilho@754
   182
                                                       (entry_username)));
renatofilho@754
   183
renatofilho@754
   184
    gmyth_backend_info_set_password(backend_info,
renatofilho@754
   185
                                    gtk_entry_get_text(GTK_ENTRY
renatofilho@754
   186
                                                       (entry_passwd)));
renatofilho@754
   187
renatofilho@754
   188
    gmyth_backend_info_set_port(backend_info,
renatofilho@754
   189
                                (gint)
renatofilho@754
   190
                                g_ascii_strtoull(gtk_entry_get_text
renatofilho@754
   191
                                                 (GTK_ENTRY(entry_port)),
renatofilho@754
   192
                                                 NULL, 10));
renatofilho@754
   193
renatofilho@754
   194
    // gmyth_backend_info_save (backend_info);
renatofilho@754
   195
renatofilho@20
   196
}