Notification area that persistently rearranges elements

Embodiments described herein are directed to managing elements within a notification area of a graphical operating system. The elements may include any graphic, logo, or image associated with running software. A user indicates which elements can be displayed in the notification area, consequently creating a list of potentially displayable elements. For each listed element, an order of display, file location, and display status is designated. The user may freely change the order in which elements are displayed in the notification area by repositioning the displayed elements. Elements may be permanently removed from the notification area, resulting in their deletion from the list. Only elements entered into the order list, at the discretion of the user, are displayable within the notification area.

BACKGROUND

Since the advent of graphical user interfaces (GUIs), computers have been configured to graphically represent information and present the graphical information to a user for interaction. No longer do users have to memorize commands for entry at command prompts in order to interact with modern day computer applications. Instead, today's computers usually use graphics to present interactive software to users, so all a user has to do is manipulate an input device (e.g., a mouse) to use various computer applications.

Modern day operating systems (OSs) use a GUI as the primary means of interacting with the user. Examples of such OSs include, for example but without limitation, the various versions of Microsoft Windows® (developed by the Microsoft Corporation® headquartered in Redmond, Wash.), LINUX, and Mac OS (developed by Apple, Inc.® headquartered in Cupertino, Calif.). Some of these OSs display a toolbar area to a user that provides various functionality, such as a START menu (e.g., in Microsoft Windows®) for listing available applications, shortcuts to applications, time, date, etc.

In some OSs, the toolbar also presents a number of elements—which may include unused or transient elements—to the user. Elements, as referred to herein, are icons, indicia, or other graphical representations that are displayed to a user in a notification area (often referred to as a “system tray”) associated with a toolbar. Often, elements are displayed without the user's permission by the initiation of a program. For instance, the OS may execute anti-virus software in a background thread of a computer, resulting in a logo for the anti-virus software being displayed in the notification area and kept there permanently or until the anti-virus software finishes a task. The user typically cannot remove such a logo and therefore has to endure its display. As a result, the portion of the toolbar area used to display elements (i.e., the “notification area”) is often used as an advertising space for presenting logos and graphics for software.

Some elements, referred to herein as “transient elements,” are automatically presented and removed from notification area without the user directly interacting with the element itself. Transient elements are elements that automatically appear and disappear from the notification area without the user directly interacting with the element itself. For example, a printer icon may be displayed whenever a print job is queued or a reminder for a user to change a password may be displayed every three months without the user indicating a desire for their presentation. Others transient elements may be presented in response to a user action, even if the action occurred outside the notification area or toolbar.

Additionally, unused elements may be displayed in the notification area. For example, network & volume elements may be presented unless the user decides to turn them off, or an anti-virus logo may be displayed at all times. An icon for setting up a hardwired network connection may not be useful to the user if the user always uses a wireless Internet connection. Traditionally, many unused and transient elements are displayed automatically, thereby cluttering the notification area with unusable, non-removable elements that the user may or may not understand or use.

SUMMARY

One aspect of the invention is directed to controlling the display of elements in the notification area of a GUI. The user may select which elements can be displayed, thus barring other elements from the notification area. A list, referred to herein as an “order list,” maintains various entries for elements chosen for display. The order list includes an indication of the particular display order for each chosen element, a file for the element, and the display status of the element. When a user repositions the element in the notification area (e.g., drags and drops the element to a different position), the order of the element is updated to reflect the new position. Also, when the user elects to remove the element from the notification area, the element's entry in the order list is deleted. Software managing the display of elements is configured to only display those elements in the order list according to the order designated by the user. Another aspect of the invention is directed to a notification area that displays the elements in the manner previously described.

DETAILED DESCRIPTION

The subject matter described herein is presented with specificity to meet statutory requirements. The description herein, however, is not intended to limit the scope of this patent. Rather, it is contemplated that the claimed subject matter might also be embodied in other ways, to include different steps or combinations of steps similar to the ones described in this document, in conjunction with other present or future technologies. Moreover, although the term “block” may be used herein to connote different elements of methods employed, the term should not be interpreted as implying any particular order among or between various steps herein disclosed.

As one skilled in the art will appreciate, embodiments of the present invention may be embodied as, among other things: a method, system, GUI, or computer-program product that is embodied on one or more tangible computer-readable media. Accordingly, the embodiments may take the form of a hardware embodiment, a software embodiment, or an embodiment combining software and hardware. In one embodiment, the present invention takes the form of a computer-program product that includes computer-useable instructions embodied on one or more computer-readable media. Computer-readable media include both volatile and nonvolatile media as well as removable and nonremovable media.

By way of example, and not limitation, computer-readable media comprise computer-storage media. Computer-storage media, or machine-readable media, include media implemented in any method or technology for storing information. Examples of stored information include computer-useable instructions, data structures, program modules, and other data representations. Computer-storage media include, but are not limited to, random access memory (RAM), read-only memory (ROM), electrically erasable programmable read-only memory (EEPROM), flash memory used independently from or in conjunction with different storage media, such as, for example, compact-disc read-only memory (CD-ROM), digital versatile discs (DVD), holographic media or other optical disc storage, magnetic cassettes, magnetic tape, magnetic disk storage, or other magnetic storage devices. These memory components can store data momentarily, temporarily, or permanently.

Embodiments described herein are directed toward systems for, methods to, and computer-storage media storing instructions for configuring a notification area of a toolbar to control and manage the display of the graphical elements presented in the notification area. In one embodiment, only the elements selected for display by the user are displayed in the notification area. The user may also designate the order the elements may be displayed in the notification area, so particulars elements will be displayed in the same position relative to other elements.

The notification area, as referred to herein, is a portion of a GUI that displays one or more elements. As mentioned above, elements include logos, indicia, and other graphics identifying software being executed by an OS. In one embodiment, the notification area is presented on or appended to the toolbar. Alternatively, the notification area may be presented in a separate GUI window. Because elements are merely renditions of logo, graphics, or image files, elements may be stored in any well-known file format—e.g., icon image file format (ICO), tagged image file format (TIFF or TIF), portable network graphics (PNG), graphics interchange format (GIF), Joint Photographic Experts Group (JPEG), bitmap image file format (BMP), portable document format (PDF), or the like.

The elements described herein may be transient (meaning they automatically appear or disappear without user intervention) or selected for display by the user. Embodiments are not limited to either type of element, however, as either—or a combination thereof—may be incorporated into the notification areas described below.

The notification area may be configured to only display a specific number of elements and provide an overflow feature that, when selected, enlarges the notification area to display additional elements. For example, an arrow pointing away from the notification area may be positioned on the outskirts of the notification. Once the arrow is selected, the notification may be configured to expand and reveal additional elements presented in a specific order. In an alterative embodiment, selection of the overflow feature initiates a separate window or a window appended to the toolbar, both of which display the elements in a particular order.

In one embodiment, a list of elements in a specific order may be maintained, and elements, when displayed, will be presented in relative position to other elements in order. For example, the list may include the following five element: (1) a logo for an e-mail application (e.g., Microsoft Outlook®), (2) a logo for anti-virus software (e.g., Norton AntiVirus® developed by Symantec Corporation® headquartered in Cupertino, Calif.), a graphic indicating a speaker control, and (4) a graphic indicating connections to wireless networks. These four elements may be listed, along with other elements, in the above sequential order as entries in an order list stored in a computing device. In one embodiment, the order list defines what elements can be displayed and the position in the notification area for displaying each element relative to other elements. Thus, the above four elements would be displayed, in one embodiment, in the following order: e-mail application logo, anti-virus software logo, speaker-control graphic, and wireless-network graphic. The list may also dictate the order for presenting elements that are revealed by enabling the extension feature.

Having briefly described a general overview of the embodiments described herein, an exemplary computing device is described below. Referring initially toFIG. 1in particular, an exemplary operating environment for implementing the present invention is shown and designated generally as computing device100. Computing device100is but one example of a suitable computing environment and is not intended to suggest any limitation as to the scope of use or functionality of the invention. Neither should computing device100be interpreted as having any dependency or requirement relating to any one or combination of components illustrated. In one embodiment, computing device100is a conventional computer (e.g., a personal computer or laptop).

Computing device100typically includes a variety of computer-readable media. By way of example, and not limitation, computer-readable media may comprise RAM; ROM; EEPROM; flash memory or other memory technologies; CDROM, DVD or other optical or holographic media; magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or similar tangible media that are configurable to store data and/or instructions relevant to the embodiments described herein.

The components described above in relation to computing device100may also be included in a mobile device. A mobile device, as described herein, refers to any type of mobile phone, handheld device, personal digital assistant (PDA), BlackBerry®, smartphone, digital camera, or other mobile devices (aside from a laptop) capable of communicating wirelessly. One skilled in the art will appreciate that mobile devices will also include a processor and computer-storage media to perform various functions. Embodiments described herein mention to both a computing device and a mobile device. In embodiments, computing devices merely refer to devices that are running applications of which images are captured by the camera in a mobile device.

FIG. 2is a diagram illustrating an exemplary GUI200in accordance with an embodiment of the invention. GUI200represents an OS executing on a computing device, such as computing device100described in reference toFIG. 1. Specifically, GUI200includes a toolbar202, a notification area204, and a removal area206, all of which occupy spatial portions of the GUI200. The notification area204includes a clock and the following elements: network graphic212, hardware-removal graphic214, volume graphic216, and anti-virus software logo218. An overflow feature220is depicted in the form of an arrow on the edge of the notification area204. While only four elements are illustrated inFIG. 2, one skilled in the art will understand that other embodiments may, in fact, display more or less elements. It should also be noted that GUI200is provided merely for explanatory purposes and is not meant to limit embodiments to any particular GUI configuration.

In addition to network graphic212, hardware-removal graphic214, volume graphic216, and anti-virus software logo218, GUI200may also hide several elements in an overflow area. When the user selects the overflow feature220—for instance, with a mouse cursor222—the previously hidden elements in the overflow area is revealed to the user.FIGS. 3A-3Bshow a portion of GUI200after the user has triggered the overflow feature220, according to an embodiment of the invention. Once the overflow feature220is triggered, in one embodiment, the notification area204expands to reveal additional elements that were previously hidden. As seen inFIG. 3A, these additional elements include e-mail software logo224, database logo226, timing graphic228, and phone application graphic230.

In one embodiment, the revealed elements are presented in the notification area204in an order dictated by the user. Additionally, the user may freely delete an element from the notification area204, whether expanded or not, by simply dragging the element out of the notification area204and dropping the element into the removal area206. In one embodiment, this drag-and-drop maneuver deletes the dragged element from both the notification area204and the order list stored on the computing device.

One skilled in the art will appreciate that various software may be used to display elements in the notification area204. For example, the Shell_NotifyIcon( ) shell included within the dynamic link library (DLL) Shell32.dll for Microsoft Windows® can be used to present elements in the notification area204. Such software can be called to present elements whenever an application is initiated, currently running, or otherwise invoked by the user. One skilled in the art will understand that similar or alternative software may be used to display elements; therefore, such software need not be discussed at length herein.

In one embodiment, the order list is a list of all the elements that can be displayed in the notification area204. In other words, all elements the user desires to display in the notification area204are contained within the order list. To remove an element from being displayed in the notification area204, the user may drag an element from the notification area204and drop the element in the removal area206. The removal area206may include any area in the GUI200, except for either the toolbar area202(in some embodiments) or the notification area204(in other embodiments). Dragging an element from the notification area204to the removal area206, called a “sloppy drag,” removes the element and corresponding information from the order list—thus eliminating future displays of the element, unless otherwise specified by the user.

The order list contains various information for each element that the user allows to be displayed in the notification area204. For example, the order list may store elements in a particular order a user wishes the elements to be presented in the notification area204. ReferencingFIG. 3A, the order list associated with the elements in the notification area204indicates that the following elements should displayed in the following order relative to the clock210: network graphic212, hardware-removal graphic214, volume graphic216, anti-virus software logo218, e-mail software logo224, database logo226, timing graphic228, and phone application graphic230. In an alternative embodiment, these elements are presented within a separate window232—as indicated in FIG.3B—and displayed according to the order of the order list whenever the user initiates the overflow feature220.

The user may manipulate the order for displaying elements by dragging a displayed element from its displayed location and dropping the element in another location in the notification area204. For example, referring toFIG. 3A, if the user drags the volume graphic216from its current location and then drops the volume graphic216elsewhere in the notification area204, the volume graphic216will be displayed in the new location, and an entry in the order list for the volume graphic216will automatically be moved—or updated—to include the new position. For example, if the volume graphic216is dropped in between the hardware-removal graphic214and the network graphic212, an entry in the order list for the volume graphic216will be repositioned in between entries for the hardware-removal graphic214and the network graphic212.

Similarly, if a user drags and drops an element outside the notification area204—e.g., to the removal area206illustrated in FIG.2—an entry for the element is removed from the order list. Once an element is removed from the order list, the element can no longer be displayed, in one embodiment, unless the user later adds the element back to the order list. The user may be prompted to add an element to the notification area204, resulting in the element being added to the order list, whenever an application is initiated that is not listed in the order list. If the user elects to add the element to the order list, an entry is made to the order specifying any of the parameters described below.

The order list may include various information about elements. For instance, the order list may store the names of applications associated, file names and locations of files corresponding to elements, the display status of each element, or other information relevant to the display of the element. For clarity sake, an element that is being displayed in the notification area204is referred to as a “live” node, and an element not being displayed is referred to as a “dead” node. The order list ensures that transient element (i.e., elements that automatically appear and disappear in the notification area without user designation) do not appear in the notification area204.

The order list contains, in one embodiment, entries with the aforesaid information for each element designated for display in the notification area204. Each entry may indicate the order, name of the related software or application associated with the element, element file location or file name, and status (i.e., live or dead). Table 1 below shows an exemplary order list with fourteen entries, each having the following four different pieces of information: order, software, element, and display status.

To present the element in the notification area204, software configured to present elements in the notification area204may receive and process an element file when the element's underlying application is initiated. For example, with reference to Table 1 above, the TIF file stored at C://...network_graphic.tif could be passed to the Notifiylcon( ) in Microsoft Windows XP® and rendered whenever network connections are being monitored. Once displayed in the notification area204, or in a separate window, the status entry in the order list is switched from dead to live.

Live elements are oriented in the notification area204, or in a separate window, according to their assigned order in the order list. For example, elements that are lower on the order list are placed further away from the clock in the notification area204, or possibly hidden within an overflow area. The notification area204may also be configured to only display a certain number of elements (e.g., eight elements), resulting in additional elements being hidden until a higher-order element turns dead or is removed.

In one embodiment, multiple order lists may be created and managed. One list contains the elements displayed within the notification area204. And a second list contains overflow elements. Overflow elements are elements that would be displayed in the notification area204if there were fewer live elements being displayed with higher order. Furthermore, when the overflow area is displayed as a separate GUI window, elements contained therein may be ordered from top left to bottom right.

An element that has changed status from dead to live, will be displayed relative to the other live elements according to the order delineated in the order list. For example, with respect to Table 1, if the Windows Media Player® turns live, the file C://...windows_media_player.tif will be displayed between the database logo226and the timing graphic228. This could result in the last displayed element being hidden if the notification area204or separate window is configured to only display a particular number of elements. Similarly, if the Windows Media Player® element turns dead, its related element is removed from view and the display of the remaining elements is adjusted accordingly.

FIGS. 4A-4Bare diagrams illustrating exemplary GUIs a user removing elements from a notification area in accordance with an embodiment of the invention. As seen inFIG. 4A, a user may drag an element (volume graphic216) from the notification area204to the removal area206, and an X400is placed in the element's former place on the notification area204until the element is dropped. Once dropped, the X400is removed, and element's entry in the order list is switched from live to dead, thus repositioning the remaining live elements to fill the void. Transparent to the user, the order list for the notification areas inFIGS. 4A and 4Bwould have been updated so that status of the volume graphic216would be changed from live to dead. As can be seen inFIG. 4B, this embodiment would position the anti-virus software logo218closer to the hardware-removal graphic214and move the e-mail software logo224from the overflow area into the notification area204.

FIG. 5is a diagram of a flow chart500illustrating steps for controlling elements on a toolbar in accordance with an embodiment of the invention. An order list is monitored to determine which elements to display in either a notification area, as indicated at502. The entries of the order list may contain any of the information described herein (e.g., order, software, file, status) as well as other relevant information. The order list is continually monitored, and live elements are displayed within the notification area, also indicated at502. Furthermore, elements are positioned according to the order in the order list. When the status of an element in the order list turns from live to dead, or is otherwise indicated to no longer be displayed in the notification area, the element is not displayed.

Elements may be moved within the notification area, removed from the notification, or triggered for display by manipulating entries in the order list. The three separate paths are performed independent of one another by simply changing entries in the order list. Also, even though flow chart500appears to be sequential in nature, the first step (502) is reiterative, and the three paths are merely ways to effectively move, remove, or display elements by changing parameters in the order list. Because the order list is constantly being monitored, changes to the entries effectuate changes to displayed elements. Additional elements, other than those specified by the user and included in the order list, are not allowed to be displayed in the notification area, in one embodiment.

To move an element within the notification area, a user may drag and drop the element in another area of the notification area, indicated at504. Once such an indication is received, the order associated with moved element is changed to reflect the dropped position, as indicated at506. For example, if the element is dragged from the first position next to the clock to the third position, the order assigned to the element is changed to reflect a position between the second and fourth displayed elements. The orders associated with the other elements in the order list are then updated to account for the moved element's new position, as indicated at508.

To remove an element from the notification area, the user may move the element into a removal area (e.g., a portion of GUI other than the notification area), as indicated at508. As a result, an entry for the removed element is deleted from the order list, as indicated at510. In this embodiment, the removed element can not be displayed because only elements in the order list can be displayed.

Elements are typically displayed by calling a particular display function, such as the NotifyIcon( ) shell in Microsoft Windows®, and providing the display function with a file for the element. The initiation of an application or other software may result in a call to the display function to display an associated element, as indicated at512. For example, an element for an anti-virus program may be shown when the anti-virus program is running. Or a particular driver have an element associated with it, and use of the driver may trigger a call to display the element. Calls to the function may be monitored, and requested elements checked against the order list, indicated at decision block514. If the element is in the order list, the element's status is changed to live (indicated at516), so the function can present the element. If the element is not in the order list (indicated by the NO path), no changes are made to the order list, and the element is not displayed.

Although the subject matter has been described in language specific to structural features and methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims. For example, sampling rates and sampling periods other than those described herein may also be captured by the breadth of the claims.