# Flows #

These are some of the flows followed inside the application.

### Adding calendar (`gcal_store_add_source`) ###

Sources are added defined by an URI, at least for now. I think there's
work been done on improving this, but for now, there and URI defining every
source we're adding.

* Check if the URI already existed
  (here will have to take into account relative and absolute URIs)
* If it isn't new end processing.
* Create the ECalClient, add it to the list.
* Open the ECalClient (`e_client_open`)
  * Create ECalClientView using the existing query.
  * Hook to ECalClientView signals
* Retrieve capabilities ? (ask IRC, what's this)
  //FIXME this wil be later implemented, when needed
* Get Object list based on the existing query


### Setting a view in the main window (`gcal_main_window_set_view`) ###

This will work for setting a new view (the app hasn't instanced a view
of that type yet), or for updating an old view with a new time lapse

* Create/Update the view with the selected_date
* Retrieve new time range from view.
* Update time range in store (a `GcalStore`)
* Update `GcalMainWindow.view_type`


### Starting the application ###

* Instantiate every view (here I'm doubt yet if I'll fill the view with it's children event widgets)
* Set every view to the actual date (or the one got from the settings)
* Set the last active view as active (got from the settings)
