Files
federated-calendar/doc/Internals.markdown
T

3.6 KiB

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

+- GtkClutter.Embed::ClutterBox(BoxLayout) ----------------------------------+
|                                                                            |
|  +- _body_actor::ClutterBox(BoxLayout) --------------------------------+   |
|  |                                                                     |   |
|  |  +- _main_toolbar -----------------------------------------------+  |   |
|  |  |                                                               |  |   |
|  |  +---------------------------------------------------------------+  |   |
|  |  +- _contents_actor::ClutterBox(BinLayout) ----------------------+  |   |
|  |  |                                                               |  |   |
|  |  |  +- _sources_actor ----------------------------------------+  |  |   |
|  |  |  |                                                         |  |  |   |
|  |  |  +---------------------------------------------------------+  |  |   |
|  |  |                                                               |  |   |
|  |  |  +- _notebook_actor ---------------------------------------+  |  |   |
|  |  |  |                                                         |  |  |   |
|  |  |  |                                                         |  |  |   |
|  |  |  |                                                         |  |  |   |
|  |  |  +---------------------------------------------------------+  |  |   |
|  |  +---------------------------------------------------------------+  |   |
|  |                                                                     |   |
|  +---------------------------------------------------------------------+   |
+----------------------------------------------------------------------------+
  • 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