Detailed Call Flow Diagrams        

Main
Description:   The dialog begins with the Titles subdialog, which shows the titles and reads their prompts, while initializing the GUI widgets for the whole application. After the titles, the Main dialog uses a pattern common to most of the dialogs in this application. It is essentially a while loop, constructed of a choice point labeled Choice. It continually loops, executing either the Main Menu interaction or the Applications subdialog. The choice is based on whether the APP key is defined. Common to every dialog is the Cleanup action, which is executed in this case when the user terminates the dialog by hanging up.

Main.Titles
Description:   This dialog sequentially plays the title sequence, which constitutes a title for DARPA, the producers, SpeechWorks, the directors, and MapQuest, the actual appliction. After each prompt is read over the corresponding title, some initialization is performed. This way, the application will later be responsive as panels and widgets are pulled up and manipulated. Cleanup is standard.

Main.Applications
Description:   After some initialization in Init, this dialog enters a loop just like that in the Main dialog. In this case, it branches based on whether the value of the APP key is instructions. If it is, the Instructions interaction takes place and the user is allowed to read the overall instructions for the application, and can have the instructions read to him. If APP is something other than instructions then the Applications subdialog is executed.

Main.Applications.Applications
Description:   This dialog is typical of the other subdialogs in this application. It begins with an Init action, the purpose of which is to set up the state and bring up the relevant GUI items. Then, a loop following the pattern of Main is entered. If the user does not have a LOCATION specified, then the Locator subdialog is entered. If the user has LOCATION, then the Located subdialog is entered to handle the application chosen by the user and entered in App.

Main.Applications.Applications.Locator
Description:   This dialog begins like the others by calling an Init action to setup the GUI and program state. Then a loop is entered branching on Choice. The purpose of this loop is to collect the remaining information in an address from the user. If there is no CITY specified in LOCATION, the a city is collected first. Then an attempt is made to collect a whole street address. If this only partially succeeds, returning just a number or just a street, or fails entirely, then an attempt is made to collect the remaining STREET and NUMBER. Once there is a CITY, STREET and NUMBER a computation is made to determine if the address is valid. If it is not valid, an apology is played, the address is removed and the user is allowed to try again. If it is verifed, a success prompt is played and then the subdialog exits.

Main.Applications.Applications.Located
Description:   Following the standard pattern, this dialog begins by initializing its GUI. Then, as long as the LOCATION key remains defined (it may become unset by the user issuing a command to relocate), and as long as the APP is set to maps, directions, or yellowPages, then the appropriate subdialog is executed. LOCATION

Main.Applications.Applications.Located.YellowPages
Description:   Like the other dialogs, this one begins by initializing its GUI and the program state. Then, a loop is entered as long as the APP is yellowPages and a LOCATION is provided. First, if there is no CATEGORY key defined for the yellow pages key YP, then the Category subdialog is entered to compute a category. After a category is specified, if there are no RESULTS, then a subdialog is entered to compute the results, which are looked up using the MapQuest database. Once the RESULTS are determined (and the result may be an empty list), the List interaction is used to display the list to the user, and prompt them for an item on the list. If an ITEM is chosen, then the Item interaction is performed to inspect the details of a single item.