maemo-ui-old/src/mmyth_uicommon.c
author melunko
Mon Oct 08 19:35:09 2007 +0100 (2007-10-08)
branchtrunk
changeset 860 bb5592a9ac48
parent 754 cb885ee44618
permissions -rw-r--r--
[svn r866] Fixed gst-gmyth Makefile to get source from gstreamer cvs
renatofilho@20
     1
renatofilho@20
     2
#include <gtk/gtk.h>
renatofilho@20
     3
#include <glib.h>
renatofilho@20
     4
#include <glib/gprintf.h>
renatofilho@20
     5
renatofilho@20
     6
#include "mmyth_uicommon.h"
renatofilho@20
     7
#include "mmyth_ui.h"
renatofilho@20
     8
renatofilho@20
     9
static void
renatofilho@754
    10
refresh_time_on_screen(GtkWidget * label)
renatofilho@20
    11
{
renatofilho@754
    12
    time_t          real_time;
renatofilho@754
    13
    struct tm       sched_time;
renatofilho@754
    14
    GString        *time_showed;
renatofilho@20
    15
renatofilho@754
    16
    time_showed = g_string_new("");
renatofilho@754
    17
    time(&real_time);
renatofilho@20
    18
renatofilho@754
    19
    if (localtime_r((time_t *) & real_time, &sched_time) == NULL) {
renatofilho@754
    20
        g_error("localtime_r error in mmyth_epg_grid_view!\n");
rosfran@244
    21
        return;
renatofilho@20
    22
    }
renatofilho@20
    23
renatofilho@754
    24
    g_string_printf(time_showed, "%d:%02d:%02d",
renatofilho@754
    25
                    sched_time.tm_hour,
renatofilho@754
    26
                    sched_time.tm_min, sched_time.tm_sec);
renatofilho@20
    27
renatofilho@754
    28
    gtk_label_set_text(GTK_LABEL(label), time_showed->str);
renatofilho@20
    29
}
renatofilho@20
    30
renatofilho@754
    31
MMythUiCommon  *
renatofilho@754
    32
mmyth_uicommon_new(GtkWidget * main_widget, const gchar * label1,
renatofilho@754
    33
                   const gchar * label2, const gchar * label3)
renatofilho@20
    34
{
renatofilho@20
    35
renatofilho@754
    36
    MMythUiCommon  *ui_common = g_new0(MMythUiCommon, 1);
renatofilho@754
    37
renatofilho@20
    38
    if (!main_widget) {
renatofilho@754
    39
        g_warning("MMythUICommon created with a NULL main widget\n");
renatofilho@20
    40
    }
renatofilho@754
    41
renatofilho@20
    42
    ui_common->main_widget = main_widget;
renatofilho@20
    43
renatofilho@20
    44
    ui_common->event_box = gtk_event_box_new();
renatofilho@20
    45
renatofilho@754
    46
    /*
renatofilho@754
    47
     * Vertical box that divides the control area into two (buttons +
renatofilho@754
    48
     * clock) 
renatofilho@754
    49
     */
renatofilho@754
    50
    ui_common->vbox = gtk_vbox_new(FALSE, 0);   /* spacing */
renatofilho@754
    51
    gtk_container_set_border_width(GTK_CONTAINER(ui_common->vbox), 4);
renatofilho@20
    52
renatofilho@754
    53
    gtk_container_add(GTK_CONTAINER(ui_common->event_box),
renatofilho@754
    54
                      ui_common->vbox);
renatofilho@754
    55
    gtk_widget_modify_bg(ui_common->event_box, GTK_STATE_NORMAL,
renatofilho@754
    56
                         &main_bg_color);
renatofilho@20
    57
renatofilho@754
    58
    /*
renatofilho@754
    59
     * Vertical box that divides the control area into four 
renatofilho@754
    60
     */
renatofilho@754
    61
    ui_common->button_vbox = gtk_vbox_new(TRUE, 0); /* spacing */
renatofilho@20
    62
renatofilho@754
    63
    gtk_container_set_border_width(GTK_CONTAINER(ui_common->button_vbox),
renatofilho@754
    64
                                   0);
renatofilho@20
    65
renatofilho@754
    66
    /*
renatofilho@754
    67
     * The button 1 
renatofilho@754
    68
     */
renatofilho@754
    69
    ui_common->button1 = gtk_button_new_with_label(label1);
renatofilho@754
    70
    gtk_widget_modify_bg(ui_common->button1, GTK_STATE_NORMAL,
renatofilho@754
    71
                         &main_bg_color);
renatofilho@754
    72
    gtk_widget_set_size_request(ui_common->button1, BUTTON_WIDTH,
renatofilho@754
    73
                                BUTTON_HEIGHT);
renatofilho@20
    74
renatofilho@754
    75
    /*
renatofilho@754
    76
     * The button 2 
renatofilho@754
    77
     */
renatofilho@754
    78
    ui_common->button2 = gtk_button_new_with_label(label2);
renatofilho@754
    79
    gtk_widget_modify_bg(ui_common->button2, GTK_STATE_NORMAL,
renatofilho@754
    80
                         &main_bg_color);
renatofilho@754
    81
    gtk_widget_set_size_request(ui_common->button2, BUTTON_WIDTH,
renatofilho@754
    82
                                BUTTON_HEIGHT);
renatofilho@20
    83
renatofilho@754
    84
    /*
renatofilho@754
    85
     * The button 3 
renatofilho@754
    86
     */
renatofilho@754
    87
    ui_common->button3 = gtk_button_new_with_label(label3);
renatofilho@754
    88
    gtk_widget_modify_bg(ui_common->button3, GTK_STATE_NORMAL,
renatofilho@754
    89
                         &main_bg_color);
renatofilho@754
    90
    gtk_widget_set_size_request(ui_common->button3, BUTTON_WIDTH,
renatofilho@754
    91
                                BUTTON_HEIGHT);
renatofilho@20
    92
renatofilho@754
    93
    /*
renatofilho@754
    94
     * The clock label 
renatofilho@754
    95
     */
renatofilho@754
    96
    ui_common->label = gtk_label_new("Starting...");
renatofilho@754
    97
    gtk_widget_show(ui_common->label);
renatofilho@754
    98
    ui_common->source_id =
renatofilho@754
    99
        g_timeout_add(500, (GSourceFunc) refresh_time_on_screen,
renatofilho@754
   100
                      ui_common->label);
renatofilho@20
   101
renatofilho@754
   102
    /*
renatofilho@754
   103
     * Packing components 
renatofilho@754
   104
     */
renatofilho@754
   105
    gtk_box_pack_start(GTK_BOX(ui_common->vbox),
renatofilho@754
   106
                       ui_common->button_vbox, TRUE, TRUE, 0);
renatofilho@20
   107
renatofilho@754
   108
    gtk_box_pack_start(GTK_BOX(ui_common->vbox),
renatofilho@754
   109
                       ui_common->label, FALSE, FALSE, 0);
renatofilho@20
   110
renatofilho@754
   111
    gtk_box_pack_start(GTK_BOX(ui_common->button_vbox),
renatofilho@754
   112
                       ui_common->button1, FALSE, FALSE, 0);
renatofilho@20
   113
renatofilho@754
   114
    gtk_box_pack_start(GTK_BOX(ui_common->button_vbox),
renatofilho@754
   115
                       ui_common->button2, FALSE, FALSE, 0);
renatofilho@754
   116
renatofilho@754
   117
    gtk_box_pack_start(GTK_BOX(ui_common->button_vbox),
renatofilho@754
   118
                       ui_common->button3, FALSE, FALSE, 0);
renatofilho@754
   119
renatofilho@754
   120
    gtk_widget_show_all(ui_common->event_box);
renatofilho@754
   121
renatofilho@754
   122
    /*
renatofilho@754
   123
     * FIXME: mmyth_ui->video_alignment == NULL when mmyth_player_init
renatofilho@754
   124
     * fails 
renatofilho@754
   125
     */
renatofilho@754
   126
    if (ui_common->main_widget != NULL)
renatofilho@754
   127
        g_object_ref(ui_common->main_widget);
renatofilho@754
   128
renatofilho@754
   129
    g_object_ref(ui_common->vbox);
renatofilho@754
   130
    g_object_ref(ui_common->button_vbox);
renatofilho@754
   131
    g_object_ref(ui_common->label);
renatofilho@754
   132
    g_object_ref(ui_common->button1);
renatofilho@754
   133
    g_object_ref(ui_common->button2);
renatofilho@754
   134
    g_object_ref(ui_common->button3);
renatofilho@754
   135
    g_object_ref(ui_common->event_box);
renatofilho@20
   136
    return ui_common;
renatofilho@20
   137
}
renatofilho@20
   138
renatofilho@20
   139
void
renatofilho@754
   140
mmyth_uicommon_free(MMythUiCommon * ui_common)
renatofilho@20
   141
{
renatofilho@754
   142
    g_debug("[%s] Clean uicommon used memory", __FUNCTION__);
renatofilho@20
   143
renatofilho@754
   144
    g_source_remove(ui_common->source_id);
renatofilho@754
   145
renatofilho@754
   146
    g_object_unref(ui_common->main_widget);
renatofilho@754
   147
    g_object_unref(ui_common->vbox);
renatofilho@754
   148
    g_object_unref(ui_common->button_vbox);
renatofilho@754
   149
    g_object_unref(ui_common->label);
renatofilho@754
   150
    g_object_unref(ui_common->button1);
renatofilho@754
   151
    g_object_unref(ui_common->button2);
renatofilho@754
   152
    g_object_unref(ui_common->button3);
renatofilho@754
   153
    g_object_unref(ui_common->event_box);
renatofilho@754
   154
renatofilho@754
   155
    g_free(ui_common);
renatofilho@20
   156
}