diff -r d2d226b5a4bd -r 987fafbda04d maemo-ui-old/src/mmyth_epg_grid_view.c --- a/maemo-ui-old/src/mmyth_epg_grid_view.c Fri Feb 01 14:30:21 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,243 +0,0 @@ -#include -#include -#include -#include -#include - -#include "mmyth_epg_grid_view.h" -#include "mmyth_epg_grid_widget.h" - -/* - * Service genre - */ -#define GENRE_MIN 0 -#define GENRE_MAX 10 -#define GENRE_UNDEFINED 0 -#define GENRE_MOVIE 1 -#define GENRE_NEWS 2 -#define GENRE_SHOW 3 -#define GENRE_SPORTS 4 -#define GENRE_CHILDREN 5 -#define GENRE_MUSIC 6 -#define GENRE_CULTURE 7 -#define GENRE_SOCIAL 8 -#define GENRE_EDUCATION 9 -#define GENRE_LEISURE 10 - -#define NRO_HOURS 3 - -/* - * Function prototypes - */ -static void update_service_details(MMythEpgGridWidget * object, - gpointer arg1, gpointer user_data); -static gboolean key_press_epg_grid_view(GtkWidget * widget, - GdkEventKey * event, - gpointer user_data); - -static GtkWidget *mmyth_epg_grid_widget = NULL; - -/* - * is a GtkEventBox - */ -static GtkWidget *program_details_area = NULL; -static GtkWidget *details_main_hbox = NULL; -static GtkWidget *details_vbox = NULL; -static GtkWidget *details_logo_vbox = NULL; - -/* - * update signal callback from MMythEpgGridWidget - */ -static void -update_service_details(MMythEpgGridWidget * object, gpointer arg1, - gpointer user_data) -{ - g_return_if_fail(arg1 != NULL); - - EpgGridItem *epg_grid_item = (EpgGridItem *) arg1; - - gchar sel_prog_desc[100] = ""; - gchar time_buffer[50]; - - /* - * FIXME: get first content from content_list - */ - GMythProgramInfo *proginfo = - (GMythProgramInfo *) epg_grid_item->proginfo; - - if (proginfo) { - GString *prog_name = proginfo->title; - GString *service_name = proginfo->chanid; - - if (details_vbox != NULL) - gtk_container_remove(GTK_CONTAINER(details_main_hbox), - details_vbox); - - /* - * update service description - */ - strcat(sel_prog_desc, service_name->str); - strcat(sel_prog_desc, ""); - - GtkWidget *fst_line_lbl = gtk_label_new(NULL); - gtk_misc_set_alignment(GTK_MISC(fst_line_lbl), 0.0, 0.0); - gtk_label_set_markup(GTK_LABEL(fst_line_lbl), sel_prog_desc); - - /* - * freeing char[] - */ - sel_prog_desc[0] = 0; - strcat(sel_prog_desc, "\t"); - strcat(sel_prog_desc, prog_name->str); - - struct tm loctime_start, - loctime_end; - - // Convert it to local time representation. - /* - * FIXME: conversion from time to localtime is different in - * different machines - */ - long int schedule_start_time = proginfo->startts->tv_sec; - long int schedule_end_time = proginfo->endts->tv_sec; - - if (localtime_r(&schedule_start_time, &loctime_start) == NULL) { - g_warning("localtime_r error in mmyth_epg_grid_view!\n"); - } -#if 0 - fprintf(stderr, asctime(loctime_start)); -#endif - - strftime(time_buffer, 100, " %H:%M - ", &loctime_start); - strcat(sel_prog_desc, time_buffer); - - if (localtime_r(&schedule_end_time, &loctime_end) == NULL) { - g_warning("localtime_r error in mmyth_epg_grid_view!\n"); - } -#if 0 - fprintf(stderr, asctime(loctime_end)); -#endif - - strftime(time_buffer, 100, "%H:%M\n", &loctime_end); - strcat(sel_prog_desc, time_buffer); - - GtkWidget *snd_line_lbl = gtk_label_new(NULL); - gtk_misc_set_alignment(GTK_MISC(snd_line_lbl), 0.0, 0.0); - gtk_label_set_markup(GTK_LABEL(snd_line_lbl), sel_prog_desc); - - // add the current selected program description to the label - details_vbox = gtk_vbox_new(FALSE, 0); - GtkWidget *fst_line_hbox = gtk_hbox_new(FALSE, 0); - - gtk_box_pack_start(GTK_BOX(fst_line_hbox), - fst_line_lbl, FALSE, FALSE, 6); - gtk_box_pack_start(GTK_BOX(details_vbox), - fst_line_hbox, FALSE, FALSE, 0); - gtk_box_pack_start(GTK_BOX(details_vbox), - snd_line_lbl, FALSE, FALSE, 0); - gtk_box_pack_start(GTK_BOX(details_main_hbox), - details_vbox, FALSE, FALSE, 0); - - gtk_widget_show_all(details_main_hbox); - } -} - -/* - * Callback for hardware keys - */ -static gboolean -key_press_epg_grid_view(GtkWidget * widget, - GdkEventKey * event, gpointer user_data) -{ - MMythEpgGridWidget *mmyth_epg_grid_widget = - (MMythEpgGridWidget *) user_data; - - return mmyth_epg_grid_widget_key_press(mmyth_epg_grid_widget, widget, - event); -} - -GtkWidget * -epg_grid_view_new(MMythUi * mmyth_ui) -{ - GtkWidget *scrolled_window; - scrolled_window = gtk_scrolled_window_new(NULL, NULL); - gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window), - GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); - - gtk_widget_modify_bg(scrolled_window, GTK_STATE_NORMAL, - &main_bg_color); - - GtkWidget *main_vbox = gtk_vbox_new(FALSE, 0); - // gtk_container_set_border_width(main_vbox, 4); - - GtkWidget *details_event_box = gtk_event_box_new(); - gtk_widget_modify_bg(details_event_box, GTK_STATE_NORMAL, - &main_bg_color); - - program_details_area = gtk_vbox_new(FALSE, 0); - gtk_container_add(GTK_CONTAINER(details_event_box), - program_details_area); - gtk_container_set_border_width(GTK_CONTAINER(program_details_area), 4); - - details_main_hbox = gtk_hbox_new(FALSE, 10); - - gtk_box_pack_start(GTK_BOX(program_details_area), - details_main_hbox, FALSE, FALSE, 0); - - details_logo_vbox = gtk_vbox_new(FALSE, 0); - - GtkWidget *details_desc_vbox = gtk_vbox_new(FALSE, 0); - - gtk_box_pack_start(GTK_BOX(details_main_hbox), - details_desc_vbox, FALSE, FALSE, 0); - gtk_box_pack_start(GTK_BOX(details_main_hbox), - details_logo_vbox, FALSE, FALSE, 0); - - gtk_widget_set_size_request(program_details_area, -1, 120); - - mmyth_epg_grid_widget = mmyth_epg_grid_widget_new(); - g_signal_connect(mmyth_epg_grid_widget, "selection_updated", - G_CALLBACK(update_service_details), NULL); - - /* - * select by default the first service - */ - /* - * depends on mount services - */ - if (MMYTH_EPG_GRID_WIDGET(mmyth_epg_grid_widget)->epg_view_model) { - GList *fst_service = (GList *) - MMYTH_EPG_GRID_WIDGET(mmyth_epg_grid_widget)->epg_view_model-> - data; - mmyth_epg_grid_widget_update_service(MMYTH_EPG_GRID_WIDGET - (mmyth_epg_grid_widget), - fst_service); - } - - gtk_box_pack_start(GTK_BOX(main_vbox), - details_event_box, FALSE, FALSE, 0); - gtk_box_pack_start(GTK_BOX(main_vbox), - gtk_hseparator_new(), FALSE, FALSE, 0); - gtk_box_pack_start(GTK_BOX(main_vbox), - mmyth_epg_grid_widget, FALSE, FALSE, 0); - - gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW - (scrolled_window), main_vbox); - - /* - * Add hardware button listener to application - */ - g_signal_connect(mmyth_ui->main_window, "key_press_event", - G_CALLBACK(key_press_epg_grid_view), - mmyth_epg_grid_widget); - - gtk_widget_show_all(scrolled_window); - - return scrolled_window; -} - -/* - * DVBHScheduleEvent * mmyth_epg_grid_view_get_selected_schedule() { - * return mmyth_epg_grid_get_selected_schedule - * (MMYTH_EPG_GRID_WIDGET(mmyth_epg_grid_widget)); } - */