renatofilho@20: #ifndef __MMYTH_EPG_GRID_WIDGET_H__
renatofilho@20: #define __MMYTH_EPG_GRID_WIDGET_H__
renatofilho@20: 
renatofilho@20: #include <glib-object.h>
renatofilho@20: #include <gdk/gdk.h>
renatofilho@20: #include <gtk/gtkvbox.h>
renatofilho@20: #include <gtk/gtkeventbox.h>
renatofilho@20: 
rosfran@208: #include <gmyth/gmyth_common.h>
rosfran@208: #include <gmyth/gmyth_backendinfo.h>
renatofilho@20: #define MAX_DISPLAY_CHANS 4
renatofilho@20: 
renatofilho@20: G_BEGIN_DECLS
renatofilho@20: 
renatofilho@20: #define MMYTH_EPG_GRID_WIDGET_TYPE               (mmyth_epg_grid_widget_get_type ())
renatofilho@20: #define MMYTH_EPG_GRID_WIDGET(obj)               (GTK_CHECK_CAST ((obj), MMYTH_EPG_GRID_WIDGET_TYPE, MMythEpgGridWidget))
renatofilho@20: #define MMYTH_EPG_GRID_WIDGET_CLASS(klass)       (GTK_CHECK_CLASS_CAST ((klass), MMYTH_EPG_GRID_WIDGET_TYPE, MMythEpgGridWidgetClass))
renatofilho@20: #define IS_MMYTH_EPG_GRID_WIDGET(obj)            (GTK_CHECK_TYPE ((obj), MMYTH_EPG_GRID_WIDGET_TYPE))
renatofilho@20: #define IS_MMYTH_EPG_GRID_WIDGET_CLASS(klass)    (GTK_CHECK_CLASS_TYPE ((klass), MMYTH_EPG_GRID_WIDGET_TYPE))
renatofilho@20: #define MMYTH_EPG_GRID_WIDGET_GET_CLASS(obj)     (G_TYPE_INSTANCE_GET_CLASS ((obj), MMYTH_EPG_GRID_WIDGET_TYPE, MMythEpgGridWidgetClass))
renatofilho@20: #define MMYTH_EPG_GRID_WIDGET_GET_PRIVATE(obj)   (G_TYPE_INSTANCE_GET_PRIVATE ((obj), MMYTH_EPG_GRID_WIDGET_TYPE, MMythEpgGridWidgetPrivate))
renatofilho@20: 
renatofilho@20: 
renatofilho@20: typedef struct _MMythEpgGridWidget         MMythEpgGridWidget;
renatofilho@20: typedef struct _MMythEpgGridWidgetClass    MMythEpgGridWidgetClass;
renatofilho@20: typedef struct _MMythEpgGridWidgetPrivate  MMythEpgGridWidgetPrivate;
renatofilho@20: 
renatofilho@20: struct _MMythEpgGridWidgetClass
renatofilho@20: {
renatofilho@20:   GtkEventBoxClass parent_class;
renatofilho@20: 
renatofilho@20:   /* callbacks */
renatofilho@20:   /* no one for now */
renatofilho@20: };
renatofilho@20: 
renatofilho@20: struct _MMythEpgGridWidget
renatofilho@20: {
renatofilho@20:     GtkEventBox event_box;
renatofilho@20: 
renatofilho@20:     /* Selected Widgets Logic*/
renatofilho@20:     /* List os Service Model in the current view
renatofilho@20:      * the data of this list are GList for the programs
renatofilho@20:      * of each service */
renatofilho@20:     GList *epg_view_model;
renatofilho@20: 
renatofilho@20:     /* Selected Schedule Item*/
renatofilho@20:     GList *selected_grid_item;  
rosfran@208: 
renatofilho@20: };
renatofilho@20: 
renatofilho@20: 
renatofilho@20: GType          mmyth_epg_grid_widget_get_type        (void);
renatofilho@20: GtkWidget*     mmyth_epg_grid_widget_new             (void);
renatofilho@20: /*DVBHScheduleEvent*    mmyth_epg_grid_get_selected_schedule  (MMythEpgGridWidget * object);*/
renatofilho@20: void           mmyth_epg_grid_widget_update_service  (MMythEpgGridWidget * object, 
renatofilho@20:                                                       GList *epg_grid_item_node);
renatofilho@20: gboolean       mmyth_epg_grid_widget_key_press       (MMythEpgGridWidget * object, 
renatofilho@20:                                                       GtkWidget * widget, 
renatofilho@20:                                                       GdkEventKey * event);
renatofilho@20: 
renatofilho@20: typedef struct _EpgGridItem EpgGridItem;
renatofilho@20: 
renatofilho@20: /* FIXME: auxiliary struct */
renatofilho@20: struct _EpgGridItem {
renatofilho@20: 
renatofilho@20:     GMythProgramInfo *proginfo;
renatofilho@20:     GtkWidget *event_box;
renatofilho@20: 
renatofilho@20:     /* for callback purposes */
renatofilho@20:     MMythEpgGridWidget *object;
renatofilho@20: };
renatofilho@20: 
renatofilho@20: G_END_DECLS
renatofilho@20: 
renatofilho@20: #endif /* __MMYTH_EPG_GRID_WIDGET_H__ */