Thunderbird2:NewMailAlerts
Tracked by: bug 312940
Contents
Design Overview
Objectives
The primary objectives of this project are to:
- Make the existing new mail notification alert more informative and helpful by including information like subject, sender and the first line of message text.
Background
Thunderbird has always had an animated new mail alert notification window which informs the user that a particular mail account has new messages. The current alert appears in the lower right hand corner of the window, sliding up into view and then sliding back down out of view again.
Requirements
The new UI should contain the following pieces of information:
- Number of new messages for the account triggering the alert
- The name of the account with new mail
- For the first 'n' messages, include the subject, sender, and the first line or so of message body text for each message.
- Improve the animation effect used to show the alert from the existing 'slide' to a fade transitition effect.
- Add a close button to allow users to close the alert by hand
- Left clicking the new mail icon in the Windows system tray should re-open the new mail alert notification.
Design
Here's the new design showing the new UI elements we added to the alert.
Tracking Bugs
For the most part, this new feature has been implemented already. For details, see the following bugs used to implement this work:
- Bug 312940 --> the meta bug for this feature.
- Bug 330523 --> replacing the animation with a fade effect.
- Bug 329954 --> Re-open the alert on left clicking the biff icon. Add a close button.
Front End Implementation
The new mail source code can be found here:
- newmailalert.xul
- newmailalert.js
- newmailalert.css
- mailWidgets.xml --> a folder parsing widget which generates and presents the subject, sender and preview text for each unread message in the folder.
Back End Implementation
Showing the first line of the message body in the alert notification proved challenging for IMAP where we typically don't fetch the message body until the user tries to read the message. We had to explicitly request the first 'n' bytes of the message. This is an asynchronous operation that happens after the client is informed of the new message.