# Internals # Description of some internals of Gnome Calendar Application * mainToolbar object (GdHeaderBar type): Has 2 states: 1. Overview 2. Search * GcalApplication * Has dconf-key attribute (To keep the last view and last day selected) * Has command-line option (To open on a specified day) * Has a GcalManager object (To manage source and events, and everything else) * GcalManager * Has a list of GcalStoreUnit containing: 1. Esource, ECalClient,ECalClientView, 2. `GHashTable` (representing *active events* of the view) * Has a list of ESourceGroup * Has `icaltimetype *initial_date, *final_date;` For defining a range to get events from Could have an active query representing the range (s-exp) * Has a list of Events in the active range (a list of ECalComponent) * Emit signals for: 1. objects-added (wrapping ECalClientView) 2. objects-removed (wrapping ECalClientView) 3. events-changed (for time range changing) This signal is emitted so the views knows they have to update the GcalEvent widgets they contain. E.g. when you disable/enable a Calendar in SourcesView widget. * Has a GtkListStore with calendar/sources info. * GcalView * Has NavigationPane * Has icaltimetype: `selected_date` attribute * Has child classes 1. GcalDayView * GcalEvent * Has one source * GcalMainWindow * Has an `active_view` attribute For keeping the type view is actually showing * Has views 1. GcalDayView 2. GcalWeekView 3. GcalMonthView ... * Has icaltimetype attribute For keeping current date * Has `set_view/update_view` method For updating the view content by talking to GcalManager about events and dates of the view