maemo-ui/src/mmyth_epg_grid_view.c
branchtrunk
changeset 758 b57cdd5fb898
parent 244 c88244670b08
     1.1 --- a/maemo-ui/src/mmyth_epg_grid_view.c	Fri Jan 05 19:27:27 2007 +0000
     1.2 +++ b/maemo-ui/src/mmyth_epg_grid_view.c	Fri Jun 22 20:03:35 2007 +0100
     1.3 @@ -7,7 +7,9 @@
     1.4  #include "mmyth_epg_grid_view.h"
     1.5  #include "mmyth_epg_grid_widget.h"
     1.6  
     1.7 -/* Service genre */
     1.8 +/*
     1.9 + * Service genre 
    1.10 + */
    1.11  #define GENRE_MIN               0
    1.12  #define GENRE_MAX               10
    1.13  #define GENRE_UNDEFINED         0
    1.14 @@ -24,190 +26,218 @@
    1.15  
    1.16  #define NRO_HOURS 3
    1.17  
    1.18 -/* Function prototypes*/
    1.19 -static void update_service_details(MMythEpgGridWidget *object, 
    1.20 -                                   gpointer arg1, gpointer user_data);
    1.21 -static gboolean key_press_epg_grid_view(GtkWidget * widget, 
    1.22 -                                        GdkEventKey * event, 
    1.23 +/*
    1.24 + * Function prototypes
    1.25 + */
    1.26 +static void     update_service_details(MMythEpgGridWidget * object,
    1.27 +                                       gpointer arg1, gpointer user_data);
    1.28 +static gboolean key_press_epg_grid_view(GtkWidget * widget,
    1.29 +                                        GdkEventKey * event,
    1.30                                          gpointer user_data);
    1.31  
    1.32  static GtkWidget *mmyth_epg_grid_widget = NULL;
    1.33  
    1.34 -/* is a GtkEventBox */
    1.35 +/*
    1.36 + * is a GtkEventBox 
    1.37 + */
    1.38  static GtkWidget *program_details_area = NULL;
    1.39  static GtkWidget *details_main_hbox = NULL;
    1.40  static GtkWidget *details_vbox = NULL;
    1.41  static GtkWidget *details_logo_vbox = NULL;
    1.42  
    1.43 -/* update signal callback from MMythEpgGridWidget */
    1.44 +/*
    1.45 + * update signal callback from MMythEpgGridWidget 
    1.46 + */
    1.47  static void
    1.48 -update_service_details(MMythEpgGridWidget *object, gpointer arg1, gpointer user_data) 
    1.49 +update_service_details(MMythEpgGridWidget * object, gpointer arg1,
    1.50 +                       gpointer user_data)
    1.51  {
    1.52 -	g_return_if_fail(arg1 != NULL);
    1.53 +    g_return_if_fail(arg1 != NULL);
    1.54  
    1.55 -	EpgGridItem *epg_grid_item = (EpgGridItem *) arg1;
    1.56 -	
    1.57 -	gchar sel_prog_desc[100] = "<big><b>";
    1.58 -	gchar time_buffer[50];
    1.59 +    EpgGridItem    *epg_grid_item = (EpgGridItem *) arg1;
    1.60  
    1.61 -    /* FIXME: get first content from content_list*/
    1.62 -    GMythProgramInfo *proginfo = (GMythProgramInfo *) epg_grid_item->proginfo;
    1.63 +    gchar           sel_prog_desc[100] = "<big><b>";
    1.64 +    gchar           time_buffer[50];
    1.65  
    1.66 -    if(proginfo) {
    1.67 -        GString *prog_name = proginfo->title;    
    1.68 -        GString *service_name = proginfo->chanid;
    1.69 -           
    1.70 -    	if(details_vbox != NULL)
    1.71 -  	        gtk_container_remove (GTK_CONTAINER (details_main_hbox), details_vbox);	
    1.72 -    
    1.73 -        /* update service description */
    1.74 +    /*
    1.75 +     * FIXME: get first content from content_list
    1.76 +     */
    1.77 +    GMythProgramInfo *proginfo =
    1.78 +        (GMythProgramInfo *) epg_grid_item->proginfo;
    1.79 +
    1.80 +    if (proginfo) {
    1.81 +        GString        *prog_name = proginfo->title;
    1.82 +        GString        *service_name = proginfo->chanid;
    1.83 +
    1.84 +        if (details_vbox != NULL)
    1.85 +            gtk_container_remove(GTK_CONTAINER(details_main_hbox),
    1.86 +                                 details_vbox);
    1.87 +
    1.88 +        /*
    1.89 +         * update service description 
    1.90 +         */
    1.91          strcat(sel_prog_desc, service_name->str);
    1.92          strcat(sel_prog_desc, "</b></big>");
    1.93 -    
    1.94 -        GtkWidget *fst_line_lbl = gtk_label_new(NULL);
    1.95 -        gtk_misc_set_alignment (GTK_MISC(fst_line_lbl), 0.0, 0.0); 
    1.96 -        gtk_label_set_markup(GTK_LABEL(fst_line_lbl), sel_prog_desc);     
    1.97  
    1.98 -        /* freeing char[] */
    1.99 +        GtkWidget      *fst_line_lbl = gtk_label_new(NULL);
   1.100 +        gtk_misc_set_alignment(GTK_MISC(fst_line_lbl), 0.0, 0.0);
   1.101 +        gtk_label_set_markup(GTK_LABEL(fst_line_lbl), sel_prog_desc);
   1.102 +
   1.103 +        /*
   1.104 +         * freeing char[] 
   1.105 +         */
   1.106          sel_prog_desc[0] = 0;
   1.107          strcat(sel_prog_desc, "\t");
   1.108 -        strcat(sel_prog_desc, prog_name->str);    
   1.109 -            	        		
   1.110 -        struct tm loctime_start, loctime_end;
   1.111 -    
   1.112 +        strcat(sel_prog_desc, prog_name->str);
   1.113 +
   1.114 +        struct tm       loctime_start,
   1.115 +                        loctime_end;
   1.116 +
   1.117          // Convert it to local time representation. 
   1.118 -        /* FIXME: conversion from time to localtime is different
   1.119 -        in different machines */
   1.120 -        long int schedule_start_time = proginfo->startts->tv_sec;
   1.121 -        long int schedule_end_time   = proginfo->endts->tv_sec;
   1.122 -    
   1.123 +        /*
   1.124 +         * FIXME: conversion from time to localtime is different in
   1.125 +         * different machines 
   1.126 +         */
   1.127 +        long int        schedule_start_time = proginfo->startts->tv_sec;
   1.128 +        long int        schedule_end_time = proginfo->endts->tv_sec;
   1.129 +
   1.130          if (localtime_r(&schedule_start_time, &loctime_start) == NULL) {
   1.131 -            g_warning ("localtime_r error in mmyth_epg_grid_view!\n");
   1.132 +            g_warning("localtime_r error in mmyth_epg_grid_view!\n");
   1.133          }
   1.134 -    
   1.135 -        #if 0 
   1.136 -            fprintf (stderr, asctime (loctime_start)); 
   1.137 -        #endif
   1.138 -    
   1.139 -        strftime (time_buffer, 100, "  %H:%M - ", &loctime_start);
   1.140 -        strcat(sel_prog_desc, time_buffer );
   1.141 -    
   1.142 +#if 0
   1.143 +        fprintf(stderr, asctime(loctime_start));
   1.144 +#endif
   1.145 +
   1.146 +        strftime(time_buffer, 100, "  %H:%M - ", &loctime_start);
   1.147 +        strcat(sel_prog_desc, time_buffer);
   1.148 +
   1.149          if (localtime_r(&schedule_end_time, &loctime_end) == NULL) {
   1.150 -            g_warning ("localtime_r error in mmyth_epg_grid_view!\n");
   1.151 +            g_warning("localtime_r error in mmyth_epg_grid_view!\n");
   1.152          }
   1.153 +#if 0
   1.154 +        fprintf(stderr, asctime(loctime_end));
   1.155 +#endif
   1.156  
   1.157 -        #if 0
   1.158 -            fprintf (stderr, asctime (loctime_end));     		    
   1.159 -        #endif
   1.160 -    
   1.161 -        strftime (time_buffer, 100, "%H:%M\n", &loctime_end);
   1.162 -        strcat(sel_prog_desc, time_buffer );
   1.163 -    
   1.164 -        GtkWidget *snd_line_lbl = gtk_label_new(NULL);
   1.165 -        gtk_misc_set_alignment (GTK_MISC(snd_line_lbl), 0.0, 0.0); 
   1.166 -        gtk_label_set_markup(GTK_LABEL(snd_line_lbl), sel_prog_desc);     
   1.167 -    
   1.168 +        strftime(time_buffer, 100, "%H:%M\n", &loctime_end);
   1.169 +        strcat(sel_prog_desc, time_buffer);
   1.170 +
   1.171 +        GtkWidget      *snd_line_lbl = gtk_label_new(NULL);
   1.172 +        gtk_misc_set_alignment(GTK_MISC(snd_line_lbl), 0.0, 0.0);
   1.173 +        gtk_label_set_markup(GTK_LABEL(snd_line_lbl), sel_prog_desc);
   1.174 +
   1.175          // add the current selected program description to the label
   1.176          details_vbox = gtk_vbox_new(FALSE, 0);
   1.177 -        GtkWidget *fst_line_hbox = gtk_hbox_new(FALSE, 0);        
   1.178 -        
   1.179 -        gtk_box_pack_start (GTK_BOX (fst_line_hbox),
   1.180 -                            fst_line_lbl, FALSE, FALSE, 6);
   1.181 -        gtk_box_pack_start (GTK_BOX (details_vbox),
   1.182 -                            fst_line_hbox, FALSE, FALSE, 0);
   1.183 -        gtk_box_pack_start (GTK_BOX (details_vbox),
   1.184 -                            snd_line_lbl, FALSE, FALSE, 0);
   1.185 -        gtk_box_pack_start (GTK_BOX (details_main_hbox),
   1.186 -                            details_vbox, FALSE, FALSE, 0);
   1.187 -        
   1.188 +        GtkWidget      *fst_line_hbox = gtk_hbox_new(FALSE, 0);
   1.189 +
   1.190 +        gtk_box_pack_start(GTK_BOX(fst_line_hbox),
   1.191 +                           fst_line_lbl, FALSE, FALSE, 6);
   1.192 +        gtk_box_pack_start(GTK_BOX(details_vbox),
   1.193 +                           fst_line_hbox, FALSE, FALSE, 0);
   1.194 +        gtk_box_pack_start(GTK_BOX(details_vbox),
   1.195 +                           snd_line_lbl, FALSE, FALSE, 0);
   1.196 +        gtk_box_pack_start(GTK_BOX(details_main_hbox),
   1.197 +                           details_vbox, FALSE, FALSE, 0);
   1.198 +
   1.199          gtk_widget_show_all(details_main_hbox);
   1.200 -    }        
   1.201 +    }
   1.202  }
   1.203  
   1.204 -/* Callback for hardware keys */
   1.205 -static gboolean
   1.206 -key_press_epg_grid_view(GtkWidget * widget, 
   1.207 +/*
   1.208 + * Callback for hardware keys 
   1.209 + */
   1.210 +static          gboolean
   1.211 +key_press_epg_grid_view(GtkWidget * widget,
   1.212                          GdkEventKey * event, gpointer user_data)
   1.213  {
   1.214 -    MMythEpgGridWidget *mmyth_epg_grid_widget = (MMythEpgGridWidget *) user_data;
   1.215 +    MMythEpgGridWidget *mmyth_epg_grid_widget =
   1.216 +        (MMythEpgGridWidget *) user_data;
   1.217  
   1.218 -    return mmyth_epg_grid_widget_key_press(mmyth_epg_grid_widget, widget, event); 
   1.219 +    return mmyth_epg_grid_widget_key_press(mmyth_epg_grid_widget, widget,
   1.220 +                                           event);
   1.221  }
   1.222  
   1.223 -GtkWidget *
   1.224 -epg_grid_view_new (MMythUi* mmyth_ui) 
   1.225 +GtkWidget      *
   1.226 +epg_grid_view_new(MMythUi * mmyth_ui)
   1.227  {
   1.228 -    GtkWidget *scrolled_window;
   1.229 -    scrolled_window = gtk_scrolled_window_new (NULL, NULL);
   1.230 -    gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
   1.231 -                                    GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);                   
   1.232 -    
   1.233 -    gtk_widget_modify_bg(scrolled_window, GTK_STATE_NORMAL, &main_bg_color);  
   1.234 -    
   1.235 -    GtkWidget *main_vbox = gtk_vbox_new (FALSE, 0);      
   1.236 -    //gtk_container_set_border_width(main_vbox, 4);        
   1.237 -    
   1.238 -    GtkWidget *details_event_box = gtk_event_box_new();               
   1.239 -    gtk_widget_modify_bg(details_event_box, GTK_STATE_NORMAL, &main_bg_color);  
   1.240 -    
   1.241 -    program_details_area = gtk_vbox_new (FALSE, 0);
   1.242 -    gtk_container_add (GTK_CONTAINER (details_event_box),
   1.243 -                       program_details_area);   
   1.244 -    gtk_container_set_border_width(GTK_CONTAINER (program_details_area), 4);        
   1.245 +    GtkWidget      *scrolled_window;
   1.246 +    scrolled_window = gtk_scrolled_window_new(NULL, NULL);
   1.247 +    gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window),
   1.248 +                                   GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
   1.249  
   1.250 -	details_main_hbox = gtk_hbox_new (FALSE, 10);    
   1.251 +    gtk_widget_modify_bg(scrolled_window, GTK_STATE_NORMAL,
   1.252 +                         &main_bg_color);
   1.253  
   1.254 -	gtk_box_pack_start (GTK_BOX (program_details_area),
   1.255 -	                    details_main_hbox, FALSE, FALSE, 0);                    
   1.256 -	                    
   1.257 -	details_logo_vbox = gtk_vbox_new (FALSE, 0);      	 
   1.258 -    
   1.259 -	GtkWidget *details_desc_vbox = gtk_vbox_new (FALSE, 0);      
   1.260 +    GtkWidget      *main_vbox = gtk_vbox_new(FALSE, 0);
   1.261 +    // gtk_container_set_border_width(main_vbox, 4); 
   1.262  
   1.263 -    gtk_box_pack_start (GTK_BOX (details_main_hbox),
   1.264 -	                    details_desc_vbox, FALSE, FALSE, 0);                    
   1.265 -    gtk_box_pack_start (GTK_BOX (details_main_hbox),
   1.266 -	                    details_logo_vbox, FALSE, FALSE, 0);                    	
   1.267 -	
   1.268 -    gtk_widget_set_size_request (program_details_area, -1, 120);          
   1.269 -    
   1.270 +    GtkWidget      *details_event_box = gtk_event_box_new();
   1.271 +    gtk_widget_modify_bg(details_event_box, GTK_STATE_NORMAL,
   1.272 +                         &main_bg_color);
   1.273 +
   1.274 +    program_details_area = gtk_vbox_new(FALSE, 0);
   1.275 +    gtk_container_add(GTK_CONTAINER(details_event_box),
   1.276 +                      program_details_area);
   1.277 +    gtk_container_set_border_width(GTK_CONTAINER(program_details_area), 4);
   1.278 +
   1.279 +    details_main_hbox = gtk_hbox_new(FALSE, 10);
   1.280 +
   1.281 +    gtk_box_pack_start(GTK_BOX(program_details_area),
   1.282 +                       details_main_hbox, FALSE, FALSE, 0);
   1.283 +
   1.284 +    details_logo_vbox = gtk_vbox_new(FALSE, 0);
   1.285 +
   1.286 +    GtkWidget      *details_desc_vbox = gtk_vbox_new(FALSE, 0);
   1.287 +
   1.288 +    gtk_box_pack_start(GTK_BOX(details_main_hbox),
   1.289 +                       details_desc_vbox, FALSE, FALSE, 0);
   1.290 +    gtk_box_pack_start(GTK_BOX(details_main_hbox),
   1.291 +                       details_logo_vbox, FALSE, FALSE, 0);
   1.292 +
   1.293 +    gtk_widget_set_size_request(program_details_area, -1, 120);
   1.294 +
   1.295      mmyth_epg_grid_widget = mmyth_epg_grid_widget_new();
   1.296 -    g_signal_connect(mmyth_epg_grid_widget, "selection_updated", 
   1.297 -                     G_CALLBACK (update_service_details), NULL);    
   1.298 +    g_signal_connect(mmyth_epg_grid_widget, "selection_updated",
   1.299 +                     G_CALLBACK(update_service_details), NULL);
   1.300  
   1.301 -    /* select by default the first service */
   1.302 -    /* depends on mount services */
   1.303 +    /*
   1.304 +     * select by default the first service 
   1.305 +     */
   1.306 +    /*
   1.307 +     * depends on mount services 
   1.308 +     */
   1.309      if (MMYTH_EPG_GRID_WIDGET(mmyth_epg_grid_widget)->epg_view_model) {
   1.310 -	    GList *fst_service = (GList *) 
   1.311 -	    	MMYTH_EPG_GRID_WIDGET(mmyth_epg_grid_widget)->epg_view_model->data;
   1.312 -    	mmyth_epg_grid_widget_update_service(MMYTH_EPG_GRID_WIDGET(mmyth_epg_grid_widget),
   1.313 -                                         fst_service);
   1.314 +        GList          *fst_service = (GList *)
   1.315 +            MMYTH_EPG_GRID_WIDGET(mmyth_epg_grid_widget)->epg_view_model->
   1.316 +            data;
   1.317 +        mmyth_epg_grid_widget_update_service(MMYTH_EPG_GRID_WIDGET
   1.318 +                                             (mmyth_epg_grid_widget),
   1.319 +                                             fst_service);
   1.320      }
   1.321 -    
   1.322 -    gtk_box_pack_start (GTK_BOX (main_vbox),
   1.323 -                        details_event_box, FALSE, FALSE, 0); 
   1.324 -    gtk_box_pack_start (GTK_BOX (main_vbox),
   1.325 -                        gtk_hseparator_new(), FALSE, FALSE, 0);         
   1.326 -    gtk_box_pack_start (GTK_BOX (main_vbox),
   1.327 -                        mmyth_epg_grid_widget, FALSE, FALSE, 0);                    
   1.328  
   1.329 -    gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_window),
   1.330 -                                           main_vbox);    
   1.331 -    
   1.332 -    /* Add hardware button listener to application */
   1.333 -    g_signal_connect(mmyth_ui->main_window, "key_press_event", 
   1.334 -                     G_CALLBACK (key_press_epg_grid_view), mmyth_epg_grid_widget);    
   1.335 +    gtk_box_pack_start(GTK_BOX(main_vbox),
   1.336 +                       details_event_box, FALSE, FALSE, 0);
   1.337 +    gtk_box_pack_start(GTK_BOX(main_vbox),
   1.338 +                       gtk_hseparator_new(), FALSE, FALSE, 0);
   1.339 +    gtk_box_pack_start(GTK_BOX(main_vbox),
   1.340 +                       mmyth_epg_grid_widget, FALSE, FALSE, 0);
   1.341  
   1.342 -    gtk_widget_show_all (scrolled_window);
   1.343 -    
   1.344 +    gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW
   1.345 +                                          (scrolled_window), main_vbox);
   1.346 +
   1.347 +    /*
   1.348 +     * Add hardware button listener to application 
   1.349 +     */
   1.350 +    g_signal_connect(mmyth_ui->main_window, "key_press_event",
   1.351 +                     G_CALLBACK(key_press_epg_grid_view),
   1.352 +                     mmyth_epg_grid_widget);
   1.353 +
   1.354 +    gtk_widget_show_all(scrolled_window);
   1.355 +
   1.356      return scrolled_window;
   1.357  }
   1.358  
   1.359  /*
   1.360 -DVBHScheduleEvent * 
   1.361 -mmyth_epg_grid_view_get_selected_schedule()
   1.362 -{
   1.363 -    return mmyth_epg_grid_get_selected_schedule
   1.364 -            (MMYTH_EPG_GRID_WIDGET(mmyth_epg_grid_widget));
   1.365 -}
   1.366 -*/
   1.367 + * DVBHScheduleEvent * mmyth_epg_grid_view_get_selected_schedule() {
   1.368 + * return mmyth_epg_grid_get_selected_schedule
   1.369 + * (MMYTH_EPG_GRID_WIDGET(mmyth_epg_grid_widget)); } 
   1.370 + */