PATENT DOCUMENT

Publication Number: US-9462033-B2
Application Number: US-201213708880-A
Country: US
Kind Code: B2

Title: Proofing electronic publications on portable devices

Abstract:
A user can proof (e.g., view, review) an electronic publication on a portable device. When the user finds errors in the electronic publication on the portable device, the user can edit the electronic publication on the editing device. The changes can be automatically synchronized with the portable device and displayed so that the user can review the changes and continue proofing the electronic publication on the portable device. In some implementations, an editing device can monitor files associated with an electronic publication for changes to the files and, when changes are detected, the files can be automatically synchronized to a portable device coupled to the editing device.

Claims:
What is claimed is: 
     
       1. A method comprising:
 detecting a first modification to a first portion of a document and a second modification to a second portion of the document on a first device; 
 after detecting the first modification and the second modification, obtaining information indicating which portion of the document is currently displayed on a portable device; 
 in response to obtaining the information indicating which portion of the document is currently displayed on the portable device:
 in accordance with a determination that the first portion of the document is currently displayed on the portable device and while the first portion of the document continues to be displayed on the portable device:
 transmitting the first modification to the portable device; and 
 after transmitting the first modification to the portable device, transmitting the second modification to the portable device; and 
 
 in accordance with a determination that the second portion of the document is currently displayed on the portable device and while the second portion of the document continues to be displayed on the portable device:
 transmitting the second modification to the portable device; and 
 after transmitting the second modification to the portable device, transmitting the first modification to the portable device. 
 
 
 
     
     
       2. A method comprising:
 displaying a first respective portion of a document on a portable device without displaying a second respective portion of the document; 
 sending information to an editing device indicating that the first respective portion of the document is currently displayed on the portable device and that the second respective portion of the document is not currently displayed on the portable device; 
 after sending the information to the editing device, while the first respective portion of the document is displayed on the portable device, receiving, from the editing device, a first modification to the first respective portion of the document, and after receiving the first modification, receiving, from the editing device, a second modification to the second respective portion of the document, wherein:
 in accordance with a first portion of the document being the first respective portion of the document, and a second portion of the document being the second respective portion of the document, the first modification is to the first portion of the document, and the second modification is to the second portion of the document, and 
 in accordance with the second portion of the document being the first respective portion of the document, and the first portion of the document being the second respective portion of the document, the first modification is to the second portion of the document, and the second modification is to the first portion of the document; and 
 
 refreshing the display of the first respective portion of the document on the portable device to reflect the first modification. 
 
     
     
       3. The method of  claim 2 , wherein refreshing the display includes restarting an application used for displaying the document. 
     
     
       4. The method of  claim 2 , wherein refreshing the display includes temporarily hiding the document. 
     
     
       5. The method of  claim 2 , wherein receiving the first modification from the editing device includes receiving text files before image files. 
     
     
       6. The method of  claim 1 , wherein the first portion of the document is currently displayed on the portable device, the second portion of the document is currently displayed on a second portable device, the first modification is transmitted to the portable device, and after the first modification is transmitted to the portable device, the second modification is transmitted to portable device, the method further comprising:
 after detecting the first modification and the second modification and while the second portion of the document continues to be displayed on the second portable device:
 transmitting the second modification to the second portable device; and 
 after transmitting the second modification to the second portable device, transmitting the first modification to the second portable device. 
 
 
     
     
       7. The method of  claim 1 , further comprising:
 in response to obtaining the information indicating which portion of the document is currently displayed on the portable device:
 in accordance with a determination that a third portion of the document, not associated with a modification, is currently displayed on the portable device:
 transmitting the first modification and the second modification to the portable device in an order that is independent of the display of the third portion on the portable device. 
 
 
 
     
     
       8. A non-transitory computer-readable medium including one or more sequences of instructions which, when executed by one or more processors, causes:
 detecting a first modification to a first portion of a document and a second modification to a second portion of the document on a first device; 
 after detecting the first modification and the second modification, obtaining information indicating which portion of the document is currently displayed on a portable device; 
 in response to obtaining the information indicating which portion of the document is currently displayed on the portable device:
 in accordance with a determination that the first portion of the document is currently displayed on the portable device and while the first portion of the document continues to be displayed on the portable device:
 transmitting the first modification to the portable device; and 
 after transmitting the first modification to the portable device, transmitting the second modification to the portable device; and 
 
 in accordance with a determination that the second portion of the document is currently displayed on the portable device and while the second portion of the document continues to be displayed on the portable device:
 transmitting the second modification to the portable device; and 
 after transmitting the second modification to the portable device, transmitting the first modification to the portable device. 
 
 
 
     
     
       9. A non-transitory computer-readable medium including one or more sequences of instructions which, when executed by one or more processors, causes:
 displaying a first respective portion of a document on a portable device without displaying a second respective portion of the document; 
 sending information to an editing device indicating that the first respective portion of the document is currently displayed on the portable device and that the second respective portion of the document is not currently displayed on the portable device; 
 after sending the information to the editing device, while the first respective portion of the document is displayed on the portable device, receiving, from the editing device, a first modification to the first respective portion of the document, and after receiving the first modification, receiving, from the editing device, a second modification to the second respective portion of the document, wherein:
 in accordance with a first portion of the document being the first respective portion of the document, and a second portion of the document being the second respective portion of the document, the first modification is to the first portion of the document, and the second modification is to the second portion of the document, and 
 in accordance with the second portion of the document being the first respective portion of the document, and the first portion of the document being the second respective portion of the document, the first modification is to the second portion of the document, and the second modification is to the first portion of the document; and 
 
 refreshing the display of the first respective portion of the document on the portable device to reflect the first modification. 
 
     
     
       10. The computer-readable medium of  claim 9 , wherein the instructions that cause refreshing the display include instructions that cause restarting an application used for displaying the document. 
     
     
       11. The computer-readable medium of  claim 9 , wherein the instructions that cause refreshing the display include instructions that cause temporarily hiding the document. 
     
     
       12. The computer-readable medium of  claim 9 , wherein the instructions that cause receiving the first modification from the editing device include instructions that cause receiving text files before image files. 
     
     
       13. A system comprising:
 one or more processors; and 
 a non-transitory computer-readable medium including one or more sequences of instructions which, when executed by the one or more processors, causes: 
 detecting a first modification to a first portion of a document and a second modification to a second portion of the document on a first device; 
 after detecting the first modification and the second modification, obtaining information indicating which portion of the document is currently displayed on a portable device; 
 in response to obtaining the information indicating which portion of the document is currently displayed on the portable device:
 in accordance with a determination that the first portion of the document is currently displayed on the portable device and while the first portion of the document continues to be displayed on the portable device:
 transmitting the first modification to the portable device; and 
 after transmitting the first modification to the portable device, transmitting the second modification to the portable device; and 
 
 in accordance with a determination that the second portion of the document is currently displayed on the portable device and while the second portion of the document continues to be displayed on the portable device:
 transmitting the second modification to the portable device; and 
 after transmitting the second modification to the portable device, transmitting the first modification to the portable device. 
 
 
 
     
     
       14. A system comprising:
 one or more processors; and 
 a non-transitory computer-readable medium including one or more sequences of instructions which, when executed by the one or more processors, causes: 
 displaying a first respective portion of a document on a portable device without displaying a second respective portion of the document; 
 sending information to an editing device indicating that the first respective portion of the document is currently displayed on the portable device and that the second respective portion of the document is not currently displayed on the portable device; 
 after sending the information to the editing device, while the first respective portion of the document is displayed on the portable device, receiving, from the editing device, a first modification to the first respective portion of the document, and after receiving the first modification, receiving, from the editing device, a second modification to the second respective portion of the document, wherein:
 in accordance with a first portion of the document being the first respective portion of the document, and a second portion of the document being the second respective portion of the document, the first modification is to the first portion of the document, and the second modification is to the second portion of the document, and 
 in accordance with the second portion of the document being the first respective portion of the document, and the first portion of the document being the second respective portion of the document, the first modification is to the second portion of the document, and the second modification is to the first portion of the document; and 
 
 refreshing the display of the first respective portion of the document on the portable device to reflect the first modification. 
 
     
     
       15. The system of  claim 14 , wherein the instructions that cause refreshing the display include instructions that cause restarting an application used for displaying the document. 
     
     
       16. The system of  claim 14 , wherein the instructions that cause refreshing the display include instructions that cause temporarily hiding the document. 
     
     
       17. The system of  claim 14 , wherein the instructions that cause receiving the first modification from the editing device include instructions that cause receiving text files before image files.

Description:
FIELD OF THE DISCLOSURE 
     The disclosure generally relates to editing electronic documents. 
     BACKGROUND OF THE DISCLOSURE 
     Users often read electronic publications on portable devices. Electronic books, magazines, websites and newspapers, for example, can be read on tablet computers, smartphones, text readers and other handheld devices. Consistently displaying electronic publication content on heterogeneous devices can be problematic. For example, due to differences in device capabilities and characteristics, the content may display properly on one device while another device may display the content with various display errors. Thus, an electronic publisher may need to proof the electronic publication on a variety of devices and edit the electronic publication to accommodate the characteristics of each device before publishing the electronic publication. 
     SUMMARY OF THE DISCLOSURE 
     A user can proof (e.g., proofread, view, review) an electronic publication on a portable device. When the user finds errors in the electronic publication on the portable device, the user can edit the electronic publication on an editing device. The changes can be automatically synchronized with the portable device and displayed so that the user can review the changes and continue proofing the electronic publication on the portable device. In some implementations, the editing device can monitor files associated with an electronic publication for changes to the files and, when changes are detected, the files can be automatically synchronized to a portable device coupled to the editing device. 
     Particular implementations provide at least the following advantages: A user can quickly proof an electronic publication on a portable device without having to manually synchronize or update the electronic publication when changes are made to the electronic publication on an editing device. Multiple portable devices can be synchronized and proofed concurrently. Synchronization of files can be prioritized based on which portion of the electronic document is currently displayed on the portable device allowing the user to quickly view changes made to currently displayed portions of the electronic publication. 
     Details of one or more implementations are set forth in the accompanying drawings and the description below. Other features, aspects, and potential advantages will be apparent from the description and drawings, and from the claims. 
    
    
     
       BRIEF DESCRIPTION OF DRAWINGS 
         FIG. 1  illustrates an example system for proofing electronic publications on portable devices. 
         FIG. 2  illustrates an interface for managing synchronization of electronic publications. 
         FIG. 3  illustrates an interface for managing synchronization of an identified electronic publication. 
         FIG. 4  illustrates an interface for accessing an electronic publication on a portable device. 
         FIG. 5  illustrates an interface for presenting electronic publication content on a portable device. 
         FIG. 6  illustrates an interface for presenting synchronization information on a portable device. 
         FIG. 7  is flow diagram of an example process for synchronizing electronic publication changes on an editing device. 
         FIG. 8  is flow diagram of an example process for synchronizing electronic publications on a portable device. 
         FIG. 9  is a block diagram of an exemplary system architecture implementing the features and processes of  FIGS. 1-8 . 
     
    
    
     Like reference symbols in the various drawings indicate like elements. 
     DETAILED DESCRIPTION 
     Proofing System 
       FIG. 1  illustrates an example system  100  for proofing electronic publications on portable devices. In some implementations, editing device  102  can identify changes made to an electronic publication  110  and transmit the changes to portable devices  104 ,  106  and/or  108  while the electronic publication is being proofed (e.g., reviewed, proofread) on the portable devices. For example, electronic publication  110  can be an electronic book, an electronic magazine, a webpage, an electronic newspaper or a software application. The electronic publication can be a bundle of files that includes many files of many different types. The electronic publication files can be text files corresponding to pages, chapters, sections, etc. of the electronic publication. The electronic publication files can be image, sound, video or other media files that can be presented when electronic publication  110  is presented to a reader. For example, images, sound, video, etc. can be embedded in the pages of an electronic book along with text and presented to a user as the user is reading the electronic book. The files can have different formats (e.g., text, HTML, PDF, MP3, MP4, JPEG. etc.). 
     In some implementations, editing device  102  can include synchronization application  112 . For example, synchronization application  112  can be a software application that runs on editing device  102 . In some implementations, synchronization application  112  can be configured to monitor the electronic publication files associated with electronic publication  110  for changes to the files. For example, changes to the electronic publication files can be detected by detecting a change in file metadata (e.g., timestamp, file size, hash values, etc.) associated with the file. For example, a file that has been edited can have a changed timestamp indicating when the file was last edited. A file that has been edited will change in size according to what has been added to or deleted from the file, for example. In some implementations, changes to electronic publication files can be detected by comparing hash data associated with the file. For example, the contents of a file can be hashed to generate a hash value for the file and the hash value can be stored. Later, the contents of the file can be hashed again to generate a new hash value. The new hash value can be compared with the stored hash value to determine if the file has changed. 
     In some implementations, editing device  102  can synchronize electronic publication file changes to portable devices  104 ,  106  and/or  108 . For example, synchronization application  112  can transmit changed electronic publication files to portable devices  104 ,  106  and/or  108 . For example, synchronization application  112  can be an electronic publication server application that delivers electronic publication files to electronic publication client applications  114 ,  116 , and/or  118  running on portable devices  104 ,  106  and/or  108 . In some implementations, editing device  102  (or synchronization application  112 ) can detect when portable devices  104 ,  106  and/or  108  (or electronic publication clients  114 ,  116  and/or  118 ) are connected to editing device  102 . For example, portable devices  104 ,  106  and/or  108  can be physically connected to editing device  102  directly (e.g., tethered) or indirectly (e.g., networked). Portable devices  104 ,  106  and/or  108  can be wirelessly connected to editing device  102  directly (e.g., Bluetooth) or indirectly (e.g., through a wireless network). In some implementations, electronic publication clients  114 ,  116  and/or  118  can be software applications that provide access to and display electronic publications, such as electronic publication  110 . For example, the electronic publication clients  114 ,  116  and/or  118  can be configured to present a graphical user interface (e.g., a bookshelf) that allows a user to select electronic publication  110  and display the contents of electronic publication  110  on portable devices  104 ,  106  and/or  108 . 
     In some implementations, a user can use portable devices  104 ,  106  and/or  108  (and electronic publication clients  114 ,  116  and/or  118 ) to proof the electronic publication. For example, the user can display electronic publication  110  on portable devices  104 ,  106  and/or  108 , proofread electronic publication  110 , and determine if electronic publication  110  displays properly on each device. Because portable devices  102 ,  104 ,  106  and  108  can be heterogeneous devices (e.g., laptop computer, desktop computer, tablet computer, smartphone, text reader, etc.), electronic publication  110  can be displayed differently on each device. A user can proof electronic publication  110  on each portable device to ensure that electronic publication  110  displays properly on each portable device. 
     In some implementations, if a user finds an error in the presentation of electronic publication  110  on a portable device (e.g., portable device  104 ), the user can edit electronic publication  110  on editing device  102  using any appropriate editor (e.g., text editor, graphics editor, etc.) and save the changes to electronic publication  110 . Once the changes to electronic publication  110  are saved, synchronization application  112  can detect that changes have been made to the files associated with electronic publication  110  and synchronize the changed files to portable devices  104 ,  106  and/or  108 . 
     Synchronization Application Interfaces 
       FIG. 2  illustrates an interface  200  for managing synchronization of electronic publications. For example, interface  200  can be a graphical user interface for synchronization application  112 . When synchronization application  112  is executed on editing device  102 , interface  200  can be displayed. In some implementations, a user can drag an electronic publication into area  202  in interface  200  in order to synchronize electronic publication  110  with other devices (e.g., portable devices  104 ,  106  and  108 ). For example, a user of editing device  102  can identify an electronic publication for synchronizing by dragging and dropping an icon representing electronic publication  110  into area  202 . 
     In some implementations, area  204  can display information about portable devices that can receive electronic publication updates. For example, area  204  can present a list of devices (e.g., portable devices  104 ,  106 ,  108 ) that are configured with client applications (e.g., electronic publication clients  114 ,  116 ,  118 ) and that are currently connected to editing device  102  and synchronization application  112 . For example, information items  206 ,  208  and  210  can correspond to portable devices  104 ,  106  and  108 , of  FIG. 1 . Information items  206 ,  208  and/or  210  can present information, such device identifiers (e.g., names), images representing device types, and checkboxes for selecting devices to synchronize with electronic publication updates or changes. Information items  206 ,  208  and  210  can present portable device status information. For example, information items  206 ,  208  and  210  could indicate the status of the portable device (e.g., available, busy, non-responsive, etc.) and/or the status of synchronization operations (e.g., percent complete, successful completion, errors, etc.). 
       FIG. 3  illustrates an interface  300  for managing synchronization of an identified electronic publication. For example, an electronic publication can be identified to the synchronization application by dragging and dropping the electronic publication onto interface  300 . An electronic publication can be identified to the synchronization application through the use of menu items as well. For example, a user can invoke a file open menu item or dialog box to identify or select an electronic publication. 
     In some implementations, when electronic publication  110  has been identified to synchronization application  112 , an image representing electronic publication  110  can be displayed on interface  300 . For example, when a user selects electronic publication  110  by dragging and dropping electronic publication  110  onto area  202 , image  302  representing electronic publication  110  can be displayed. In some implementations, image  302  can be a custom image associated with the electronic publication. For example, image  302  can be a book cover image designed for a particular book. In some implementations, image  302  can be a default image. For example, a generic image of a book can be used and information (e.g., an identifier, name, filename, etc.) associated with the electronic publication can be presented on the generic image. 
     In some implementations, a user can select which devices get synchronized with electronic publication updates. For example, a user can select one or more of checkboxes  304 ,  306  and  308  to identify which devices (e.g., portable devices  104 ,  106 ,  108 ) will receive synchronization updates from editing device  102  (e.g., synchronization application  112 ). In some implementations, only selected client devices will be synchronized. For example, only devices having a checked box (e.g., checkboxes  304 ,  306 ) will receive synchronization updates when changes to electronic publication  110  are detected by synchronization application  112 . Devices having an unchecked box (e.g.,  308 ) will not receive electronic publication synchronization updates, for example. 
     In some implementations, interface  300  can include graphical element  310  for displaying the location of an electronic publication. For example, if a user selects graphical element  310 , a window can be presented that shows the contents of the operating system file directory in which the currently selected electronic publication is stored on editing device  102 . In some implementations, interface  300  can include electronic publication location information  312 . For example, location information  312  can include a character string that identifies a directory location in which the currently selected electronic publication is stored on editing device  102 . 
     In some implementations, a user can cancel the monitoring and synchronization of an electronic publication with other devices. In some implementations, a user can provide input over image  302  to cause graphical element  314  to be displayed. For example, a user can hover a cursor over image  302  using an input device (e.g., mouse, touch pad, etc.). A user can hold a finger over image  302  if editing device  102  is configured for touch input (e.g., device  102  has a touch sensitive display). For example, after the touch input is received for a predetermined period of time (e.g., a second), graphical element  314  can be displayed. 
     In some implementations, a user can cancel the synchronization of the electronic publication by selecting graphical element  314 . For example, the user can select graphical element  314  by cursor input (e.g. clicking a mouse button) or by touch input (e.g., touching a touch sensitive display over the location of graphical element  314 ). When the user selects graphical element  314 , image  302  can be removed from display on interface  300  and synchronization application  112  will no longer synchronize the electronic publication. In some implementations, a user can cancel synchronization of a current electronic publication by identifying a different electronic publication to synchronize. For example, a user can drag and drop a new electronic publication into interface  300  to cause synchronization application  112  to synchronize the new electronic publication and to stop synchronizing the previous electronic publication. 
     In some implementations, interface  300  can present portable device status information. For example, information items  316 ,  318  and  320  can indicate the status of the portable device (e.g., available, busy, non-responsive, etc.) and/or the status of synchronization operations (e.g., percent complete, successful completion, errors, etc.). In some implementations, interface  300  can present error information. For example, interface  300  can present error information item  322  indicating the number of errors raised while processing an electronic publication. In some implementations, a user can select information item  322  to display descriptions of the errors. For example, a user can select information item  322  to cause a window to appear containing a description of errors raised during the processing (e.g., synchronization, validation, etc.) of an electronic publication. 
     Electronic Publication Client Interfaces 
       FIG. 4  illustrates an interface  400  for accessing an electronic publication on a portable device. For example, interface  400  can be a graphical interface associated with electronic publication clients  114 ,  116  and  118  of  FIG. 1 . In some implementations, interface  400  can present a bookcase metaphor. For example, interface  400  can appear to be a bookcase having one or more books, magazines, documents or other electronic publications on the shelves of the bookcase. In some implementations, image  402  can be displayed. Image  402  can be an image that represents an electronic publication available for selection and viewing through interface  400 . In some implementations, image  402  can represent an electronic publication that is being downloaded or synchronized to the portable device. 
     In some implementations, image  402  can be displayed on interface  400  when electronic publication  110  is being synchronized with a portable device displaying interface  400 . For example, image  402  can be displayed in interface  400  once the synchronization process between editing device  102  and portable device  104 ,  106  or  108  has started. For example, at the beginning of the synchronization process, editing device  102  can transmit electronic publication metadata to portable device  104  identifying an author and title for the electronic publication. Once the electronic publication metadata is received, image  402  can be displayed along with author and title information. In some implementations, image  402  can include information item  404 . Information item  404  can include information identifying electronic publication  110  as a work in progress as opposed to a completed, published work. For example, information item  404  can include a “Proof” label indicating that electronic publication  110  is being proofread on the device and is not a completed work. In some implementations, image  402  can be overlaid with status indicator  406 . For example, status indicator  406  can represent the current state of synchronization of electronic publication  110  and can be displayed when electronic publication files are being uploaded or synchronized with the portable device. 
     In some implementations, a user can select an electronic publication from the shelves of the bookcase by selecting an icon or other image representing the electronic publication. For example, a user can select image  402  to cause the content of electronic publication  110  to be displayed. 
       FIG. 5  illustrates interface  500  for presenting electronic publication content on a portable device. In some implementations, when a user selects image  402  of  FIG. 4 , the contents of the electronic publication can be displayed on interface  500 . In some implementations, synchronization updates can be received while a user is viewing electronic publication content in interface  500 . 
       FIG. 6  illustrates interface  600  for presenting synchronization information on a portable device. In some implementations, when synchronization updates are received while electronic publication content is displayed, interface  600  can be presented. For example, when a synchronization update is received while interface  500  is displayed, the content displayed on interface  500  can be temporarily hidden or veiled. In some implementations, an opaque or semi-transparent sheet  602  (e.g., veil) can be placed over the content displayed by interface  500  while synchronization updates are received by the portable device. For example, sheet  602  can appear to slide into view from an edge of interface  500  until sheet  602  covers the electronic publication content. 
     In some implementations, sheet  602  can present information about the current synchronization update. For example, sheet  602  can display a spinning status indicator  604  that indicates to the user that a synchronization update is on-going. Sheet  602  can display informational text  606  that provides the user with additional information about the current synchronization. For example, informational text  602  can include version information, source information, timestamps and/or filenames associated with the current synchronization update of the electronic publication. In some implementations, once the synchronization update is complete, sheet  602  can be removed (e.g., slid off screen) and interface  500  can be displayed. For example, when sheet  602  is removed, interface  500  can display the newly updated and synchronized content received for the electronic publication. 
     Example Processes 
       FIG. 7  is flow diagram of an example process  700  for synchronizing electronic publication changes on an editing device. In some implementations, changes (e.g., edits) made to an electronic publication on an editing device (e.g., editing device  102 ) are automatically synchronized to one or more portable devices. For example, automatically synchronizing the changes to the portable devices can allow a user to proof (e.g., proofread) the electronic publication on the portable devices while editing the electronic publication on the editing device to fix errors found during the proofing without requiring the user to take extra steps to synchronize or upload the changes to the portable devices. 
     At step  702 , one or more portable devices are detected. In some implementations, an editing device can detect when one or more portable devices are connected to the editing device. For example, synchronization application  112  on the editing device  102  can detect corresponding electronic publication client applications  114 ,  116 ,  118  running on portable devices  104 ,  106  and/or  108  when the portable devices are connected to the editing device. 
     At step  704 , selection of at least one portable device is received. In some implementations, a list of the connected portable devices can be displayed. For example, the server application on the editing device can present a graphical user interface ( FIG. 2 ) that displays a list of the portable devices that are connected to the editing device and that also are running the client electronic publication application. In some implementations, a user can select one or more of the connected portable devices to identify which of the connected portable devices will receive electronic publication synchronization updates. 
     At step  704 , identification of an electronic publication is received. In some implementations, a user can identify an electronic publication by dragging and dropping an icon or image associated with an electronic publication one interface  200  of  FIG. 2 . For example, if the electronic publication is stored on the desktop of a device, the user can drag the electronic publication files from the desktop onto interface  200  and drop the electronic publication files into area  202 . In some implementations, a user can identify an electronic publication by selecting menu items associated with the server application. For example, a user can interact with a file open menu item or user interface to identify or select the electronic publication. 
     At step  706 , initial synchronization is performed. In some implementations, once the electronic publication is identified and at least one portable device is connected and selected, an initial synchronization of the electronic publication to the portable device is performed. In some implementations, the synchronization application sends metadata associated with the electronic publication to the electronic publication client application. For example, the electronic publication metadata can include author and title information for the electronic publication. In some implementations, metadata associated with each file in the electronic publication can be sent to the electronic publication client application. The metadata can include a file identifier (e.g., file name), timestamp, file size and/or hash values. The timestamp can correspond to the date and time of the last file change, for example. The metadata can include a description of the change to the file. For example, the metadata can indicate that a file has been changed, added or deleted. In some implementations, the synchronization server will receive from the electronic publication client application a list of electronic publication files on the portable device that have different metadata (e.g., timestamps, file sizes, hash values) than the electronic publication file metadata sent to the electronic publication client application. The synchronization server will then synchronize the files identified in the received list to a storage location on the client device. For example, the synchronization server can copy, overwrite or delete files on the portable device while performing the synchronization. Once the initial synchronization is performed, the electronic publication files on the editing device are monitored for changes. 
     At step  708 , the electronic publication is monitored for changes. In some implementations, the synchronization application monitors the electronic publication files for changes. For example, the synchronization application can collect metadata associated with electronic publication files. The file metadata can include timestamps (e.g., time of last access), file size, checksums, or any other data that can be used to determine whether a file has been modified. In some implementations, the synchronization application can store the file metadata and later compare the stored file metadata to current file metadata to determine if the file has been modified. For example, if the current timestamp is different than the previous timestamp, the file has been changed. If the current file size is larger or smaller than the previous file size, the file has changed. In some implementations, an electronic publication includes a plurality of files. Thus, when monitoring the electronic publication for changes, the synchronization application will monitor all of the files that are included in the electronic publication. 
     At step  712 , a synchronization update is performed when file changes are detected. In some implementations, once a changed electronic publication file is detected, an electronic publication synchronization update is performed. For example, the electronic publication synchronization update can be performed immediately upon detecting a changed file. The electronic publication synchronization update can be performed after a predetermined delay (e.g., 2 seconds), for example. Once the changed file (or files) is detected a synchronization update can be performed. For example, the synchronization application can send metadata associated with the changed files to the electronic publication client application. The file metadata can include a file identifier (e.g., file name), a timestamp (e.g., corresponding to when the change was made) and a file size for each file. The file metadata can include information describing the change made to the file (e.g., file modified, added or deleted). The synchronization application can receive from the electronic publication client a list of electronic publication files that are on the client device and that do not match the sent electronic publication file metadata. The synchronization server can then copy (or delete) the files to a storage location on the client device. For example, the synchronization server can write, overwrite or delete the files directly in the storage location of the electronic publication on the portable device. 
       FIG. 8  is flow diagram of an example process  800  for synchronizing electronic publications on a portable device. In some implementations, a client device can display the contents of an electronic publication while receiving updates to the electronic publication. For example, a user can proofread an electronic publication on the client device, discover an error in how the content is displayed on the client device, edit the electronic publication on an editing device coupled to the client device, the edits to the electronic publication can be automatically synchronized with the client device, and the user can review the changes and continue proofing the electronic publication. 
     At step  802 , an initial synchronization is performed. For example, a portable device can be coupled to an editing device. The portable device can be running an electronic publication client application. The editing device can be running an electronic publication synchronization application. The electronic publication client application can receive metadata associated with an electronic publication from the electronic publication synchronization application. The electronic publication metadata can include author and title information so that the electronic publication client application can display information for the electronic publication. For example, the electronic publication client application can display an electronic publication image with author and title information, as described with reference to  FIG. 4 . 
     In some implementations, electronic publication file metadata be received by the electronic publication client application and can include an identifier, timestamp file size and/or hash values for each file in the electronic publication. The electronic publication client application can compare the file metadata to file metadata associated with locally stored (e.g., on the portable device) electronic publication files, identify which locally stored electronic publication files do not match the received electronic publication file metadata and send a list of the identified files to the electronic publication synchronization application. The electronic publication synchronization application can then access the local storage (e.g., hard disk, flash memory, etc.) on the portable device to synchronize the identified files on the editing device to the electronic publication files on the portable device. For example, the electronic publication synchronization application can overwrite, copy and delete files on the portable device using direct storage access while performing the synchronization. In some implementations, while initial synchronization is performed, a progress indicator (e.g.,  406  of  FIG. 4 ) can be displayed that indicates the progress made during the synchronization process. For example, progress can be determined as a number of files processed, estimated amount of time remaining, percentage of files processed, etc. 
     At step  804 , the electronic publication content is displayed. For example, a user can select electronic publication image  402  of  FIG. 4  to cause the content of the electronic publication to be displayed on the portable device, as illustrated by  FIG. 5 . 
     At step  806 , a synchronization update is performed. For example, one or more electronic publication files can be edited on the editing device. When changes to the electronic publication files are made, the electronic publication client application can receive file metadata associated with the changed files from the synchronization application on the editing device. The file metadata can include electronic publication file identifiers, timestamps file sizes and/or hash values associated with each of the changed files. The electronic publication client application can compare the received file metadata to file metadata associated with corresponding local electronic publication files (e.g., electronic publication files on the portable device), identify which corresponding files have mismatched file metadata, and send a list of the identified files to the synchronization application. The synchronization application can then synchronize the identified (changed) files on the editing device with the corresponding files on the portable device. For example, the synchronization application can copy, overwrite, and delete electronic publication files on the portable device so that the portable device electronic publication files match the newly edited electronic publication files on the editing device. 
     At step  808 , the electronic publication content display is refreshed. In some implementations, the electronic publication client application can detect when electronic publication files have been changed in local storage on the portable device and reload the files for display. For example, once a synchronization has occurred, the electronic publication client can reload content from the changed files and present the content on a user interface (e.g., interface  500 ) so that a user can view the content. In some implementations, when the electronic publication client application reloads the content from the changed files, the electronic publication client can drop a veil over the currently displayed content until the reloading is complete, as illustrated by  FIG. 6 . For example, the electronic publication client application can reload or refresh partial content updates without closing the electronic publication. In some implementations, the electronic publication client application must close and reload the entire electronic publication. For example, when the electronic publication client application detects that a particular file has changed (e.g., a table of contents file), the electronic publication client will close the electronic publication and perform a complete reload of the contents. When the updated content has been reloaded, the veil can be removed and the updated content can displayed on the portable device. 
     Synchronization Priority 
     In some implementations, synchronization of electronic publication files can be prioritized. For example, as a user is proofing an electronic publication on a portable device, the user may find an error in the display on the electronic publication content. The user can edit the electronic publication on an editing device, the changes to the electronic publication can be automatically synchronized to the portable device, and the user can review the changes on the portable device to determine if the changes fixed the error. 
     In some implementations, electronic publication files associated with an electronic publication page currently displayed on the portable device can be synchronized before other electronic publication files. For example, the electronic publication client application can send the electronic publication synchronization application information identifying the currently displayed page of the electronic publication. electronic publication files associated with currently viewed page can be given synchronization priority. For example, if the user is proofing page forty (40) of chapter two (2), the electronic publication file that includes page forty will by synched first, the electronic publication files that include chapter two will be synched second, and then the remaining electronic publication file changes will be synched. Thus, a user can quickly see the changes most relevant to the page of the electronic publication that the user is currently proofing. 
     In some implementations, the content veil can be lifted once the current page is synchronized. For example, if synchronization prioritization is used, the electronic publication files associated with the currently displayed page of the electronic publication are synchronized first. Once the current page is synchronized, the veil can be lifted allowing the user to continue proofing the current page. In some implementations, synchronization of the remaining changed electronic publication pages can be performed in the background while the user is proofing the currently displayed page. 
     Other prioritization mechanisms can be implemented. In some implementations, synchronization of electronic publication files can be prioritized based on file type. For example, text files can be synched before image files, image files synched before audio files, audio files synched before video files. 
     Synchronization on Demand 
     In some implementations, synchronization of changed electronic publication files can be performed on demand. For example, instead of forcing a user to wait for a full synchronization before viewing electronic publication content, synchronization of content can be performed as needed thereby allowing the user to continue proofing the electronic publication content without having to wait for all changes to be synchronized. For example, if changes have been made to pages 4, 20 and 35 of an electronic publication and the user is proofing page 4, only page 4 may be immediately synchronized. The user will only have to wait for changes to page 4 to synchronize. As the user continues proofing the electronic publication and approaches page 20 (e.g., the user is on page 19), page 20 can be synchronized in the background as the user proofs page 19. Thus, when the user reaches page 20, the updates have already been synchronized and the user does not have to wait for the synchronization process to complete. 
     Electronic Publication Validation 
     In some implementations, synchronization application can validate an electronic publication before synchronizing the electronic publication to a portable device. For example, if an electronic publication file is an HTML file, the synchronization application can validate the HTML by checking for errors (e.g., misplaced bracket, misspelled tags, etc.) in the HTML. If validation fails (e.g., errors are found) the synchronization application can notify the user of the error. For example, the synchronization application can display a message indicating the type of error found. 
     Electronic Publication Submission 
     In some implementations, the synchronization application can facilitate submission of the electronic publication to a distributor for approval. For example, an electronic media distributor (e.g., online store) may perform steps to validate and approve an electronic publication for distribution. The synchronization application can provide an interface that allows a user to upload the electronic publication to the distributor. For example, once the user is satisfied with the proofed electronic publication, the user can select a ‘submit’ button on the interface of the synchronization application to cause the synchronization application to transmit the electronic publication to the distributor. 
     Debugging 
     In some implementations, the synchronization application can provide debugging features to aid a user in debugging electronic publication content. For example, the synchronization application can provide a console for displaying diagnostic messages. The synchronization application can display graphics and data for conveying information, such as memory usage, frame rate or any other diagnostic information. For example, the synchronization application can display an error message if the portable device with which the synchronization application is attempting to synchronize is busy. The synchronization application can display an error message if the portable device does not have the electronic publication client installed or if the electronic publication client is not currently running on the portable device. The synchronization application can display an error message if the portable device has an old, incompatible or outdated version of the electronic publication client. 
     Example Mobile Device Architecture 
       FIG. 9  is a block diagram  900  of an example implementation of the devices  102 ,  104 ,  106  and/or  108  of  FIG. 1 . The devices  102 ,  104 ,  106  and/or  108  can include a memory interface  902 , one or more data processors, image processors and/or central processing units  904 , and a peripherals interface  906 . The memory interface  902 , the one or more processors  904  and/or the peripherals interface  906  can be separate components or can be integrated in one or more integrated circuits. The various components in the mobile device  100  can be coupled by one or more communication buses or signal lines. 
     Sensors, devices, and subsystems can be coupled to the peripherals interface  906  to facilitate multiple functionalities. For example, a motion sensor  910 , a light sensor  912 , and a proximity sensor  914  can be coupled to the peripherals interface  906  to facilitate orientation, lighting, and proximity functions. Other sensors  916  can also be connected to the peripherals interface  906 , such as a global navigation satellite system (GNSS) (e.g., GPS receiver), a temperature sensor, a biometric sensor, or other sensing device, to facilitate related functionalities. 
     A camera subsystem  920  and an optical sensor  922 , e.g., a charged coupled device (CCD) or a complementary metal-oxide semiconductor (CMOS) optical sensor, can be utilized to facilitate camera functions, such as recording photographs and video clips. The camera subsystem  920  and the optical sensor  922  can be used to collect images of a user to be used during authentication of a user, e.g., by performing facial recognition analysis. 
     Communication functions can be facilitated through one or more wireless communication subsystems  924 , which can include radio frequency receivers and transmitters and/or optical (e.g., infrared) receivers and transmitters. The specific design and implementation of the communication subsystem  924  can depend on the communication network(s) over which the mobile device  100  is intended to operate. For example, a mobile device  100  can include communication subsystems  924  designed to operate over a GSM network, a GPRS network, an EDGE network, a Wi-Fi or WiMax network, and a Bluetooth™ network. In particular, the wireless communication subsystems  924  can include hosting protocols such that the device  100  can be configured as a base station for other wireless devices. 
     An audio subsystem  926  can be coupled to a speaker  928  and a microphone  930  to facilitate voice-enabled functions, such as speaker recognition, voice replication, digital recording, and telephony functions. 
     The I/O subsystem  940  can include a touch-surface controller  942  and/or other input controller(s)  944 . The touch-surface controller  942  can be coupled to a touch surface  946 . The touch surface  946  and touch-surface controller  942  can, for example, detect contact and movement or break thereof using any of a plurality of touch sensitivity technologies, including but not limited to capacitive, resistive, infrared, and surface acoustic wave technologies, as well as other proximity sensor arrays or other elements for determining one or more points of contact with the touch surface  946 . 
     The other input controller(s)  944  can be coupled to other input/control devices  948 , such as one or more buttons, rocker switches, thumb-wheel, infrared port, USB port, and/or a pointer device such as a stylus. The one or more buttons (not shown) can include an up/down button for volume control of the speaker  928  and/or the microphone  930 . 
     In one implementation, a pressing of the button for a first duration can disengage a lock of the touch surface  946 ; and a pressing of the button for a second duration that is longer than the first duration can turn power to the mobile device  100  on or off. Pressing the button for a third duration can activate a voice control, or voice command, module that enables the user to speak commands into the microphone  930  to cause the device to execute the spoken command. The user can customize a functionality of one or more of the buttons. The touch surface  946  can, for example, also be used to implement virtual or soft buttons and/or a keyboard. 
     In some implementations, the mobile device  100  can present recorded audio and/or video files, such as MP3, AAC, and MPEG files. In some implementations, the mobile device  100  can include the functionality of an MP3 player, such as an iPod™. The mobile device  100  can, therefore, include a 36-pin connector that is compatible with the iPod. Other input/output and control devices can also be used. 
     The memory interface  902  can be coupled to memory  950 . The memory  950  can include high-speed random access memory and/or non-volatile memory, such as one or more magnetic disk storage devices, one or more optical storage devices, and/or flash memory (e.g., NAND, NOR). The memory  950  can store an operating system  952 , such as Darwin, RTXC, LINUX, UNIX, OS X, WINDOWS, or an embedded operating system such as VxWorks. 
     The operating system  952  can include instructions for handling basic system services and for performing hardware dependent tasks. In some implementations, the operating system  952  can be a kernel (e.g., UNIX kernel). In some implementations, the operating system  952  can include instructions for performing voice authentication. For example, operating system  952  can implement the one or more of the electronic publication synchronization features as described with reference to  FIGS. 1-8 . 
     The memory  950  can also store communication instructions  954  to facilitate communicating with one or more additional devices, one or more computers and/or one or more servers. The memory  950  can include graphical user interface instructions  956  to facilitate graphic user interface processing; sensor processing instructions  958  to facilitate sensor-related processing and functions; phone instructions  960  to facilitate phone-related processes and functions; electronic messaging instructions  962  to facilitate electronic-messaging related processes and functions; web browsing instructions  964  to facilitate web browsing-related processes and functions; media processing instructions  966  to facilitate media processing-related processes and functions; GNSS/Navigation instructions  968  to facilitate GNSS and navigation-related processes and instructions; and/or camera instructions  970  to facilitate camera-related processes and functions. 
     The memory  950  can store electronic publication synchronization software instructions  972  to facilitate the electronic publication synchronization and proofing processes and functions as described with reference to  FIGS. 1-8 . For example, software instructions  972  can include instructions for performing server-side electronic publication monitoring and synchronization processes. Software instructions  972  can include instructions for performing client-side electronic publication synchronization and content presentation processes. 
     The memory  950  can also store other software instructions (not shown), such as web video instructions to facilitate web video-related processes and functions; and/or web shopping instructions to facilitate web shopping-related processes and functions. In some implementations, the media processing instructions  966  are divided into audio processing instructions and video processing instructions to facilitate audio processing related processes and functions and video processing-related processes and functions, respectively. An activation record and International Mobile Equipment Identity (IMEI)  974  or similar hardware identifier can also be stored in memory  950 . 
     Each of the above identified instructions and applications can correspond to a set of instructions for performing one or more functions described above. These instructions need not be implemented as separate software programs, procedures, or modules. The memory  950  can include additional instructions or fewer instructions. Furthermore, various functions of the mobile device  100  can be implemented in hardware and/or in software, including in one or more signal processing and/or application specific integrated circuits. 
     Therefore, according to the above, some examples of the disclosure are directed to a method comprising: receiving, at an editing device, input identifying files associated with an electronic publication; monitoring, at the editing device, file metadata associated with the electronic publication files for data indicative of a modification to the electronic publication files; identifying one or more modified files based on the monitoring; transmitting file metadata associated with the modified files to a portable device coupled to the editing device; receiving file information from the portable device identifying at least one of the modified files; and transmitting the at least one identified modified file to the portable device. Additionally or alternatively to one or more of the examples disclosed above, in some examples the method further comprises: obtaining information identifying a particular file that is currently displayed on the portable device; and prioritizing the transmission of the at least one identified modified file to the portable device based on the particular file. 
     Some examples of the disclosure are directed to a method comprising: displaying content of an electronic publication on a portable device; receiving, from an editing device, electronic publication file metadata corresponding to one or more files of the electronic publication stored on the portable device; comparing the received file metadata to local file metadata associated with the one or more files; based on the comparison, identifying at least one changed file; transmitting, to the editing device, information identifying the at least one changed file; receiving the at least one changed file from the editing device; and refreshing the display of the electronic publication content on the portable device. Additionally or alternatively to one or more of the examples disclosed above, in some examples refreshing the display includes restarting an application used for displaying the electronic publication content. Additionally or alternatively to one or more of the examples disclosed above, in some examples refreshing the display includes temporarily hiding the content. Additionally or alternatively to one or more of the examples disclosed above, in some examples receiving the at least one changed file from the editing device includes receiving a file associated with currently displayed content before files not associated with the currently displayed content. Additionally or alternatively to one or more of the examples disclosed above, in some examples receiving the at least one changed file from the editing device includes receiving text files before image files. 
     Some examples of the disclosure are directed to a non-transitory computer-readable medium including one or more sequences of instructions which, when executed by one or more processors, causes: receiving input identifying files associated with an electronic publication; monitoring file metadata associated with the electronic publication files for data indicative of a modification to the electronic publication files; identifying one or more modified files based on the monitoring; transmitting file metadata associated with the modified files to a portable device; receiving file information from the portable device identifying at least one of the modified files; and transmitting the at least one identified modified file to the portable device. Additionally or alternatively to one or more of the examples disclosed above, in some examples the instructions cause: obtaining information identifying a particular file that is currently displayed on the portable device; and prioritizing the transmission of the at least one identified modified file to the portable device based on the particular file. 
     Some examples of the disclosure are directed to a non-transitory computer-readable medium including one or more sequences of instructions which, when executed by one or more processors, causes: displaying content of an electronic publication on a portable device; receiving, from an editing device, electronic publication file metadata corresponding to one or more files of the electronic publication stored on the portable device; comparing the received file metadata to local file metadata associated with the one or more files; based on the comparison, identifying at least one changed file; transmitting, to the editing device, information identifying the at least one changed file; receiving the at least one changed file from the editing device; and refreshing the display of the electronic publication content on the portable device. Additionally or alternatively to one or more of the examples disclosed above, in some examples the instructions that cause refreshing the display include instructions that cause restarting an application used for displaying the electronic publication content. Additionally or alternatively to one or more of the examples disclosed above, in some examples the instructions that cause refreshing the display include instructions that cause temporarily hiding the content. Additionally or alternatively to one or more of the examples disclosed above, in some examples the instructions that cause receiving the at least one changed file from the editing device include instructions that cause receiving a file associated with currently displayed content before files not associated with the currently displayed content. Additionally or alternatively to one or more of the examples disclosed above, in some examples the instructions that cause receiving the at least one changed file from the editing device include instructions that cause receiving text files before image files. 
     Some examples of the disclosure are directed to a system comprising: one or more processors; and a non-transitory computer-readable medium including one or more sequences of instructions which, when executed by the one or more processors, causes: receiving input identifying files associated with an electronic publication; monitoring file metadata associated with the electronic publication files for data indicative of a modification to the electronic publication files; identifying one or more modified files based on the monitoring; transmitting file metadata associated with the modified files to a portable device; receiving file information from the portable device identifying at least one of the modified files; and transmitting the at least one identified modified file to the portable device. Additionally or alternatively to one or more of the examples disclosed above, in some examples the instructions cause: obtaining information identifying a particular file that is currently displayed on the portable device; and prioritizing the transmission of the at least one identified modified file to the portable device based on the particular file. 
     Some examples of the disclosure are directed to a system comprising: one or more processors; and a non-transitory computer-readable medium including one or more sequences of instructions which, when executed by the one or more processors, causes: displaying content of an electronic publication on a portable device; receiving, from an editing device, electronic publication file metadata corresponding to one or more files of the electronic publication stored on the portable device; comparing the received file metadata to local file metadata associated with the one or more files; based on the comparison, identifying at least one changed file; transmitting, to the editing device, information identifying the at least one changed file; receiving the at least one changed file from the editing device; and refreshing the display of the electronic publication content on the portable device. Additionally or alternatively to one or more of the examples disclosed above, in some examples the instructions that cause refreshing the display include instructions that cause restarting an application used for displaying the electronic publication content. Additionally or alternatively to one or more of the examples disclosed above, in some examples the instructions that cause refreshing the display include instructions that cause temporarily hiding the content. Additionally or alternatively to one or more of the examples disclosed above, in some examples the instructions that cause receiving the at least one changed file from the editing device include instructions that cause receiving a file associated with currently displayed content before files not associated with the currently displayed content. Additionally or alternatively to one or more of the examples disclosed above, in some examples the instructions that cause receiving the at least one changed file from the editing device include instructions that cause receiving text files before image files.

Metadata:
Filing Date: 20121207
Publication Date: 20161004
Grant Date: 20161004
Priority Date: 20111207
Inventors: LEE JEFFERY T.
CANNISTRARO ALAN C.
HAJJ MELISSA BREGLIO
DOUGHERTY CASEY M.
LYNCH RYAN S.
Assignee: APPLE INC
CPC Classifications: [{"code": "H04L67/1095", "inventive": true, "first": false, "tree": "[]"}, {"code": "H04L67/02", "inventive": true, "first": true, "tree": "[]"}, {"code": "H04L67/1095", "inventive": true, "first": true, "tree": "[]"}, {"code": "H04L67/1095", "inventive": true, "first": false, "tree": "[]"}, {"code": "H04L67/02", "inventive": true, "first": true, "tree": "[]"}]
Family ID: 48780742