Sidebar

Level: easy to medium

A few calendars out there have a sidebar with a list of events, and a date navigator. If it's a good idea and brings real improvements to the workflow of our users, this widget is desired in Calendar.

Design Tasks:

Collect visuals and investigate how other calendars implement the sidebar

Design the elements and the behavior of Calendar's sidebar

(After implementation) Run A/B tests and measure how the sidebar improved or not users' workflow.

Dev Tasks:

Implement the sidebar There's a rough prototype available in wip/gbsneto/sidebar branch.

Add the UI hooks to show/hide the sidebar

QA Tasks:

[ ] It is possible to navigate through dates using the sidebar

[ ] The sidebar can be toggled on and off

[ ] The sidebar visibility is persistent across reboots

[ ] No issues were introduced

Weather Forecast

Level: easy to medium

It would be useful to show weather information for the next 3 days.

Design Tasks:

(None)

Dev Tasks:

Add libgweather dependency

Use libgweather to gather forecast information

Show forecast information in Month and Week views

QA Tasks:

[ ] Weather forecast is displayed for the following 3 days in Month and Week view

[ ] No weather forecast is displayed when offline

[ ] No issues were introduced

Compress Non-Work Time in Week View

Level: medium

Non-work time (e.g. between 20pm and 7am) can be left out of the Week view, and reduce the vertical space required to show the Week grid.

When collapsed, these regions displayed like a single cell, and events are grouped in there as such. Google Calendar has a good reference implementation of this feature.

Design Tasks:

(None)

Dev Tasks:

Add support to collapsable regions in Week grid

Add a GSettings key to store the

Show forecast information in Month and Week views

QA Tasks:

[ ] Weather forecast is displayed for the following 3 days in Month and Week view

[ ] No weather forecast is displayed when offline

[ ] No issues were introduced

Timezone Selector

Level: medium to hard

GNOME Calendar can barely deal with timezones, but cannot modify nor display them. This may lead to confusion, and doesn't cover an important use case for calendaring apps.

Design Tasks:

Define where the timezone selector will stay.

Should we reuse the timezone editor from Evolution? Or design a new one?

How should it look like? A map, and the user visually selects a place? No UI at all, only allow the user to type a place? Start and end times of an event can be different (e.g. when you're travelling across timezones, and your flight or train leaves at +0200 and stops at +0400) It should also not clutter the interface



Dev Tasks:

Create a new class called *?GcalTimeZone*, with utility APIs around it

Add the UI hooks to view and select the timezone of a given time

QA Tasks:

[ ] Timezones are now visible and editable

[ ] Editing a timezone works correctly

[ ] The timezones are persistent across reboots

[ ] No regressions are introduced

New Animations

Level: hard

The transitions between weeks, months and years in Calendar are plain static right now, and this is not good. The lack of transitions does not give the proper visual feedback and may confuse users.

Thanks to Christian Hergert, author of Builder, there is a new library called Dazzle with many animation utilities. I'm also reworking a few widgets to be more animation-friendly, but someone needs to actually sit down and add them.

Design Tasks:

Define which animations should be implemented. My proposal: Week view: scroll horizontally Month view: scroll vertically Year view: scroll vertically Newly-added event runs an "explosion" animation



Dev Tasks:

Import libdazzle in Calendar codebase

Refactor any code if necessary

Add the animations

QA Tasks: