maemo-ui/src/mmyth_epg_grid_view.c
branchtrunk
changeset 790 7a914b3fafc1
parent 789 f9cd59844f78
child 791 cdafc5e948b8
     1.1 --- a/maemo-ui/src/mmyth_epg_grid_view.c	Wed Aug 01 14:22:14 2007 +0100
     1.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.3 @@ -1,243 +0,0 @@
     1.4 -#include <string.h>
     1.5 -#include <stdlib.h>
     1.6 -#include <gtk/gtk.h>
     1.7 -#include <gdk/gdkkeysyms.h>
     1.8 -#include <time.h>
     1.9 -
    1.10 -#include "mmyth_epg_grid_view.h"
    1.11 -#include "mmyth_epg_grid_widget.h"
    1.12 -
    1.13 -/*
    1.14 - * Service genre 
    1.15 - */
    1.16 -#define GENRE_MIN               0
    1.17 -#define GENRE_MAX               10
    1.18 -#define GENRE_UNDEFINED         0
    1.19 -#define GENRE_MOVIE             1
    1.20 -#define GENRE_NEWS              2
    1.21 -#define GENRE_SHOW              3
    1.22 -#define GENRE_SPORTS            4
    1.23 -#define GENRE_CHILDREN          5
    1.24 -#define GENRE_MUSIC             6
    1.25 -#define GENRE_CULTURE           7
    1.26 -#define GENRE_SOCIAL            8
    1.27 -#define GENRE_EDUCATION         9
    1.28 -#define GENRE_LEISURE           10
    1.29 -
    1.30 -#define NRO_HOURS 3
    1.31 -
    1.32 -/*
    1.33 - * Function prototypes
    1.34 - */
    1.35 -static void     update_service_details(MMythEpgGridWidget * object,
    1.36 -                                       gpointer arg1, gpointer user_data);
    1.37 -static gboolean key_press_epg_grid_view(GtkWidget * widget,
    1.38 -                                        GdkEventKey * event,
    1.39 -                                        gpointer user_data);
    1.40 -
    1.41 -static GtkWidget *mmyth_epg_grid_widget = NULL;
    1.42 -
    1.43 -/*
    1.44 - * is a GtkEventBox 
    1.45 - */
    1.46 -static GtkWidget *program_details_area = NULL;
    1.47 -static GtkWidget *details_main_hbox = NULL;
    1.48 -static GtkWidget *details_vbox = NULL;
    1.49 -static GtkWidget *details_logo_vbox = NULL;
    1.50 -
    1.51 -/*
    1.52 - * update signal callback from MMythEpgGridWidget 
    1.53 - */
    1.54 -static void
    1.55 -update_service_details(MMythEpgGridWidget * object, gpointer arg1,
    1.56 -                       gpointer user_data)
    1.57 -{
    1.58 -    g_return_if_fail(arg1 != NULL);
    1.59 -
    1.60 -    EpgGridItem    *epg_grid_item = (EpgGridItem *) arg1;
    1.61 -
    1.62 -    gchar           sel_prog_desc[100] = "<big><b>";
    1.63 -    gchar           time_buffer[50];
    1.64 -
    1.65 -    /*
    1.66 -     * FIXME: get first content from content_list
    1.67 -     */
    1.68 -    GMythProgramInfo *proginfo =
    1.69 -        (GMythProgramInfo *) epg_grid_item->proginfo;
    1.70 -
    1.71 -    if (proginfo) {
    1.72 -        GString        *prog_name = proginfo->title;
    1.73 -        GString        *service_name = proginfo->chanid;
    1.74 -
    1.75 -        if (details_vbox != NULL)
    1.76 -            gtk_container_remove(GTK_CONTAINER(details_main_hbox),
    1.77 -                                 details_vbox);
    1.78 -
    1.79 -        /*
    1.80 -         * update service description 
    1.81 -         */
    1.82 -        strcat(sel_prog_desc, service_name->str);
    1.83 -        strcat(sel_prog_desc, "</b></big>");
    1.84 -
    1.85 -        GtkWidget      *fst_line_lbl = gtk_label_new(NULL);
    1.86 -        gtk_misc_set_alignment(GTK_MISC(fst_line_lbl), 0.0, 0.0);
    1.87 -        gtk_label_set_markup(GTK_LABEL(fst_line_lbl), sel_prog_desc);
    1.88 -
    1.89 -        /*
    1.90 -         * freeing char[] 
    1.91 -         */
    1.92 -        sel_prog_desc[0] = 0;
    1.93 -        strcat(sel_prog_desc, "\t");
    1.94 -        strcat(sel_prog_desc, prog_name->str);
    1.95 -
    1.96 -        struct tm       loctime_start,
    1.97 -                        loctime_end;
    1.98 -
    1.99 -        // Convert it to local time representation. 
   1.100 -        /*
   1.101 -         * FIXME: conversion from time to localtime is different in
   1.102 -         * different machines 
   1.103 -         */
   1.104 -        long int        schedule_start_time = proginfo->startts->tv_sec;
   1.105 -        long int        schedule_end_time = proginfo->endts->tv_sec;
   1.106 -
   1.107 -        if (localtime_r(&schedule_start_time, &loctime_start) == NULL) {
   1.108 -            g_warning("localtime_r error in mmyth_epg_grid_view!\n");
   1.109 -        }
   1.110 -#if 0
   1.111 -        fprintf(stderr, asctime(loctime_start));
   1.112 -#endif
   1.113 -
   1.114 -        strftime(time_buffer, 100, "  %H:%M - ", &loctime_start);
   1.115 -        strcat(sel_prog_desc, time_buffer);
   1.116 -
   1.117 -        if (localtime_r(&schedule_end_time, &loctime_end) == NULL) {
   1.118 -            g_warning("localtime_r error in mmyth_epg_grid_view!\n");
   1.119 -        }
   1.120 -#if 0
   1.121 -        fprintf(stderr, asctime(loctime_end));
   1.122 -#endif
   1.123 -
   1.124 -        strftime(time_buffer, 100, "%H:%M\n", &loctime_end);
   1.125 -        strcat(sel_prog_desc, time_buffer);
   1.126 -
   1.127 -        GtkWidget      *snd_line_lbl = gtk_label_new(NULL);
   1.128 -        gtk_misc_set_alignment(GTK_MISC(snd_line_lbl), 0.0, 0.0);
   1.129 -        gtk_label_set_markup(GTK_LABEL(snd_line_lbl), sel_prog_desc);
   1.130 -
   1.131 -        // add the current selected program description to the label
   1.132 -        details_vbox = gtk_vbox_new(FALSE, 0);
   1.133 -        GtkWidget      *fst_line_hbox = gtk_hbox_new(FALSE, 0);
   1.134 -
   1.135 -        gtk_box_pack_start(GTK_BOX(fst_line_hbox),
   1.136 -                           fst_line_lbl, FALSE, FALSE, 6);
   1.137 -        gtk_box_pack_start(GTK_BOX(details_vbox),
   1.138 -                           fst_line_hbox, FALSE, FALSE, 0);
   1.139 -        gtk_box_pack_start(GTK_BOX(details_vbox),
   1.140 -                           snd_line_lbl, FALSE, FALSE, 0);
   1.141 -        gtk_box_pack_start(GTK_BOX(details_main_hbox),
   1.142 -                           details_vbox, FALSE, FALSE, 0);
   1.143 -
   1.144 -        gtk_widget_show_all(details_main_hbox);
   1.145 -    }
   1.146 -}
   1.147 -
   1.148 -/*
   1.149 - * Callback for hardware keys 
   1.150 - */
   1.151 -static          gboolean
   1.152 -key_press_epg_grid_view(GtkWidget * widget,
   1.153 -                        GdkEventKey * event, gpointer user_data)
   1.154 -{
   1.155 -    MMythEpgGridWidget *mmyth_epg_grid_widget =
   1.156 -        (MMythEpgGridWidget *) user_data;
   1.157 -
   1.158 -    return mmyth_epg_grid_widget_key_press(mmyth_epg_grid_widget, widget,
   1.159 -                                           event);
   1.160 -}
   1.161 -
   1.162 -GtkWidget      *
   1.163 -epg_grid_view_new(MMythUi * mmyth_ui)
   1.164 -{
   1.165 -    GtkWidget      *scrolled_window;
   1.166 -    scrolled_window = gtk_scrolled_window_new(NULL, NULL);
   1.167 -    gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window),
   1.168 -                                   GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
   1.169 -
   1.170 -    gtk_widget_modify_bg(scrolled_window, GTK_STATE_NORMAL,
   1.171 -                         &main_bg_color);
   1.172 -
   1.173 -    GtkWidget      *main_vbox = gtk_vbox_new(FALSE, 0);
   1.174 -    // gtk_container_set_border_width(main_vbox, 4); 
   1.175 -
   1.176 -    GtkWidget      *details_event_box = gtk_event_box_new();
   1.177 -    gtk_widget_modify_bg(details_event_box, GTK_STATE_NORMAL,
   1.178 -                         &main_bg_color);
   1.179 -
   1.180 -    program_details_area = gtk_vbox_new(FALSE, 0);
   1.181 -    gtk_container_add(GTK_CONTAINER(details_event_box),
   1.182 -                      program_details_area);
   1.183 -    gtk_container_set_border_width(GTK_CONTAINER(program_details_area), 4);
   1.184 -
   1.185 -    details_main_hbox = gtk_hbox_new(FALSE, 10);
   1.186 -
   1.187 -    gtk_box_pack_start(GTK_BOX(program_details_area),
   1.188 -                       details_main_hbox, FALSE, FALSE, 0);
   1.189 -
   1.190 -    details_logo_vbox = gtk_vbox_new(FALSE, 0);
   1.191 -
   1.192 -    GtkWidget      *details_desc_vbox = gtk_vbox_new(FALSE, 0);
   1.193 -
   1.194 -    gtk_box_pack_start(GTK_BOX(details_main_hbox),
   1.195 -                       details_desc_vbox, FALSE, FALSE, 0);
   1.196 -    gtk_box_pack_start(GTK_BOX(details_main_hbox),
   1.197 -                       details_logo_vbox, FALSE, FALSE, 0);
   1.198 -
   1.199 -    gtk_widget_set_size_request(program_details_area, -1, 120);
   1.200 -
   1.201 -    mmyth_epg_grid_widget = mmyth_epg_grid_widget_new();
   1.202 -    g_signal_connect(mmyth_epg_grid_widget, "selection_updated",
   1.203 -                     G_CALLBACK(update_service_details), NULL);
   1.204 -
   1.205 -    /*
   1.206 -     * select by default the first service 
   1.207 -     */
   1.208 -    /*
   1.209 -     * depends on mount services 
   1.210 -     */
   1.211 -    if (MMYTH_EPG_GRID_WIDGET(mmyth_epg_grid_widget)->epg_view_model) {
   1.212 -        GList          *fst_service = (GList *)
   1.213 -            MMYTH_EPG_GRID_WIDGET(mmyth_epg_grid_widget)->epg_view_model->
   1.214 -            data;
   1.215 -        mmyth_epg_grid_widget_update_service(MMYTH_EPG_GRID_WIDGET
   1.216 -                                             (mmyth_epg_grid_widget),
   1.217 -                                             fst_service);
   1.218 -    }
   1.219 -
   1.220 -    gtk_box_pack_start(GTK_BOX(main_vbox),
   1.221 -                       details_event_box, FALSE, FALSE, 0);
   1.222 -    gtk_box_pack_start(GTK_BOX(main_vbox),
   1.223 -                       gtk_hseparator_new(), FALSE, FALSE, 0);
   1.224 -    gtk_box_pack_start(GTK_BOX(main_vbox),
   1.225 -                       mmyth_epg_grid_widget, FALSE, FALSE, 0);
   1.226 -
   1.227 -    gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW
   1.228 -                                          (scrolled_window), main_vbox);
   1.229 -
   1.230 -    /*
   1.231 -     * Add hardware button listener to application 
   1.232 -     */
   1.233 -    g_signal_connect(mmyth_ui->main_window, "key_press_event",
   1.234 -                     G_CALLBACK(key_press_epg_grid_view),
   1.235 -                     mmyth_epg_grid_widget);
   1.236 -
   1.237 -    gtk_widget_show_all(scrolled_window);
   1.238 -
   1.239 -    return scrolled_window;
   1.240 -}
   1.241 -
   1.242 -/*
   1.243 - * DVBHScheduleEvent * mmyth_epg_grid_view_get_selected_schedule() {
   1.244 - * return mmyth_epg_grid_get_selected_schedule
   1.245 - * (MMYTH_EPG_GRID_WIDGET(mmyth_epg_grid_widget)); } 
   1.246 - */