The present invention relates generally to messaging, and more particularly, but not exclusively, to providing an annotation for messages in a display list.
Stationary and mobile client devices often include one or more messaging capabilities such as email, instant messaging (IM), short message service (SMS), multimedia message service (MMS), and the like. Messages are typically exchanged over an electronic network, often through an online messaging service. A user can generally view a listing of messages, such as received messages, sent messages, messages grouped in a user-defined directory, and the like. For each message, a message listing typically displays a subject line, a sender identifier, a date, a data size, or similar information that is not set by a receiving user. Characteristics of messages in a listing can also be identified with an icon, a text font effect, or other single-meaning indicator. For example, high priority messages can be identified with a red exclamation point. Unread messages can be identified with bold text. Messages with attachments may be identified with a clip icon. A few of these characteristics can be controlled by a receiving user. For instance, a receiving user may mark a message as unread, which may change the subject line to bold text. However, receiving users generally do not have descriptive control over listed messages. Some message listings display a short segment of the content of a message. Some message listings also include a preview pane to display additional content of a selected message in the listing, without opening the entire message in a new window. However, these content preview techniques generally do not enable receiving users to modify the content or add notes.
Non-limiting and non-exhaustive embodiments of the present invention are described with reference to the following drawings. In the drawings, like reference numerals refer to like parts throughout the various figures unless otherwise specified.
For a better understanding of the present invention, reference will be made to the following Detailed Description of the Invention, which is to be read in association with the accompanying drawings, wherein:
The present invention now will be described more fully hereinafter with reference to the accompanying drawings, which form a part hereof, and which show, by way of illustration, specific exemplary embodiments by which the invention may be practiced. This invention may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein; rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the invention to those skilled in the art. Among other things, the present invention may be embodied as methods or devices. Accordingly, the present invention may take the form of an entirely software embodiment, an entirely hardware embodiment or an embodiment combining software and hardware aspects. The following detailed description is, therefore, not to be taken in a limiting sense. Briefly stated, embodiments of the present invention are directed towards providing a method and system for associating, displaying, and managing notes or other annotations with messages. The embodiment described below discusses annotations associated with messages in a listing maintained by an online message service and accessed by a browser. However, the invention is not so limited and may include a stand-alone message system, a peer-to-peer message system, a listing of data items other than messages, and other variations.
Illustrative Operating Environment
As shown in the figure, a system 10 includes client devices 12-14, a network 15, and a server 16. Network 15 is in communication with and enables communication between each of client devices 12-14 and server 16.
Client devices 12-14 may include virtually any computing device capable of receiving and sending a message over a network, such as network 15, to and from another computing device, such as server 16, each other, and the like. The set of such devices may include devices that are usually considered more general purpose devices and typically connect using a wired communications medium such as personal computers, multiprocessor systems, microprocessor-based or programmable consumer electronics, network PCs, and the like. The set of such devices may also include mobile devices that are usually considered more specialized devices and typically connect using a wireless communications medium such as cell phones, smart phones, pagers, walkie talkies, radio frequency (RF) devices, infrared (IR) devices, CBs, integrated devices combining one or more of the preceding devices, or virtually any mobile device, and the like. Similarly, client devices 12-14 may be any device that is capable of connecting using a wired or wireless communication medium such as a personal digital assistant (PDA), POCKET PC, wearable computer, and any other device that is equipped to communicate over a wired and/or wireless communication medium.
Each client device within client devices 12-14 includes a user interface that enables a user to control settings, such as an annotation setting, and to instruct the client device to perform operations. Each client device also includes a communication interface that enables the client device to send and receive messages from another computing device employing the same or a different communication mode, including, but not limited to email, IM, SMS, MMS, internet relay chat (IRC), Mardam-Bey's internet relay chat (mIRC), Jabber, and the like. Client devices 12-14 may be further configured with a browser application that is configured to receive and to send web pages, web-based messages, and the like. The browser application may be configured to receive and display graphics, text, multimedia, and the like, employing virtually any web based language, including, but not limited to Standard Generalized Markup Language (SGML), HyperText Markup Language (HTML), Extensible Markup Language (XML), a wireless application protocol (WAP), a Handheld Device Markup Language (HDML), such as Wireless Markup Language (WML), WMLScript, JavaScript, and the like.
Network 15 is configured to couple one computing device to another computing device to enable them to communicate. Network 15 is enabled to employ any form of medium for communicating information from one electronic device to another. Also, network 15 may include a wireless interface, such as a wired interface, such as the Internet, in addition to local area networks (LANs), wide area networks (WANs), a cellular network interface, direct connections, such as through a universal serial bus (USB) port, other forms of computer-readable media, or any combination thereof. On an interconnected set of LANs, including those based on differing architectures and protocols, a router acts as a link between LANs, enabling messages to be sent from one to another. Also, communication links within LANs typically include twisted wire pair or coaxial cable, while communication links between networks may utilize cellular telephone signals over air, analog telephone lines, full or fractional dedicated digital lines including T1, T2, T3, and T4, Integrated Services Digital Networks (ISDNs), Digital Subscriber Lines (DSLs), wireless links including satellite links, or other communications links known to those skilled in the art. Furthermore, remote computers and other related electronic devices could be remotely connected to either LANs or WANs via a modem and temporary telephone link. In essence, network 15 includes any communication method by which information may travel between client devices 12-14 and/or server 16. Network 15 is constructed for use with various communication protocols including transmission control protocol/internet protocol (TCP/IP), user datagram protocol (UDP), WAP, code division multiple access (CDMA), global system for mobile communications (GSM), and the like.
Server 16 may comprise a messaging server, a web server, and/or other server. Server 16 may provide one or more services, such as an email service, an IM service, an SMS service, a news service, a sales service, a financial management service, and the like. Other servers and/or other network nodes may communicate data between client devices and/or a subset of services, such as between phone carriers, between data services providers, and/or between other service providers. Server 16 and/or other network devices may perform data conversions, routing, filtering, and/or other services.
The media used to store and/or transmit information in communication links as described above generally includes any media that can be accessed by a computing device. Computer-readable media may include computer storage media, wired and wireless communication media, or any combination thereof. Additionally, computer-readable media typically embodies computer-readable instructions, data structures, program modules, or other data generated as or received as a modulated data signal over wires, air, or other transport mechanism and includes any information delivery media. By way of example, communication media includes wireless media such as acoustic, RF, infrared, gaseous, liquid, and other wireless media, and wired media such as twisted pair, coaxial cable, fiber optics, wave guides, and other wired media.
One embodiment of a general purpose computing device, such as a client device 20, is described in more detail below in conjunction with
As shown in the figure, client device 20 includes a processing unit 22 in communication with a mass memory 24 via a bus 23. Mass memory 24 generally includes a RAM 26, a ROM 28, and other storage means. Mass memory 24 illustrates a type of computer-readable media, namely computer storage media. Computer storage media may include volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Other examples of computer storage media include EPROM, flash memory or other semiconductor memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by a computing device.
Mass memory 24 stores a basic input/output system (“BIOS”) 30 for controlling low-level operation of client device 20. The mass memory also stores an operating system 31 for controlling the operation of client device 20. It will be appreciated that this component may include a general purpose operating system such as a version of Windows™, UNIX, LINUX™ and the like. The operating system may also include, or interface with a virtual machine module, such as a Java virtual machine module, that enables control of hardware components and/or operating system operations via application programs, such as Java.
Mass memory 24 further includes one or more data storage units 32, which can be utilized by client device 20 to store, among other things, programs 34 and/or other data. Programs 34 may include computer executable instructions which can be executed by client device 20 to implement browsers, schedulers, calendars, web services, transcoders, database programs, word processing programs, spreadsheet programs, and so forth. Programs 34 may also include computer executable instructions which can be executed by client device 20 (and/or server 16) to implement an HTTP handler application for transmitting, receiving and otherwise processing HTTP communications. Similarly, programs 34 can include an HTTPS handler application for handling secure connections, such as initiating communication with an external application in a secure fashion. Accordingly, programs 34 can process web pages, audio, video, and enable telecommunication with another user of another electronic device. In addition, client device 20 may include a messaging client 36, which may comprise computer executable instructions, and which may be run under control of operating system 31 to enable email, instant messaging, SMS, and/or other messaging services. Similarly, client device 20 and/or a server device configured much like client device 20, can include another messaging module, such as a messaging server 38, which may further provide routing, access control, and/or other server-side messaging services.
Client device 20 also includes an input/output interface 40 for communicating with input/output devices such as a keyboard, mouse, wheel, joy stick, rocker switches, keypad, printer, scanner, and/or other input devices not specifically shown in
For higher capability client devices such as a personal computer, client device 20 may include a removable media drive 48 and/or a permanent media drive 46 for computer-readable storage media. Removable media drive 48 can comprise one or more of an optical disc drive, a floppy disk drive, and/or a tape drive. Permanent or removable storage media may include volatile, nonvolatile, removable, and non-removable media implemented in any method or technology for storage of information, such as computer readable instructions, data structures, program modules, or other data. Examples of computer storage media include a CD-ROM 49, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, RAM, ROM, EEPROM, flash memory or other memory technology, or any other medium which can be used to store the desired information and which can be accessed by a computing device.
Via a network communication interface unit 44, client device 20 can communicate with a wide area network such as the Internet, a local area network, a wired telephone network, a cellular telephone network, or some other communications network, such as network 15 in
A “Notes” column 70 displays an annotation fragment, such as note fragments 72 and 74, if an annotation is associated with a message. An annotation fragment, referred to here also as an annotation snippet, may include a portion of text, audio data, visual data, and/or other information that a user wishes to associate with a message. An annotation fragment may be displayed when a message header is scrolled into view. The display of annotation fragments may also be toggled on or off with annotation display control 76. Any other control may be used, such as a radio button, a drop down selection, or other user interface control. As a result of toggling, or as an alternative to displaying annotation fragments, a flag or other icon may be displayed in notes column 70 to indicate or represent the presence of annotations. An annotation icon may be useful to indicate or represent an annotation for limited display area devices, such as cellular phones, PDAs, point-of-sale devices, and the like.
If a user hovers a cursor 75 over an annotation icon or annotation fragment, such as annotation fragment 74, a full annotation 78 is displayed in a dialogue box, such as a ToolTips™ box. In addition, or alternatively, an annotation fragment or a full annotation may be displayed when the cursor hovers over any portion of a message header. A user may also sort messages based on the date and/or time annotations were revised. For example, the user may click on a column heading for notes column 70 to initiate a sort.
At an operation 104, the messaging client sets a timer for detecting a response or otherwise accessing the message header data and annotation data. At a decision operation 106, the messaging client determines whether a response or the data was accessed before a predefined timeout period has expired. The messaging client may wait for a predetermined period of time, make multiple attempts, and/or check another cutoff threshold. If the timeout period expired, the messaging client processes an error at an operation 108. If a response is received or the data is otherwise accessed in time, the messaging client displays the message header and annotation data, at an operation 109. The messaging client may display the entire annotation if it fits within the display area allocated for annotations. Conversely, the messaging client may display an annotation icon if the annotation fragment will not fit within the display area allocated for annotations.
If the cursor is over the notes area, and over an annotation fragment, the messaging client accesses full annotation data, at an operation 116. The messaging client may access the full annotation data from a server or from a local data store. This step may be skipped if other optional logic determines that the full annotation is already displayed within the display area allocated for annotation fragments.
At an operation 118, the messaging client sets a timer for detecting a response or otherwise accessing the full annotation data. At a decision operation 120, the messaging client determines whether a response or the data was accessed before a corresponding predefined timeout period has expired. The messaging client may wait for a predetermined period of time, make multiple attempts, and/or check another cutoff threshold. If the timeout period expired, the messaging client processes an error at an operation 122. If a response is received or the data is otherwise accessed in time, the messaging client displays the full annotation data, at an operation 124. The full annotation data is generally displayed in pop-up dialog box, but may be displayed in a side pane, in a separate window, or in other ways. The method of displaying the full annotation data may depend on display area limitations, processor capability, and/or other factors.
At an operation 140, the messaging client sets a timer for detecting a response or otherwise accessing the full annotation data. At a decision operation 142, the messaging client determines whether a response or the data was accessed before a corresponding predefined timeout period has expired. The messaging client may wait for a predetermined period of time, make multiple attempts, and/or check another cutoff threshold. If the timeout period expired, the messaging client processes an error at an operation 144. If a response is received or the data is otherwise accessed in time, the messaging client loads the full annotation data into the annotation editing window, at an operation 146. The method of displaying the annotation editing tool may depend on display area limitations, processor capability, and/or other factors. The user may then revise the full annotation data.
At a decision operation 148, the messaging client determines whether a save instruction has been input. When a save instruction is detected, the messaging client stores the revised full annotation data, at an operation 150. The storage may be local or remote with a communication to a server. Other editing commands may be handled in a similar manner. At an operation 152, the messaging client (or messaging server) generates or revises a corresponding annotation fragment based on the full annotation data. A first predefined number of words from the full annotation data may be selected for the annotation fragment, a save or revision date may be included in the annotation fragment, and/or other full annotation data may be incorporated into the annotation fragment. The annotation fragment is stored with an association to the full annotation data.
The above specification, examples, and data provide a complete description of the manufacture and use of the composition of the invention. However, other embodiments and aspects will be evident to those skilled in the art. For example, corresponding server-side processes include receiving requests for, and transmit messages, message headers, annotation fragments, full annotation data, annotation indicators, and the like. One or more servers and/or a client may store the various data in databases, files, caches, and/or other storage systems. The annotation data and message data may be organized according to predefined and/or user-defined folders and subfolders. Accessing and/or associating annotation data can be keyed to a user identifier, a message identifier, and/or other identifiers. A server or client may also track user actions associated with annotations and determine behaviors, which may enable the server or client to offer information or services that are relevant to each users actions and/or behaviors. Another embodiment includes linking annotation data to a calendar and/or other application. For example, a user may enter date information into an annotation, and a corresponding calendar entry is made and/or other link formed. In another embodiment, the annotations can be searched, sorted, filtered, or otherwise managed. A user may then select an annotation to access a corresponding message, calendar entry, and/or other data. Since many embodiments of the invention can be made without departing from the spirit and scope of the invention, the invention resides in the claims hereinafter appended.