Abstract:
A system for processing multiple schedules, constructed in accordance with the principle of the present invention, includes an information processing system having a memory and a processor; an input device for entering user information; a display device for showing scheduling information; an interface for sending and/or receiving information from another source; and the processor enabling reconciling two schedules by building synchronized lists, from which the user may effect a reconciliation.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This application claims priority from, and is a continuation of Ser. No. 08/649,824, filed May 17, 1996, now U.S. Pat. No. 5,778,346, which is a continuation of Ser. No. 07/823,567, filed Jan. 21, 1992, now U.S. Pat. No. 5,519,606, the disclosures of which are hereby incorporated by reference. 
    
    
     BACKGROUND OF THE INVENTION 
     The present invention relates generally to the area of information processing and, more particularly, to apparatus and methods for reconciling ordinal information, especially time-based information. 
     Successful management of one&#39;s time is a goal that every successful professional must achieve. One&#39;s business day may be swept away in a deluge of meetings and appointments, all of which must be somehow managed. An attempt to manage this task on paper, such as with a simple wall calendar, is unworkable for all but the simplest of schedules. More likely, such unsophisticated aids to managing one&#39;s time will lead to scheduling conflicts, missed appointments, botched deadlines, and angry clients. 
     The first allies that professionals discovered were portable organizers, such as the Daytime™ or the Lafax™. However, an increasing number are discovering the power of personal computers for managing appointments. Several scheduling packages are available for the PC. While not as portable as paper organizers, scheduling packages offer increased flexibility in other areas. For example, one may view his or her schedule from a variety of views—by month, week, day, or priority—and attach detailed notes to appointments. Additional options available include the ability to automatically schedule a meeting for the first Monday of every other month, or display horizontal bars which graphically represent one&#39;s weekly schedule, so that free time can be quickly pinpointed. Other options include the ability to easily edit an entry, and set alarms as a reminder of important appointments. 
     With ever increasing emphasis on miniaturization and portability, several of the features of scheduling packages may now be found in handheld information processing devices, such as the Sharp Wizard™ or the Casio BOSS™. Being roughly the size of a handheld calculator, these electronic organizers are often carried when one is away from the office. As a tradeoff for portability, however, these devices typically forego several of the more desirable features found on desktop personal computers (e.g., full color graphics display). As a result, it is common for a professional to employ a personal computer to manage his or her time, yet carry a portable organizer when he or she is away from the office. Upon returning to the office, the information in the personal computer is then updated with the new information in the portable organizer. 
     Updating or reconciling two sets of information, whether between a PC and an organizer, or between two computers joined by a communication network, has never been easy. The reconciliation of scheduling information has been particularly difficult. Not only must one take into account when an event occurs, but one must also account for the duration of the event. While prior art organizers and scheduling packages are very useful for managing one&#39;s own schedule, they have thus far been inadequate for resolving two or more schedules. As a result, a user who wishes to reconcile two different schedules must rely on awkward data entry techniques to achieve the reconciliation. 
     What is needed is a system which allows a user of an information processing device to readily reconcile two or more schedules, or other time-based lists. The present invention fulfills this and other needs. 
     SUMMARY OF THE INVENTION 
     Computers have found a variety of applications for the management of one&#39;s time, including tracking meetings and appointments. With increased availability of portable information processing devices, many of the scheduling features found on personal computers are now available with handheld electronic organizers. Because handheld organizers sacrifice features for portability, professionals will often manage their time at the office with a personal computer, reserving the portable for when they are away. Upon returning to the office, however, one must reconcile the information stored in the portable with that already present in the personal computer. 
     According to the present invention, therefore, a method for reconciling two sets of information on an information processing system includes loading both sets of data, detecting the current date, building a new list for each set of data, synchronizing the lists (typically, according to time), and displaying the synchronized lists. 
     Upon display of the synchronized lists, the user may employ any of a variety of interface techniques for transferring information between the two synchronized lists. For example, the user may pick and choose from the two lists, as desired, including the deletion of undesirable entries. In addition, the information may be prioritized; for example, one list—the “master”—may always be given priority over another list. Alternatively, information may be prioritized according to level (e.g., “high”, “medium”, “low”) when it is entered (or any time thereafter). Upon completion of the reconciliation between the synchronized lists, the parent tables from which the information originated are respectively updated. 
     A system for processing multiple schedules, constructed in accordance with the principle of the present invention, includes an information processing system having a memory and a processor; an input device, such as a keyboard, for entering user information; a display device for showing scheduling information; an interface for sending and/or receiving information from another source; and means for reconciling two schedules by building synchronized lists, from which the user may effect a reconciliation. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a block diagram of a computer system in which the present invention may be embodied. 
         FIG. 2  represents a display window of the present invention for entering and processing schedule information. 
         FIGS. 3A–B  illustrate two schedules, one from a laptop, the other from a desktop, which require reconciliation. 
         FIG. 3C  represents a display window for reconciling two schedules. 
         FIGS. 3D–G  represent the user directed process (and screen feedback) for reconciling the two schedules of FIGS.  3 AB. 
         FIG. 4A  is a flowchart of the reconciliation method of the present invention. 
         FIG. 4B  is a flowchart of the synchronizing step of the present invention. 
         FIG. 5  illustrates the synchronization of two tables or sets of information. 
         FIG. 6  is a display screen view showing a technique for changing the color of one or more selected screen objects in accordance with the present invention. 
         FIG. 7  is a flowchart of a method of the present invention for recoloring screen objects. 
     
    
    
     DETAILED DESCRIPTION 
     The present invention may be embodied on an information processing system such as the system  100  of  FIG. 1  which comprises a central processor  101 , a main memory  102 , an I/O controller  103 , a keyboard  104 , a pointing device  105  (e.g., mouse), a screen or display device  106 , a mass storage  107 , (e.g., hard disk), a printing device  108 , and an interface  109 . The various components of the system  100  communicate through a system bus  110  or a similar architecture. In addition, the system  100  may communicate with other devices through the interface or communication port  109 , which may be an RS-232 serial port or the like. Devices which will be commonly connected to the interface  109  include a network  151  (e.g., LANS), a laptop computer  152 , an organizer  154  (e.g., Sharp Wizard™), a modem  153 , and the like. 
     In operation, the user enters commands through the keyboard  104  and/or pointing device  105  which is typically a mouse, a track ball, or the like. The computer system displays text and/or graphic images and other data on the display device  106 , such as a cathode-ray tube or an LCD display. A hard copy of the displayed information, or other information within the system  100 , may be obtained from the printing device  108 . In a preferred embodiment, the computer system  100  is an appropriately programmed is an IBM PC-compatible personal computer (available from a variety of vendors, including IBM of Armonk, New York) running MS-DOS (available from Microsoft Corporation of Redmond, Wash.). 
     In this interactive computer system, the user enters scheduling and other time information with the keyboard  104  and/or pointing device  105 . Alternative sources of information are available through the interface  109 . Once entered, the information is stored in the memory  102  where it may be analyzed by processor  101 . After appropriate formatting, the information is conveyed to the user by the display device  106  and/or printing device  108 . The information may be saved for future use by storing it in the mass storage  107 . 
     As shown in  FIG. 2 , the system  100  provides a window or work space  200  for display on the screen  106 . Window  200  is a rectangular, graphical user interface for viewing and manipulating textual and graphical information. Window  200  contains a main menu  210  with a plurality of submenus, such as a “planner” submenu  230 . From the submenus, the user may select a desired choice with the keyboard  104  or the pointing device  105 . Of particular interest to the present invention is the “reconcile” item, which is available from the submenu  230 . 
     Window  200  also includes a client area  220  for the display of time and scheduling information. Client area  220  may be partitioned into individual modules of information, such as the scheduling window  240  and the to-do list window  250 . Additional information may be viewed in the windows  240 ,  250  by activating scroll bars  245  and  255 , respectively. Window  200  also includes a plurality of other work surfaces (e.g., such as a communication module) which are accessible by selecting an appropriate tab  260  with the keyboard or pointing device. 
     Within the window  240 , a plurality of fields is available for the display of scheduling information. For example, field  242  is a text field for indicating the nature of the scheduling event. Field  241 , on the other hand, lists the start time associated with the event. As shown, field  241  lists start time at a user-selected interval, e.g., thirty minutes; in addition, irregular start times (those not falling exactly on the defined intervals) are also accommodated. Additional screen indicia, such as screen icons, colors, or particular fonts, may be employed to convey additional information, such as the setting of an alarm for an event. 
     Reconciling Schedules: User Interface 
     The following description will focus on the reconciliation of disparate scheduling information. The present invention is, however, not limited to such a specific application but, instead, may be applied advantageously to reconcile a variety of table or set-oriented information, particularly that which is temporal in nature. Thus, the following is offered for purposes of illustration and not limitation. 
     Referring now to  FIGS. 3A–F , the reconciliation of information in accordance with the present invention is illustrated. With particular reference to  FIGS. 3A–B , a first set of information  301  is to be reconciled with a second set of information  302 . Information  301  will typically be accumulated independent (i.e., separate) from the information  302 . For example, information  301  may represent scheduling information which has been entered on a portable device, such as a laptop computer  152  or a handheld organizer  154 . Alternatively, each set of information may be accumulated and stored on a network  151 , but at separate nodes (e.g., set  301  being a secretary&#39;s copy of a schedule, and set  302  being an executive&#39;s corresponding copy). Regardless of origin, the sets will share a common format (or be translatable into a common format) but, typically, will differ as to the exact information content shared between them. 
     As shown in  FIG. 3A , information set  301  includes a plurality of events  305 , denoted by appropriate indicia such as textual messages. Displayed proximate each event message is a time  306 , representing the start time for the event. In operation, a user will typically specify the “granularity” (i.e., the interval) for displaying event information. In information table  301 , for example, the granularity has been set equal to thirty minutes. In this manner, table  301  is displayed as a plurality of time slots, each slot spaced at a thirty minute interval. In addition to specifying a time interval, the user will typically select a starting and stopping time for each day. A typical value for a starting time would be 8:00 a.m., while a typical value for a stopping or ending time would be 6:00 p.m. 
     In addition to displaying textual messages and units of time, additional screen feedback  304  is provided. As shown, screen feedback  304  may include graphic symbols or textual messages to convey further information. For example, a musical note may be displayed to indicate that an alarm will be sounded when the event occurs. The letter “R” may be displayed proximate a time value to indicate that the event is a repeating event. In a similar manner, the duration of an event may be conveyed by illustrating a line from the start time of the event to its ending time (determined from the specified duration). As shown, events may overlap one another, whereby the duration lines are drawn in an overlapping fashion. 
     A corresponding set of information  302  is shown in  FIG. 3B . Set or table  302  employs the same or similar format as that just described for set  301 . As shown, however, specific differences exist between the two tables  301 ,  302 . In particular, set  301  employs a coarser level of granularity (sixty minutes) than that chosen for set  301 . Furthermore, the events stored in set  302  are different than those stored in set  301 , with some events even being in direct conflict. As illustrated by time slot  307 , the start time for an event can be irregular (i.e., not correspond exactly with the predefined time slot). 
     The actual reconciliation is accomplished as follows. The user requests reconciliation, for example, by selecting the “reconcile” option from the submenu  230  (of  FIG. 1 ). As shown in  FIG. 3C , the two tables  301 ,  302  are loaded into a reconciliation window  300 , which is displayed on the screen  106 . In particular, table  301  is displayed in client area  301 ′, while table  302  is displayed in client area  302 ′. As illustrated, the two tables have been synchronized to facilitate reconciliation by the user. In this case, table  302  (which originally had a granularity of sixty minutes) is now displayed with the same granularity as table  301 . 
     This “synchronizing” process allows the user to better visualize the reconciliation, thus improving his or her ability to resolve any conflicts (in those cases where automatic conflict resolution, such as based on priority, has not been enabled). Employing a user interface element, such as an insertion arrow  330 , the user may readily transfer events from one list to another by selectively specifying the desired event and the direction of insertion. The user may also globally insert one list into another, as desired. 
     In addition to reconciling scheduling information, the user may reconcile a list of priorities, such as a “to do” list. While not shown, each to do event may include a due date, a priority level, as well as any other desired information. In a manner similar to that for reconciling scheduling information, the to do lists of client areas  341 ,  342  may be reconciled, for example by synchronizing corresponding due dates. 
     Referring to  FIGS. 3D–G , a “point-and-shoot” technique for reconciling the schedules  301 ,  302  is illustrated.  FIG. 3D  represents the display of the synchronized tables just before reconciliation of the first event. In this example, the user wishes to copy the 8:00 a.m. appointment from the desktop to the laptop. Thus, the insertion arrow  330  is positioned in the 8:00 a.m. time slot (e.g., by pressing appropriate cursor keys on the keyboard  104 ). Also at this point, the user has specified (e.g., with the keyboard or the mouse) that the laptop information table will be the recipient table. Next, the event is inserted in the recipient table in response to a user event, such as pressing a function key or clicking a mouse button. 
     Various masks may be applied by the system  100  at this point to block the reconciliation between selected fields. For example, the recipient table (e.g., that of an executive) may mask a lunch period so that an updating table (e.g., from a secretary) cannot assert entries into those blocked fields. In a similar manner, a priority event in one table may mask those time slots covered by its duration so that events from another table may not be inserted thereat. 
     As shown in  FIG. 3E , the 8:00 a.m. time entry has been reconciled between the two lists and is, therefore, no longer highlighted (bold font) as an unreconciled event. Also showing in  FIG. 3E , the user has selected the 10:00 a.m. event of the desktop for insertion into a corresponding time slot in the laptop schedule. Since an event is already scheduled in this timeslot (i.e., it conflicts), the system  100  generates a duplicate 10:00 a.m. field. In this manner, the user may reconcile events which not only overlap in duration but also conflict as to start time. Alternatively, the user may specify that an event is exclusive—cannot overlap with other events—and therefore will not be reconciled in the manner just described. 
     The completed operation of the previously described reconciliation step is shown in  FIG. 3F . In particular, the 10:00 a.m. event from the desktop schedule has been copied to the corresponding time slot on the laptop schedule. Also shown in  FIG. 3F , the user may reverse the direction of reconciliation (indicated by the direction of the insertion arrow) such that events are inserted from the laptop schedule into the desktop schedule. In this case, the 8:30 a.m. appointment from the laptop schedule is inserted into the desktop schedule. 
     The completion of this step is shown in  FIG. 3G , where the desktop schedule now includes the 8:30 event from the laptop schedule. The user may continue this process as desired, including editing and deleting selected events. 
     Reconciliation of Schedules: Internal Operations 
     Referring now to  FIGS. 4A–B , a method according to the present invention for reconciling two or more sets of information is illustrated. The steps for the reconcile method  400  are as follows. In step  401 , the two tables or sets of information to be reconciled (T 1  and T 2 ) are loaded into the system (e.g., from mass storage  107 , organizer  154 , network  151 , or the like). The formatting and storing of information into sets or database tables is known in the art; see e.g., Date, C. J.,  An Introduction to Database Systems , volumes I and II, Addison Wesley, 1983; the disclosure of which is hereby incorporated by reference. At this point, the system may (optionally) verify user access, for example, by checking passwords. 
     At step  403 , the “current” date is retrieved. The current date is not necessarily the same as the system date, which is automatically tracked by the system  100 . Instead, the current date is the date of interest to the user. In particular, the user may toggle through various days, both past and present. As an example,  FIG. 2  includes a current date of Wednesday, October 23. In step  404 , a derivative or child table is built for tables T 1  and T 2 . Moreover, in step  405  the newly created child tables or lists are synchronized (e.g., according to time slots). 
     The step of synchronizing the tables, step  405 , is illustrated in further detail by  FIG. 4B  and  FIG. 5 . The substeps are as follows. In step  451 , the starting time and ending time for tables T 1  and T 2  are obtained. This will determine the maximum range of time which must be covered by the synchronizing tables. For example, if one table has a range from 7:00 a.m. to 4:00 p.m., while another has a range from 9:00 a.m. to 5:00 p.m., then the synchronizing tables must cover a range from 7:00 a.m. to 5:00 p.m. In a similar manner, the granularity for the parent tables T 1  and T 2  are obtained in step  452 . This information is used to establish common time slots between the two synchronizing tables. For example, schedule table  301  and schedule table  302  (from  FIGS. 3A–B ) have the interval of thirty minutes as a common denominator (finest level of granularity). Accordingly, the synchronizing tables will employ this determined granularity. In step  453 , entries are “padded out” (i.e., receive null values or whitespace characters) for time slots which must be added to effect the synchronization. As shown in  FIG. 5 , for example, the child table T 2 ′ has four time slots padded between its first event (8:00 a.m.) and its second event (10:00 a.m.). Similar padding for other time slots is likewise illustrated. Upon completion of step  453 , the lists are analyzed to match up common time slots. For example, the 8:30 a.m. time slot of T 1 ′ is aligned with the 8:30 a.m. time slot of T 2 ′. Also at this step, any automated reconciliation, (e.g., insertion of nonconflicting events) may be performed. 
     After completion of step  454 , the method returns to step  406  to display the synchronized lists. Next, in step  407 , the system enters an event loop to process user events, such as keyboard or mouse events. During this loop, the user may execute any of the previously described reconciliation activities (e.g., insertion, deletion, editing, and the like). User events are repeatedly interpreted until the user indicates that he or she is finished (at step  408 ). Upon completion of the reconciliation, the parent tables T 1  and T 2  are updated from T 1 ′ and T 2 ′, respectively. 
     Recoloring Screen Objects 
     Referring now to  FIG. 6 , a technique for changing the screen colors (or other attributes) of screen objects in accordance with the present invention is illustrated. Using the keyboard  401  or the pointing device  105 , the user selects a screen object. As shown, the user has created a selection box  601  by dragging a mouse cursor  602  (i.e., moving a mouse device with one button continually depressed). The sample block so selected is then copied into a recolor palette dialog box  600 . At this point, the user may adjust the palette for the particular object in sample box  610 , for example by activating foreground  615  and/or background  620  controls. Simultaneous with the operation of controls  615 ,  620 , the sample window  610  is updated with new palette values, accordingly. In this manner, the user may isolate specific screen regions or objects and experiment with different attributes, such as palette, without altering the underlying work surface. Unlike prior techniques, however, the user may actually preview the change as applied to the object of interest. 
     Referring now to  FIG. 7 , a method for recoloring screen regions or objects is illustrated. In step  701 , the user enters a palette or recoloring mode, for example by pressing a predefined function key. In step  702 , the recoloring dialog box  600  may be displayed; alternatively, the display of the dialog box may be deferred until after step  703 . In step  703 , the user specifies a region or object of interest. Typically, the user will employ a screen cursor (mouse pointer) to indicate a region of interest. The user may indicate a single point, in which case a default boundary is selected; or, the user may specify an area with two points, such as a bounding box. In step  704 , the display dialog box  600  is shown on the screen (if not displayed already). In step  705 , the user-specified region is retrieved into the sample box  610 . For character-based user interfaces, the appropriate screen buffer may be copied. For graphical user interfaces, such as Microsoft&#39;s Windows™, a captured bitmap may be shown. In step  706 , the user selects new colors, for example using scroll bar components  615 ,  620 . Contemporaneous with this step, the sample is updated with new palette or color values. In step  708 , if additional colors are desired, the method loops back to step  706 ; otherwise, the method continues on to the next step. At step  709 , the user may select another region or object for recoloring, in which case the method loops back to step  703 . The dialog box  600  may be moved or hidden (for example, by sending window move or window destroy commands), and then later redisplayed in step  704 . 
     While the invention is described in some detail with specific reference to a single preferred embodiment and certain alternatives, there is no intent to limit the invention to that particular embodiment or those specific alternatives. The true scope of the invention is defined not by the foregoing description but by the following claims.