Software application programs commonly referred to as personal information managers, or PIMs, have become extremely popular as a tool for organizing, tracking and managing personal information. One aspect of a PIM is a calendar application program which provides a user interface including a graphical representation of a calendar. The user may select to display a day, week, month, etc. Using the calendar interface, a user may record appointments, events and other information. Calendar application programs also provide automatic notifications and reminders about upcoming appointments and events. Calendar application programs typically communicate and exchange information with other PIM application programs, such as for example email and contact application programs, as well as other datastores.
PIM and calendar applications provide limited display options for time periods. In particular, conventional applications do not accurately coincide with user priorities or experiences. The fact is that people tend to focus on the events that occur nearest in time. Events happening today are typically of greater interest to users than events associated with a day the following week. However, conventional calendar applications do not adequately take these priorities and experiences into account. Weekly displays in conventional applications are centered around the beginning of the week; that is, the calendar applications start each displayed week with either Sunday or Monday, regardless of what the day actually is. Moreover, even though a user is typically more interested in events occurring in the present as opposed to the future, in conventional applications, the current and future time periods are uniformly displayed; that is, the space allotted on the user interface for the current day is the same size as the following day, following week, etc. Further still, calendar applications tend to schedule events by specific times; that is, by the time an event starts and a time the event ends. People tend instead to focus on time periods. A user needs to perform an event for example tomorrow afternoon, but not necessarily at a specific time in the afternoon.
The present technology, roughly described, pertains to a calendar application mirroring user priorities and experiences by emphasizing current and near time periods. In one embodiment, the calendar application provides a calendar interface which displays the current time period in the left-most column (or right-most column in societies reading right to left). Thus, in an example where the calendar interface displays a week of time, the calendar interface may display the current day first, and not Sunday or Monday as in conventional calendar applications. This provides the user with a calendar view showing only the imminent and upcoming events, and is more in tune with the user's priorities and preferences.
In a further embodiment of the present system, when the calendar interface is configured to show multiple rows of time periods, some of those rows may be made larger relative to others of the displayed rows. For example, in a monthly view displaying four weeks, a default view may present the first and second rows, representing the current week and following week, with a larger area on the display than the last two rows representing the third and fourth weeks from the current date.
The calendar application may be implemented as a client application or a network-based application. A client calendar application can store user calendar data locally on the client device. In this case, event objects associated with different time periods may be added, changed and removed from the local client device as a user configures his or her calendar. A network-based calendar application may save user calendar data remotely, using a calendar application or browser application on a client device which can access a remote server over a network. When implemented using a browser application, the application may access a web service provided by one or more web servers and/or related devices.
This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the description. This summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
The present system will now be described with reference to
The system is operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well known computing systems, environments, and/or configurations that may be suitable for use with the system include, but are not limited to, personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.
The system may be described in the general context of computer-executable instructions, such as program modules, being executed by a computer. Generally, program modules include routines, programs, objects, components, data structures, etc., that perform particular tasks or implement particular abstract data types. The system may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote computer storage media including memory storage devices.
Computer 110 typically includes a variety of computer readable media. Computer readable media can be any available media that can be accessed by computer 110 and includes both volatile and nonvolatile media, removable and non-removable media. By way of example, and not limitation, computer readable media may comprise computer storage media and communication media. Computer storage media includes both 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. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tapes, 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 computer 110. Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of any of the above are also included within the scope of computer readable media.
The system memory 130 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 131 and random access memory (RAM) 132. A basic input/output system (BIOS) 133, containing the basic routines that help to transfer information between elements within computer 110, such as during start-up, is typically stored in ROM 131. RAM 132 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 120. By way of example, and not limitation,
The computer 110 may also include other removable/non-removable, volatile/nonvolatile computer storage media. By way of example only,
The drives and their associated computer storage media discussed above and illustrated in
The computer 110 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 180. The remote computer 180 may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer 110, although only a memory storage device 181 has been illustrated in
When used in a LAN networking environment, the computer 110 is connected to the LAN 171 through a network interface or adapter 170. When used in a WAN networking environment, the computer 110 typically includes a modem 172 or other means for establishing communications over the WAN 173, such as the Internet. The modem 172, which may be internal or external, may be connected to the system bus 121 via the user input interface 160, or other appropriate mechanism. In a networked environment, program modules depicted relative to the computer 110, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation,
The calendar application may be implemented on a client device or over a network. When implemented on a client device, the calendar application is provided by a calendar client application. The client application reads and writes calendar data from the client device memory. When implemented over a network, at least a portion of the user data for the calendar application may be stored on a remote server. In this case, the calendar application may be provided using a client application which accesses the remote server or through a browser application which accesses a web server providing a content page. In the case of a browser application, the content page provides the calendar interface. When provided over a network, the calendar application allows the user to schedule and share events with other users, view log-in status and other information for other users, and other information.
The calendar application of the present technology is discussed in more detail below. In particular, systems and methods associated with calendar application functionality and operation are discussed below with respect to
Client application 215 may communicate with user datastore 217 within client device 212. In one embodiment, client application 215 may be implemented as a calendar application, PIM application or some other application which allows a user to manage a calendar application. Client application 215 also provides calendar interface 218, as indicated by the dotted lines in
User datastore 217 includes user data associated with the calendar application. The user data may include the event object data associated with the user, user authentication information, calendar parameters configured by the user, and other data used to configure or populate a calendar interface or otherwise associated with the user. In one embodiment, user datastore 217 may be implemented by the local memory of client device 212.
Browser application 225 may communicate with network server 230 to retrieve and provide content pages. In one embodiment, browser application 225 may provide calendar interface 228 as a content page. In an embodiment wherein another type of application is used to provide a calendar application and access data from a server over network 250, the particular application would provide calendar interface 228.
Network server 230 includes network server front-end 232 and can optionally include user datastore 235. Network server front-end 232 receives and transmits messages from requesting client devices, such as client device 220. The received messages may include content requests, authentication requests, and other messages. The messages sent by network server front-end 232 may include content responses sent in response to a request, authentication responses, and other messages. Network server front-end 232 provides the calendar application functionality described herein. Operation of network server front-end 232 is discussed in more detail below.
Network server front-end 232 may also access user datastore 235. User datastore 235 is optional, as indicated by the dashed lines comprising user datastore 235 in
First, a calendar application is initialized at step 310. Initializing a calendar application involves starting up the application which provides the calendar interface. If the application accesses data over a network, initializing the application may include detecting a network connection on the client device on which the application resides. Next, a determination is made as to whether a user is authenticated at step 320. In one embodiment, after initializing the calendar application at step 310, the calendar application will provide an authentication interface to a user. The authentication interface may allow a user to enter a user name, password, and/or other authentication information. Once a user name and password are received, the calendar application may confirm that the user name and password match information stored in the appropriate user datastore. If the user name and password information received from a user matches user and password information stored in a datastore, then the user is authenticated.
In the case of a locally implemented calendar application, the user name and password are compared with data stored in user datastore 217 on client device 212. If user data is accessed over network 250, the application determines if the received user name and password match user name and password information stored on user datastore 235 or user datastore 240. In this case, an authentication request is sent to network server 230 by client device 220. Network server front-end 232 receives the authentication request and sends an authentication request to user datastore 235 or user datastore 240. The appropriate user datastore receives the request, determines if the user name and password match user data stored in the user datastore, and provides an authentication response to network server front-end 232. The authentication response indicates whether the authentication was successful. Network server front-end 232 forwards the authentication response to the requesting client device 220.
If the user name and password information received from a user matches user and password information stored in a datastore, then the user is authenticated and the flowchart of
User data is retrieved in response to the authentication at step 330. In one embodiment, the user data retrieved can be associated with a default interface or the last calendar view provided in the calendar interface. The data may be retrieved from local datastore 217 or remote user datastore 235 or 240 depending on the implementation of the calendar application. In the case of a local datastore, client application 215 retrieves the user data from user datastore 217. When accessed from local user datastore 217, the user data may include a series of files. Each file may include data associated with an event object for a user. For example, an event object may include data for a dinner appointment, a sporting event, a wedding, or some other event associated with the user.
User data may also be retrieved from remote datastores 235 and/or 240. In the case of a network-based calendar application, browser application 225 may request the user data from network server 230. Network server 230, or network server front-end 232, may process the request similar to the authentication request discussed above. However, instead of comparing received user authentication information to stored user authentication information, the appropriate user datastore retrieves requested user data and places the data in a response. The response is then sent to network server front-end 232, which receives the response and sends it to the requesting application.
After user data has been retrieved, the calendar application interface is constructed and provided at step 340. As explained in greater detail hereinafter, the calendar application interface may be presented in a manner that reflects and is optimized for user priorities and experiences. In one embodiment, the calendar application interface is constructed and populated with the retrieved data. The constructed interface may be a default calendar interface or the last interface accessed by the user. Once the interface is constructed, the event objects associated with the user are populated within the interface.
After constructing and providing the calendar application interface, a determination is made as to whether input is received to process event objects at step 350. In one embodiment, receiving input to process an event object includes receiving input to add, change or delete an event object. If input is received to process an event object at step 315, the flowchart of
A determination is made as to whether input is received to adjust a calendar view at step 360. Receiving input to adjust a calendar view may be associated with changing the actual calendar view or calendar view parameters. Changing the actual view may include providing a daily, weekly, monthly or other calendar view within the calendar interface. If input is received to adjust a calendar view, the flowchart of
Event objects provided within a calendar interface may be configured in response to user input.
Input may be received to add an event object at step 410. In one embodiment, input to add an event object may be received through a calendar interface as a selection of a particular time slot or block within a calendar interface, a selection of an element within a drop down menu, a selection of an icon, or some other input. As explained hereinafter, a task set forth on the task list may also be added to a calendar by dragging and dropping the task into a particular time slot.
Next, the event object data is received at step 412. The event object data is received from a user. In one embodiment, receiving the event object data may include providing an interface in response to the input received at step 410. The interface may allow a user to input data associated with the event object. For example, the interface may allow a user to select a category for an event object. Exemplary event object categories may include a dinner appointment, a sporting event, a party and other events. The interface may then allow a user to enter meta-data regarding the event object into the interface. The meta-data may include general data and/or data tailored to the particular event. For example, for a dinner event, the entered meta-data may include a name for the event, name of the restaurant, location of the restaurant, a name under which a dinner reservation is made and other information.
After the event object data is received, an event object is created from the received data at step 414. In the case of a calendar application implemented entirely on client device 212, the event object data is saved by client application 215 to user datastore 217. After the data is stored to user datastore 217, an event object may be provided in the current calendar interface, if appropriate. For example, the event object will be displayed in the calendar interface if the event object corresponds to a time currently provided in the calendar interface view.
For a calendar application in which the event object is saved remotely, creating the event object from the received data includes storing the event object data on a datastore associated with a network server. With respect to
Input may be received to remove an event object at step 420. The input may be received as a selection from a drop down menu associated with the event object, selection of an icon or some other input within the calendar interface. A determination is then made as to whether a user has confirmed to remove the event object at step 422. Step 422 can be optionally performed to confirm that the event object should be removed from the calendar interface and appropriate user datastore. In one embodiment, step 422 includes providing a user prompt inquiring whether the user wishes to remove the object data, as well as buttons for removing or not removing the object. User selection of one of the buttons satisfies the determination as to whether the user confirms removal of the event object. If confirmation input is received that the event object should be removed, the flowchart of
At step 424, the event object is removed. Removing the event object may include removing the actual object data from the calendar interface and deleting the data from the appropriate datastore. In the case of a calendar application implemented entirely on a client device, client application 215 sends a message to user datastore 217 to remove the event object. In the case of a calendar application implemented using a remote datastore, browser application 225 sends a message to network server 230 to remove the particular user event object data from user datastore 235 or user datastore 240. In this case, network server front-end 232 receives the user request information and processes the user request by sending a message to user datastore 235 or user datastore 240. Network server front-end 232 receives a confirmation message from the appropriate datastore once the event object data is removed from the appropriate datastore, and forwards the confirmation message to browser application 225. The flowchart of
Input may be received to change an event object at step 430. Input may be received to change an event object by user selection of an existing object in a calendar interface. The input may select the event object and then an entry within a drop down menu associated with the event object, a double-click of the object or some other input. Next, updated event object data is received at step 432. Similar to step 412 discussed above, the updated event object data may be received through an interface provided in response to selection of the event object. In one embodiment, updating event object data may include changing existing data, adding missing data, or removing existing data in the interface. After the updated event object data is received at step 432, the updated event object data is saved at step 434. Similar to step 414 discussed above, saving updated event object data may include storing the object data on a local or remote datastore. In addition to saving the event object data, the updated event object data is provided in the appropriate calendar interface view. The flowchart of
In embodiments, the appearance of the user interface may be user-configurable. In particular, as shown hereinafter in
In addition, the “Customize” layout option may present the user with an option to set the number of weeks displayed in a monthly view. Conventional calendar interfaces display five or six weeks. However, typically a user's realistic event horizon is shorter than this. Accordingly, when this option is selected from the “Customize” layout menu, the user may be presented with a pop-up window or the like giving the user the option to define the number of weeks to display in the calendar interface. The default may be to display four weeks in a monthly calendar view. The same may be done for the daily calendar view, giving the user the option to set the number of hours to display, or the number of time chunks (explained hereinafter) to display.
The “Customize” layout option may further present the user with the option to set the size in which a given time period is displayed relative to other time periods on the display. If a user selects this option, the user may be presented with a pop-up window or the like presenting the user with the option to set relative time period display sizes for the currently selected time period.
Thus, as an example, if the calendar interface is currently set to display a monthly view including four weeks, the pop-up window may present the user with the option to divide up the size in which the weeks are displayed on the calendar interface. As one of many possible configurations for the pop-up window, the window may display an option for each week (e.g., “week 1,” “week 2,” etc.) along with the option of setting the size of that week relative to the other weeks by a percentage out of one-hundred percent (e.g., “week 1: 40%,” “week 2: 40%,” etc.). Once the percentage breakdown of each displayed time period is set, the calendar interface may be constructed by the calendar application program according to the user selections. Thus, with the above-described sample settings, the first week would be displayed taking up 40% of the available width (from top of the calendar interface to bottom of the calendar interface), the second week would be displayed taking up 40% of the available width, etc. Other possible configurations are contemplated for setting the size in which each time period is displayed on the calendar interface. For a monthly view of four weeks, the default may be to display the first two weeks on the interface as being larger than the last two weeks, for example, twice as large in one embodiment.
Referring again to the flowchart of
In the case of a calendar application implemented on a client device, user datastore 217 receives the request from client application 215. In the case of a calendar application implemented over a network, network server front-end 232 receives the request and forwards the request to either user datastore 235 or user datastore 240. The receiving user datastore retrieves the data and provides a response containing the data to network server front-end 232. The response is then forwarded by network server front-end 232 to browser application 225.
The selected calendar view is constructed at step 530. In this case, the days and timelines associated with each day are provided in the calendar interface. The constructed calendar may be a new calendar view or a modified calendar view, depending on the input received at step 510. Once the selected calendar view is constructed, the constructed view is populated with the retrieved user data at step 540. In this case, a constructed calendar view is populated with event objects retrieved at step 520. The event objects are displayed as visual indicators within the calendar interface at a time slot associated with the event object. The indicator may provide summary information associated with the event. Upon user selection of the visual indicator, more detail can be provided regarding the particular event object. The additional detail may include additional meta-data associated with the event object which is not displayed in the calendar interface indicator.
As described in the Background section, conventional PIM and calendar applications do not accurately coincide with user priorities or experiences. While people tend to focus on the events that occur proximately in time, conventional calendar applications do not give more focused treatment to the nearest upcoming time periods. The present system addresses this issue. Examples are shown on the calendar interface 610 of
In the embodiment shown in
The user may associate a plurality of events 604 with time periods on calendar interface 610 as described above with respect to
The “new” button allows a user to generate new event objects. Generation of a new event object is discussed in more detail above with respect to the flowchart of
Calendar interface 610 shown in
Thus, while the calendar interface 610 stores all user-defined events, the calendar interface 610 allows a user to emphasize the nearest events in the user's event horizon by displaying current time periods with greater detail in a larger space than the future events.
While a monthly view is shown, it is understood that the same concept of displaying the current and imminent time periods larger than more distant time periods may apply to any other selected time period. For example, where a user selects a day view, the current hour or time chunk, and possibly the next hour or next time chunk, may be shown larger than other time periods. As a further example, in a week view, instead of varying the size of the rows, the size of the columns may be varied so that the current day, and possibly one or more following days, are displayed in columns that are larger than the most distant days on the display.
In the embodiments described above, at least the current time period is given the greatest real estate on the calendar interface. However, it may happen that the user has a significant upcoming event, for example hosting a conference, having a wedding, etc. In an alternative embodiment, a time period after the current time period may be provided with the greatest real estate. As indicated above, the real estate for each given time period may be user configurable.
Calendar interface 610 further includes a task pane 660 for storing user-generated tasks. It is further contemplated that a user may add tasks to the calendar interface 610 by selecting a task and dragging onto a specific date. This act causes the task to be saved in the datastore in association with that date. For example, task 662 may be selected and dragged to Today's date. The task will then be displayed on Today's date as shown as well as on the task pane.
The foregoing detailed description of the technology herein has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the technology to the precise form disclosed. Many modifications and variations are possible in light of the above teaching. The described embodiments were chosen in order to best explain the principles of the technology and its practical application to thereby enable others skilled in the art to best utilize the technology in various embodiments and with various modifications as are suited to the particular use contemplated. It is intended that the scope of the technology be defined by the claims appended hereto.