TimeAndDate

“What time is it, Eccles?”
“Um, just a minute, I got it written down here on a piece of paper.”

The Goon Show

On the PC, Ubuntu’s menu bar should, by default, feature a clock menu that optionally shows a monthly calendar, coming events from your calendar, and/or the time at other locations. You should also be able to add an event or set a timer directly from the menu. Time, date, and time zone settings, and options for clock and menu display, should be presented in System Settings. On the phone and tablet, Ubuntu should similarly show a clock in the status bar, with a Time & Date panel in System Settings.

Use cases

These use cases are not necessarily to be satisfied by the same software. But most of them are currently satisfied by the Gnome clock applet, so we should explicitly include, separate, or exclude them.

Use case

PC clock menu

PC settings panel

Phone/tablet Clock app

Phone/tablet settings panel

Find out the time

yes

yes

yes

yes

Find out the date

yes

yes

yes

yes

Find out sunrise/sunset

-

-

-

-

Change how the time/date is presented

-

yes

-

-

Find out the time/date somewhere else

yes

Insert the current time or date into a document

-

-

-

-

Change the time or date

yes

yes

-

yes

Create an event (e.g. appointment) for a particular date or time

yes

-

-

-

See upcoming events

yes

-

-

-

Set a countdown timer

-

yes

-

-

Learn that today is Talk Like a Pirate Day

-

-

-

-

When it's __:__ here, what time will it be in ______?

-

-

-

-

Use a non-Gregorian calendar system-wide (such as the lunar Hijri)

-

-

-

-

24-hour time presentation

yes

menu only

-

-

Custom date/time presentation

yes

yes (using gsettings)

-

-

For each of these:

  • Variation: user is not sighted

Other use cases:

  • Computer learns of change of geographic location (time zone etc)

“Time & Date” settings

PC

settings-time-date.png

The “Time & Date” panel of System Settings should have two tabs, “Time & Date” and “Clock”.

Inside the “Time & Date” tab, all controls should be insensitive by default, except for the “Unlock” button and its caption “to change these settings”. Activating the button should open a PolicyKit alert with the primary text “To change time or date settings, you need to authenticate.”. Whenever the settings are unlocked, the lock button’s caption should be “Lock”, the caption should be “to prevent further changes”, and all the other controls should be sensitive.

The time zone map and associated controls should be exactly the same as used in the Ubuntu installer, except that “UTC” should be offered as the first suggestion whenever you type a substring of it. If focus leaves the field without you choosing a location, a mini error icon should appear inside the trailing end of the field (with the accessible label “(Incomplete)”, and the tooltip “You need to choose a location to change the time zone.”). If the window closes when the location still is not complete, the time zone should not change.

Whenever ntpdate is not installed, “Set the time:” should be set to “Manually”, and choosing “Automatically from the Internet” should prompt you to authenticate to install ntpdate (with the prompt text “You need to install extra software to synchronize the clock with Internet servers.”).

Whenever “Set the time:” is set to “Manually”, the time and date should never be synchronized from any NTP server, but should tick forward from any time and date you manually enter. The “Time:” and “Date:” fields should be locale-sensitive timepicker and datepicker controls, where Left/Right/punctuation keys navigate between segments, number keys replace the current segment, and Up/Down keys increment/decrement the current segment.

Whenever “Set the time:” is set to “Automatically from the Internet”, the “Time:” and “Date:” controls should be insensitive, and the time and date should be kept synchronized with the local NTP server (ntpd) if there is one, or otherwise Internet NTP servers whenever you go online.

To minimize disruption to log files and time-sensitive applications, any interactive change to the system time should be applied only when you choose “Apply” (bug 1102890). “Revert” and “Apply” should be sensitive only when the time and/or date fields have been modified.

settings-clock.png

Inside the “Clock” tab, the “Show a clock in the menu bar” checkbox should be insensitive and unchecked if Unity is not running. The remainder of the controls in the tab should be sensitive only if “Show a clock in the menu bar” is checked.

“Year” should be both insensitive and unchecked whenever “Date and month” is unchecked (bug 465689). Whenever you check “Date and month”, “Year” should become sensitive and return to its previous value.

The “Include week numbers” checkbox and the “Week begins on:” radio buttons should be sensitive only when “Monthly calendar” is checked.

The “Coming events from” menu should default to “Evolution” if it is installed, otherwise “Lightning” if it is installed, otherwise “Subscribed Calendars” (fixing bug 906051).

“Time in auto-detected location” and “Time in other locations” should be unchecked by default. The “Choose Locations…” button should be sensitive only when “Time in other locations” is checked.

Calendar subscriptions

settings-calendars.png

As a simple substitute for people who do not have a full calendar application, choosing “Subscribe/Unsubscribe…” should open a “Subscribed Calendars” window, if it is not open already, and focus it.

In the window, each subscribed calendar should have an icon representing its current state:

  • an error icon, if the last attempt to update it resulted in an error suggesting permanent failure (such as NXDOMAIN or HTTP 4xx);
  • a warning icon, if the last attempt to update it resulted in an error suggesting temporarily failure (such as HTTP 5xx);
  • a pair of spinning arrows, if it is being checked for the first time right now;
  • otherwise, a calendar icon.

The icon should be followed by the calendar’s display name (X-WR-CALNAME) if it is known to have one, otherwise its URL.

Double-clicking a calendar, or pressing Enter while it is selected, should begin editing its URL (even if the space was normally taken up by its display name). Pressing Enter should confirm it (triggering an update immediately if the URL has changed), while pressing Esc should revert the item.

Choosing “+” (which should have the accessible label “Subscribe to a Calendar…”, and the keyboard equivalent “+” whenever a calendar URL is not being edited) should scroll to, and begin editing the URL of, a new calendar item at the end of the table. Pressing Enter should confirm the addition (checking it immediately), while pressing Esc should delete the item.

“–” (which should have the accessible label “Unsubscribe”, and the keyboard equivalent “-” whenever a calendar URL is not being edited) should be sensitive only when at least one calendar item is selected. Activating it should delete the selected item(s) from the list, and select the following item if there is one, otherwise the previous one.

Choosing locations

settings-locations.png

Activating “Choose Locations…” should open the “Locations” window, if it is not open already, and focus it.

In a new user account, the pseudo-location “UTC” should be on by default (both as a hint that it is an available location, and as a useful demo), but “Time in other locations” as a whole should be off by default.

The order of locations in the menu should always match the order of locations in the window. Dragging a location (or pressing Ctrl Up or Ctrl Down while it is selected) should rearrange it in the window, with appropriate drag and drop feedback. Clicking “Sort by Name” should sort the locations alphabetically, and clicking “Sort by Time” should sort them earliest first (and then alphabetically for any with the same time). Each button should be insensitive whenever it would have no effect (for example, when there is only one location, or when the locations are already sorted in that order).

Double-clicking a location, or pressing Enter while it is selected, should begin editing its “Location” cell.

Activating the “+” button (which should have the accessible label “Add a Location…”, and the keyboard equivalent “+” whenever a location is not being edited) should scroll to, and begin editing the “Location” cell of, the incomplete location if there is one, otherwise a new row at the end of the table.

When adding or editing a location, the cell should have an auto-complete menu exactly the same as in the Ubuntu installer, except that (as with the time zone field) “UTC” should be offered as the first suggestion whenever you type a substring of it. Pressing Esc should revert or delete the row, depending on whether it was a confirmed location when editing began. At all times, one item in the menu (by default, the first item) should be highlighted; pressing Enter should select the highlighted item, or if there are currently no suggestions at all, should beep and continue editing.

If focus leaves the field of a confirmed location without a new location being chosen, it should revert to the confirmed location. As with the time zone field, if focus leaves the field of a new row without a location being chosen, a mini error icon should appear inside the trailing end of the field (with the accessible label “(Incomplete)”, and the tooltip “You need to complete this location for it to appear in the menu.”). If the window closes when the location still is not complete, the row should be discarded.

The “–” button (which should have the accessible label “Remove This Location”, and the keyboard equivalent “-” whenever a location is not being edited) should be sensitive only when a row is selected. Activating it should remove the row from the list, and select the following location if there is one, otherwise the previous location.

Presenting times

When presenting the times of upcoming events, and the times in other locations, both in the “Locations” window and in the menu itself:

  • a time today should be shown as just the time (e.g. “3:55 PM”)

  • a full-day event today should be shown as “Today”
  • a time tomorrow should be shown as “Tomorrow” then the time (e.g. “Tomorrow 3:55 PM”)

  • a full-day event tomorrow should be shown as “Tomorrow”
  • a time any other day this week should be shown as the short version of the day and time (e.g. “Wed 3:55 PM”)

  • a full-day event another day this week should be shown as the weekday (e.g. “Friday”)

  • a time after this week should be shown as the short version of the day, date, and time (e.g. “Wed 21 Apr 3:55 PM”)

  • a full-day event after this week should be shown as the short version of the day and date (e.g. “Wed 21 Apr”).

In addition, when presenting the times of upcoming events, the time should be followed by the timezone if it is different from the one the computer is currently set to. For example, “Wed 3:55 PM UTC−5”.

Phone/tablet

phone-settings-time-and-date.png

phone-settings-time-and-date-offline.png

phone-settings-time-and-date-manual.png

In the System Settings “Time & Date” panel, the “Set the time and date:” menu should be followed by radio items for “Automatically” and “Manually”, then an item with the current date and time as its label. These items’ state, and what follows them, should depend on three things: whether the current setting is “Automatically”, whether you have any kind of data connection, and whether you’re connected to an informative carrier, one that provides time information of known time zone.

  • If you have a data connection (cellular or wi-fi) for the device to access an NTP server, or you’re connected to an informative carrier, then automatic time setting is currently in effect. Nothing should follow the items.
  • If you don’t have a data connection (cellular or wi-fi) for the device to access an NTP server, and you’re not connected to a carrier at all, then automatic time setting is not currently possible. The items should be followed by the caption “Setting the time and date automatically requires a cellular or data connection.”, a “Cellular Settings…” button, and a “Wi-Fi Settings…” button.

  • If you don’t have a data connection for the device to access an NTP server, and you’re connected to an uninformative carrier, then automatic time setting is not currently possible. The items should be followed by the caption “Setting the time and date automatically with {carrier name} requires a data connection.”

In either of the cases where automatic time setting is not currently possible, the “Set the time and date:” radio items should be insensitive if “Manually” is already chosen (so you can’t switch to “Automatically” until there’s a suitable connection), but sensitive if “Automatically” is already chosen (so you can switch to “Manually” if you want).

When “Set the time and date:” is set to “Manually”, or it is set to “Automatically” but automatic time setting is not currently possible, the current datestamp item should end in “…”, and selecting it should open the “Set time and date” dialog. When automatic time setting is currently in effect, the current datestamp item should be insensitive.

phone-settings-time-and-date-set.png

The “Set time and date” dialog should be a sheet with “Time” and “Date” fields, each constantly updating until you select one of them for modification. When you do, the relevant picker should appear. The “Set” button should be insensitive until you change the time and/or date.

Time zone

The “Time zone:” navigation item should have the name of the location as its label, and the UTC offset as its value: for example, the label “San Francisco, USA” and the value “UTC–7”. It should navigate to the “Time zone” screen.

phone-settings-time-zone-automatic.png

phone-settings-time-zone-no-location.png

phone-settings-time-zone-manual.png

In the “Time zone” screen, whenever “Set the time zone:” is set to “Automatically”, the menu should be followed by a read-only list item showing the current time zone. If a data connection and/or location detection are not available, this should be followed by a caption:

Data connection not available

Data connection available

Location detection not available

Updating the time zone automatically requires a data connection and location detection.

Updating the time zone automatically requires location detection, which is off.

Location detection available

Updating the time zone automatically requires a data connection.

If no data connection is available, this caption should be followed by the applicable buttons, as for time and date setting above. If location detection is not available, next should be a “Location Settings…” button.

Whenever “Set the time zone:” is set to “Manually”, the menu should be followed by a search field. Whenever there are no search results, the rest of the screen should contain horizontally and vertically centered grey text: “Enter your current location.” if the search field is empty, or “No matching places” if it is not. Otherwise it should contain a scrolling list of search results. Whenever any of the search results are the current time zone, it should be shown as a selected radio item. When you select a different item, it should appear as the selected radio item for one second before navigating back to the main “Time zone” screen.

Indicator and menu

PC

clock-menu.png

Title

Which elements are in the menu title should depend on the “In the clock, show:” settings, and their order should depend on the Language & Text settings (bug 1001595). If “Weekday” and/or “Date and month” is checked, they should be separated from the time — but not from each other — by an en space (U+2002).

The accessible label should be the same as the visible title — except that for screenreading convenience, if “Weekday” and/or “Date and month” are checked, these should be complete, not abbreviated, and the time should go first. For example, if the visible title is “Sun 15 Jul 3:45 PM”, the accessible label should be “3:45 PM Sunday 15 July”.

Date item

The date item should be sensitive only if you are logged in to a normal, guest, or live session, and a known calendar app is installed. The item should have the icon of that app, and choosing it should open the app to today’s date.

In any other circumstance — for example, in a standalone installer session, at the login screen, or when no known calendar app is installed — the item should be insensitive and have no icon.

Monthly calendar

The calendar should be present whenever “Monthly calendar” is checked.

This control is specified here in the absence of a better place to describe it.

The first row should contain four interactive items: two arrows for navigating by month, and two arrows for navigating by year. Activating any of these arrow items should leave it selected and should not close the menu (so that it can be used several times quickly) (fixing bug 740821).

Future work: Make the month + year an activatable item that turns into a text field for entering month and/or year in a variety of formats.

The second row should be insensitive header items for weekdays: “Mo”, “Tu”, “We”, etc. The first day of the week should depend on the “Week starts on:” setting.

Whenever “Include week numbers” is on, the calendar should have an initial column displaying insensitive week numbers.

Normal

With events

Current day

Current day with events

Unhighlighted

27

27

27

27

Highlighted

27

27

27

27

The dates shown in the calendar should behave, and look, as normal grid-layout menu items (fixing bug 741011). Each date should be sensitive only if you are logged in and a known calendar app is installed. Choosing a date should open that date in the calendar application.

If a date item is the currently highlighted menu item, it should have the normal text and background highlight colors for a menu item. If a date has at least one event, its text should be bold. And today’s date should have a thin border around it in the unhighlighted text color (fixing bug 1017595).

For fast interruptible screenreading with the most important information first, the accessible label for each date item should be the date number, followed by the unabbreviated weekday, followed by “(today)” if it is, followed by the number of events in brackets if any. For example, “27 Wednesday (today) (2 events)”.

Within the calendar grid, Left and Right should navigate to the previous and next days, even across weeks and months. Up and Down should navigate to the previous and next weeks within the current month only; beyond the current month they should exit the grid (fixing bug 676222).

When you do exit the grid, it should remember which date was highlighted last time any of them were. For example, if Friday 2nd is highlighted and you press Up (exiting the grid) then Down, or even if you close the menu then reopen it and press Down three times, Friday 2nd should be highlighted once more.

Coming events

The coming events section should be present whenever you are logged in; it should not be present at the login screen or in the standalone installer session.

Whenever “Coming events” is checked, the menu should show the next five calendar events, if any. Next should be “Add Event…”, if the selected calendar source is an application that has registered a way of invoking that function. An “event” in this sense is an appointment, meeting, task start date, task due date, or memo start date.

Each event should be presented as an ordinary menu item. The icon for the item should represent what kind of event it is (appointment, meeting, etc), and for calendar events the icon should be tinted depending on which calendar it comes from (Personal, Work, etc).

If the calendar source is an application, each event should be sensitive, and choosing it in the menu should open the application to edit that event (bug 1307663).

Need to define exact presentation for all-day events.

Set Alarm/Timer

The “Set Alarm/Timer…” item should be present whenever you are logged in; it should not be present at the login screen or in the standalone installer session. Activating it should open the “Set Alarm/Timer” window.

alarm-settings.png timer-settings.png

In the “Alarm” tab, whenever “Alarm:” is set to Off, all other controls should be insensitive. And to avoid going off while being set, an alarm should not be considered set until the “Time:” value has been left the same for five seconds. Whenever an alarm is set, the clock menu should begin with a bell icon, and the “Set Alarm/Timer…” menu item should end with the alarm time in brackets, for example “Set Alarm/Timer… (6:00 AM)”.

In the “Timer” tab, whenever “Count:” is set to “Up”, the time field should be “To:”. Whenever “Count:” is set to “Down”, the time field should be “From:”. The “To:” and “From:” fields should persist their last-used values separately.

In both tabs, the “Sound:” menu should consist of “None”, then a separator, then alphabetically all the system sound effects.

alarm-alert.png

When an alarm goes off, as well as that sound playing, an “Alarm” alert should appear with an alarm clock icon and primary text of the form “It’s {time}.”. Ten seconds later, this should change to “It’s past {time}.”.

When a timer completes and is not set to repeat, an equivalent “Timer” alert should appear with a stopwatch icon and primary text “The {duration} is up.”. When a timer completes and is set to repeat, a notification bubble should appear instead, with a stopwatch icon, “Timer” as its primary text, and “The {duration} is up.” as its secondary text.

Time in other locations

This section should be present only if you are logged in (not at the login screen or in the standalone installer session), and:

Whenever “Time in auto-detected location” is checked, and Ubuntu is able to guess your location, that location and its time should be next in the menu.

Whenever “Time in other locations” is checked, the times in the chosen locations should be present in the menu.

Each location should be presented with the placename on the leading side, and the time on the trailing side. Each time should be presented in the same way as it is in the menu title, except that:

  • the weekday should be included only, and always, if it is different from today local time;
  • seconds should never be included, to reduce redundancy and avoid distraction (bug 1108765).

Activating any location item should change the time zone to that location (with the authorization dialog acting as a confirmation step).

Session variations

This is a summary only; the specifications of individual items are authoritative.

In the guest session and the live session, the indicator and menu should be present as normal.

In the standalone installer session and the login screen:

  • It should not be possible to launch the calendar application. So the date item should be insensitive, and so should every date inside the calendar (but not the calendar navigation controls).
  • The coming-events section should not be present at all.
  • The “Set Alarm/Timer…” item should not be present.
  • The time in other locations should not be present.

Phone/tablet

phone-indicator-clock.png

The indicator should be the current time in the appropriate format for the locale (for example “2:41 PM” or “14:41”). It should be preceded by an alarm clock icon if any alarms are currently set.

The menu header should be “Upcoming”, parallel to “Incoming” for messages.

As on the PC, the menu item showing the current date should open the calendar to that date.

The “Clock” item should be followed by as many alarms and calendar events, in chronological order, fit on the screen without pushing “Time & Date Settings…” off the bottom. If there are none, an insensitive item “No upcoming events or alarms” should appear instead.

Unresolved issues

  • Timezones:
    • Setting the timezone automatically by checking geoip.ubuntu.com. That is, connect to the Internet in Prague and your timezone is automatically changed to that location. This is already done automatically in the installer.
      • How to turn this off.
      • And how to do this if the clock is off.
    • What should happen when you select one of the alternate timezone items in the menu.
  • Reconcile with the Gnome date and time settings redesign.

  • How to present Evolution alarms. (Compare Evolution > "Edit" > "Preferences" > "Calendar & Tasks" > "Alarms" > "Alarms").

    • Maybe a bell icon next to the clock in the menu.
      • But then what if there is no clock in the menu at all? (maybe just show the bell)
  • Presentation of non-Evolution alarms.
  • API for non-Evolution alarms and events.
    • Color for tinting event icons?
      • Use the same color for a dot or something in the dates in the calendar?
  • How to show missed events.
  • Which events to show on the menu? (e.g. from which of my calendars?)
  • How to navigate back to today in the calendar.
  • Keyboard navigation for menu items (a.k.a. keyboard navigation for grid menu items in general).

TimeAndDate (last edited 2014-04-16 07:19:06 by mpt)