103 lines
3.6 KiB
Plaintext
103 lines
3.6 KiB
Plaintext
# Internals #
|
|
|
|
Description of some internals of Gnome Calendar Application
|
|
|
|
* mainToolbar object:
|
|
|
|
Has 3 states:
|
|
1. Overview
|
|
2. View Event
|
|
3. Edit Event (this one could act as New Event View,
|
|
or even as New anything view)
|
|
|
|
* 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<uid, ECalComponent>`
|
|
(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
|
|
|
|
Design
|
|
|
|
<pre style="font-family: Mono;">
|
|
+- GtkClutter.Embed::ClutterBox(BoxLayout) ----------------------------------+
|
|
| |
|
|
| +- _body_actor::ClutterBox(BoxLayout) --------------------------------+ |
|
|
| | | |
|
|
| | +- _main_toolbar -----------------------------------------------+ | |
|
|
| | | | | |
|
|
| | +---------------------------------------------------------------+ | |
|
|
| | +- _contents_actor::ClutterBox(BinLayout) ----------------------+ | |
|
|
| | | | | |
|
|
| | | +- _sources_actor ----------------------------------------+ | | |
|
|
| | | | | | | |
|
|
| | | +---------------------------------------------------------+ | | |
|
|
| | | | | |
|
|
| | | +- _notebook_actor ---------------------------------------+ | | |
|
|
| | | | | | | |
|
|
| | | | | | | |
|
|
| | | | | | | |
|
|
| | | +---------------------------------------------------------+ | | |
|
|
| | +---------------------------------------------------------------+ | |
|
|
| | | |
|
|
| +---------------------------------------------------------------------+ |
|
|
+----------------------------------------------------------------------------+
|
|
</pre>
|
|
|
|
* 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 actual date
|
|
|
|
* Has `set_view/update_view` method
|
|
For updating the view content by talking to GcalManager
|
|
about events and dates of the view
|