Main Page | Modules | Data Structures | File List | Data Fields | Globals | Related Pages

gtask-ui-manager.c

Go to the documentation of this file.
00001 #include <gtask-ui/gtask-ui-manager.h>
00002 
00003 #include <gtask/gtask-task-packet.h>
00004 
00005 #include "gtask-internals.h"
00006 
00009 /* @{ */
00010 
00011 #define WANT_WINDOWS_KEY "/apps/gtask/enable_per_program_window"
00012 
00013 static gpointer parent_class;
00014 
00015 static void
00016 gtask_ui_manager_class_init( GTaskUIManagerClass *klass );
00017 
00018 static void
00019 gtask_ui_manager_init( GTaskUIManager *ui_manager, gpointer g_class );
00020 
00021 static void
00022 gtask_ui_manager_dispose( GObject *obj );
00023 
00024 static void
00025 gtask_ui_manager_finalize( GObject *obj );
00026 
00027 static void
00028 gtask_ui_manager_task_window_destroyed( GtkObject *obj, gpointer data );
00029 
00030 static void
00031 gtask_ui_manager_private_pref_change( GConfClient *client,
00032                                       guint conn_id,
00033                                       GConfEntry *entry,
00034                                       gpointer data);
00035 
00036 GType gtask_ui_manager_get_type( void ) {
00037     static GType type = 0;
00038 
00039     if( type == 0 ) {
00040         static const GTypeInfo info = {
00041             sizeof( GTaskUIManagerClass ),
00042             NULL,   /* base init */
00043             NULL,   /* base_finalize */
00044             (GClassInitFunc) gtask_ui_manager_class_init,   /* class_init */
00045             NULL,   /* class_finalize */
00046             NULL,   /* class_data */
00047             sizeof( GTaskUIManager ),
00048             0,      /* n_preallocs */
00049             (GInstanceInitFunc) gtask_ui_manager_init
00050         };
00051 
00052         type = g_type_register_static( G_TYPE_OBJECT,
00053                                        "GTaskUIManager",
00054                                        &info,
00055                                        0 );
00056     }
00057 
00058     return type;
00059 }
00060 
00061 static void
00062 gtask_ui_manager_class_init( GTaskUIManagerClass *klass ) {
00063     GObjectClass *gobject_class = G_OBJECT_CLASS( klass );
00064 
00065     parent_class = g_type_class_peek_parent( klass );
00066 
00067     gobject_class->dispose = gtask_ui_manager_dispose;
00068     gobject_class->finalize = gtask_ui_manager_finalize;
00069 }
00070 
00071 static void
00072 gtask_ui_manager_init( GTaskUIManager *ui_manager, gpointer g_class ) {
00073     GTaskUIManagerPrivate *private;
00074 
00075     private = g_new0( GTaskUIManagerPrivate, 1 );
00076 
00077     private->gconf_client = gconf_client_get_default( );
00078     private->task_window = NULL;
00079     private->display_task_window = TRUE;
00080 
00081     /*
00082     private->display_task_window = gconf_client_get_bool( private->gconf_client,
00083                                                           WANT_WINDOWS_KEY,
00084                                                           NULL );
00085 
00086     private->gconf_notify_id = gconf_client_notify_add( private->gconf_client,
00087                                            WANT_WINDOWS_KEY,
00088                                            gtask_ui_manager_private_pref_change,
00089                                            ui_manager,
00090                                            NULL,
00091                                            NULL );
00092     */
00093 
00094     ui_manager->private = private;
00095 }
00096 
00097 static void
00098 gtask_ui_manager_dispose( GObject *obj ) {
00100 }
00101 
00102 static void
00103 gtask_ui_manager_finalize( GObject *obj ) {
00105 }
00106 
00114 GTaskUIManager *
00115 gtask_ui_manager_new( ) {
00116     return g_object_new( GTASK_UI_MANAGER_TYPE, NULL );
00117 }
00118 
00119 gboolean
00120 gtask_ui_manager_private_task_event( GTaskEventDispatcher *dispatcher,
00121                                      GObject *i_packet,
00122                                      gpointer data )
00123 {
00124     GTaskUIManagerPrivate *private;
00125     GTaskTaskPacket       *packet;
00126     GTaskGenericTask      *task;
00127 
00128     g_debug( "IN: gtask_ui_manager_private_task_event" );
00129 
00130     g_return_val_if_fail( GTASK_IS_UI_MANAGER( data ), FALSE );
00131 
00132     if( !GTASK_IS_TASK_PACKET( i_packet ) ) {
00133         g_debug( "hmmm . . we were not passed a task packet . . ignore" );
00134         return TRUE;
00135     }
00136 
00137     private = GTASK_UI_MANAGER( data )->private;
00138     packet = GTASK_TASK_PACKET( i_packet );
00139 
00140     if( !private->display_task_window ) {
00141         g_debug( "no task window should be displayed" );
00142         return TRUE;
00143     }
00144 
00145     g_debug( "displaying task window" );
00146 
00147     if( !private->task_window ) {
00148         private->task_window = gtask_window_new_with_name( NULL, NULL );
00149 
00150         g_signal_connect( private->task_window,
00151                           "destroy",
00152                           (GCallback) gtask_ui_manager_task_window_destroyed,
00153                           data );
00154 
00155         gtk_widget_show_all( GTK_WIDGET( private->task_window ) );
00156     }
00157 
00158     task = gtask_task_packet_get_task( packet );
00159 
00160 //    gtask_generic_task_dump( task );
00161 
00162     gtask_window_add_task( private->task_window, task );
00163 
00164     g_debug( "LEAVING: gtask_ui_manager_private_task_event" );
00165 
00166     return TRUE;
00167 }
00168 
00169 static void
00170 gtask_ui_manager_task_window_destroyed( GtkObject *obj, gpointer data ) {
00171     GTaskUIManagerPrivate *private;
00172 
00173     g_return_if_fail( GTASK_IS_UI_MANAGER( data ) );
00174 
00175     g_debug( "IN: gtask_ui_manager_task_window_destroyed" );
00176 
00177     private = GTASK_UI_MANAGER( data )->private;
00178 
00179     if( GTK_OBJECT( obj ) == GTK_OBJECT( private->task_window ) ) {
00180         private->task_window = NULL;
00181     }
00182 
00183     g_debug( "LEAVING: gtask_ui_manager_task_window_destroyed" );
00184 }
00185 
00186 static void
00187 gtask_ui_manager_private_pref_change( GConfClient *client,
00188                                       guint conn_id,
00189                                       GConfEntry *entry,
00190                                       gpointer data)
00191 {
00192     GTaskUIManager *ui_manager;
00193     const char     *key = gconf_entry_get_key( entry );
00194     GConfValue     *val;
00195 
00196     g_debug( "IN: gtask_ui_manager_private_pref_change" );
00197 
00198     g_warning( "GConf pref change on key: %s", key );
00199 
00200     g_return_if_fail( GTASK_IS_UI_MANAGER( data ) );
00201 
00202     if( strcmp( key, WANT_WINDOWS_KEY ) != 0 )
00203         return;
00204 
00205     ui_manager = GTASK_UI_MANAGER( data );
00206 
00207     val = gconf_entry_get_value( entry );
00208 
00209     ui_manager->private->display_task_window = gconf_value_get_bool( val );
00210 
00211     g_debug( "LEAVING: gtask_ui_manager_private_pref_change" );
00212 }
00213 
00214 /* @} */

Generated on Mon Feb 2 21:33:25 2004 for libgtask-ui by doxygen 1.3.4