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, 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

(X) not possible (./) defined Warning /!\ undefined

Use case

Phone

Tablet

PC

What is the time right now?

(./) status bar

(./) menu bar

What is the date?

(./) clock menu

(./) clock menu

Change the time and/or date

(./) System Settings “Time & Date”

(./) System Settings “Time & Date”

Configure automatic time correction

(./) System Settings “Time & Date”

(./) System Settings “Time & Date”

Copy date/time for pasting

(X)

(X)

What is the time/date somewhere else?

(./) Clock app

(./) clock menu

When is sunrise/sunset?

(X)

(X)

Change 12-hour/24-hour display

(X)

(./) System Settings “Time & Date” (for menu only)

Change other display format settings

(X)

(./) System Settings “Time & Date” (for menu only)

Use a custom display format

(X)

(./) gsettings

Create an event/appointment

(X)

(./) clock menu

See upcoming events

(./) “Upcoming” menu

(./) clock menu

Set a countdown timer

(X)

(X)

learn that today is World Gin Day

(X)

(X)

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

(X)

(X)

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

(X)

(X)

“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

Erratum: “Coming events” should be “Calendar events”.

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 “Calendar 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 and tablet

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 insensitive item showing the current date and time. What follows those depends on the carrier and data connection.

phone-settings-time-and-date.png

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

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

An informative carrier is one that provides time information of known time zone; an uninformative carrier is one that doesn’t. Automatic setting is possible if you are using an informative carrier (getting timezone + time from the carrier), or if you have a data connection of any type (getting timezone + time from NTP).

Situations where automatic setting is impossible might be temporary — for example, if you are in Flight Mode, or if you are overseas and temporarily using an uninformative carrier. So in those situations you should be able to leave the automatic setting as it is. But you should not be able to switch from manual to automatic, because that would imply that automatic setting is available when it isn’t.

Therefore:

The “Automatic” and “Manually” options should be:

If automatic setting is possible:

sensitive

If automatic setting is not possible:

sensitive if already set to “Automatically”, insensitive if set to “Manually”

And if the setting is:

“Manually”, and “Automatic” is selectable:

“Manually”, and “Automatic” is not selectable:

“Automatically”, but automatic setting is not in effect:

“Automatically” and automatic setting is in effect:

“Set Time & Date…” button:

(./) should be present

(X) should not be present

an explanatory caption:

(X) should not be present

“Setting the time and date automatically requires a cellular or data connection.”

(X) should not be present

Cellular Settings…” button:

(X) should not be present

(./) should be present

(X) should not be present

Wi-Fi Settings…” button:

(X) should not be present

(./) should be present

(X) should not be present

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

The “Set Time & Date…” button should open a “Set Time & Date” dialog containing “Time” and “Date” fields that constantly update until you select either 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. As with any search field, any series of letters immediately followed by a space or punctuation character should match only complete words, while any series of letters at the end of the string should match both complete words and the beginnings of words (bugs 1454186, 1364662). (In the terms being searched, a “word” is a series of letters that is immediately preceded by the start of the string or any non-letter character, and immediately followed by the end of the string or any non-letter character.) In addition, to avoid duplication, a suburb (PPLX) should not be included in search results whenever a larger settlement (PPL, PPLA, PPLC) that has the same time zone is present in the same search results (bug 1454195).

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. If one of the search results is the current manually-chosen location (bug 1494860), 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.

Calendar events

The calendar events section should be present on the PC whenever you are logged in and “Calendar events” is checked, and on the phone whenever it is unlocked. It should not be present at the login/lock screen, or in the standalone installer session.

To avoid a giant menu on the PC, and to avoid pushing lower menu items off-screen on the phone, the menu should show the menu should show the next five calendar events, if any. If there are more than five, the events shown should be, in order of priority:

  1. any events that start or end (bug 1329048) after the current minute today;

  2. any full-day events that span all of today (bug 1302004);

  3. any events that start or end tomorrow;
  4. any events that start or end the day after tomorrow; and so on.

The list might include multiple occurrences of the same event (bug 1515821).

However, the display order should be the reverse: full-day events first (since they start first), part-day events afterward in chronological order. If multiple events have exactly the same start+end time, they should be sorted alphabetically.

Each event item should be displayed as an ordinary menu item, consisting of:

  • an icon representing what kind of event it is (appointment, meeting, etc), and for calendar events ideally tinted depending on which calendar it comes from (Personal, Work, etc);

  • the title of the event, sanitized and ellipsized to fit on one line if necessary;
  • at the opposite side, the time of the event:
    • “all day” for an event that covers the entire day; otherwise
    • “ends {time}” if the date is today and the event has already started; otherwise
    • “ends {time}” if the event ends on the selected date but started before the selected date; otherwise
    • “{time}” for the start time.

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).

The list should be followed by a “{number} More…” item that opens the calendar app to today, or is disabled if no recognized calendar app is installed.

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.

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 2017-02-01 18:31:49 by mpt)