CLAIM OF BENEFIT TO PRIOR APPLICATIONSThis application claims the benefit of U.S. Provisional Application 61/657,806, filed Jun. 10, 2012, U.S. Provisional Application 61/657,883, filed Jun. 10, 2012, and U.S. Provisional Application 61/699,815, filed Sep. 11, 2012. U.S. Provisional Applications 61/657,806, 61/657,883, and 61/699,815 are incorporated herein by reference.
BACKGROUNDToday, many different websites exists for sharing images. Typically, a person uses a web browser to navigate to a website. The person then logs on to the website and starts posting photos. In some cases, the person can also leave comments regarding those photos. The photos and comments may be viewed by everyone or by a group of people (e.g., friends, family, colleagues) that is associated with the person.
There are a number of shortcomings with such image and comment sharing operations described above. As a first example, the person may take a photo with a smart phone having a camera. To share that photo, the person then has to navigate to the website and log onto the website before he or she can even start uploading the photo. This can entail opening a web browser and inputting the website's URL address into web browser. If a desktop or laptop computer is being used, the person may also have to plug in the smart phone to the computer and then import the photo into the computer. Accordingly, there can be many different steps that must be performed just to share that one photo.
As another example, the website might not provide any easy options to select certain people that can or cannot view a group of photos. For example, when a person shares photos, they can be seen by either everyone or all people (e.g., friends, family, colleagues) that are associated with that person. Similarly, any comments that are left regarding the photos can be viewed by either everyone or the associated people. As such, there may be no easy way to specify a personal or mini social network that excludes one group of people (e.g., friends) while including another group of people (e.g., family).
BRIEF SUMMARYSome embodiments described herein provide tools that allow a person to share content (e.g., images, video clips) on one device with multiple other people using different devices. Examples of such devices include a desktop computer, laptop, tablet, smart phone, digital media receiver, smart television (“TV”), etc. The content may also be shared across the person's own devices. To facilitate the sharing operations, the content sharing tools allow the person to (1) create a shared stream that represents a set of shared content, and (2) invite one or more recipients (e.g., friends, family) to subscribe to the shared stream. When a recipient subscribes to the shared stream, the set of shared content is streamed across to one or more of the recipient's devices.
In conjunction with the content sharing features, the content sharing tools (hereinafter image sharing tools) allow different participants to share comments regarding the stream's content. In some embodiments, the comments are pushed in real time to all devices (e.g., across different platforms) of the different participants associated with the shared stream. By pushing content and comments to a specified group of people, the content sharing tools create a social network (e.g., a mini social network, a personal social network). In this network, a participant can take a photo with his or her smart phone, add it to a shared stream album, and receive, at a moment's notice, comments from only those other participants that are associated with the shared stream album.
The image sharing tools of some embodiments provide a variety of different tools to modify a shared photo stream album. The user can use these tools to add or delete image from the shared photo stream album. When an image is added to the shared photo stream album, the image is distributed across the user's own devices and the devices of other participants that have subscribed to the shared photo stream album. Conversely, when an image is deleted from the user's device, the image may be deleted from the user's own devices and the participants' devices.
In some embodiments, the image sharing tools allow a user to manage a shared photo stream album. Example of such management features include resending a photo stream invitation, inviting additional subscribers, removing existing subscribers, and deleting the shared photo stream album. The image sharing tools of some embodiments only allow an owner (i.e., the person that created the shared photo stream album) to perform one or more of these management operations. However, the image sharing tools may allow the owner to specify access privileges. That is, the owner can specify whether a subscriber can add images to or remove images from the shared photo stream album, add or remove subscribers, make comments, etc. In some embodiments, the image sharing tools provide a control that when selected unsubscribes a subscriber from a shared photo stream album.
The image sharing tools of some embodiments allow content and comments to be shared across different platforms (e.g., from different vendors). That is, a person using one type of computing device (e.g., a tablet, smart phone) can share images and comments with a different person using another type of computing device (e.g., personal computer, laptop). In some embodiments, the image sharing tools are integrated into an operating system (“OS”). Alternatively, the image sharing tools may be provided as part of an image application (e.g., a photo viewing application, an image organizing and editing application).
In the cross-platform system, each client may communicate with a control server. In some embodiments, the control server facilitates the sharing by managing control data associated with different shared photo streams. Examples of such control data include user data (e.g., a list of devices associated with a user) and photo stream data (e.g., a list of photo stream associated with the user, a list of individuals that can access a particular photo stream).
When a new shared stream album is created, the control server of some embodiments sends file location data to the owner's device. The owner's device then uploads images in the shared photo stream album to a storage server. This storage server may be a third-party storage server. The control sever may also send a message to each recipient that has been invited to participate in the shared stream album. When a recipient accepts the invitation, the images may be downloaded from the storage sever to one or more of the recipient's devices.
In some embodiments, the image sharing tools allow images in a shared photo stream album to be published as a webpage to a website. In publishing the images, the layout of the webpage is selected based on the number of images and the orientation of the images. When different batches of images are added at different time, one particular layout is selected for each batch. The images in a batch may be presented in a particular order (e.g., starting with the oldest image and ending with the newest image, or vice versa). Also, the different batches may be presented in a particular order (e.g., starting with the oldest batch and ending with the newest batch, or vice versa). In some embodiments, the webpage is generated by a web-publishing server. Alternatively, a client device may generate the web page and upload it to the web-publishing server.
Several more detailed embodiments of the invention are provided below. Many of these examples refer to controls (e.g., selectable items) that are part of the image sharing tools. The image sharing tools in some embodiments are part of a standalone application that executes on top of the operating system of a device, while in other embodiments they are part of the operating system. Also, in many of the examples below (such as those illustrated inFIGS. 1-6,8-13,15-18,21-35,38-41, and49-51) the device on which the application executes has a touch screen through which a user can interact with the image editing application. However, one of ordinary skill in the art will realize that cursor controllers or other input devices can be used to interact with the controls and applications shown in these examples for other embodiments that execute on devices with cursors and cursor controllers or other input mechanisms (e.g., voice control, remote control).
The preceding Summary is intended to serve as a brief introduction to some embodiments as described herein. It is not meant to be an introduction or overview of all subject matter disclosed in this document. The Detailed Description that follows and the Drawings that are referred to in the Detailed Description will further describe the embodiments described in the Summary as well as other embodiments. Accordingly, to understand all the embodiments described by this document, a full review of the Summary, Detailed Description and the Drawings is needed. Moreover, the claimed subject matters are not to be limited by the illustrative details in the Summary, Detailed Description and the Drawings, but rather are to be defined by the appended claims, because the claimed subject matters can be embodied in other specific forms without departing from the spirit of the subject matters.
BRIEF DESCRIPTION OF THE DRAWINGSThe novel features as described here are set forth in the appended claims. However, for purposes of explanation, several embodiments are set forth in the following figures.
FIG. 1 illustrates an example graphical user interface (“GUI”) of an application for sharing images.
FIG. 2 provides an illustrative example of a recipient becoming a subscriber by accepting a photo stream invitation.
FIG. 3 provides an illustrative example of sharing a comment regarding an image in the photo stream.
FIG. 4 provides an illustrative example of selecting several images for a photo stream.
FIG. 5 provides an illustrative example of specifying a name and subscriber for a photo stream.
FIG. 6 provides an illustrative example of inputting a comment for an image in the new photo stream.
FIG. 7 conceptually illustrates a process that some embodiments use to create a new photo stream.
FIG. 8A provides an illustrative example of how a recipient is notified of the photo stream invitation.
FIG. 8B illustrates an example of the owner receiving notification of the acceptance of the invitation.
FIG. 9 provides an illustrative example of an email that is received at the recipient's device.
FIG. 10 provides an illustrative example of a first recipient forwarding the photo stream to a second recipient.
FIG. 11A provides an illustrative example of the second recipient accepting the photo stream invitation.
FIG. 11B provides an illustrative example of a notification that is pushed onto the owner's device upon the second recipient accepting the invitation.
FIG. 12 provides an illustrative example of a subscriber selecting and viewing the photo stream after accepting the invitation.
FIG. 13 provides an illustrative example of a recipient declining a photo stream invitation.
FIG. 14 conceptually illustrates a process that some embodiments use to accept or decline a photo stream invitation.
FIG. 15 provides an illustrative example of adding an image to an existing photo stream.
FIG. 16 provides an illustrative example of several notifications that are received at the subscriber's device.
FIG. 17 provides an illustrative example of deleting an image from a photo stream.
FIG. 18 provides an illustrative example of the photo stream on the subscriber's device after deleting the image.
FIG. 19 conceptually illustrates a process that some embodiments perform to add or delete images from a photo stream.
FIG. 20 conceptually illustrates a process that some embodiments perform when a participant adds images to or deletes images from a photo stream.
FIG. 21 provides an illustrative example of resending a photo stream invitation to a recipient that has not accepted or declined the invitation.
FIG. 22 provides an illustrative example of adding a subscriber for the photo stream.
FIG. 23 provides an illustrative example of removing a subscriber.
FIG. 24 provides an illustrative example of deleting a photo stream.
FIG. 25 provides an illustrative example of unsubscribing from a photo stream by a subscriber.
FIG. 26 provides an illustrative example of preventing the user of a device from receiving a photo stream invitation.
FIG. 27 provides an illustrative example of turning off the shared photo stream features.
FIG. 28 provides an illustrative example of blocking photo stream alerts.
FIG. 29 provides an illustrative example of adding a comment regarding an image in a photo stream.
FIG. 30 provides an illustrative example of how the comment appears on a subscriber's device.
FIG. 31 provides an illustrative example of how the comment appears on the user's device.
FIG. 32 provides an illustrative example of marking an image.
FIG. 33 provides an illustrative example of how the image application of some embodiments displays an image with comments.
FIG. 34 provides an illustrative example of scrolling through different images with comments.
FIG. 35 provides an illustrative example of scrolling through the comments associated with one image.
FIG. 36 conceptually illustrates a process that some embodiments use to post a comment.
FIG. 37 conceptually illustrates a process that some embodiments use to provide one or more notifications regarding a new comment.
FIG. 38 provides an illustrative example of publishing a photo stream to a website.
FIG. 39A provides an illustrative example accessing the webpage with the subscriber's device.
FIG. 39B provides an example message that is received at a recipient's device.
FIG. 40 provides an illustrative example of how the webpage is updated when a new image is added to the photo stream.
FIG. 41 provides an example of scrolling through images in the photo stream.
FIG. 42 provides an illustrative example of a webpage layout for a photo stream that includes two images.
FIG. 43 provides an illustrative example of a webpage layout for a photo stream that includes three or four images.
FIG. 44 provides an illustrative example of a webpage layout for a photo stream that includes five or six images.
FIG. 45 illustrates webpage layouts for a photo stream that includes more than six images.
FIG. 46 provides several examples of how images are framed in a webpage layout.
FIG. 47 provides an illustrative example of how portrait and landscape images are presented in a batch layout.
FIG. 48 conceptually illustrates a process that some embodiments use to publish images in a photo stream to a website.
FIG. 49 provides an illustrative example of the image sharing tools on a tablet.
FIG. 50 provides another example of the image sharing tools on a tablet.
FIG. 51 provides an illustrative example of how comments are presented on the tablet.
FIG. 52 provides an illustrative example of opening a shared photo stream with a digital media receiver.
FIG. 53 provides an illustrative example of navigating images in the photo stream.
FIG. 54 provides an illustrative example of filtering a display to only display images with one or more new comments.
FIG. 55 illustrates an example of another image application for a digital media receiver or smart TV.
FIG. 56 provides an illustrative example of installing and configuring the image sharing tools.
FIG. 57 illustrates an example of specifying a subscriber and a name for the photo stream.
FIG. 58 illustrates selecting images for the photo stream and inputting comments for several of the images.
FIG. 59 provides an illustrative example of accepting a photo stream invitation with a subscriber's device.
FIG. 60 provides an example of adding an image to a photo stream.
FIG. 61 provides an illustrative example of leaving a comment using a PC.
FIG. 62 provides an illustrative example of an alternate embodiment of the integrated image sharing tools.
FIG. 63 provides an illustrative example of the image sharing tools that are integrated into an image organizing and editing application.
FIG. 64 provides an illustrative example of accepting a photo stream invitation with a subscriber's device.
FIG. 65 provides an illustrative example of how the image sharing tools of some embodiments present comments on the photo application.
FIG. 66 conceptually illustrates an example system architecture in which the clients communicate with the different servers to share images and comments.
FIG. 67 conceptually illustrates an example of how a user's photo streams are represented at the server side.
FIG. 68 conceptually illustrates an example process that some embodiments perform to notify recipients of a new-shared stream invitation.
FIG. 69 conceptually illustrates an example process that some embodiments perform when it receives a response from a recipient device.
FIG. 70 conceptually illustrates an example process that some embodiments perform to notify participants of a new comment.
FIG. 71 conceptually illustrates an example process that some embodiments perform to deliver a new comment.
FIG. 72 conceptually illustrates the software architecture of content sharing tools of some embodiments
FIG. 73 is an example of an architecture of such a mobile computing device.
FIG. 74 conceptually illustrates another example of an electronic system with which some embodiments of the invention are implemented.
DETAILED DESCRIPTIONIn the following detailed description of the invention, numerous details, examples, and embodiments of the invention are set forth and described. However, it will be clear and apparent to one skilled in the art that the invention is not limited to the embodiments set forth and that the invention may be practiced without some of the specific details and examples discussed.
Some embodiments described herein provide tools that allow a person to share images on one device with multiple other people using different devices. Examples of such devices include a desktop computer, laptop, tablet, smart phone, digital media receiver, smart television (“TV”), etc. The images may also be shared across the person's own devices. To facilitate the sharing operations, these tools allow the person to (1) create a photo stream that represents a set of shared images and (2) invite one or more recipients to subscribe to the photo stream. When a recipient subscribes to the photo stream, the set of images is streamed across to one or more of the recipient's devices.
In conjunction with the image sharing features, the image sharing tools allow different participants to share comments regarding the photo stream's images. In some embodiments, the comments are pushed in real time to all devices (e.g., across different platforms) of the different participants associated with the shared stream. By pushing content and comments to a specified group of people, the content sharing tools create a social network (e.g., a mini social network, a personal social network). In this network, a participant can take a photo with his or her smart phone, add it to a shared photo stream, and receive, at a moment's notice, comments from only those other participants that are associated with the shared photo stream.
In some embodiments, the image sharing tools are integrated into an operating system (“OS”). Alternatively, the image sharing tools may be provided as part of an image application (e.g., a photo viewing application, an image organizing and editing application). For some embodiments,FIG. 1 illustrates a graphical user interface (“GUI”)100 of an application with such image and comment sharing features. Specifically, this figure illustrates in five operational stages170-190 how a user can use theGUI100 to create a shared photo stream.
In several examples described below, a first user creates a photo stream and sends an invitation to a second different user to subscribe to the photo stream. To simplify the description, the first user may be referred to as an owner, and the second user may be referred to as a recipient or subscriber depending on whether the second user has subscribed to the photo stream.
As shown inFIG. 1, theGUI100 includes (1) animage display area105, (2) a photo stream options display area125 (hereinafter an options sheet), and (3) a photo stream comment display area150 (hereinafter a comment sheet). Theimage display area105 is an area within theGUI100 through which the user can view images. Theimage display area105 displays thumbnail representations of images. Thumbnails are reduced-size representations of full-size images. At any time, the user can select any one of the thumbnail images to display the corresponding image at a higher resolution. This higher resolution image is typically not the full size image (which is often of a higher resolution than resolution of the display device). In some embodiments, the thumbnail image represents only a portion of an image. That is, the thumbnails in theimage display area105 are all squares, irrespective of the aspect ratio of the full-size images. In order to determine the portion of a rectangular image to use for a thumbnail, the application of some embodiments identifies the smaller dimension of the image and uses the center portion of the image in the longer dimension.
As shown in thefirst stage170, theimage display area105 displays images from a collection, namely a camera roll. This is indicated by atop bar110 that displays “Camera Roll” as the heading for theimage display area105. The camera roll collection includes one or more images taken with the device (e.g., a smart phone, tablet) on which the image application executes. Accordingly, thethumbnail images102,104, and106 represent those images taken with the device.
In the example illustrated in theFIG. 1, theGUI100 includes abottom bar115 that displays severalselectable controls112,114, and116. Specifically, the user can view images in another collection (e.g., album) by selecting the “Albums”tab112. When selected, the application of some embodiments lists different collections, such as the camera roll collection. Different from the “Albums” tab, the user can select the “Photo Stream”tab114 to display a list of different photo streams. The “Places”tab116 can be selected to display a map showing mapped locations of geotagged images (e.g., images associated with Global Positioning System (GPS) metadata). In some embodiments, the application includes a separate “Camera Roll” tab for displaying images in the camera roll collection. The application may also include a “Photos” tab for displaying all images (e.g., a library of images) taken with the device and/or imported into the device.
The photostream options sheet125 is used to specify different options for a shared photo stream. Thissheet125 includes asubscriber field130 and aname field135. Thesubscriber field130 is an area in the sheet that the user can input one or more recipients for the photo stream. That is, the owner can input contact information into this field to invite the recipients to join the photo stream.
In the example illustrated inFIG. 1, the contact information that can be inputted in thesubscriber field130 is an email address or a name associated with an email address. However, other types of contact information (e.g., a phone number) may be provided to invite a recipient to join the shared photo stream. In some embodiments, the application includes an auto-complete feature. For instance, one or more suggested names from a contacts directory or an address book may be displayed as the owner inputs text into thefield130. The owner can then select a suggested name to automatically fill in thefield130.
Thename field135 allows the user to specify a name or title for the photo stream. For example, the owner can use this field to input a name or title that summarizes the photo stream's images. The name specified with thename field135 may be displayed in a number of different places. The name may appear in the photo stream invitation (e.g., email message). The name may also appear as the heading for the shared photo stream.
Thecomment sheet150 can be used to add a comment. Thecomment sheet150 includes acomment field155 for inputting the comment. In some embodiments, the comment is associated with a first image in the photo stream (e.g., the firstselected image102 in the image display area105). This comment may be displayed with the first image (e.g., as a caption over a lower portion of the first image) on each device of participants associated with the photo stream. As shown inFIG. 1, the comment field is an optional field because the owner does not have to input a comment in order to create the photo stream.
Having described the elements of theGUI100, the operations of creating a photo stream will now be described by reference to the state of the GUI during the five stages170-190 that are illustrated inFIG. 1. In thefirst stage170, theimage display area105 displays thumbnail representations102-106 of images from the camera roll collection. As mentioned above, the camera roll collection includes one or more images taken with the device (e.g., a smart phone or tablet equipped with a camera).
Thesecond stage175 illustrates theGUI100 after the user has selected several images for the shared photo stream. Specifically, the user has selected (e.g., by performing a gesture such as tapping the user's finger on) thefirst thumbnail image102 representing a first image for the photo stream, and asecond thumbnail image104 representing a second image. To choose images, the user might have first selected an edit button118 (e.g., an image selection button, an action button) prior to selecting thethumbnail images102 and104. Otherwise, theimage display area105 may display a full-screen representation of the selected image.
When the application is in an image selection state, the selection of a thumbnail image causes it to display a marking near or at least partially over the selected thumbnail image. This marking provides the user with a visual indication of the selection of the thumbnail image. In the example illustrated inFIG. 1, the marking is acheck mark122 that is displayed over each of the selectedthumbnail images102 and104. However, the application may display a different marking to provide the same visual indication.
To share the selected images, the user selects (e.g., by performing a gesture such as tapping the user's finger on) ashare button160. The selection of theshare button160 causes a pop-upmenu145 to appear, as shown in thethird stage180. The pop-upmenu145 may appear by sliding up from the bottom of the screen and disappear by sliding down towards the bottom of the screen.
As shown in thethird stage180, the pop-upmenu145 includes several selectable items. The selectable items are arranged as a 2×2 grid of buttons. Each button is associated with an icon and a description. The selectable items include aphoto stream button165, amessage button124, amail button126, and acopy button172. Thephoto stream button165 is for creating a new photo stream or adding the selected images to an existing photo stream, themessage button124 is for creating a text message (e.g., SMS, iMessage) with the selected images, themail button126 is for generating an email with the selected images, and thecopy button172 is for copying the selected images. The pop-upmenu145 also includes a cancelbutton128 for canceling and returning to the previous view. In some embodiments, the pop-upmenu145 includes a print button (not shown) for printing the selected images.
In the example illustrated in thethird stage180, the selectable items are icon based. In some embodiments, the application presents each item with text and an icon, only with the text and without the icon, or only with the icon and without the text. The application of some embodiments presents different selectable items based on the number of images that are selected from the image display area. For instance, if only one image is selected, the pop-upmenu145 may include an option to use the selected image as a desktop wallpaper.
In thethird stage180, the user selects thephoto stream button165. Thefourth stage185 illustrates theGUI100 after the user has selected thephoto stream button165. As shown, the selection resulted in the display of the photostream options sheet125 for creating a new photo stream. When a photo stream has been previously created, the application provides an option to add the selected images to an existing photo stream or create a new photo stream, in some embodiments. Here, the photostream option sheet125 is overlaid by thetop bar110 that includes a heading. The heading reads “Photo Stream”. In some embodiments, the heading reminds the user that he or she is creating a new photo stream by specifically stating “New Photo Stream”.
As shown in thethird stage180, the user has typed in an email address into thesubscriber field130 using an on-screen orvirtual keyboard140. The user has also typed in a name for the photo stream in thename field135. Once thefields130 and135 are populated, the user can select anext button134 that is shown on thetop bar110. Optionally, the user can select a cancelbutton132 to return to a pervious view (e.g., the view illustrated in the second stage175). In some embodiments, thenext button134 is disabled when there are one or more blank fields. For example, thenext button134 may be disabled when the subscriber field and/or the name field are blank. The application of some embodiments modifies the appearance of the button134 (e.g., changes its color) to indicate that it is selectable or disabled.
Thefifth stage190 illustrates the application after the selection of thenext button134. The selection results in the display of thecomment sheet150. In some embodiments, the application presents thecomment sheet150 with animation. For example, the application may present it by flipping over the photostream options sheet125, similar to a two-sided card being flipped over.
As shown in thefifth stage190, thecomment sheet150 includes a heading that states that it is associated with the photo stream. The name of the photo stream is also shown on the comment sheet. Specifically, the name of the photo stream is displayed below thecomment field155 with an icon (e.g., a photo stream icon). Thecomment field155 remains empty, as the user has not inputted any comment for an image (e.g., the first image) in the photo stream. In some embodiments, thecomment sheet150 displays one or more thumbnail images of images in the photo stream. In the example illustrated in thefifth stage190, thumbnail images of the selected images are shown as being attached (e.g., paper clipped) to thecomment sheet150. However, different embodiments may differently present previews of the photo stream's images. For example, the application may present the images as a grid of thumbnails on one or more rows.
In thefifth stage190, the user selects apost button136 to create the new photo stream. Optionally the user can select a cancelbutton138 to return to a previous display area, namely theoptions sheet125 that is illustrated in thefourth stage185. In some embodiments, the selection of the cancelbutton138 causes the application to return to theimage display area105 that is illustrated in thesecond stage175.
When the post button is selected, the application of some embodiments generates a message regarding the new photo stream and sends the notification to a control or push server. Based on the message, the control server may respond with file location data (e.g., with one or more Uniform Resource Locators (“URLs”)) to send the images to a storage server (e.g., a third-party storage server). The application may also generate images to send to the storage server. For example, the application may generate one or more lower resolution images from a stored image (e.g., raw image) and send those images to the storage server.
In some embodiments, the control server identifies each device associated with the recipient (e.g., based on the recipient's email address) and sends one or more messages or notifications regarding the photo stream invitation. Once the recipient accepts the invitation, the images are downloaded from the storage server onto each associated device. To more quickly display the images, the images may be downloaded to a recipient's device prior to the recipient accepting the invitation, and may be deleted from the device if the recipient rejects the invitation.
FIG. 2 provides an illustrative example of a recipient becoming a subscriber by accepting the photo stream invitation. Specifically, this figure illustrates in three operational stages225-235 how the recipient can accept the photo stream invitation to display the shared images on the recipient's device. In this example, the recipient's device is executing the same image application as the owner's device. As such, theGUI200 is the same one described above by reference toFIG. 1.
In thefirst stage225, the application is displaying a photo stream display area220 (hereinafter a photo stream menu). To display themenu220, the recipient might have first selected (e.g., by performing a gesture such as tapping the recipient's finger on) the “Photo Stream”tab114. As shown, themenu220 displays the photo stream created by the owner. The photo stream is listed with (1) an icon associated with the image sharing tools, (2) the name of the photo stream, and (3) a number that identifies the number of images in the photo stream. In addition, themenu220 identifies the owner as it states that the photo stream is shared by “Emily Parker”. In the illustrated example, the name of the owner is listed using a smaller font than the name of the photo stream.
In some embodiments, the image sharing tools provide one or more visual indications that there is a new photo stream invitation and/or an update to an existing photo stream. This is shown in thephoto stream menu220 as the new photo stream is listed with a marking245. Here, the marking245 is a colored dot (e.g., blue dot) but other types of markings (e.g., textual markings) can be used to convey the same message. For instance, the “Photo Stream”tab114 shows anicon285 that is badged with anumber280. This number indicates that there is one new photo stream invitation. In some embodiments, the application removes thebadge280 from the icon upon displaying the photo stream menu. On the other hand, the marking245 may be shown on the menu until the recipient either accepts or declines the photo stream invitation.
As will be described in detail below, the image sharing tools of some embodiments provide different visual indications at multiple different levels to notify a user of a new photo stream invitation and/or an update to an existing photo stream. For example, the image sharing tools may badge the application's icon at the operating system (“OS”) desktop level, mark different photo streams with a marking at the application menu level, and/or flag images (e.g., as new images) at the photo stream image level. In conjunction with, or instead of one or more of these visual indications, the image sharing tools of some embodiments alerts the user by causing the recipient's device to play a sound and/or vibrate.
In thefirst stage225, the recipient selects (e.g., by performing a gesture such as tapping the recipient's finger on) the photo stream from thephoto stream menu220. The selection causes the application to display a pop-upmenu215, as illustrated in thesecond stage215. In some embodiments, the pop-upmenu215 is superimposed over a portion of thephoto stream menu220 by sliding up from the bottom of the screen. The pop-upmenu215 includes a heading. The heading states that the owner would like to share the photo stream with the recipient. The owner is identified by the owner's name and email address, and the photo stream is identified by its associated name. The pop-upmenu215 includes (1) an acceptbutton250 for accepting the photo stream invitation, (2) adecline button255 for declining the invitation, and (3) a cancelbutton260 for closing the pop-up menu without accepting or declining the invitation (e.g., keeping the invitation pending and deciding at a later time).
As shown in thesecond stage230, the recipient selects the acceptbutton250 from the pop-upmenu215. This results in the display of animage display area105, as illustrated in thethird stage235. Theimage display area105 is the same as the one described above by reference toFIG. 1. Theimage display area105 displays thumbnailrepresentations202 and204 of the images in the photo stream. The user can select any one of thethumbnail representations202 or204 to display a full screen representation of the corresponding image.
In the example illustrated inFIG. 2, theimage display area105 is overlaid by thetop bar210, which includes the name of photo stream. Thetop bar210 also includes aback button265 for returning to thephoto stream menu220 and anedit button270 for selecting images in the photo stream. In the example illustrated in thethird stage235, the image display area also displays text below the twothumbnails202 and204. The text states the name of the owner and the number of images shared by the owner.
In some embodiments, the application displays a marking that identifies the number of new image that are in the photo stream. This is shown in thethird stage235 as aflag275 is displayed over thethumbnail202 of the first new image. The flag is marked with text that states that there are two new images in the photo stream. The application of some embodiments displays such a marking for each new batch of images. For example, when the owner adds a new batch of images to the photo stream, the application may display a similar flag on a first thumbnail image that corresponds to the first image in the new batch.
The image application of some embodiments displays images in a batch in a particular order (e.g., starting with the oldest image and ending with the newest image, or vice versa). The application of some embodiments displays different batches in a particular order (e.g., starting with the oldest batch to the newest batch, or vice versa). By displaying different batches in chronological or reverse chronological order, the images may not necessarily be ordered in a display area (e.g., the image display105). For example, this can occur when there are multiple batches and when an image in a first batch is newer (e.g., has a timestamp that is later) than another image in one of the subsequent batches. Many different examples of batching or grouping images will be described below.
In the example described above, the recipient's device is in an invited state through the first twostages225 and230. In this state, the photo stream's images may not be pushed to the recipient's device or any other devices associated with the recipient. However, the images may be pushed to all of the recipient's devices upon the recipient accepting the invitation. In some embodiments, a notification is sent to one or more of the owner's devices upon the recipient accepting the invitation. This notification may state that the recipient has subscribed to the photo stream
As mentioned above, the image sharing tools create a social network by allowing users to share not only images but also comments regarding those images.FIG. 3 provides an illustrative example of sharing a comment regarding an image in the photo stream. Four operational stages305-320 of the application are illustrated in this figure. These stages are continuations of the stages that are illustrated inFIG. 2.
In thefirst stage305, theimage display area105 displays thumbnailrepresentations202 and204 of the images associated with the photo stream. The subscriber selects thefirst thumbnail image202. The selection causes theimage display area105 to display afull screen representation325 of the corresponding image. The full screen representation is overlaid by the top andbottom bars210 and370. Thetop bar210 includes aback button330 to return to the thumbnail view. Thetop bar210 also states that the displayedimage325 is a first of two images in the photo stream.
Different from thetop bar210, thebottom bar370 includes (1) ashare button345 for sharing the selected image, (2) aplay button350 for playing a slide show of the images in the photo stream, and (3) acomment button360 for leaving a comment regarding the displayed image. The bottom bar may also include a stream button (not shown) for streaming the images in the photo stream to one or more other devices (e.g., a desktop computer, a laptop). In the example illustrated inFIG. 3, each item in thebottom bar370 is displayed with a corresponding icon. For example, thecomment button360 is displayed with achat bubble icon375. Thechat bubble icon375 includes a plus sign (i.e., “+”) that provides a visual indication that a comment can be added for the displayedimage325.
As shown in thesecond stage310, the user selects thecomment button360. The selection causes the virtual or on-screen overlay keyboard140 to appear, as illustrated in thethird stage315. The selection also causes thetop bar110 to display a heading that states “New Comment”. Here, the user types in a comment regarding theimage325. Alternatively, the user can select the cancelbutton380 to return to the full screen representation.
Thefourth stage320 illustrates the image application after inputting the comment. As shown, the comment is displayed over theimage325. The comment is also associated with comment metadata. The metadata is displayed below the comment, and identifies the person who left the comment and the time and date that the comment was left. In the example illustrated in thefourth stage320, the person who left the comment is identified as “Me”. This is because the subscriber left the comment with the subscriber's device. The comment is also displayed with anadd comment field365 that can be selected to add another comment.
In some embodiments, the comments are shared in real time across multiple different devices (e.g., across different platforms of different vendors). For instance, when a new comment has been received, the application of some embodiments generates a message regarding the new comment and sends the message to the control server. The message may include the comment and a key that uniquely identifies the image that is associated with the comment. Based on the message, the control server may store the comment, identify participants associated with the photo stream, and send a message regarding an update to a photo stream to each device associated with the identified participants. In some embodiments, the participant's device then downloads the comment and displays it with the associated image.
Many more photo stream examples are described below. Section I describes another more detailed example of creating a new photo stream. This section also describes another example of accepting a photo stream invitation. Section II then describes adding and removing images from a photo stream. Section III describes several examples of managing a photo stream (e.g., resending an invitation, adding or removing a subscriber, unsubscribing, etc.). Section IV then describes additional examples of exchanging comments. Section V describes publishing a photo stream to a public website. These previous sections are then followed by examples of the image sharing tools that are implemented on different devices and/or platforms. Specially, Section VI describes example of the image sharing tools that operate on a tablet. The tablet examples are followed by Section VII that describes an example digital media receiver. Section VIII then describes how the image sharing tools of some embodiments are integrated in an operating system (e.g., of a personal computer (“PC”)). Section IX then describes several more examples of the image sharing tools that are integrated into one or more image editing and organizing application. Section X then describes an example system architecture used to facilitate the image and comment sharing operations. Section XI then describes example processes that are performed on the server-side. Section XII then describes a software architecture of content sharing tools of some embodiments. Finally, Section XIII then describes several example electronic systems that implement some embodiments described herein.
I. Example OperationsAs mentioned above, the image sharing tools allow an owner to create a shared photo stream album that includes images, and invite any number of recipients to join the shared photo stream album and view those images. When a recipient accepts the invitation, the images are downloaded onto one or more of the recipient's devices. Several more example operations of creating a photo stream album and sharing the photo stream album will now be described by reference toFIGS. 1-14.
A. Creating the Photo Stream
An example of creating a photo stream has been described above. A more detailed example of creating a photo stream will now be described by reference to a sequence of operations that is illustrated inFIG. 4-6.FIG. 4 provides an illustrative example of selecting several images for a photo stream. Six operational stages405-430 of the owner'sdevice400 are illustrated in this figure. The figure includes theimage display area105 that is described above by reference toFIG. 1.
Thefirst stage405 illustrates thedevice400 displaying a graphical user interface (“GUI”) of its operating system (“OS”). The GUI includes selectable icons for opening different applications. Several of the icons are displayed along a menu bar (e.g., a dock). The icons include ones for opening a phone application, email application, web browser, and music player. An image application icon435 (e.g., Photos application icon) and acamera application icon440 are overlaid on the OS's desktop or main display area. To open the image application, the owner selects (e.g., by tapping the owner's finger on) theimage application icon435.
Thesecond stage410 illustrates the device after the owner has selected theicon435. As shown, the application displays alist445 of different collections. The owner might have first selected thealbums tab112 to display this list. Here, the owner selects thecamera roll collection460 from the list. As shown in thethird stage415, the selection causes theimage display area105 displays thumbnail representations of images in the camera roll collection. Here, the camera roll collection includes the images taken with the device (e.g., a smart phone or tablet equipped with a camera).
The third andfourth stages415 and420 illustrate selections of several images for the new photo stream. Specifically, the owner selects (e.g., by performing a gesture such as tapping the owner's finger on) afirst thumbnail image450 to select a first image for the photo stream, and selects asecond thumbnail image455 to select a second image for the photo stream. The owner might have selected theedit button118 prior to selecting thefirst thumbnail image450. Otherwise, theimage display area105 may display a full screen representation of the selected image.
When the application is in an image selection state, the selection of a thumbnail image causes it to display a marking near or at least partially over the selected thumbnail image. This marking provides the user with a visual indication of the selection of the thumbnail image. In the example illustrated inFIG. 4, the marking is acheck mark122 that is displayed over each of the selectedthumbnail images450 and455. However, the application may display a different marking to provide the same visual indication.
In thefifth stage425, the owner selects (e.g., by tapping the owner's finger on) theshare button160. The selection causes the pop-upmenu145 to appear, as illustrated in thesixth stage430. Themenu145 includes thephoto stream button165 for creating a new photo stream or adding the selected images to an existing photo stream. To create a new photo stream, the owner then selects the photo stream button.
FIG. 5 provides an illustrative example of specifying a name and subscriber for a photo stream. Five operational stages505-525 of the image application are shown in this figure. The operations are continuations of the ones illustrated inFIG. 4. Thefirst stage505 illustrates the image application after the owner has selected thephoto stream button165 from the pop-upmenu145. The selection resulted in the display of the photostream options sheet125. The photo stream options sheet includes asubscriber field130 for inputting one or more subscribers, and a name field for inputting a name for the photo stream. To input an email address of the subscriber, the owner then selects (e.g., by tapping the owner's finger on) thesubscriber field130.
Thesecond stage510 illustrates inputting a name of a subscriber into thesubscriber field130. In particular, the owner begins to input (e.g., type in) an email address in thesubscriber field130 using the on-screen orvirtual keyboard140. Based on the input, the application provides a list of suggestednames535 from the address book. Here, the auto-complete feature displays a name of a person. The name is shown with the associated email address. The owner then selects the name from thelist535 to automatically fill in thesubscriber field130.
In thethird stage515, the owner selects (e.g., by tapping the owner's finger on) thename field135 for inputting a name (e.g., title) of the new photo stream. As shown in thefourth stage520, the owner types in a name for the photo stream in thename field135. In thefifth stage525, the owner then selects thenext button134 to continue defining the photo stream.
FIG. 6 provides an illustrative example of inputting a comment for an image in the new photo stream. Five operational stages605-625 of the image application are shown in this figure. These operations are continuations of the ones illustrated inFIG. 5. Thefirst stage605 illustrates thecomment sheet150 that is shown after the selection of thenext button134. Thecomment field155 remains empty, as the owner has not inputted any comment for an image (e.g., the first image) in the photo stream. To input a comment, the owner selects thecomment field155.
As shown in thesecond stage610, the selection of thecomment field155 causes an on-screen keyboard140 to appear. The owner then types in a comment (e.g., “Summer Vacation”) into thecomment field155. As mentioned above, the image sharing tools of some embodiments associate the comment to the first image in the photo stream. In some embodiments, the image sharing tools provide separate fields to input comment for different images. The image sharing tools of some embodiments automatically populates comment fields. For example, the comment fields may be populated using the image filenames. In auto-populating the comment fields, the image sharing tools may analyze the image files names to differentiate machine-generated names and user-specified names. Several example of such analysis will be described in detail below by reference toFIG. 58.
Returning toFIG. 6, the third stage illustrates the owner selecting (e.g., by tapping the user's finger on) thepost button136 to post or share the photo stream. Thefourth stage620 illustrates the image application displaying thephoto stream menu220. Here, the user selects the new photo stream (e.g., “Family Photos”) from themenu220. The selection causes thumbnail representation of the images in the new photo stream to be displayed in theimage display area105, as illustrated in thefifth stage625.
When a new photo stream is defined, the application of some embodiments generates a message regarding the new photo stream and sends the notification to a control or push server. Based on the message, the control server may respond with file location data (e.g., with one or more URLs) to send the images to a storage server (e.g., a third-party storage server). The application may also generate images to send to the storage server. For example, the application may generate one or more lower resolution images from a stored image (e.g., raw image) and send those images to the storage server.
In some embodiments, the control server identifies each device associated with the recipient (e.g., based on the recipient's email address) and sends one or more messages or notifications regarding the photo stream invitation. Once the recipient accepts the invitation, the images are downloaded from the storage server onto each associated device. To more quickly display the images, the images may be downloaded to a recipient's device prior to the recipient accepting the invitation, and may be deleted from the device if the recipient rejects the invitation.
Having described several example GUI operations, a process for creating the new photo stream will now be described.FIG. 7 conceptually illustrates anexample process700 that some embodiments use to create a new photo stream. Theprocess700, in some embodiments, is performed by the image application.
Theprocess700 begins when it identifies (at705) images for the photo stream. In the example described above, the owner selects the images through an image display area. After identifying the images, the process identifies (at710) the name of the photo stream. Next, theprocess700 identifies (at715) each recipient of the photo stream invitation. Examples of specifying a name of the photo stream and a recipient of the photo stream invitation are described above by reference toFIG. 5.
Theprocess700 then determines (at720) whether any comment has been left regarding an image (e.g., a first selected image) in the photo stream. If a comment was made, theprocess700 identifies (at725) the comment and associates it with the image. Theprocess700 then generates (at730) a message regarding the new photo stream based on the identifications. After generating the message, the process sends (at735) the message to a control server. In some embodiments, the control server facilitates the sharing of content by managing control data associated with a shared photo stream. Examples of such control data include user data (e.g., a list of devices associated with a user) and photo stream data (e.g., a list of photo stream associated with the user, a list of individuals that can access a particular photo stream, file location data).
A shown inFIG. 7, theprocess700 receives (at740) file location data from the control server. In some embodiments, the file location data comprises one or more URLs to upload images to a storage server (e.g., a third-party storage server). After receiving the file location data, theprocess700 sends (at745) the images to a storage server using the file location data. Theprocess700 then ends.
In some embodiments, theprocess700 generates one or more copies of each original image (e.g., RAW image) prior to sending them to the storage server. That is, the process may take an image and generate different versions (e.g., at different resolutions) of that same image. Depending on the type of client (e.g., digital media receiver, tablet, smart TV, etc.), one of several different versions of the same image may be downloaded onto a client.
In some embodiments, the images are sent to the storage server when there is a particular type of network connection. For example, the images may not be sent to the storage server when the device is connected to the Internet through a cellular (e.g., a 3G, 4G) connection. That is, the device may send the image data to the storage server when there is a different type of connection such as a Wi-Fi connection. One reason for this is a smart phone or a tablet operates in a high-power state when transferring data using the cellular network. On the hand, the smart phone or tablet may operate in a low-power state when connected to the Internet through a wired connection or Wi-Fi connection. As such, power consumption (e.g., battery consumption) is minimized.
In some embodiments, theprocess700 generates and sends an email message to each recipient. The email message may include a link that when selected causes cause the recipient to be added as a subscriber to the shared photo stream. Several examples of such an email will be described below by reference toFIG. 9.
Some embodiments perform variations on theprocess700. The specific operations may not be performed in one continuous series of operations, and different specific operations may be performed in different embodiments. For instance, theprocess700 might not identify any comment associated with an image. Also, theprocess700 may generate multiple messages (e.g., one regarding a new shared photo stream album and another regarding a comment that was left for an image in the new shared photo stream) to send to the control server. Furthermore, theprocess700 could be implemented using several sub-processes, or as part of a larger macro process.
B. Push Notifications
The previous examples illustrated creating a photo stream and sending a photo stream invitation.FIG. 8A provides an illustrative example of how a recipient is notified of the photo stream invitation. This figure is followed byFIG. 8B which illustrates an example of the owner receiving notification of the acceptance of the invitation. Three operational stages805-815 are illustrated inFIG. 8A.
Thefirst stage805 illustrates the recipient receiving notification through his or her device (e.g., “Derek's Device”). Thisfirst stage805 occurs after the owner (e.g., “Emily”) has created the photo stream and sent the photo stream invitation. As shown, abanner820 is displayed on the recipient's device. Specifically, the banner is superimposed along the top edge of the operating system's desktop. In some embodiments, the banner rotates into view as a simulated 3D effect. The banner may float on top of the display area for a predetermined period of time and then disappear (e.g., rotate out of view, fade away).
Thebanner820 includes a message and anicon825. The message states that there is a new shared photo stream. In addition, the message states that the photo stream's owner would like to share the photo stream with the recipient. The owner is identified by the owner's name (e.g., “Emily Parker”), while the photo stream is identified by its name (e.g., “Family Photos”). Theicon825 is the one associated with the image application.
In conjunction with the icon, or instead of it, the application of some embodiments displays a thumbnail representation of an image in the shared photo stream. For example, thebanner820 may include a thumbnail representation of the first image in the shared photo stream. The application of some embodiments alerts the recipient through one or more other means. For instance, the application may cause a device to vibrate or play a sound. When the device is in a locked mode, a pop-up window or dialog box with the message may appear in a lock screen.
In thefirst stage805, the application displays a badge at the operating system (“OS”) level to alert the recipient of an update to a photo stream. At this level, the application may display one or more other markings. One such type of notification is a badge that appears at least partially over the application's icon. This is shown in thefirst stage805 as abadge830 is displayed on theicon840 of the image application. Thebadge830 includes a number (e.g., “1”). In the example illustrated in thefirst stage805, the number does not represent the number of new images in the photo stream. Instead, it indicates there is an update to a photo stream (e.g., there is a new photo stream invitation, a batch of images has been added to an existing photo stream, a new comment has been received regarding an image the existing photo stream, etc.).
Thefirst stage805 illustrates the selection of the application icon840 (e.g., through a touch operation such as tapping the recipient's finger on the icon). As shown in thesecond stage810, the selection causes the image application to be opened. The application displays thephoto stream menu220. The user might have first selected thephoto stream tab114 to display this menu. In thesecond stage810, themenu220 lists the new photo stream (i.e., “Family Photos”)845. Here, the recipient selects thephoto stream845 from themenu220. The selection causes the application to display the pop-upmenu215, as shown in thethird stage815. The recipient then accepts the photo stream invitation by selecting the acceptbutton250 from the pop-upmenu215.
In the example illustrated in thesecond stage810, the recipient selects the photo stream from thephoto stream menu220 to display the pop-upmenu215. In some embodiments, the selection of the banner825 (shown in the first stage805) opens the image application. In conjunction with launching the application, the selection of thebanner825 may cause the application to navigate to thephoto stream menu220 and/or displays an invitation sheet (e.g., the pop-up menu215).
The previous example illustrated an example notification that is displayed on the recipient's device. When a subscriber accepts an invitation, the owner may also be notified of the acceptance of the invitation.FIG. 8B provides an illustrative example of a notification that is pushed onto the owner's device (e.g., through the image application).
As shown inFIG. 8B, abanner835 is displayed on the owner's device. Thebanner835 is superimposed along the top edge of the OS's desktop. Thebanner835 includes a message that states that the recipient has subscribed to the photo stream. The subscriber is identified by the subscriber's name (e.g., “Derek Parker”), while the photo stream is identified by its name (e.g., “Family Photos”). The owner's device might have received the subscriber's name and/or the photo stream's name from a message from the control server. In this example, a badge is not displayed over the image application's icon. This is because the photo stream has not been updated. For instance, the subscriber has not added any comments regarding the images in the photo stream.
In some embodiments, the application alerts the recipient through one or more other means. For example, the application may cause a device to vibrate or play a sound to alert the user. When the device is in a locked mode, a pop-up window or dialog box with the message may appear in the lock screen.
As mentioned above, the application of some embodiments alerts the recipient through one or more other means. For instance, the application may cause a device to vibrate or play a sound. When the device is in a locked mode, a pop-up window or dialog box with the message may appear in a lock screen. In some embodiments, the notifications are fully customizable in that the user can disable them (e.g., from the application settings menu). For example, the user can turn on or off notification for certain updates (e.g., new comments, new photo streams, new images, etc.). The user can also specify whether to (1) display push notifications, (2) to display the notification as a banner or as an alert (e.g., the message in a bubble), (3) whether to view the notifications in the lock screen, (4) to play sound, and/or (5) badge the application's icon. These customization features are described below by reference toFIG. 28.
C. Email Notifications
In the example shown inFIG. 8A, the application displays a banner to notify the recipient of the photo stream invitation. In conjunction with the banner notification, or instead of it, an email message may be sent to the recipient upon creation of a new shared photo stream. In some embodiments, the image application generates the email message that contains a selectable link which when selected opens the image application. The selection of the link may also cause the application to navigate to the photo stream menu and/or may cause the recipient to be added as a subscriber to the photo stream. In some embodiments, the email message is always sent to each recipient that is invited to join the shared photo stream.
FIG. 9 provides an illustrative example of an email that is received at the recipient's device. Four operational stages905-920 of the recipient's device are illustrated in this figure. Thefirst stage905 illustrates the selection of anicon925 of an email application. In thesecond stage910, the email application displays the email sent from the owner's device. The email includes (1) amessage935, (2) alink940, and (3) athumbnail image930. Themessage935 indicates that the owner shared a photo stream with the recipient. Specifically, it asks the recipient to join the owner's shared photo stream. The owner is identified by the owner's name and email address, and the photo stream is identified by its associated name.
Thethumbnail image930 shows the icon of the image application. The icon includes a marking orbadge945. The marking indicates that there is a new photo stream or an update to an existing photo stream. Thelink940 is a selectable item for opening the image application. In some embodiments, the email includes a message that states that recipient has to create an account with a cloud service in order to join the shared photo stream. To download the photo stream album, the recipient may have to register his or her device with the cloud service.
In thesecond stage910, the recipient selects (e.g., by tapping the recipient's finger on) thelink940. As shown in thethird stage915, the selection causes the image application to be opened. Specifically, the selection results in the display of thephoto stream menu220. The selection also causes the recipient to be added as a subscriber to the shared photo stream. Accordingly, the recipient does not have to select an accept button from an invitation sheet.
In thethird stage915, the subscriber selects thephoto stream950 from thephoto stream menu220. As shown in thefourth stage920, the selection resulted in the display of theimage display area105. Theimage display area105 shows thumbnail representations of the images in the shared photo stream. In some embodiments, a return email may be sent to the owner once the recipient accepts the invitation. This return email may state that the recipient joined or subscribed to the shared photo stream. The owner may also be notified of the acceptance through a notification (e.g., a banner) that is displayed on the owner's device. An example of such a notification is described above by reference toFIG. 8B.
The previous example illustrated accepting an invitation to a shared photo stream through an email message. The image-sharing tool of some embodiments allows a first recipient to forward the invitation to a second recipient. The second recipient can then subscribe to the shared photo stream by accepting the invitation. In some embodiments, the photo stream invitation is associated with a one-time token that can be used by only one individual. That is, the second recipient can take the place of the first recipient. However, the first and second recipients cannot both subscribe to the shared photo stream through the one photo stream invitation.
FIG. 10 provides an illustrative example of a first recipient forwarding the photo stream invitation to a second recipient. Twooperational stages1005 and1010 of the first recipient's device are illustrated in this figure. In thefirst stage1005, the email application has been opened to display the email. The email includes themessage935, thelink940, and thethumbnail image930. The email application also displays abottom bar1015. This bar includes areply button1020 for replying to the email, aforward button1025 for forwarding the email, and adelete button1030 for deleting the email.
In the first stage, the first recipient selects theforward button1025. As shown in thesecond stage1010, the first recipient then forwards the email to a second recipient (e.g., to “Joe Parker”).
FIG. 11A provides an illustrative example of the second recipient accepting the photo stream invitation. Three operational stages1105-1115 of the second recipient's device are illustrated in this figure. Thefirst stage1105 illustrates the selection of anicon925 of an email application. In thesecond stage1110, the email application displays the email forwarded from the first recipient's device. The email includes themessage935, thelink940, and thethumbnail image930.
In thesecond stage1110, the second recipient selects (e.g., by tapping the second recipient's finger on) thelink940. As shown in thethird stage1115, the selection causes the image application to be opened. Specifically, the selection results in the display of thephoto stream menu220. The selection also causes the second recipient to be added as a subscriber to the shared photo stream. Accordingly, the second recipient does not have to select an accept button from an invitation sheet.
FIG. 11B provides an illustrative example of a notification that is pushed onto the owner's device upon the second recipient subscribing to the shared photo stream. As shown in, abanner835 is displayed on the owner's device. Thebanner835 is superimposed along the top edge of the OS's desktop. Thebanner835 includes a message that states that the second recipient has subscribed to the photo stream. The subscriber is identified by the second recipient's name (e.g., “Joe Parker”), and the photo stream is identified by its name (e.g., “Family Photos”).
In some embodiments, the banner may state that a person using a different email address has joined the shared photo stream. The banner may further state that the owner can remove the subscriber if the owner does not recognize the person or the email address. Alternatively, or conjunctively with the notification, a return email may be sent to the owner once the second recipient accepts the invitation. This return email may include the same message as the banner.
D. Selecting and Viewing Photo Stream
In several examples described above, a recipient becomes a subscriber to a photo stream by accepting a photo stream invitation.FIG. 12 provides an illustrative example of how the images in the photo stream are presented to the subscriber. Three operational stages1205-1215 of the subscriber's device are illustrated in this figure.
Thefirst stage1205 illustrates the image application displaying thumbnails representations of the image in the shared photo stream. As mentioned above, the application of some embodiments displays a marking that identifies the number of new image that are in the photo stream. This is shown in thefirst stage1205 as aflag275 is displayed over thethumbnail202 of the first new image. The flag is marked with text that states that there are two new images in the photo stream. The application of some embodiments displays such a marking for each new batch of images. For example, when the owner adds a new batch of images to the photo stream, the application may display a similar flag on a first thumbnail image that corresponds to the first image in the new batch.
In some embodiments, the image application displays a visual indication that an image is associated with one or more comments. This visual indication may also indicate that there is at least one unread comment associated with the image. In the example illustrated in thefirst stage1205, thefirst thumbnail275 is displayed with achat bubble1220 that is colored (e.g., blue). Thechat bubble275 indicates that there is one or more comments associated with the corresponding image, and the color of the chat bubble indicates that there is at least one unread comment associated with the same image.
As shown in thefirst stage1205, the subscriber selects thethumbnail202. Thesecond stage1210 illustrates that the selection resulted in the display of a full-screen representation1225 of the corresponding image. The full-screen representation1225 is overlaid by the top andbottom bars210 and370. Thetop bar210 includes aback button330 to return to the thumbnail view. Theback button330 is labeled with the name of the photo stream. Thetop bar210 also states that the displayedimage325 is a first of two images in the photo stream.
Different from thetop bar210, thebottom bar370 includes (1) ashare button345 to share the selected image, (2) aplay button350 to play a slide show of the images in the photo stream, and (3) acomment button360 to display the comment associated with the displayed image or leave another comment. In the example illustrated inFIG. 12, thecomment button360 is displayed with achat bubble icon375. The chat bubble icon includes a number that identifies the number of comments associated with the displayed image.
In thesecond stage1210, the user selects (e.g., swipes across) the screen to display the next image. As shown in thethird stage1215, the selection causes the application to display thenext image1230. The selection also causes the top and bottom bars to disappear. However, thechat bubble icon375 remains at the same location. As the displayed image is not associated with any comments, the number in the chat bubble has been replaced by a “+” sign. The sign provides a visual indication that a comment can be added for the displayedimage1230. At any time, the subscriber can add a new comment by selecting the chat bubble.
In the example described above, the top andbottom bars210 and370 disappear upon displaying thenext image1230. Alternatively, the application may remove these bars after a set period of time. For instance, in thesecond stage1210, the top andbottom bars210 and370 may automatically disappear once a predefined period (e.g., a few seconds) has been reached.
E. Declining an Invitation
In several examples described above, a recipient becomes a subscriber to a photo stream by accepting a photo stream invitation.FIG. 13 provides an illustrative example of a recipient declining the photo stream invitation. Three operational stages1305-1315 of the recipient's device are illustrated in this figure.
Thefirst stage1305 illustrates the image application displaying thephoto stream menu220. Themenu220 includes thephoto stream1320 created by the owner. The recipient selects thephoto stream1320 from thephoto stream menu220. The selection causes the application to display a pop-upmenu215 in thesecond stage1310. Included in the pop-upmenu220 is adecline button255, which when selected, declines the invitation. As shown at thisstage1310, the recipient selects thedecline button255 to decline the invitation. Thethird stage1315 illustrates thephoto stream menu220 after the recipient has declined the photo stream invitation. As shown, the selection of thedecline button255 results in the removal of thephoto stream1320 from thephoto stream menu220.
F. Example Process
Having described accepting and declining a photo stream invitation, an example process will now be descried.FIG. 14 conceptually illustrates aprocess1400 that some embodiments use to accept or decline a photo stream invitation. Theprocess1400, in some embodiments, is performed by the image application.
Theprocess1400 begins when it receives (at1405), from a control server, a message regarding an update to a photo stream. After receiving the message, theprocess1400 retrieves (at1410) a list of photo streams from the control server. Based on the list, theprocess1400 then notifies (at1415) the recipient of the update. Several examples of different notifications or markings has been described above, including a banner notification and a badged icon at the OS level, a marking (e.g., a blue dot) at the application's album level, etc. As mentioned above, the recipient's device may also play a sound or vibrate upon receiving the message.
At1420, theprocess1400 displays the photo stream invitation. Many different examples of such a photo stream invitation are described above. For instance, the invitation may be a part of a pop-up window with buttons for accepting and/or declining the invitation. Different from the pop-up window, the invitation may be an email message with one or more selectable links for accepting and/or declining the invitation. In some embodiments, the photo stream invitation is displayed upon the recipient selecting a notification (e.g., a banner). Alternatively, the invitation may be displayed upon the recipient selecting the photo stream from a photo stream menu.
As shown inFIG. 14, theprocess1400 awaits (at1425) input from the recipient. If the invitation has been accepted, theprocess1400 sends (at1430) a message to the control server regarding the accepted invitation. In some embodiments, the control server receives the message and adds the recipient as a subscriber in access list. In some embodiments, this access list lists each subscriber that is authorized to view the images in the photo stream and make comments regarding those images. The list may also specify whether the subscriber can add images to the photo stream, remove images, add subscribers to the photo stream, and/or remove subscribers from the photo stream.
After notifying the control server of the accepted invitation, theprocess1400 retrieves (at1435), from the control server, file location data (e.g., with one or more Uniform Resource Locators (“URLs”)) for the images in the photo stream. Then, the process retrieves (at1440) the images from a storage server (e.g., a third-party storage server) using the location data. Theprocess1400 then ends.
At1450, theprocess1400 determines whether the recipient declined the invitation. If the recipient declined the invitation, the process sends (at1430) a message to the control server regarding the declined invitation. Theprocess1400 may also delete the photo stream from the list of photo stream (e.g., that is represented in the photo stream menu). Based on the message, the control server of some embodiments removes the recipient from a list that lists different individuals that are invited to join the photo stream.
If the recipient has not declined or accepted the invitation (e.g., by selecting a cancel button or closing the email message), the process maintains (at1460) the pending status of the invitation. As the invitation is pending, theprocess1400 may not remove the photo stream from the photo stream menu and/or the marking (e.g., the colored dot) that is displayed with the name of the photo stream in that photo stream menu.
Some embodiments perform variations on theprocess1400. The specific operations may not be performed in one continuous series of operations, and different specific operations may be performed in different embodiments. Furthermore, theprocess1400 could be implemented using several sub-processes, or as part of a larger macro process.
II. Adding and Deleting ImagesThe image application of some embodiments provides tools to add or delete images from a shared photo stream. When a participant of the photo stream adds images, the images may be published to all of the participant's devices as well as the devices of other participants. Similarly, when the participant deletes images, the images may be deleted from all of the participant's devices and the devices of the other participants. Several examples of adding and deleting images will now be described by reference toFIGS. 15-20.
A. Adding an Image to a Photo Stream
FIG. 15 provides an illustrative example of adding an image to an existing photo stream. Five operational stages1505-1525 of the owner's device are illustrated in this figure. In thefirst stage1505, theimage display area105 of the application displays thumbnail representations of images from the camera roll collection. Here, the owner selects (e.g., by performing a gesture such as tapping the owner's finger on) thethird thumbnail image1525.
Thesecond stage1510 illustrates theimage display area105 after the owner has selected thethumbnail image1525. The selection results in theimage display area105 displaying afull screen representation1530 of the selected image. To share the image, the owner then selects theshare button345. As shown in thethird stage1515, the selection causes the pop-upmenu145 to appear. In some embodiments, the pop-upmenu145 appears with animation by sliding up from the bottom of the screen. The owner then selects thephoto stream button165 from the pop-upmenu145.
As shown in thefourth stage1520, the selection of thephoto stream button165 causes the application to display thephoto stream menu220. Thephoto stream menu220 lists the existingphoto stream1535. Themenu220 also lists anoption1540 to create a new photo stream. Thetop bar210 is superimposed on thephoto stream menu220. Thetop bar210 includes a cancelbutton1545 to return to the previous view (e.g., the full screen view illustrated in the second stage1510). Thetop bar210 also includes a heading that states “Add to a Photo Stream”. Alternatively, the heading may indicate that a photo stream should be chosen. When there is no existing photo stream, the application of some embodiments displays the photostream options sheet125 that is described above by reference toFIG. 1. This allows the owner to skip the photo stream menu screen when creating a new photo stream.
In thefourth stage1520, the owner selects (e.g., by tapping the owner's finger on) thephoto stream1535 from themenu220. As shown in thefifth stage1525, the selection of thephoto stream1535 results in the display of thecomment sheet150. Thecomment sheet150 includes thefield155 for inputting a comment for the selected image. Athumbnail representation1550 of the selected image is also shown on thecomment sheet150. To add the image to the photo stream, the owner then selects thepost button136.
In the example described above, the owner selects asingle image1525 from theimage display area105. Alternatively, the owner can select multiple images from the image display area105 (e.g., by selecting theedit button118 in the thumbnail view). An example of selecting multiple images has been described above by reference toFIG. 1.
When images are added to the photo stream, the subscriber may be notified of the additions.FIG. 16 provides an illustrative example of different markings (e.g., a banner notification, a badged icon) that are displayed on the subscriber's device. Twooperational stages1605 and1610 of the subscriber's device are illustrated inFIG. 16.
Thefirst stage1605 illustrates the different markings that are shown on the subscriber's device. Thisfirst stage1605 occurs after the owner has added the image to the photo stream (e.g., as illustrated inFIG. 15). Upon the owner adding the image, abanner1615 is displayed on the subscriber's device. In this example, thebanner1615 is superimposed along the top edge of the operating system's desktop. In some embodiments, thebanner1615 rotates into view in a simulated 3D effect. Thebanner1615 may float on top of the main display area for a predetermined period of time and then disappear (e.g., rotate out of view or fade away).
Thebanner1615 includes a heading and a message. The heading identifies the photo stream, and the message states there is a new image from the owner. In some embodiments, the message states that the owner has added one new image to the photo stream. As shown, the photo stream is identified by its associated name, and the owner is identified by the owner's name.
In the example illustrated in thefirst stage1605, thebanner1615 includes athumbnail representation1620 of the new image added to the photo stream. In some embodiments, the application displays a thumbnail representation of one image (e.g., the first image in the new batch) regardless of the number of images added to the photo stream. Alternatively, the application of some embodiments displays multiple thumbnail images of the images added to the photo stream. In some embodiments, thethumbnail representation1620 is only displayed upon the recipient accepting the invitation to the photo stream. Otherwise, thebanner1615 displays the icon of the image application in some embodiments.
As shown in thefirst stage1605, the subscriber is also notified through theicon435 of the image application that there is an update in the photo stream. Specifically, theicon435 is displayed with a marking orbadge830. Here, thebadge830 at least partially overlaps theicon435. The badge includes a number that indicates that a photo stream has been updated. Hence, the number on thebadge830 does not represent the number of new images in the photo stream but represents the number of photo streams that are updated or new.
B. Deleting an Image from a Photo Stream
In the example described above, the owner adds a new image to a shared photo stream.FIG. 17 provides an illustrative example of deleting an image from the photo stream. Six operational stages1705-1730 of the owner's device are illustrated in this figure. In thefirst stage1705, the application displays thephoto stream menu220. Thephoto stream menu220 lists thephoto stream1735. To modify the photo stream, the owner selects (e.g., by performing a gesture such as tapping the owner's finger on) thephoto stream1735.
As shown in thesecond stage1710, the selection of thephoto stream1735 results in the application displaying theimage display area105. Theimage display area105 displays thumbnail representations ofimages1733,1736, and1738 in the photo stream. This is indicated by thetop bar210, which displays the name of the selected photo stream. The owner then selects thesecond thumbnail image1736 to display a full screen representation of the same image.
Thethird stage1715 illustrates theimage display area105 after the owner has selected thethumbnail image1736. The selection results in the image display area displaying a full screen representation of the selected image. The selection also causes the application to display several contextual menu items. These menu items are displayed on thebottom bar370. In the example illustrated in thethird stage1715, thebottom bar370 includes theshare button345 for sharing the displayed image, theplay button350 for playing a slide show of the images in the photo stream, the stream button355 for streaming the images in the photo stream to one or more other devices (e.g., a desktop computer, a laptop), thedelete button1740 for deleting the image from the photo stream, and acomment button360 to leave a comment regarding the displayed image. In some embodiments, the delete function is only available to the user that created the photo stream. As such, the subscriber may not be able to access thisbutton1740 on the subscriber's device when viewing the photo stream. In other words, thebutton1740 may not be displayed at all on thebottom bar370.
In thethird stage1715, the owner selects thedelete button1740. The selection of the delete button causes a pop-upmenu1745 to be displayed, as illustrated in thefourth stage1720. The pop-upmenu1745 includes (1) a confirmation button1750 to confirm deleting the selected image from the photo stream and (2) a cancelbutton1755 to cancel the delete operation (i.e., the delete operation initiated by selecting the delete button1740). As shown, the pop-upmenu1745 includes a warning message or a prompt stating that the image will be deleted from all of the owner's devices and the subscribers' devices.
In thefourth stage1720, the owner selects the delete button1750 from the pop-upmenu1745. Thefifth stage1725 illustrates the owner's device after deleting the selected image from the photo stream. As thesecond image1736 has been deleted, the application displays a full screen representation of thenext image1738 in the photo stream. The owner then selects theback button330 to return to the thumbnail view. As shown in thesixth stage1730, theimage display area105 displays only twothumbnail images1733 and1738 because thesecond image1736 has been deleted from the photo stream.
In the previous example, the owner deletes an image from the owner's device.FIG. 18 provides an illustrative example of the photo stream on the subscriber's device after the owner deletes the image. Twooperational stages1805 and1810 of the subscriber's device are illustrated in this figure.
As shown in thefirst stage1805, the subscriber's device displays thephoto stream menu220. The subscriber might have selected the application's icon from the desktop and then navigated to thephoto stream menu220. When one or more images are deleted from the photo stream, the subscriber may not be notified of this update. For instance, a banner notification may not be shown on the subscriber's device and/or a badge may not be shown on the application's icon.
In thefirst stage1805, the subscriber selects thephoto stream1815 from thephoto stream menu220. The selection causes the application to display thumbnail representations of the images in the photo stream. As thesecond image1736 has been deleted (e.g., by the owner), the image display area only displays representations of the remaining twoimages1733 and1738.
C. Example Processes
Having described adding and deleting images from a shared photo stream, several example processes will now be described by reference toFIGS. 19 and 20.FIG. 19 conceptually illustrates aprocess1900 that some embodiments use to add or delete images from a photo stream. Theprocess1900, in some embodiments, is performed by the image application (e.g., executing on the owner's device).
Theprocess1900 begins when it receives (at1905) input to modify a photo stream. Theprocess1900 then determines (at1910) whether a new batch of images has been added to the photo stream. If not, theprocess1900 proceeds to1935, which is described below. If so, theprocess1900 generates (1915) a message regarding the new batch of images. After generating the message, theprocess1900 sends (at1920) the message to a control server. As mentioned above, the control server facilitates the sharing of content by managing control data associated with a shared photo stream. Examples of such control data include user data (e.g., a list of devices associated with a user) and photo stream data (e.g., a list of photo stream associated with the user, file location data). The control data may also include a subscriber list that lists individuals that can access a particular photo stream. The subscriber list may also specify whether a subscriber can add images to the photo stream, remove images, add subscribers to the photo stream, make comments, and/or remove subscribers from the photo stream.
As shown inFIG. 19, theprocess1900 receives (at1925) file location data from the control server. In some embodiments, the file location data includes one or more URLs to upload the images to a storage server (e.g., a third-party storage server). Once the file location data is received, theprocess1900 sends (at1930) the images to the storage server using the file location data.
At1935, theprocess1900 determines whether any images have been deleted from the photo stream. If not, theprocess1900 proceeds to1950, which is described below. If so, theprocess1900 generates (1940) a message regarding the deleted images. After generating the message, theprocess1900 sends (at1945) the message to a control server. Based on the message, the control server may disassociate the images from the photo stream. For instance, the control server may remove references to those images from a photo stream list that lists all images associated with the photo stream.
When the modification is another type of modification, theprocess1900 modifies (1950) the photo stream based on the input. Examples of such modifications include adding a new subscriber, deleting a current subscriber, deleting the photo stream, changing the photo stream's name, etc. Similar to adding and deleting images, the application of some embodiments generates and sends a message to the control server based on the modification. The control server then makes changes to the shared photo stream. For instance, the control server may remove a subscriber from a subscriber list that lists all individuals that are able to access the photo stream. Several examples of such modifications are described below in detail in Section III.
FIG. 20 conceptually illustrates a process2000 that some embodiments perform when a participant adds images to or deletes images from a photo stream. Theprocess1900, in some embodiments, is performed by the image application (e.g., executing on the subscriber's device). The process2000 begins when it receives (at2005), from a control server, a message regarding an update to a photo stream.
After receiving the message, the process2000 retrieves (at2010) a list of photo streams from the control server. Based on the list, the process2000 then notifies (at2015) the subscriber of the update. In some embodiments, the process2000 only notifies a participant of certain types of updates and ignores other updates. For instance, the process2000 might display a notification if a new image has been added to the photo stream. On the other hand, if an image has been deleted, the process2000 might not display any notifications. The application of some embodiment allows its user to specify what type of events (e.g., new comment, new image, new subscriber, etc.) triggers a notification.
As shown inFIG. 20, the process2000 determines (at2020) whether new images have been added to the photo stream. If not, the process2000 proceeds to2025, which is described below. If so, the process2000 retrieves (at2035) file location data from the control server. The process2000 then retrieves (at2040) the images from a storage server based on the file location data. At2025, the process2000 determines whether any images have been deleted from the photo stream. If so, the process2000 deletes (at2030) the local copies of the images from the photo stream. Otherwise, the process2000 ends.
Some embodiments perform variations on theprocesses1900 and2000. The specific operations of each of these processes may not be performed in one continuous series of operations, and different specific operations may be performed in different embodiments. Furthermore, the processes19 and20 could be implemented using several sub-processes, or as part of a larger macro process.
III. Photo Stream ManagementIn the examples described above, a participant modifies a photo stream by adding and deleting images. The image application of some embodiments provides a variety of different tools that allow a participant to manage a photo stream. In some embodiment, the management entails (1) resending an invitation to a recipient who has not responded, (2) adding a new subscriber, (3) deleting a current subscriber, and/or (4) deleting the photo stream. Several examples of these photo stream management features will now be described by reference toFIGS. 21-28.
A. Resending an Invitation
FIG. 21 provides an illustrative example of resending a photo stream invitation to a recipient who has not accepted or declined the invitation. Specifically, this figure illustrates in five operational stages2105-2125 how an owner can use the image application to resend the invitation. This figure includes thephoto stream menu220 that lists one or more photo streams. The figure also includes anedit menu2130.
Theedit menu2130 provides several different tools to modify a photo stream. As shown, theedit menu2130 includes aname field2135, asubscriber section2140, apublic website control2145, and adelete button2150. Thename field2135 is an area in theedit menu2130 that displays the name of the photo stream. In some embodiments, thename field2135 can be used to edit the name of the photo stream. For example, the owner can select thename field2135 to display a virtual or onscreen keyboard. The owner can then use the virtual keyboard to modify the name of the photo stream. Thedelete button2150 can be used to delete the selected photo stream.
Thesubscriber section2140 displays a list of individual that have been invited to join the photo stream. Specifically, the section lists the name of each person along with a corresponding subscription status. In some embodiments, the different subscription statuses include pending (e.g., invited), declined, and accepted. The owner can select any person from the list to remove the person as a subscriber, or resend the invitation if the person has not accepted or declined the invitation. As shown inFIG. 21, the subscriber section includes an add people control2155. The owner can select this control to invite other people to join the photo stream.
In some embodiment, the application provides tools to publish the photo stream's images to a website (e.g., a public website). That is, instead of pushing the images to each participant's device, the images can be displayed in a web browser by accessing the website. To facilitate web publication, theedit menu2130 includes thepublic website control2145. The owner can select or toggle thiscontrol2145 to publish the shared photo stream to the website. For example, the owner can select thecontrol2145 to turn on or off the public website feature. When turned on, the application of some embodiments displays the URL associated with the photo stream's website. Several examples of publishing images to the website will be described in detail below by reference toFIGS. 38-48.
In conjunction with one or more of the menu items, or instead of them, the image sharing tools of some embodiments allows the owner to control user access to the photo stream. For example, the owner can control read and write access by specifying one or more individuals that can add images to and/or remove image from the photo stream. The image sharing tools of some embodiments allows the owner to control commenting (e.g., which subscriber can or cannot leave comments, etc.).
Having described theedit menu2130, the operations of resending a photos stream invitation will now be described by reference to the state of the application's GUI during the five stages2105-2125 that are illustrated inFIG. 21. In thefirst stage2105, the owner's device is displaying thephoto stream menu220. Thephoto stream menu220 includes a selectable item2182 (e.g., a colored icon with a directional arrow) for the shared photo stream. Thisitem2182 can be selected to display theedit menu2130 for the corresponding photo stream. Instead of the selectable item, the application of some embodiments includes an edit button2160 for entering the photo stream editing mode.
In thefirst stage2105, the owner selects theselectable item2182 associated with the “Family Photos” photo stream. As shown in thesecond stage2110, the selection of theselectable item2182 causes the application to display theedit menu2130. Theedit menu2130 displays the name of the selected photo stream in thename field2135. Thesubscriber section2140 includes a list of people that have been invited to the photo stream. The list includes “Derek Parker” and “Susan Parker”. The subscriber section also displays the subscription status below the name of each individual. Specifically, the statuses indicate that Derek Parker has accepted the invitation, while Susan Parker's invitation status is pending (e.g., invited).
In thethird stage2115, the owner selects (e.g., by tapping the owner's finger on) the recipient “Susan Parker” from thesubscriber section2140. The selection causes the application to display thesubscriber menu2175, as illustrated in thefourth stage2120. Thesubscriber menu2175 is overlaid by thetop bar2180. Thetop bar2180 includes aback button2185 to return to the previous view. Thetop bar2180 also includes a heading that states the name of the subscriber.
Thesubscriber menu2175 includes (1) anemail field2190, (2) aresend invitation button2195, and (3) aremove subscriber button2196. Theemail field2190 displays the email address of the recipient. The owner can also use this field to modify the email address of the recipient. Theresend invitation button2195 can be used to resend the invitation to the recipient. Theremove subscriber button2196 can be used to remove the recipient or subscriber from the photo stream.
As shown in thefourth stage2120, the owner selects theresend invitation button2195 to resend the photo stream invitation. When the invitation is resent, the recipient's device may display one more notifications of the invitation. For example, the recipient's device may re-display a banner stating that the owner shared a photo stream with the recipient. Alternatively, or conjunctively with the banner, an email message may be sent to the recipient's device regarding the photo stream invitation. As mentioned above, the email may include a link that when selected adds the recipient as a subscriber to the photo stream.
B. Adding a Subscriber
In the example described above, an owner uses the image application to resend an invitation to a recipient. The image application of some embodiments allows the owner to add additional subscribers.FIG. 22 provides an illustrative example of sending an invitation to another recipient to join the shared photo stream. Three operational stages2205-2215 of the owner's device are illustrated in this figure.
In thefirst stage2205, the application displays the photostream edit menu2130. The menu includes the addpeople button2155. To add a subscriber, the owner selects (e.g., by tapping the owner's finger on) theadd people button2155. The selection causes a virtual or on-screen overlay keyboard140 to be displayed, as illustrated in thesecond stage2210. The owner then begins to input an email address of the subscriber. Based on the input, the application displays, in asuggestion field535, a contact from the owner's contacts list or address book. The name of the contact is shown with the contact's associated email address. The owner can selects the name from thelist535 to automatically fill in thesubscriber field130.
Thethird stage2215 illustrates the photostream edit menu2130 after the owner has specified another recipient to join the photo stream. The name of the recipient is listed in thesubscriber section2140. Specifically, the name is listed with the pending status (e.g., invited status), as the person has not yet accepted the photo stream invitation.
C. Removing a Subscriber
In the example described above, the owner uses the image application to invite a person to join the shared photo stream. The image application of some embodiments allows the owner to remove subscribers from the photo stream. This includes the recipients that have not yet responded to the photo stream invitation.FIG. 23 provides an illustrative example of removing a subscriber. Four operational stages2305-2320 of the owner's device are illustrated in this figure.
In thefirst stage2305, the application displays thesubscriber menu2175. As shown, thetop bar2180 includes the heading that states the name of the person that subscribed to the photo stream. Themenu2175 also includes theremove subscriber button2196 for removing the subscriber. As the person has subscribed to the photo stream, the resend invitation button is not shown in thesubscriber menu2175. To remove the subscriber, the owner selects theremove subscriber button2196.
Thesecond stage2310 illustrates the application after the owner has selected theremove subscriber button2196. Here, the application displays a pop-up window2335 (e.g., an action sheet). The pop-up window states that the photo stream and its images will be removed from all of the subscriber's devices. Here, the owner selects aconfirmation button2330 to confirm removing the subscriber.
In thethird stage2315, the application is awaiting confirmation of the removal from a server (e.g., the control server) that maintains the list of individuals (e.g., an access list) associated with the photo stream. The menu is overlaid by a prompt2320 that indicates that the individual is being removed. The application also displays aspinner2325 while awaiting confirmation of the removal. However, the application may display one or more other graphical symbols (e.g., an hourglass) or text to convey the same meaning.
Thefourth stage2320 illustrates the photostream edit menu2130 after the subscriber has been removed from the photo stream. As shown, the name of the subscriber is no longer listed in thesubscriber section2140.
D. Deleting a Photo Stream
In some embodiments, the image application allows an owner to delete a photo stream.FIG. 24 provides an illustrative example of deleting a photo stream. Four operational stages2405-2420 of the owner's device are illustrated in this figure.
In thefirst stage2405, the application displays the photostream edit menu2130. The menu includes thedelete button2150 for deleting a photo stream. The owner has previously selected the photo stream from the photo stream menu (not shown). To delete the photo stream, the owner selects thedelete button2150.
As shown in thesecond stage2410, the selection of thedelete button2150 results in the display of the pop-upwindow2430. The pop-upwindow2430 includes aconfirmation button2435 to delete the photo stream and a cancelbutton2440 to cancel the delete operation. The pop-upwindow2430 also includes a message stating that the photo stream will be deleted from all the owner's devices and the subscribers' devices. The photo stream is identified by its name in the message. Here, the owner selects (e.g., by performing a gesture such as tapping the owner's finger on) theconfirmation button2435 to confirm deletion of the photo stream.
Thethird stage2415 illustrates the owner's device after the owner has selected theconfirmation button2435. The application displays a prompt2450 stating that the photo stream is being deleted. The photo stream is also displayed with a spring wheel orspinner2455 indicating that it is awaiting confirmation of the delete operation. In some embodiments, the confirmation is sent from the control server to the owner's device. Thefourth stage2420 illustrates thephoto stream menu220 after the photo stream has been deleted. As the “Family Photos” photo stream has been deleted, it is not listed in thephoto stream menu220.
E. Unsubscribing
In several of the examples described above, the owner is allowed to modify a photo stream by resending an invitation to a recipient, adding a subscriber, removing a subscriber, and deleting the photo stream. In contrast to the owner, the application of some embodiments prevents subscribers from performing one or more of these operations. However, the application of some embodiments allows the subscriber to unsubscribe from the photo stream.
FIG. 25 provides an illustrative example of unsubscribing from a photo stream. Five operational stages2505-2525 of the subscriber's device are illustrated in this figure. In thefirst stage2505, the image application displays thephoto stream menu220. Thephoto stream menu220 lists the “Family Photos”photo stream2535. To display theedit menu2130, the subscriber selects theselectable item2182.
As shown in thesecond stage2510, the selection results in the display of the edit menu2530. Different from the edit menu described above, this menu includes only the subscriber section and aunsubscribe button2555. That is, it does not include menu items to remove or add a subscriber, resend an invitation, rename a photo stream, etc. This is because the subscriber is not the owner of the photo stream. In this example, the subscriber can unsubscribe from the photo stream but has limited control over managing the photo stream. As mentioned above, the image sharing tools may allow an owner of the photo stream to specify access privileges. For example, the owner can specify whether the subscriber can add images to the photo stream, remove images, add subscribers to the photo stream, and/or remove subscribers from the photo stream.
In some embodiments, the name of thesubscriber2540 can be selected from thesubscriber section2140. The selection results in the display of the subscriber menu (not shown). The subscriber menu may include an email field that displays the email address of the subscriber. In some embodiments, the application allows the subscriber to modify or update the email using this field. One example of such a subscriber menu has been described above by reference toFIG. 21.
In thesecond stage2515, the subscriber selects (e.g., by performing a gesture such as tapping the subscriber's finger on) theunsubscribe button2555. As shown in thethird stage2515, the selection results in the display of a pop-upwindow2560. The pop-upwindow2560 includes aconfirmation button2565 to confirm unsubscribing from the photo stream and a cancelbutton2570 to cancel the unsubscribe operation. The pop-upwindow2560 also includes a message stating that the photo stream will be deleted from all of the subscribers' devices.
As shown in thethird stage2515, the owner selects (e.g., by performing a gesture such as tapping the owner's finger on) theconfirmation button2565 to confirm unsubscribing from the photo stream. When the input is received, the application of some embodiments generates a message having information (e.g., a user ID such as an email address) to unsubscribe the subscriber. The message is then sent to the control server. After receiving the message, the control server may remove the user ID from an access list associated with the photo stream. As mentioned above, the access list contains a list of authorized individuals that are able to access the photo stream.
Thefourth stage2520 illustrates the subscriber's device after the subscriber has selected theconfirmation button2560. The application displays a prompt2575 indicating that the photo stream is being removed. The photo stream is also displayed with a spring wheel orspinner2580 indicating that it is awaiting confirmation of the unsubscribe operation. Thefifth stage2525 illustrates thephoto stream menu220 after the unsubscribe operation. As the subscriber has been unsubscribed from the photo stream, the “Family Photos” photo stream is removed from thephoto stream menu220.
F. Parental Control
The image application of some embodiments provides tools to set restrictions or parental controls for one or more of its features. In some embodiments, the restrictions include preventing a user of a device from sending and receiving photo stream invitations.FIG. 26 provides an illustrative example of preventing the user from receiving photo stream invitations. Four operational stages2605-2620 of the user's device are illustrated in this figure.
Thefirst stage2605 illustrates thedevice400 displaying a desktop graphical user interface of its operating system. The operating system's desktop includes several selectable icons of different applications (e.g., image application, camera application). The desktop also displays anicon2625 for the settings menu. To open the settings menu, the user selects theicon2625 from the desktop.
Thesecond stage2610 illustrates thesettings menu2630 after the user has selected theicon2625. As shown, thesettings menu2630 displays “General” in the heading, under which different general settings relating to the operating system and/or the device are displayed. The user might have navigated to this section from a main settings menu (not shown). The general section includes aselectable item2635 for setting restrictions or parental controls. To set restrictions, the user selects theitem2635 from the general section of thesettings menu2630.
Thethird stage2615 illustrates the user's device after the selection of theselectable item2635. The selection causes apasscode field2640 and the virtual or on-screen keyboard140 to appear. Thepasscode field2640 is for restricting unwanted users (e.g., children) from making changes to device or application settings. The user then uses thekeyboard140 to type the passcode into thepasscode field2640.
Once the correct passcode is entered, thesettings menu2630 displays therestriction section2650 as illustrated in thefourth stage2620. Therestriction section2650 includes a list of restriction controls for different applications. To simply the discussion, only two restriction controls related to the image application area shown in thefourth stage2620. Specially, therestriction section2650 includes a send invitation control2655 (e.g., toggle switch) to turn on or off the send invitation feature. Therestriction section2650 also includes a receiveinvitation control2660 to turn on or off the receive invitation feature. Each of thesecontrols2655 and2660 is displayed with an icon that indicates that the control is associated with the image application. As shown in thefourth stage2620, the user selects the receiveinvitation control2660 to prevent any user of the device from receiving photo stream invitations.
In the previous example, the user places restrictions on receiving photo stream invitations. Alternatively or conjunctively, the image sharing tools allow the user to freeze or lock a cloud service account in its current state. By locking the account, the user cannot create a new photo stream (e.g., with the user's device associated with the account) or become a subscriber to another photo stream. In some embodiments, the master account lock is provided in therestriction section2650. For example, instead of thecontrols2655 and2660, therestriction section2650 may include a “Don't Allow Changes” option for locking the account its current state or an “Allow Changes” option for unlocking the account.
In conjunction with the restriction controls or instead of it, the image application of some embodiments provides tools to specify whether a particular device can be used to create a shared photo stream and to subscribe to different shared photo stream.FIG. 27 provides an illustrative example of turning off such shared photo stream features. Twooperational stages2705 and2710 of the user's device are illustrated in this figure.
In thefirst stage2705, the device is displaying asettings menu2715 for managing cloud services associated with an account. Examples of such cloud services include cloud storage service, synchronizing data across user devices, etc. Thesettings menu2715 includes anaccount tab2720 that can be selected to view account information (e.g., account payment information, available storage space). Thesettings menu2715 also includes a photostream menu item2725 for displaying a photostream settings menu2740. The photostream menu item2725 is displayed with text that indicates that the personal photo stream and/or the shared photo stream is currently turned on.
Thefirst stage2715 illustrates the user selecting the photostream menu item2725. As shown in thesecond stage2710, the selection causes the image application to display thephoto stream menu2740. This menu includes a first control2730 (e.g., a toggle switch) for turning on or off the personal photo stream feature (e.g., device to device syncing). Thefirst control2730 is displayed with text that indicates that, when the control is turn on, the new images (e.g., captured or imported images) will automatically be uploaded and sent to one or more other devices associated with the cloud service account.
In addition, themenu2740 includes a second control2735 (e.g., a toggle switch) for turning on or off the shared photo stream feature. The second control is displayed with text that indicates that, when the control has been turned on, the device can be used to create new photo streams to share with other people, or subscribe to other people's photo stream. In the example illustrated in thesecond stage2710, the user selects thesecond control2735 to turn off the shared photo stream feature.
G. Managing Notifications
The image application of some embodiments provides different tools to manage notifications. These tools can be used to specify whether a banner is displayed, an alert is shown, and/or a sound is played (e.g., when a new comment has been received for a photo stream, when there is a new photo stream invitation, etc.). The application of some embodiments allows the user to granularly manage notification by implementing a whitelist feature. The whitelist feature allows the user to specify whether photo stream notifications are presented for everyone or presented for only those entities that are listed in the user's contact list.
FIG. 28 provides an illustrative example of turning on the whitelist feature. Twooperational stages2805 and2805 of the user's device are illustrated in this figure. In thefirst stage2805, the device is displaying anotification section2815. The user might have navigated to this section from the main settings menu. In this section, the user can select an application to manage different notifications (e.g., banner, sound, badge, etc.). As shown, the image application is listed in the list ofapplications2870.
In thefirst stage2805, the user selects the image application from thelist2870. Thesecond stage2810 illustrates the device after the selection of the image application from thenotification section2815. The selection results in the display of the image application'snotification menu2820. The menu includes multiple controls2825-2865 for managing notifications. Thismenu2820 includes acontrol2835 to turn on or off a notification center and acontrol2840 to specify the number of notifications to show in the notification center. In some embodiments, the notification center is a display area that lists different notifications.
As shown in thesecond stage2810, themenu2820 includes selectable items2845-2855 for turning on or off banner notification and alerts. Themenu2820 also includes acontrol2860 to turn on or off badging icons (e.g., with a number), and acontrol2865 to turn on or off playing sound. Lastly, themenu2820 includesselectable items2825 and2830 for switching between receiving alerts from everyone or from only those in the user's contacts. In thesecond stage2810, the user selects theselectable item2830 to display alerts for only those in the user's contact list.
IV. CommentingIn some embodiments, the image application provides tools to share comments regarding images in the photo stream. Several examples of sharing comments will now be described by reference toFIGS. 29-37.
A. Exchanging Comments
FIG. 29 provides an illustrative example of leaving a comment regarding an image in a shared photo stream. Six operational stages2905-2930 of the owner's device are illustrated in this figure. Thefirst stage2905 illustrates theimage display area105, which includes thumbnail representations of images. As indicated by the heading2935, the thumbnails represent images associated with the photo stream (e.g., “Family Photos”). The owner might have first selected the name of the photo stream from the photo stream menu (not shown) to display these thumbnail images. To leave a comment for an image, the owner selects thecorresponding thumbnail image2940 from theimage display area105.
As shown in thesecond stage2910, the selection causes theimage display area105 to display afull screen representation2945 of the corresponding image. The selection also causes the top andbottom bars210 and370 to be modified. Thetop bar210 includes aback button330 to return to the thumbnail view. Thetop bar210 also includes a heading that states that the displayedimage2945 is the second of two images in the photo stream. Thetop bar210 may also include an edit button that when selected provides different editing tools to edit the displayed image. In some embodiments, the editing entails enhancing the image, removing red eye from the image, and/or cropping the image.
Different from thetop bar210, thebottom bar370 includes (1) ashare button345 for sharing the selected image, (2) aplay button350 for playing a slide show of the images in the photo stream, (3) adelete button1740 for deleting the image from the photo stream, and (4) acomment button360 for leaving comments regarding the displayed image. The bottom bar may also include a stream button (not shown) for streaming the images in the photo stream to one or more other devices (e.g., a desktop computer, a laptop). In the example illustrated in thesecond stage2910, each item in thebottom bar370 is displayed with a corresponding icon. For example, thecomment button360 is displayed with achat bubble icon375. Thechat bubble icon375 includes a plus sign (i.e., “+”) that provides a visual indication that a comment can be added for the displayedimage325.
As shown in thesecond stage2910, the owner selects thecomment button360. The selection causes a virtual or on-screen overlay keyboard140 to appear, as illustrated in thethird stage2915. The owner then types in a comment regarding theimage2945 in acomment field155. Thepost button2950 may also change its appearance when the owner types in a character in the comment field. Here, the owner types in a comment into the comment field and selects thepost button2950. In some embodiments, the application provides a selectable item for deleting a comment. For example, the application may display a delete button next to a comment. The delete operation can only be performed by the person that left the comment, in some embodiments.
Thefifth stage2925 illustrates theimage display area105 after posting the comment. As shown, the comment is displayed over theimage2945. The comment is also associated with metadata. The metadata is displayed below the comment, and identifies the person that left the comment and the time the comment was left. As shown in thefifth stage2925, the person who left the comment is identified as “Me”. This is because the owner left the comment with his or her device. The comment is also displayed with anadd comment field365 that can be selected to add additional comments.
In the example illustrated in thefifth stage2925, the top andbottom bars210 and370 disappear upon selection of thepost button2950. However, thechat bubble icon375 remains in the same position. As shown, the “+” sign has been replaced with the number “1”, and the color of the chat bubble icon has been changed from a first color (e.g., white) to a second different color (e.g., blue). The number identifies the number of comments associated with the image. The color of the icon indicates that the image application is in a comment displaying mode. Here, the owner can select the chat bubble icon to (1) hide the comment, (2) hide the addcomment field365, and (1) return the chat bubble icon to its first color (e.g., white). In some embodiments, the number remains visible on the chat bubble icon (e.g., by changing color).
Upon posting, the comment is pushed to all devices of participants associated with the photo stream.FIG. 30 provides an illustrative example of how the comment appears on a subscriber's device. Six operational stages3005-3030 of the subscriber's device are illustrated in this figure. In thefirst stage3005, the subscriber's device displays the desktop of its operating system. The desktop includes theicon435 for opening the image application. In this example, theicon435 does not display any marking indicating that there are one or more updates to the photo stream. For instance, theicon435 is not overlaid by a badge with a number indicating that a photo stream has been updated. As will be described in detail by reference toFIG. 31, the application of some embodiments displays a marking on theicon435 when the subscriber has participated in the conversation (i.e., previously left a comment regarding the same image).
As shown in thefirst stage3005, the subscriber selects theicon435 to open the image application. Thesecond stage3010 illustrates the application'sphoto stream menu220. The subscriber might have previously selected thephoto stream tab114 to display this menu. Different from thedesktop icon435, the name of the photo stream is listed with amarking3040. The marking3040 provides a visual indication to the subscriber that there is one or more updates to the photo stream. In the example illustrated in thesecond stage3010, the marking3040 is a blue dot. However, different types of markings can be used to convey the same meaning. For instance, theicon285 of the “Photo Stream”tab114 can be badged with anumber280 that indicates that there is an update to a photo stream.
In thesecond stage3010, the subscriber selects thephoto stream3045 from themenu220. The selection causes the application to display theimage display area105, as illustrated in thethird stage3015. Theimage display area105 includes thumbnail representations and of images in thephoto stream3045. The application of some embodiments provides a visual indication that an image is associated with one or more comments. This is shown in thethird stage3015 because thesecond thumbnail image3050 is displayed on theimage display area105 with amarking3055. In the example illustrated in thethird stage3015, the marking3055 is a chat bubble that is displayed at least partially over theimage3050. The chat bubble is also colored (e.g., blue). The color provides a visual indication to the subscriber that there is an unread comment associated with the corresponding image.
As shown in thethird stage3015, the subscriber selects thethumbnail image3050. The selection causes theimage display area105 to display afull screen representation3060 of the corresponding image. The selection also causes thecomment button360 to appear along thebottom bar370. Thecomment button360 contains achat bubble icon375. Thechat bubble icon375 is colored white and includes a number “1”. The number represents the number of comments associated with the image. To display the comment, the subscriber selects thecomment button360.
The fifth stage3025 illustrates theimage display area105 after the selection of thecomment button360. As shown, the comment is displayed over theimage3060. The comment is also associated with metadata. The metadata is displayed below the comment, and identifies the person who left the comment and the time when the comment was left. In the example illustrated in the fifth stage3025, the person who left the comment is identified as “Emily Parker”.
In the fifth stage3025, the subscriber selects thecomment field365 to add another comment. Thesixth stage3030 illustrates the subscriber leaving another comment. Specifically, the comment is inputted into the comment field using the on-screen keyboard140.
In the example described above, the subscriber is notified of the update to the photo stream after opening the image application and navigating to thephoto stream menu220. The application of some embodiments provides one or more different types of notifications to alert a participant that a new comment has been posted. In some embodiments, the owner is always notified of any new comments that have been posted. A subscriber may be notified when the subscriber has participated in the conversation. That is, the subscriber has left a comment regarding an image and another comment was left regarding that same image by another participant. In some embodiment, if a participant (e.g., subscriber, owner) shared an image, that participant is always notified of any new comments that have been posted regarding the same image.
FIG. 31 provides an illustrative example of how the image application notifies an owner of a new comment and presents the new comment on the owner's device. Five operational stages3105-3125 of the owner's device are illustrated in this figure. In thefirst stage3105, the owner's device displays the desktop of its operating system. The desktop includes theicon435 for opening the image application. As the device is associated with the owner, the image application displays abanner3130 indicating that a new comment has been left for an image. Specifically, thebanner3130 is superimposed along the top edge of the operating system's desktop. In some embodiments, thebanner3130 rotates into view by simulating a 3D effect. Thebanner3130 may float on top of the main display area for a predetermined period of time and then disappear (e.g., rotate out of view, fade away).
As shown in thefirst stage3105, thebanner3130 includes the comment and the name of the subscriber that left the comment. Thebanner3130 also includes athumbnail representation3135 of the image associated with the comment. In some embodiments, thebanner3130 is a selectable item that when selected opens the image application. The image application may also open to display a full screen representation of the image with the comment.
In conjunction with the banner or instead of it, the image application may provide a different type of marking. One such type of marking is a badge that is displayed at least partially over the icon of the image application. This is shown in thefirst stage3105 as theicon435 is displayed with abadge830 that is marked with a number “1”. In this example, the number represents the number of photo streams that have one or more updates, and does not represent the number of new comments. However, the application of some embodiments may display such a marking to identify the number of new comments that have been received for a photo stream.
In thefirst stage3105, the owner selects theicon435 to open the image application. Thesecond stage3110 illustrates the application'sphoto stream menu220 after the application is opened. The owner might have previously selected thephoto stream tab3035 to display thismenu220. The name of thephoto stream3140 is listed with amarking3040. The marking3040 provides a visual indication to the subscriber that there is one or more updates to thephoto stream3140.
In thesecond stage3110, the owner selects thephoto stream3140 from themenu220. The selection causes the application to display theimage display area105, as illustrated in thethird stage3115. Theimage display area105 includes thumbnail representations of images in the photo stream. As mentioned above, the application of some embodiments provides a visual indication that an image is associated with one or more comments. This is shown in thethird stage3115 because thesecond thumbnail image3050 is displayed on the image display area with amarking3150.
In the example illustrated in thethird stage3115, the marking3150 is a double chat bubble or speech bubble icon. Different from a single chat bubble, the double chat bubble indicates that the owner has participated in the conversation. That is, the owner has previously left a comment regarding the image and a new comment has been received. The double chat bubble is displayed at least partially over thethumbnail image3050. The double chat bubble is also colored (e.g., blue). The color provides a visual indication to the owner that there is an unread comment associated with the corresponding image. In some embodiments, the application does not differentiate whether a person participated in a conversation. For example, the application may display a same marking (e.g., the single chat bubble and not the double chat bubble) regardless of whether the person participated in the conversation.
As shown in thethird stage3115, the owner selects thethumbnail image3050. The selection causes theimage display area105 to display afull screen representation3060 of the corresponding image as illustrated in thefourth stage3120. As shown, the new comment is displayed over theimage3060. The new comment is also associated with metadata that identifies the person who left the comment and the time when the comment was left. The comments are sequentially displayed in theimage display area105. Specifically, the new comment is shown below the previous comment. The addcomment field365 is displayed below the previous comment.
Thefifth stage3125 illustrates theimage display area105 after navigating out of the full screen view (e.g., by selecting a back button). The thumbnail view is identical to the one shown in thethird stage3115. However, thedouble chat bubbles3150 have been modified to indicate that there are no unread comments. Specifically, the color of thedouble chat bubble3150 has been modified from one color (e.g., blue) to another color (e.g., white). One of ordinary skill in the art would understand that modifying the color is just one of many different ways in which the application can provide such visual indication. For instance, thedouble chat bubble3150 can be removed from thethumbnail image3050 to provide the same indication (e.g., no unread comments).
In the example described above, the different marking are displayed over images with comments. In some embodiments, the application follows a set of rules to display the different markings. For example, a first marking (e.g., a comment or chat bubble) that is colored a first color (e.g., blue) indicates that the image is associated with an unread comment and the participant has not left a comment for the same image. A first marking (e.g., a comment bubble) that is colored a second different color (e.g., white) indicates that all comments have been read and the participant did not leave any comments for the same image.
A second different marking (e.g., a double comment or chat bubble) that is colored the first color (e.g., blue) indicates the image associated with an unread comment and the participant has previously left a comment for that image. The second different marking (a double comment bubble) that is colored the second different color (e.g., white) indicates that all comments have been read and the participant previously left a comment for that same image.
B. Marking Images
In the examples described above, the owner and the subscriber exchange comments regarding an image. The image application of some embodiments allows a participant to mark an image. In some such embodiments, the marking provides a visual indication that the participant approves or likes the image.FIG. 32 provides an illustrative example of marking an image. Three operational stages3205-3215 of the user's device are illustrated in this figure.
Thefirst stage3205 illustrates the image application displaying a full screen representation of animage3220. Theimage3220 is associated with several comments and amark3225. Themark3225 includes an image or symbol. Here, themark3225 is a smiley face or happy face that provides an indication that one or more individuals listed adjacent to it approves or likes the displayedimage3220. However, any number of different symbols (e.g., heart symbol) and/or images (e.g., flags, icons) can be used to provide the same indication. In the example illustrated in thefirst stage3205, the name of a subscriber is displayed next to thesmiley face symbol3225.
Thesecond stage3210 illustrates the owner selecting the marking3225 to indicate that he or she likes the marking. Specifically, the user selects the marking3225 from theimage display area105. Thethird stage3215 illustrates theimage display area105 after the selection of thesymbol3225. As shown, the selection results in the owner being added to the list of individuals adjacent to thesymbol3225. Specifically, the owner's identification has been added next to the subscriber's name. In this example, the owner is identified as “Me”.
In some embodiments, the application counts the association of the approval mark as one comment. That is, the number of likes is counted towards the number of comments. This is shown in the second andthird stage3210 and3210 because the number of comments in the comment bubble3235 is incremented by one (i.e., changes from three comments to four comments). The application of some embodiments allows a participant to remove the approval mark. For instance, the owner can reselect the marking3225 to unlike the displayed image.
C. Displaying Comments
The previous two examples illustrated adding comments or markings to images. Several examples of displaying and scrolling comments will be described by reference toFIGS. 33-35.FIG. 33 provides an illustrative example of how the image application of some embodiments displays an image with comments. Four operational stages3305-3320 of the owner's device are illustrated in this figure.
Thefirst stage3305 illustrates the image application displaying a full screen representation of animage3325 with comments. The full screen representation is overlaid by thetop bar210 and thebottom bar370. Thetop bar210 includes theback button330 and a heading. The heading indicates that the displayed image is the second of two images. Different from thetop bar210, thebottom bar370 includes (1) ashare button345 for sharing the displayed image, (2) aplay button350 for playing a slide show of the images in the photo stream, (3) adelete button1740 for deleting the displayed image, and (4) acomment button360 for leaving a comment regarding the displayed image. The bottom bar may also include a stream button (not shown) for streaming the images in the photo stream to one or more other devices (e.g., a desktop computer, a laptop).
In thefirst stage3305, the owner selects the full screen representation of the second image in the photo stream. As illustrated in thesecond stage3310, the selection causes the top and bottom bars to disappear (e.g., fade away). However, the comments remain overlaid on the full screen representation. In addition, theicon3335 of the comments button360 (e.g., the comment bubble) is displayed in the same location over the full screen representation. As shown in thesecond stage3310, the owner then selects alocation3340 on thefull screen representation3325 to zoom in on the image.
Thethird stage3315 illustrates theimage display area105 after the selection of thelocation3340 on the full screen representation. The selection results in the application zooming in on the displayed image towards the selected location. As shown, theicon3335 of the comment button360 (e.g., the comment bubble) remains in the same location with respect to the device's screen. However, the comments are not displayed in this zoomed view. To display the comments, the owner selects theicon3335.
Thefourth stage3320 illustrates theimage display area105 after the selection of theicon3335. The selection results in the application displaying the comments in the zoomed view. Alternative, the selection may result in the application displaying the full screen representation with the comment. For instance, the selection may cause the application to zoom out of the displayed image. The selection may also cause the comments to reappear over thefull screen representation3325. Accordingly, upon selection of theicon3335, the application of some embodiments displays the full screen view that is illustrated in thesecond stage3310.
The previous example illustrated zooming in on an image with comments. In some embodiments, the comment toggle is persistent across other images. For example, when the comment mode has been activated, the application allows its user to scroll through images with comments.FIG. 34 provides an illustrative example of scrolling through different images with comments. Three operational stages3405-3415 of the owner's device are illustrated in this figure.
Thefirst stage3405 illustrates the image application displaying thefull screen representation3420 of the image associated with several comments. The comments and thecomment icon3335 appear over thefull screen representation3420. Thecomment icon3335 has been activated (e.g., changed from a first color to a second different color) to indicate that comments are being displayed. The top and bottom bars are not shown in this full screen view.
In thesecond stage3410, the user selects (e.g., swipes across) the screen to display the next image. This causes the application to display thenext image3425. As shown in thethird stage3415, thenext image3425 is also displayed with its associated comment. When the next image is not associated with any comments, the application of some embodiments only displays theadd comment field365 and the icon3335 (e.g., with the plus sign instead of a number).
The previous example illustrated scrolling through different images with comments.FIG. 35 provides an illustrative example of scrolling through the comments associated with one image. Three operational stages3505-3515 of the owner's device are illustrated in this figure. Thefirst stage3505 illustrates the image application displaying the full screen representation of the image with the comment. Specifically, there are six comments associated with the displayed image and five of those are shown in the image display area. The comments are also in a sorted order, starting with the oldest comment at or near the top and the newest one at the bottom. In some embodiments, the application displays the comments in opposite order, starting with the newest comment at the top and the oldest one at the bottom. The application of some embodiments presents the comment with shading. For example, the application may display the top of the comment list being white down to the bottom becoming grayer and grayer.
As shown in thefirst stage3505, there is limited amount of space to display different comments. Here, the image display area displays four comments and the add acomment field365. In thesecond stage3510, the user then scroll through the comments associated with the image by using a touch gesture (e.g., moving or dragging the user's finger up or down the device's screen). The gesture causes the application to display one older comment while removing theadd comment field365. In thethird stage3510, the user inputs the same gesture to display another comment. As shown, the input causes another comment comes into view while a newer comment scrolls out of the view. The input also causes a marking tool (e.g., the smiley face, the like icon) also comes into view.
D. Example Processes
Several example processes for exchanging comments will now be described by reference toFIGS. 36 and 37.FIG. 36 conceptually illustrates aprocess3600 that some embodiments use to post a new comment. Theprocess3600, in some embodiments, is performed by the image application. Theprocess3600 begins when it receives (at3605) a user input to post a new comment for an image in a shared photo stream. As mentioned above, the user might have first inputted a comment into a comment field and then selected a post button.
After receiving the input, theprocess3600 generates (at3610) a message regarding the new comment. The message may include the new comment. The message may also include one or more identifying information, such as (1) a user identification (“ID”) that identifies a participant that left the new comment, (2) a photo stream ID that identifies the photos stream, (3) an image ID that identifies the image with the new comment, (4) comment ID that identifies the new comment, and (5) a timestamp that identifies the time and date the new comment was left.
Theprocess3600 then sends (at3615) the message to a control server. In some embodiments, the control server receives the message and stores the comment. Based on the message, the control server may also identify entities (e.g., owner, subscribers) associated with the photo stream. The control server may then send a message regarding an update to a photo stream to each device associated with the identified entities.
FIG. 37 conceptually illustrates aprocess3700 that some embodiments use to display the new comment. The process, in some embodiments, is performed by the image application. The process begins when it receives (at3705), from a control server, a message regarding an update to the shared photo stream. After receiving the notification, theprocess3700 retrieves (at3710) a list of photo streams from the control server. Based on the list, theprocess3700 retrieves (at3715) the new comment from the control server.
At3720, theprocess3700 notifies a participant (e.g., the device's user) of the new comment. As mentioned above, the application of some embodiments always notifies the owner when a new comment has been posted regarding an image in the shared photo stream. A subscriber may be notified when the subscriber has participated in the conversation. That is, the subscriber has left a comment regarding an image and another comment was left regarding that same image by another participant. In some embodiment, if a participant (e.g., subscriber, owner) shared an image, that participant is always notified of any new comments that have been posted regarding the same image.
In notifying the participant, theprocess3700 may display one or more marking and/or cause the participant's device to play a sound or vibrate. For instance, a visual indication of the association of the comment may be shown with a banner and a badge over an icon. The visual indication may be presented at a thumbnail view (e.g., with a chat bubble near or at least partially over the thumbnail representation) and/or at a full-screen view (e.g., with a similar chat bubble near or at least partially over the thumbnail representation).
As shown inFIG. 37, theprocess3700 determines (at3725) whether there is an input to display the new comment. Many different examples of such an input are described above. For instance, the participant might select (e.g., tap the participant's finger on) a banner notification. Alternatively, the participant might select a comment tool (e.g., the chat bubble icon) to display the new comment. If there is an input to display the new comment, theprocess3700 displays (at3730) the new comment with the associated image. Otherwise, theprocess3700 ends.
Some embodiments perform variations on theprocesses3600 and3700. The specific operations of each of these processes may not be performed in one continuous series of operations, and different specific operations may be performed in different embodiments. Furthermore, theprocesses3600 and3700 could be implemented using several sub-processes, or as part of a larger macro process.
V. Public WebsiteThe image application of some embodiments allows a participant to publish the photo stream to a website. In some embodiments, the website is a public website that can be accessed by any browser with the correct uniform resource locator (URL) address. Several example of publishing a photo stream to a website will now be described by reference toFIGS. 38-48.
A. Publishing a Photo Stream to a Website
FIG. 38 provides an illustrative example of publishing a shared photo stream to a website. Specifically, in three operational stages3805-3815, this figure illustrates how an owner can publish the photo stream using the image application. This figure includes the editphoto stream menu2130 that has been described above by reference toFIG. 21.
Thefirst stage3805 illustrates the owner's device displaying theedit menu2130. To display theedit menu2130, the owner might have first selected a selectable item (e.g., a colored icon with a directional arrow) that is displayed with the name of the photo stream in the photo stream menu. As shown, theedit menu2130 includes thepublic website control2145. The owner can select thecontrol2145 to turn on or off the public website feature. In the example illustrated in thefirst stage3805, the public website feature is turned off or disabled. To publish the photo stream, the owner selects (e.g., by performing a gesture such as tapping the owner's finger on) thecontrol2145.
Thesecond stage3810 illustrates the image application after the selection of thecontrol2145. The selection causes the application to send data to one or more servers to publish the photo stream to the website. For example, the application may generate one or more lower resolution images from a stored image (e.g., raw image) and send those images to a server. The application may exchange messages with a control server regarding publication. In the example illustrated in thesecond stage3810, theedit menu2130 is overlaid by a spinner or spinning wheel2325 (e.g., below the control in the edit menu). Thespinner2325 provides a visual indication that the application is awaiting confirmation of the publication.
Thethird stage3815 illustrates the image application after the publication of the images associated with the photo stream. The publication of the photo stream results in the display of ashare link control3820. In this example, theshare link control3820 is displayed below thepublic website control2145. Theshare link control3820 can be selected to generate a message (e.g., an email) that contains a link to the URL to access the website. In some embodiments, the message can be sent to anyone, including those that are not subscribed to the photo stream. The selection of the share link button may cause the application to display different options (e.g., buttons with icons). Each of these options may allow the user to share the link differently, e.g., through an email message, text message, social network post, social network message, etc. As shown, the URL is also displayed on theedit menu2130. Here, theedit menu2130 is overlaid by amessage3825 stating that the photo stream can also be viewed at the URL (e.g., http) address.
FIG. 39A provides an illustrative example accessing the webpage with the subscriber's device. Three operational stages3905-3915 of the subscriber's device are illustrated in this figure. Thefirst stage3905 illustrates the selection of anicon925 of the email application. In thesecond stage3910, the email application displays the email sent from the owner's device. The email includes amessage935, alink940, and athumbnail image930. Themessage935 states that the owner shared a photo stream with the recipient. Thethumbnail image930 shows the icon of the image application. The icon is shown with a marking orbadge945 indicating that there is a new photo stream or an update to an existing photo stream. Thelink940 is a selectable item for the webpage that contains the images from the photo stream.
As shown in thesecond stage3910, the subscriber selects thelink940. The selection causes a web browser to be opened, as illustrated in thethird stage3915. Thebrowser3930 displays the webpage that includes the images from the photo stream. The webpage is overlaid by atop bar3920. Thetop bar3920 states the title of the photo stream and the name of the owner. In addition to the top bar, the group of images includes itsown heading3925. Specifically, the heading3925 includes (1) the date and time the group of images was added to the photo stream, and (2) the number of photos in the group.
In the example illustrated in thethird stage3915, the images are displayed in a grid format. Specifically, the images are displayed in a two by two grid with two images on each grid row. The images are displayed side by side with minimal or no spacing between them in either the horizontal or vertical direction. In some embodiments, the image layout is selected based on the number of images in a batch and the orientation of the images in the batch. Several examples of selecting a layout for the images will be described by reference toFIGS. 42-47.
FIG. 39B provides an example of an alternate email message that is received at the subscriber's device. This figure is identical to stage two3910 of the previous figure. However, the link to the public website is asecondary link3935. Theprimary link3940 being a link to join the photo stream, which is similar to the one described above by reference toFIG. 9.
The previous example illustrated publishing images in the photo stream to a website. In some embodiments, the webpage containing the published images is updated each time a participant adds additional images to a shared photo stream.FIG. 40 provides an illustrative example of how the webpage is updated when a new image is added to the photo stream. Three operational stages4005-4015 of the subscriber's device are illustrated in this figure.
In thefirst stage4005, thebrowser3930 displays the webpage that includes the images from the photo stream. In this example, the webpage displays the batches in reverse chronological order, starting with the newest batch at the top and the previous batch below. The images in each batch are displayed in chronological order, starting from the oldest to the newest. Specifically, the images are sequentially displayed starting with topleft image4020 of the first row, which represents the oldest image, to the bottomright image4025 of the second row, which represents the newest image.
As shown in thesecond stage4010, the user uses a touch gesture to scroll down the webpage to display a second batch of images. Thethird stage4015 illustrates the webpage displaying a second batch of images that were added at a different time than the first batch. Here, the batch includes only one image. The heading4020 indicates that the older batch contains one image and the time when the image was added, which is before the first batch of images.
FIG. 41 provides an example of scrolling through images in the photo stream. In thefirst stage4105, the subscriber selects animage4140 from the webpage. As shown in thesecond stage4110, the selection causes the web browser to display a full-screen representation4125 of the selected image. The full-screen representation may be displayed with one or more comments. In some embodiments, the full-screen representation4125 is displayed only with the first associatedcomment4120. As shown, thecomment4120 appears as a caption that is displayed over the lower portion of the full-screen representation4125.
In the example illustrated in thesecond stage4110, the full-screen representation4125 is displayed with aback button4135 for returning to the previous view (i.e., the view illustrated in the first stage4105) and aslide show button4130 for playing a slide show of the published images. In some embodiments, the full-screen representation4125 is displayed with navigation buttons (not shown) that can be used to display a next or previous image.
In thesecond stage4110, the subscriber selects (e.g., swipes across the device's screen to display a previous image. Thethird stage4115 illustrates theweb browser3930 after the selection. As shown, the browser displays aprevious image4145 in the photo stream. In this example, the displayedimage4145 is the last image (e.g., the newest image) in another batch (e.g., the newest batch). In some embodiments, the selection to display a previous image may result in the browser displaying a full-screen representation of the first image (e.g., the oldest image) in the batch.
B. Webpage Layouts
In some embodiments, a web publishing server publishes images in a photo stream as one or more webpages to a website. The web publishing server of some embodiments selects a webpage layout based on the number of images in different batches and the orientation of those images. The webpage layout may display images in a particular order (e.g., starting with the oldest image and ending with the newest image, or vice versa). The webpage layout may display different batches in a particular order (e.g., starting with the oldest batch to the newest batch, or vice versa). Several example webpage layouts will now be described by reference toFIGS. 42-45. In these examples, the boxes represent horizontal or landscape images. Each box is numbered, and the number represents the sequence of images, starting from the oldest image to the newest image.
FIG. 42 provides an illustrative example of webpage layouts for a batch that includes two images. Four different example layouts4205-4220 are shown in this figure. Thelayout4205 represents a layout for a batch that contains two portrait images, whilelayout4210 represents one with two landscape images. When the batch includes a portrait image and a landscape image, the portrait image may occupy one square grid cell, while the width of the landscape image is matched with the width of the square grid cell. Thelayout4215 represents a layout where the first image is a portrait image while the second image is a landscape image. Conversely, thelayout4220 represents a layout where the first image is a landscape image while the second image is a portrait image.
FIG. 43 provides an illustrative example of a webpage layout for a batch that includes three or four images. Specifically, thelayout4305 represents a batch with three images, where the first image is a portrait image, while thelayout4310 represents one where the first image is a landscape image. In these twolayouts4305 and4310, the remaining two images in batch are displayed as square images. Irrespective of the orientation of the images, thelayout4315 shows that all images are displayed as square images when there are four images in a batch.
FIG. 44 provides an illustrative example of a webpage layout for a batch that includes five images. In particular, thelayout4405 is for a five-image batch shows that the first four images are arranged in a two-by-two block and the fifth image is placed below the block. The fifth image is also four times the size of each of the first four images. In contrast, the five-image layout4410 (e.g., the landscape layout) shows that first four images are arranged in a two-by-two block and the fifth image (i.e., the largest one) is placed thereafter (e.g., to the right). In some embodiments, the landscape layout used to display images on certain platforms (e.g., smart TV, digital media receivers). For example, an image application that operates on a digital media receiver may select this layout to display images in a batch.
FIG. 45 illustrates webpage layouts for a batch that includes more than six images. Specifically, the seven-image layout4505 is the same as the six-image layouts, except a seventh image is arranged below the first six images. There are also three different layouts4510-4520 for photo streams containing eight images. Specifically, thelayout4510 is for a batch where the seventh and eighth images are a mix of landscape and portrait images, thelayout4515 is for a batch where the seventh and eighth images are landscape images, and thelayout4520 is for a batch where the seventh and eighth images are portrait images. This figure also illustrates examples of nine-image layouts4525-4535, a ten-image layout4540, an eleven-image layout4545, and a twelve-image layout4550. Several of these layouts4525-4550 follow a pattern by adding one or more of the layouts described above. Similar to the twelve-image layout4550, a layout may be added to another layout by inverting or flipping the order in relation to the different image sizes. This figure illustrates example portrait layouts. However, the groups of images can be arranged side-by-side for different landscape layouts for certain platforms (e.g., smart TV, digital media receivers).
C. Image Framing
In many of the examples described above, the images are displayed in square cells or blocks, regardless of whether they are landscape or portrait images. To account for the mismatch in the aspect ratio, the web publishing system of some embodiments performs a framing operation that fits the image's smaller dimension (i.e., width or height) on a square cell and displays the portion of the image that is within the grid cell. The framing operation may also entail centering or top aligning the image on the grid cell.
FIG. 46 provides several examples of how images are framed in a webpage layout. The figure includes twosquare cells4605 and4610. Thelandscape image4615 is placed on thecell4605. As shown, the height of thelandscape image4615 is matched with the height of thecell4605. Thelandscape image4615 is then centered on thegrid cell4605. The portion of thelandscape image4615 within thesquare cell4605 is the displayed portion of the landscape image.
Theportrait image4620 is placed on thecell4610. As shown, the width of theportrait image4620 is matched with the width of thecell4610. Different from thelandscape image4615, theportrait image4620 is not centered on thegrid cell4610. Instead, theportrait image4620 is top aligned on the cell.
In conjunction with the framing operation, or instead of it, an image may be cropped or different portions (e.g., the outer parts) of the image may be removed from the layout.FIG. 47 provides an illustrative example of how portrait andlandscape images4705 are presented in a batch layout (e.g., two-image layout, three-image layout, etc.). As shown, the layout crops the top portion of thelandscape image4705 after shifting the image up a particular amount (e.g., 10% of the image). That is, the top portion of the image and the lower portion of the image are not shown in the batch layout. In this example, the lower portion of the image is cutoff more than the top portion. Different from the landscape image, the center portion of theportrait image4710 is cropped. Specifically, theportrait image4710 is cropped such that the left and right outer portions are not shown in the batch layout.
D. Example Process for Publishing a Photo Stream to a Website
Having described several example batch layouts, an example process for publishing a photo stream will now be described.FIG. 48 conceptually illustrates aprocess4800 that some embodiments use to publish images in a photo stream to a website. Theprocess4800, in some embodiments, is performed at the server-side by a server computer (e.g., by the web publishing server). Alternatively, a client device may generate the web page and upload it to the web publishing server.
Theprocess4800 begins when it receives (at4805) a request to publish images. For instance, theprocess4800 might receive a request to turn on the website from a client device. Theprocess4800 then identifies (at4810) the number of images and the orientations of the images in a batch. Based on the identifications, theprocess4800 specifies (at4815) a layout for the batch.
At4820, theprocess4800 determines whether there are any other batches. If so, theprocess4800 returns to4810, which is described above. Otherwise, theprocess4800 generates (at4825) a webpage based each specified layout. When the batch has been previously published, theprocess4800 might use a previously selected layout to generate the webpage. Theprocess4800 then publishes (at4830) the webpage to a website (e.g., to a web servers).
Some embodiments perform variations on theprocess4800. The specific operations may not be performed in one continuous series of operations, and different specific operations may be performed in different embodiments. For instance, theprocess4800 might receive images from a client device in order to publish those images. In some embodiments, theprocess4800 returns a Uniform Resource Locator (“URL”) address for accessing the webpage to the client device. Furthermore, theprocess4800 could be implemented using several sub-processes, or as part of a larger macro process.
In some embodiments, the batch layout operations described above may be performed at a client device to display the images. For instance, an image application that operates on a digital media receiver, smart TV, or a personal computer may perform the batch layout operation to generate a batch view of the images in the photo stream. Several examples presenting images on different clients are described below
VI. Tablet ExampleIn the examples described above, the image sharing tools are implemented as part of an image application. The image application executes on both the owner and subscriber's device to facilitate image sharing and commenting operations. In some embodiments, the image sharing tools are implemented across different devices (e.g., smart phone, tablet, laptop, desktop, digital media receiver, etc.) and/or different operating systems (e.g., Windows®, iOS, MAC OS X, etc.). These implementations allow the different platforms to inter-operate in order to share images and comments. An example implementation of the image sharing tools on a tablet device will now be described by reference toFIGS. 49-51.
FIG. 49 provides an illustrative example of the image sharing tools on a tablet. The image sharing tools are provided as part of the image application described above. However, the tablet's user interface is different from the smart phone's user interface because the tablet has a larger screen than the smart phone. Four operational stages4905-4920 of the owner's tablet are illustrated in this figure. This figure includes animage display area4925, aphoto stream menu4955, a photostream options sheet4960, and acomment sheet4965. These user interface items correspond to those items that are described above for the smart phone by reference toFIGS. 1 and 2.
In thefirst stage4905, the image application displays images from a collection (e.g., an image library). Specifically, the application displays thumbnail representations of the images. Each thumbnail image is not displayed as a square image but is displayed in its corresponding aspect ratio (e.g., as a portrait image, a landscape image). Three images have been selected using theimage display area4925. To share the selected images, the user has also selected theshare button4930. The selection of theshare button4930 results in the display of a pop-upmenu4935. Here, the pop-upmenu4935 appears below theshare button4930 and overlays a portion of the upper-left hand corner of theimage display area4925. The pop-upmenu4935 includes (1) aphoto stream button4940 to create a new photo stream or add images to an existing photo stream, (2) anemail button4945 to email the selected images, and (3) aprint button4950 to print the selected images.
To create a new photo stream, the user selects (e.g., by tapping the user's finger on) thephoto stream button4940. Thesecond stage4910 illustrates the owner's tablet after the selection of thephoto stream button4940. The selection results in the display of the photostream options sheet4960. In the tablet version, the photostream options sheet4960 covers only a portion of theimage display area4925. Here, theoptions sheet4960 is presented similar to a fill-in card with afield4970 to input one or more subscribers for the photo stream, afield4975 to input a name of the photo stream. The option sheet also includes acontrol4980 to turn on or turn off the public website version of the photo stream.
In thesecond stage4910, the owner has specified a subscriber and a name for the photo stream. Thethird stage4915 illustrates the image application after the owner has selected anext button4985. The selection caused the application to display thecomment sheet4965. Similar to theoptions sheet4960, thecomment sheet4965 is presented similar to a fill-in card and covers only a center portion of the image. In some embodiments, the image application displays an animation when switching or transitioning from one display area to another display area. For example, the application may display the photostream options sheet4960 being flipped over to thecomment sheet4965, similar to a two-sided card being flipped over.
The comment sheet includes a comment filed4966 and apost button4968. The user can use thecomment field4966 to input a comment regarding an image (e.g., the first image) in the photo stream. Thepost button4968 can be selected to publish the photo stream. Here, the user does not input any comment into thecomment field4966 and selects thepost button4968.
Thefourth stage4920 illustrates thephoto stream menu4955 after the selection of thepost button4968. As shown, thenew photo stream4956 is listed with its name. In addition, thenew photo stream4956 includes previews of one or more images in the photo stream. Here, the thumbnail representations of images in the photo stream are sequentially stacked on top of each other starting with the first image on top and the third image at the bottom. One of ordinary skill in the art would understand that the image preview could be presented differently. For example, the thumbnail images can be presented in a grid format instead of being stacked on top of each other.
FIG. 50 illustrates another example of the image sharing tools on a tablet. This figure is identical to the previous figure; however, the pop-upmenu4935 includes a grid of icons, instead of the text-based buttons. A similar grid of icons has been described above by reference toFIG. 1.
The previous example illustrated creating a new photo stream using a tablet.FIG. 51 provides an illustrative example of how comments are presented on the tablet. Three operational stages5105-5115 of the owner's tablet are illustrated in this figure.
Thefirst stage5105 illustrates the image application displaying thumbnail representations of images in the photo stream. The thumbnail images5120-5125 are also marked with markings These markings indicate that there are comments associated with the corresponding images. In the example illustrated in thefirst stage5105, thethumbnail image5120 is marked with a single chat bubble and thethumbnail image5125 is marked with a double chat bubble. The single chat bubble indicates that the owner has not participated in the conversation (e.g., left a comment regarding the image). The double chat bubble indicates that the owner has previously left a comment regarding the corresponding image. The color of these markings (e.g., blue markings) indicates that there are new or unread comments.
In thefirst stage5105, the owner selects (e.g., by tapping the owner's finger on) thethumbnail representation5125 of the image. The selection causes the image application to generate a display of afull screen representation5130 of the image. Theimage display area4925 is overlaid by asemi-transparent bottom bar5135. The thumbnail representations of images in the photo stream are sequentially displayed along thebottom bar5135. The owner can select any one of these images to display the corresponding full screen representation in theimage display area4925.
As shown in thesecond stage5110, the selection of thethumbnail image5125 results in the display of acomment bubble5140. Thecomment bubble5140 includes a number (e.g., “2”) that represents the number of comments associated with the image. Thecomment bubble5140 is also colored (e.g., colored white) to indicate that the comment mode has not been activated.
In thesecond stage5110, the owner selects thecomment bubble5140 to activate the comment mode. Selection of thecomment bubble5140 causes it to change colors (e.g., turn blue), which in turn provides the owner with a visual indication that the comment mode has been activated. The selection of the comment bubble also results in the display of thecomments5150 associated with the image.
As shown in the third stage5115, thecomments5150 are displayed sequentially with the oldest one on top and the newest one at the bottom. Thecomments5150 are also associated with metadata. The metadata is displayed below each comment, and identifies the person who left the comment and the time when the comment was left. Thecomments5150 are also displayed with anadd comment field5155 that can be selected to add additional comments. In some embodiments, the application displays a marking (e.g., a like button, smiley face icon) that can be selected to specify that the participant likes the displayed image. Several examples of such a marking have been described above by reference toFIG. 32.
VII. Digital Media ReceiverIn some embodiments, the image sharing tools are provided as part of an image application that executes on a digital media receiver (e.g., high-definition (“HD”) media streaming device) or smart television (“TV”). Several examples of such an image application that executes on a digital media receiver will now be described by reference toFIGS. 52-55. In these examples, the digital media receiver is controlled by a remote control. The remote control may include a set of navigation buttons (e.g., up, down, left, right buttons) and a selection button. The remote control may also include other controls such as a menu button to return to a preview view (e.g., previous menu).
FIG. 52 provides an illustrative example of opening a shared photo stream with a digital media receiver. Specifically, this figure illustrates in three operational stages5205-5215 how the image application presents the photo stream on a wide screen television (“TV”). As shown, the figure includes an operating system desktop5220 (hereinafter a grid view), a photo stream menu5225 (hereinafter an album list), and an image display area5230 (hereinafter a batch view).
The grid view5220 displays different application icons in a gird formation. The user can select any one of the icons to open a corresponding application. To simplify the discussion, the grid view5220 includes only two icons, namely a photo stream icon for opening the image application and a TV show icon for opening a TV show streaming application. However, the grid view5220 can include other icons for other applications (e.g., movie streaming application, music streaming application, etc.). The grid view may also include a settings icon for opening a settings menu.
Similar to thephoto stream menu220 described above, thealbum list5225 displays a list of photo streams. Here, each photo stream is listed with its name, a thumbnail representation of an image (e.g., a first image) in the photo stream, and a number that identifies the number of images in the photo stream). The photo stream menu includes apreview display area5235 that displays one or more images from a photo stream selected from the list.
In the example illustrated inFIG. 52, thephoto stream list5225 is organized into four different sections. Here, the top section lists a personal photo stream that represents a group of images shared only across the user's devices. The remaining sections include (1) a shared albums section (e.g., “my shared albums”) listing the name of each photo stream shared by the user, (2) an invitation section listing the name of each pending invitation for a photo stream from another user, and (3) a shared by others section listing the name of each photo stream shared by another user. One of ordinary skill in the art would understand that this is just one example organization scheme and that the application may organize the different types of photo streams differently in different embodiments. For example, the four sections can be organized into two sections with the personal photo stream in one section and the remaining photo streams in another section.
In some embodiments, the image application lists different shared photo streams in chronological or reverse chronological order by publication dates of the shared photo streams (e.g., the time and date the shared photo stream was created). Alternatively, the image application of some embodiments uses a different ordering to list the photo streams. For instance, the application may group all shared photo stream invitations at top or upper section of the photos stream menu list and sort them alphabetically. The application may also alphabetically sort all remaining photo streams and group them underneath the invitations. The alphabetical sorting is useful in that it allows the application's user to quickly find a shared photo stream when there are several different shared photo streams. For example, when there are many shared photo streams that were published at different dates, this sorting allows the user quickly search for a particular shared photo stream by its name. In some embodiments, the application provides user interface items to change the sorting of the shared photo streams and/or search for a particular photo stream.
Returning toFIG. 52, thebatch view5230 displays one or more images in a selected photo stream. When the photo stream includes sets of images that were added at different time, thebatch view5230 presents the images in different groups or batches. Each group of images may be sequentially ordered (e.g., in chronological order starting with the oldest image on the top left corner to the newest image on the bottom right corner). In addition, all groups may be sequentially ordered (e.g., in reverse chronological order starting with the newest group and ending with the oldest group).
As shown, thebatch view5230 is overlaid by atop bar5240 that includes anew comments button5250, aslide show button5255, asettings button5260, and anunsubscribe button5265. Thenew comments button5250 can be selected to display only images with new comments. An example of displaying only images with new comments will be described below by reference toFIG. 54. Theslide show button5255 can be selected to play a slide show of the images in the photo stream. The slide show may start with a first selected (e.g., highlighted) image in thebatch view5230. In some embodiments, one or more music clips may be selected or streamed to accompany the slide show presentation.
Thesettings tool5260 can be selected to modify different photo stream setting. In some embodiments, the settings are contextual so they relate directly to the displayed photo stream. For example, the settings for a personal photo stream may differ from the settings for a photo stream shared with others. Theunsubscribe button5265 can be used to unsubscribe from a photo stream. In some embodiments, thebutton5265 may only appear in thetop bar5240 when a subscribed photo stream is selected from thealbum list5225. The selection of thisbutton5265 may also display a prompt requiring confirmation of the unsubscribe operation. One reason for the displaying the prompt is that the images in the subscribed photo stream may be deleted from all devices associated with the subscriber.
Having described several user interface elements, the operations of opening a photo stream will be described by reference to three stages5205-5215 that are illustrated inFIG. 52. Thefirst stage5205 illustrates the grid view5220 of the device's operating system. The grid view5220 includes the photo stream icon and the TV show icon. In some embodiments, the icon for the image application displays a marking when one or more photo streams have been updated. In the example illustrated in thefirst stage5205, the marking isbadge5270 that is displayed partially over the photo stream icon. Thebadge5270 includes a number “2” that indicates the number of new invitations and/or the number of photo streams that have been updated. Thebadge5270 is removed from the icon when the image application is opened (e.g., to the album list5225).
In thefirst stage5205, the photo stream icon is selected (e.g., with the device's remote). The user then selects the application (e.g., by selecting the select or enter button on the remote). Thesecond stage5210 illustrates the image application after the selection of the photo stream icon. The selection results in the display of thealbum list5225. Thealbum list5225 lists different photo streams. Specifically, it lists the user's personal photo stream, a “Vacation” photo stream that is shared by the user, and a “Family Photos” photo stream that is shared by another user. Thelist5225 also includes an invitation to a “Kids” photo stream. The user can select the “Kids” photo stream to accept or decline the invitation. The “Kids” photo stream is moved to the “Shared by Others” section when the invitation is accepted, and it is removed from thealbum list5225 when the invitation is declined.
Similar to the marked icon, several of the photo streams listed in thealbum list5225 are marked with amarking5275. This inner marking represents a second level of marking, the first level being at the icon level. As shown, the “Kids” photo stream is marked because it is a new photo stream invitation, and the “Family Photos” photo stream is marked because it has been updated (e.g., includes new images and/or comments). Here, the marking5275 is a colored circle or dot (e.g., blue circle). In some embodiments, the number of circles corresponds to the number shown on the photo stream icon'sbadge5270. A marking may be removed from the list once the corresponding photo stream has been opened.
As shown in thesecond stage5210, thealbum list5225 has been navigated (e.g., by selecting the down button on the remote) to the “Family Photos” photo stream. The user then selects the “Family Photos” photo stream (e.g., by selecting the select or enter button on the remote). The selection results in the display of thebatch view5230, as illustrated in thethird stage5215.
Thethird stage5215 illustrates the application displaying thebatch view5230. Thebatch view5230 is overlaid by thetop bar5240 with thenew comments button5250, theslide show button5255, thesettings button5260, and theunsubscribe button5265. Thetop bar5240 also includes the name of the photo stream, the name of the owner of the photo stream, and a number (e.g., in parentheses) that identifies the number of images in the photo stream.
As shown in thethird stage5215, two groups of images are displayed in thebatch view5230. The first group includes six images and the second group includes four images. The owner of the photo stream has added these groups of images to the photo stream at different times. Each group includes a bottom field (5280 or5285) that states the date and time the corresponding group of images were added, and the number of images in the group. In some embodiments, the application uses relative dating to display the date and time information. For example, if the date is within the week, the application may display “Today”, “Yesterday”, “Monday”, “Tuesday”, etc. However, if the date is not within the week, the application may display the day and the month of the date. If the date is not within the year, the application may display the year in some embodiments.
In the example illustrated in thethird stage5215, several of the images are associated with comments. Specifically, three images are associated with comments. This is indicated by a marking that is displayed over each of the three corresponding thumbnail representations5232-5234. Here, the marking is a comment bubble. The comment bubble is colored a first color (e.g., white) for thethumbnail image5232 and a second different color (e.g., blue) for thethumbnail images5233 and5234. The first color provides a visual indication to the user that the first image in the first group is associated with viewed comments, and the first and second images in the second group is associated with one or more unread comments. The number of images associated with new comments is also indicated by thenew comments button5250 that includes a number (e.g., in parentheses).
The previous example illustrated opening a photo stream using the digital media receiver.FIG. 53 provides an illustrative example of navigating images in the photo stream. Three operational stages5105-5115 of the image application are shown in this figure.
Thefirst stage5305 illustrates the image application displaying thebatch view5230. The user has navigated to the first image5320 (e.g., by using the remote's directional buttons). The user then selects the first image5320 (e.g., by selecting the remote's select or enter button). The selection causes the display of the full screen representation5325 of the selected image, as illustrated in thesecond stage5310. Here, the full screen representation is displayed with amarking5330. The marking5330 is a comment bubble with a number. This number corresponds to the number of comments associated with the image.
The user can navigate through the images in the photo stream in this full screen view. In some embodiments, the full-screen view displays images (e.g., across batches) in chronological order starting with the oldest image and ending with the newest images. The batches may also be sorted in reverse chronological order, starting with the newest batch and ending with the oldest batch. Alliteratively, the batches may be sorted in chronological order, starting with the earliest batch and ending with the latest batch. In addition, the images may be ordered in reverse chronological order starting with the latest image and ending with the earliest image.
In thesecond stage5310, the user makes another selection (e.g., by selecting the select button or down button on the remote). The selection causes the application to display acarousel view5335, as illustrated in thethird stage5315. Thecarousel view5335 displays several images of the photo stream across a screen. The images are displayed at different sizes that emulate a three-dimensional carousel of images. That is, the center image is the largest one while other images are progressively smaller. At any time, the user can change the center image by selecting a next or previous image (e.g., by selecting the next button on the remote).
In some embodiments, thecarousel view5335 displays each image in a group along the virtual carousel in chronological order (i.e., from the newest to the oldest). Similar to the full screen view, the carousel view shows all images (e.g., across batches) in chronological order, starting with the oldest image on the left to the newest image on the right. The batches may also be sorted in reverse chronological order, starting with the newest batch and ending with the oldest batch. This is illustrated in thefirst stage5305 as thefirst image5320 in thebatch view5230 is not the first image along the virtual carousel or in the list of images as it is the oldest image amongst the first group of images. Accordingly, five other images are in the list prior to thefirst image5320. Only two of the five images are shown in thethird stage5315. Similarly, the list of images includes different groups of images in chronological order. This is also shown in thethird stage5315 as the last image (e.g., the image with the earliest timestamp) from the second group (e.g., the earlier batch) is displayed adjacent to thefirst image5320 in the first group. In some embodiments, the batches are sorted in chronological order, starting with the earliest batch and ending with the latest batch. In addition, the images may be ordered in reverse chronological order starting with the latest image and ending with the earliest image.
As shown in thethird stage5315, thecomment5340 is displayed below theimage5320. The comment's metadata is also shown in thecarousel view5335. Specifically, the name of the person who left the comment and the time when the person left the comment are displayed below thecomment5340. Achat bubble5360 with the number of comments is also shown above thecomment5340. In addition, anicon5350 is displayed next to thechat bubble5360. The user can select thisicon5350 to indicate that the user likes or approves of theimage5320. In some embodiments, the approval rating is counted similar to a comment in that the number of comments increases (e.g., in the chat bubble5360).
In conjunction with the selectable icon, or instead of it, the application of some embodiments allows the user to add and/or delete comments. The comment may be selected for different actions or operations, such as replying to a comment, deleting the comment, etc. For example, a participant of the shared photo stream can navigate to the comment with the remote's navigational buttons and then press the select button. Upon selection of the comment, the application may display a list of different operations that can be performed.
In some embodiments, the image application allows the user to view only images that are associated with one or more new comments.FIG. 54 provides an illustrative example of filtering a display to only display images with one or more new comments. Three operational stages5405-5415 of the application are shown in this figure.
Thefirst stage5405 illustrates the image application displaying thebatch view5230. The user has navigated to the new comments button5250 (e.g., by using the remote's directional arrows). Thenew comments button5250 is labeled with a number two indicating that two images are associated with unread comments. The user then selects the button5250 (e.g., by selecting the remote's select or enter button).
Thesecond stage5410 illustrates the image application's user interface after the selection of thenew comments button5250. The selection causes the application to display thecarousel view5335. Different from the carousel view described above, thecarousel view5335 in this figure includesonly images5420 and5425 associated with unread comments. Here, theimage5420 is the center image. The one comment that is associated with the image is displayed below theimage5420. To view the next image with one or more unread comments, the user then navigates to the next image5425 (e.g., by selecting the remote's next button).
Third stage5415 illustrates thecarousel view5335 after navigating to theimage5425. As shown, theimage5425 is associated with five comments and one approval rating. The number of comments and/or approval ratings is indicated by the number that is shown on thecomment bubble5430. In this example, only four single-lined comments are shown below theimage5425. The other remaining comment is not shown. Different embodiments may display more or less lines of comments.
In some embodiments, thecarousel view5335 presents comments associated with an image by automatically scrolling through them. The application of some embodiments automatically scrolls through unread comments starting from the newest to the oldest unread comment and then stops. The comments can also be scrolled with the remote's navigational buttons, in some embodiments. For example, the user can scroll up the comments by selecting the up (e.g., top) button and scroll down by selecting the down (e.g., bottom) button.
Several examples of the image application of some embodiments are described above.FIG. 55 illustrates an example of another image application for a digital media receiver or smart TV. The image application is an alternate embodiment that implements the image sharing tools. Different from the examples described above, this application includes three controls along a top bar5540: anew comments button5525, aslide show button5530, and amore button5535. Thenew comments5525 button is the same as the one described above by reference toFIG. 54.
In the example illustrated inFIG. 55, the selection of theslide show button5530 causes the application to display several selectable items relating to the slide show presentation. Specifically, the application provides a selectable item (e.g., a play button) for starting a slide show using the images in the shared photo stream. The selection of theslide show button5530 also causes the application to display a set of slide show configuration tools for configuring the slide show presentation (e.g., to add a music track to the presentation, to specify how the images are presented, etc.). When themore button5535 is selected, the application of some embodiments provides different management commands. For example, the application may provide a selectable item for unsubscribing from the displayed photo stream. The application may also provide a selectable item for using the images in the shared photo stream as a screen saver. Several other management commands are described above by reference toFIG. 21.
Threeoperational stages5510,5515, and5520 of the image application are illustrated inFIG. 55. These stages are similar to the ones shown inFIG. 52. Specifically, the images are grouped into twodifferent batches5545 and5550. In some embodiments, each batch is a publishing of a group of one or more images to a shared photo stream. The primary sort order is reverse chronological order by batch, and the secondary sort order is chronological by image. That is, thebatch5545 on the left-hand side is the newest batch, and thebatch5550 on the right-hand side is the older batch. The images (5501-5504 or5505-5508) in each batch are sorted starting with the oldest image on the top left and the newest image on the bottom right.
Different from several examples described above, the application of some embodiments linearizes the photo stream's images by taking the batch order and flattening into a straight set. This is shown in thethird stage5520 because the first four images5501-5504 in thecarousel view5555 represent the first four images from thefirst batch5545. The fifth image in thecarousel view5555 is the first image fromsecond batch5550. The user can view the remaining three images5506-5508 in their batch order by using the remote control to scroll though the carousel view. Although this linearization does not sort the images in a proper chronological order, it allows the user to view the images in an order that was shown in the batch view. Instead of flattening the images into a straight set, the application may present the images in a number of different ways. For instance, the application may display the images from different batches in chronological order starting with the oldest image to the newest image without regard to the batch sorting. In some embodiments, the application provides selectable items to switch from one type of sorting (e.g., the sorting illustrated in the third stage5520) to another type of sorting (e.g., chronological or reverse chronological sorting).
VIII. Personal ComputerThe image sharing tools of some embodiments are integrated into a main graphical user interface or shell of an operating system (“OS”). That is, the image sharing tools are not part of an image application but are part of the main graphical user interface (“GUI”). Several example of such image sharing tools will now be described by reference toFIGS. 56-61. In these examples, the operating system is a Windows operating system that is extended to support image-sharing operations. However, other types of operating systems (e.g., Linux, Mac OS X) can be extended to support the same or similar features.
A. Control Panel
In some embodiments, the image sharing tools are integrated into an OS upon executing an installer program.FIG. 56 provides an illustrative example of installing and configuring the image sharing tools. Four operational stages5605-5620 of the owner's personal computer (PC) are illustrated in this figure.
Thefirst stage5605 illustrates the OS's desktop. The owner has selected the installation program (e.g., executable file) to display aninstallation window5690. The owner might have first downloaded the installation program using a web browser (not shown) or obtained it from a storage device (e.g., hard disk, flash driver, etc.). As shown, theinstallation window5690 includes a heading indicating that it is installing a control panel item for configuring the image sharing tools. In addition to the heading, the installation window includes a message that the control panel item will be installed on the PC. The control panel is a part of the OS's GUI that allows users to configure different software and hardware settings. In thefirst stage5605, the user selects (e.g., with a cursor click operation) anext button5625. Alternatively, the user can select a cancelbutton5630 to cancel the installation of the image sharing tools.
Thesecond stage5610 illustrates the OS's desktop after installing the control panel item. Specifically, the control panel item has been opened to display alogin window5635. The owner has typed in a username (e.g., an email address) and password into a username field and a password field, respectively. The user might have first created an account with a cloud service provider in order to register the username and password. The user then selects a sign-inbutton5640 to sign in with the cloud service provider. As will be described in detail below, the cloud service provider of some embodiments facilitates the image sharing operations between different user devices.
The selection of the sign-inbutton5640 results in the display of a cloud service control panel window5650 (herein after a settings menu), as illustrated in thethird stage5615. Thesettings menu5650 includes several selectable items (e.g., check boxes) for synchronizing bookmarks across user devices. Thesettings menu5650 may also include selectable items for syncing calendars and other data.
In the example illustrated in thethird stage5615, thesettings menu5650 includes aselectable item5655 for selecting a photo stream and abutton5685 for setting photo stream options. The user can select (e.g., through a cursor click operation) this item to turn on or off the image streaming features. When selected, the owner's PC may be registered with the cloud service provider to share images with other devices associated with the owner and/or different users. In addition, the selection of thisitem5655 may cause the image sharing tools to be integrated in the OS's shell.
In thethird stage5615, the owner selects thebutton5685. As shown in thefourth stage5620, the selection results in the display of a photostream options window5665. This window list a firstselectable item5670 for turning on or off the owner's personal photo stream, and a secondselectable item5675 for turning on or off shared photo streams. That is, thewindow5665 includes separate controls for activating a personal photo stream that is shared across only the user's device, and for activating a shared photo stream that is shared with other users. Thewindow5665 also includes acontrol5680 to specify the location of the photo stream folder (e.g., that contain folders for the personal and shared photo streams). The window5664 may also include one or more controls for blocking or allowing notifications (e.g., photo stream invitations, comment notifications, new image notifications) from people that are not in the user's address book or contact list. In some embodiments, thewindow5665 include other options to turn on or off sending or receiving photos stream invitations, showing notifications in a notification area (e.g., a system tray on a taskbar), receiving invitations from only those in the owner's contact list, etc.
B. Creating a New Photo Stream
The previous example illustrates installing and configuring image sharing tools on the owner's PC. Once configured, the image sharing tools allow a user to create and modify a photo stream and share comments with other users (e.g., regarding images). An example of creating a photo stream will now be described by reference toFIGS. 57-58. Specifically,FIG. 57 illustrates an example of specifying a subscriber and a name for the photo stream. This is followed byFIG. 58, which illustrates selecting images for the photo stream and inputting comments for several of the images.
Four operational stages5705-5720 of the OS are illustrated inFIG. 57. As shown, the OS is displaying a browser orexplorer window5725. The image-sharing tool has been integrated into thebrowser window5725. Specifically, the browser'smenu bar5730 includes a new photostream menu item5735 for creating a new photo stream, addphotos menu item5740 for adding images to an existing photo stream, and anoptions menu item5745 for specifying options for the photo stream. In some embodiments, the selection of the addphoto menu item5740 causes thebrowser5725 to display a list of available photo streams to add one or more selected images. In some embodiments, the selection of theoptions menu item5745 causes the OS to display different options for adding a new subscriber, deleting a subscriber, resending a photo stream invitation, and/or turning on or off web publication for the photo stream. The displayed options may also include an option for unsubscribing from a photo stream. This unsubscribe option may only be selected or displayed when the photo stream (e.g., the photo stream displayed in the browser5725) is one that was subscribed to by the PC's user.
In addition to the new menu items, the browser's hierarchical or tree view includes a photo stream item5750 (hereinafter a photo stream folder) with a photo stream icon. Thephoto stream folder5750 includes a sub folder for the photo stream that is shared only by the owner's devices.
As shown in thefirst stage5705, the owner selects (e.g., through a cursor click operation) the new photostream menu item5735. The selection causes the OS to display a photostream options window5755, as illustrated in thesecond stage5710. Thiswindow5755 includes thephoto stream icon5760 on the top left-hand corner with a heading that states “New Photo Stream”. Beneath the heading is asubscriber field5765 for inputting subscribers for the photo stream. Thesubscriber field5765 is followed by aname field5770 for specifying a name for the photo stream and a selectable item (e.g., a check box5775) for turning on or off the option to publish the photo stream to a website (e.g., a public website).
In thesecond stage5710, the owner inputs an email address of a potential subscriber. The owner can input one or more email addresses of other potential subscribers into thisfield5765. As shown in thethird stage5715, the user then inputs a title or name for the photo stream in thename field5770. In thefourth stage5720, the user then selects anext button5780 to continue creating the photo stream.
FIG. 58 illustrates the OS after the selection of thenext button5780. Four operational stages5805-5820 of the OS are illustrated in this figure. In thefirst stage5805, the owner selects several images for the photo stream. Specifically, the images are selected using a choosephotos window5825. Thefirst image5830 is named “Me_Singing”, thesecond image5832 is named with a default name (e.g., one specified by a camera), and thethird image5835 is named “Bike”. After choosing the images, the user then selects a continuebutton5840.
Thesecond stage5810 illustrates the OS after selecting the continuebutton5840. As shown, the selected images are displayed in acomments window5845. Thecomments windows5845 displays each selected image with a field to associate a comment with the selected image. In some embodiments, the comment field is automatically populated based on the name of the image. For example, one or more installed components of the image sharing tools may analyze the filename of the image and determine whether to input the filename as a comment.
The filename may be analyzed using a number of different techniques. In some embodiments, the analysis entails identifying one or more words, names, or people in the filename. The analysis may entail identifying random names that are generated by different image capturing devices (e.g., digital cameras, smart phones, tablets). The analysis may also entail identifying different characters (e.g., underscore) and replacing them with a space. In the example illustrated in thesecond stage5810, thefirst image5830 and thethird image5835 are associated with their corresponding filenames. In addition, the underscore in the name of thefirst image5830 has been replaced with a space for the first image's comment. The owner can modify any one of these comments by inputting a new comment in the corresponding comment field.
As shown in thesecond stage5810, the owner selects a donebutton5850 to create the new photo stream. Thethird stage5815 illustrates thebrowser5725 after creating the photo stream. As shown, the newphoto stream folder5855 is displayed on thebrowser5725. The newphoto stream folder5855 is displayed with an icon that provides a visual indication of the images in the photo stream. Specifically, the icon includes thumbnail representations of the three images5830-5835 in the photo stream. The thumbnails are also sized differently. That is, the first thumbnail image is shown larger than the other two thumbnail images. In addition to thephoto stream folder5855, the new photo stream is listed in the browser's hierarchical ortree view5750.
Thefourth stage5820 illustrates thebrowser5725 after the owner has selected the photostream folder icon5855. The selection results in thebrowser5725 displaying the images in the photo stream. In the example illustrated in thefourth stage5820, each of the images5830-5835 associated with a particular comment is shown with a marking5860 (e.g., a comment bubble). The marking5860 provides a visual indication to the owner as to the association of the particular comment with the corresponding image. In some embodiments, the color of the marking indicates whether the image is associated with one or more unread comments. For instance, a first color (e.g., white) may indicate that there are no unread comments associated with an image, and a second different color (e.g., blue) may indicate that there are one or more unread comments associated with the image.
Here, thebatch view5865 includes a photo stream heading5870 that identifies the name of the photo stream and the number of images in the photo stream, a batch heading5875 that identifies the date and time when the images were added to the photo stream and the number of images in the batch. The batch heading5875 is followed by the images in the photo stream. In presenting the images, the image sharing tools select a particular layout based on the number of images and/or the orientations of those images. Several examples of selecting different layouts are described above by reference toFIGS. 42-47.
As shown in thefourth stage5820, thebrowser window5725 displays additional information (e.g., metadata) associated with the photos stream. Specifically, the browser'smetadata section5880 lists (1) the name of the photo stream, (2) the owner of the photo stream, the number of images in the photo stream, (3) each subscriber with corresponding subscription status, and (4) a public website status stating that the feature of publishing to the public website is not activated or turned on for this photo stream.
C. Accepting the Invitation
In the previous two examples, the owner creates a new photo stream using the image sharing tools that are integrated into the browser. Once the new photo stream is created, a photo stream invitation is pushed to one or more devices associated with the person invited to the photo stream. One or more of these devices may be the same type of computing device (e.g., a PC) or some other type of device with a different platform (e.g., a smart phone, tablet, digital media receiver, etc.).
FIG. 59 provides an illustrative example of accepting a photo stream invitation with a subscriber's device. In this example, the subscriber's device is a PC that is running the same OS as the owner's device. Three operational stages5905-5915 are shown in this figure. The figure includes the OS'sdesktop5920 andtaskbar5925.
Thefirst stage5905 illustrates an example notification that is received via thetaskbar5925. As shown, the notification appears as a pop-up window5930 (e.g., bubble). In some embodiments, the pop-upwindow5930 appears over a cloud servicesystem tray icon5935 in thetask bar5925. As shown, the pop-upwindow5930 includes a photo stream icon and a notification stating that a new photo stream invitation has been received. The notification also states how to select (e.g., click) the window to view the photo stream invitation.
In thefirst stage5905, the recipient selects the pop-upwindow5930. The selection causes the OS to display the photo stream invitation window5940, as illustrated in thesecond stage5910. The invitation includes the photo stream icon and the invitation. The invitation states the owner and name of the photo stream. The photo stream invitation window5940 also includes an acceptbutton5945 to accept the invitation, adecline button5950 to decline it, and a decide laterbutton5955 to keep the invitation pending.
Thethird stage5915 illustrates the OS after the recipient has accepted the invitation. The selection results in awindow browser5725 displaying the images in the photo stream. Similar to the owner's device, the images are displayed in thebatch view5865.
D. Modifying a Photo Stream
In the previous example, the recipient accepts a photo stream invitation to view images in the photo stream. In some embodiments, the image sharing tools can be used to add or delete images from the photo stream.FIG. 60 provides an example of adding an image to a photo stream. Three operational stages6005-6015 of the owner's PC are illustrated in this figure.
In thefirst stage6005, the OS displays its desktop. The desktop includes anicon6020 for an image file. The owner selects (e.g., by selecting the right-click button on the cursor controller, or holding a modifier key and selecting the left-click button) theimage icon6020 from the desktop.
As shown in thesecond stage6010, the selection causes the OS to display acontext menu6025. Thecontext menu6025 includes amenu item6030 to open the image file. Thecontext menu6025 also includes a menu item to add tophoto stream6035 for adding one or more selected images to a particular photo stream. Thiscontext menu6025 is an extension to the shell (e.g., when the cloud service control panel was installed on the owner's PC). In some embodiments, the menu item to add tophoto stream6035 only appears upon turning on the image sharing feature (e.g., by selecting a check box in the cloud service control panel (not shown)).
In thesecond stage6010, the owner has selected the menu item to add tophoto stream6035. The selection results in a list of existing photo streams displayed in asub-menu6040. Thesub-menu6040 includes amenu item6045 to add the selected image to the owner's personal photo stream, amenu item6050 to add it to a photo stream shared with a subscriber, and amenu item6055 to add it to a new photo stream. Here, the owner selects themenu item6050 to add the selected image to the photo stream that is shared with the subscriber.
Thethird stage6015 illustrates the OS after selecting themenu item6050. As shown, the selected image is displayed in thecomments window5845. As mentioned above, thecomments windows5845 displays each selected image with a field to associate a comment for the selected image. In thethird stage6015, the owner selects the donebutton6060 to add the selected image to the photo stream.
The previous example illustrated one of several different ways one or more selected images can be added to a photo stream. In conjunction with or instead of the context menu, the image sharing tools of some embodiments allow an owner to add images to a photo stream by dragging and dropping images onto the photo stream folder. The owner can also delete one or more selected images from the photo stream folder. When deleted, the images may be deleted from one or more of the owner's other devices and/or one or more of each subscriber's device. In some embodiments, the owner can delete the photo stream folder to delete the entire photo stream from one or more of the owner's other devices and/or one or more of each subscriber's device.
E. Commenting
Several examples of commenting with different devices have been described above. These examples include commenting using a smart phone, tablet, and a digital media receiver.FIG. 61 provides an illustrative example of leaving a comment using a PC. Four operational stages6105-6120 of the user's PC are illustrated in this figure.
In thefirst stage6105, thebrowser5725 displays images in a photo stream. The heading6125 includes the name of the photo stream and the number of images in the photo stream. Thesub-heading6130 includes the date and time that the group of images was added to the photo stream. Thefirst image6135 has been selected from thebrowser5725. The selection results in the display of the image's metadata in themetadata section6140. Specifically, themetadata section6140 states (1) the image format (e.g., JPEG, GIF, PNG), (2) the date (e.g., timestamp, file creation date) associated with the image, and (3) the number of comments associated with image. The metadata section also includes acomments button6145 for opening a comments tool that is described below.
As shown in thefirst stage6105, theimage6135 is associated with four comments. A marking6150 is displayed over theimage6135 on the lower right-hand corner. The marking6150 (e.g., the double comment bubble) indicates that the user is a part of the conversation. That is, the user has previously left at least one comment regarding theimage6135 and a subscriber has left at least one other comment regarding the same image. The color of the marking6150 indicates that there are one or more unread comments.
Thefirst stage6105 illustrates the selection of thecomments button6145. The selection causes thebrowser5725 to display thecomments tool6155, as illustrated in thesecond stage6110. Thecomments tool6155 appears as a side bar of the browser. In this example, thecomments tool6155 is shown on the right side of thebrowser5725. The comments tool includes acomment field6160 for inputting a comment and apost button6165 to post the comment. Thecomment field6160 displays a line of text that invites the user to add a comment. Thecomments tool6155 is displayed with a heading “Comments”. Adjacent to the heading is a selectable item or selectable icon6170 (e.g., of a heart, smiley face) that can be selected to indicate that the user approves or likes the images.
As shown in thesecond stage6110, the comments are listed under the comments heading. Specifically, there are four comments associated with theimage6135. As shown by the comments' metadata, the user has left one comment at one time and the subscriber has left another comment at another time. The remaining two comments are attributed to the selections of theselectable item6170. Accordingly, the image sharing tools of some embodiments counts the number of approvals or likes as comments.
Thethird stage6115 illustrates thecomments tool6155 after the user has inputted a comment into thecomment field6160. The user then selects thepost button6165 to post the comment. As shown in thefourth stage6120, the new comment has been added into thecomments tool6155. Specifically, the new comment has been displayed at the top of the comments list but below the approval ratings. The number of comments displayed in themetadata section6140 has also been incremented by one. In the example described above, a number of different comments are listed in thecomments tool6155. When the number of comments exceeds the display area of the comments tool, the comments tool of some embodiments provides a scroll bar for scrolling through the comments.
Several examples of the integrated image sharing tools are described above.FIG. 62 provides an illustrative example of an alternate embodiment of the integrated image sharing tools. Three operational stages6205-6205 of the user's PC are illustrated in this figure.FIG. 62 is similar to the ones described above. However, the image sharing tools do not include a bottom section that displays information about a shared photo stream or its images. As described above, the bottom section contained a comment button for showing comments. Instead of the comment button, themenu bar6245 includes amenu item6220. The menu item can be selected to display any comment associated with a selected image and/or to leave a comment regarding the image. Alternatively, the user can select thecomment bubble6250 to display or leave comments.
In the example illustrated inFIG. 62, themenu bar6245 includes amenu item6225 for displaying a photostream option window6230. The photo stream options window may also be displayed through a context menu item. Thewindow6230 is similar to the options sheet described above by reference toFIG. 21. Specially, the window includes aname field6235 for specifying the name of the shared photo stream, asubscriber field6240 for adding or removing subscribers, and a control6245 (e.g., a checkbox) for specifying whether the shared photo stream is published to a public website. In some embodiments, the image sharing tools provide different controls depending on whether the user is an owner or subscriber. For instance, the photostream options window6230 may include a control (e.g., button) for unsubscribing from a subscribed photo stream when the browser window displays images from the subscribed photo stream.
IX. Image Organizing and Editing ApplicationThe previous section describes several examples of how the image sharing tools are provided in one computing platform (e.g., Windows platform). Several examples of the image sharing tools on another computing platform will now be described below by reference toFIGS. 63-65. In these examples, the image sharing tools are integrated into an image organizing and editing application that operates on a Mac Operating System (e.g., Mac OS X). The OS may include one or more other applications (e.g., a professional image editing and management application) that include the same or similar image sharing features.
A. Image Sharing Tools in an Image Organizing and Editing Application
FIG. 63 provides an illustrative example of the image sharing tools that are integrated into an image organizing and editing application. Specifically, this figure illustrates in four operational stages6305-6320 how an owner can create a photo stream using the image organizing and editing application.
As shown in thefirst stage6305, the name of the application is “Photo Application”. The photo application includes (1) asidebar6325 that displays different collections of images, (2) animage display area6330 that displays images in a collection, and (3) ashare button6335 to share one or more images selected from theimage display area6330. The photo application also includes abottom bar6340 that displays different tools, such as asearch tool6345 for searching images, aslider6350 for resizing images in theimage display area6330, aslide show tool6355 for playing a slideshow of images in a collection, anedit button6360 for selecting different editing operations (e.g., removing red eye, cropping, enhancing, etc.) to perform on a selected image. In addition, thebottom bar6340 includes an add tobutton6365 for adding selected images to a particular collection (e.g., an album, a photo stream, etc.) and ashare button6335 for sharing the selected images.
Thefirst stage6305 illustrates selecting a photo stream option using theshare button6335. As shown, the “Photos” collection has been selected from theside bar6325. Based on the selection, theimage display area6330 displays thumbnail representations of the images in the collection. The owner has selected two images from theimage display area6330. To share these images, the owner has also selected theshare button6335. The selection of the share button results in the display of a pop-upwindow6370. The pop-upwindow6370 includes a list of share options. Here, the list includes anoption6372 to order prints of the selected images, anoption6373 to email the images, and anoption6375 to create a photo stream using the images.
As shown in thefirst stage6305, the owner selects thephoto stream option6375 from the pop-upwindow6370. The selection causes the application to display other options in a pop-upwindow6380, as illustrated in thesecond stage6310. The pop-upwindow6380 includes anoption6382 to create a new photo stream using the selected images and anoption6383 to add the selected images to a previous created photo stream. In this example, the previously created photo stream is the owner's personal photo stream. As mentioned above, the personal photo stream represents a group of images that are streamed or pushed to those devices associated with one owner (e.g., the owner). A slider for scrolling through different photo streams may be presented on the pop-up window6380 (e.g., when all of the different photo streams cannot be listed in its limited space).
Thethird stage6315 illustrates the photo application after the selection of the newphoto stream option6382. The selection causes the application to display a photostream options window6385. This window includes the photo stream icon on the top left-hand corner with a heading that states “New Photo Stream”. Beneath the heading is asubscriber field6386 for designating subscribers for the photo stream. Thesubscriber field6386 is followed by aname field6388 for specifying a name for the photo stream and a selectable item (e.g., a check box6389) for turning on or off the option to publish the photo stream to a website (e.g., a public website).
In thethird stage6315, the owner has inputted an email address of a potential subscriber. The owner can input one or more email addresses of other potential subscribers into thisfield6386. The owner has also inputted a name for the photo stream in thename field6388. As shown, the owner then selects theOK button6387 to create the photo stream. In some embodiments, the application provides a window (not shown) to input a particular comment for one or more of the selected images.
Thefourth stage6320 illustrates the application after the owner has created the photo stream. As shown, theimage display area6330 includes a heading that includes atop bar6390 that includes anoption6393 to display each image the personal photo stream, anoption6395 to display each image in the newly created photo stream, and anoption6392 to display all images in the different photo streams. Here, theimage display area6330 displays all the images as theoption6392 is selected from thetop bar6390. Theimage display area6330 is also organized by new images and old images. The new images are displayed at the top and the one previous image is displayed below. Each group of images includes a heading that states the group name (e.g., “New Photos”, “Previous Photos”) and the number of images in the group.
Conceptually, the application provides a form of a batch view that is different from the one that was discussed above (e.g., by reference toFIGS. 50-52). As illustrated in this figure, the previous or new image section can include multiple different batches. One reason for displaying the images in this format is that it makes more efficient use of screen real estate than the above-described batch view. In some embodiments, the application displays images in one view format and provides an option to display the images in another view format.
B. Accepting the Invitation
In the previous example, the owner creates a new photo stream using the image sharing tools that are integrated into the photo application. Once the new photo stream is created, a photo stream invitation is pushed to one or more devices associated with the person who was invited to the photo stream. One or more of these devices may be the same type of computing device or some other type of device with a different platform (e.g., a smart phone, tablet, digital media receiver, etc.)
FIG. 64 provides an illustrative example of accepting a photo stream invitation with a subscriber's device. In this example, the subscriber's device is the same type of device that is running the same OS as the owner's device. Four operational stages6405-6420 are shown in this figure. The figure includes the OS'sdesktop6425 and adock6430. Thedock6430 displays icons for opening different applications. As shown, the dock includes anicon6435 for opening the photo application.
Thefirst stage6405 illustrates an example notification that is at the OS level. As shown, the notification appears as a marking on the application'sicon6435. One type of notification is a marking or a badge that appears at least partially over the application's icon. This is shown in thefirst stage6405 as abadge6440 that is displayed on the icon of the photo application. Thebadge6440 includes a number (e.g., “1”). In the example illustrated in thefirst stage6405, it indicates there is one new photo stream invitation. Alternatively, the badge may indicate that there is an update to one existing photo stream.
In thefirst stage6405, the user selects the icon of the photo application on thedock6430. The selection causes the photo application to open a pop upwindow6445 that includes a message, as illustrated in thesecond stage6410. The message states that the recipient has received a first photo stream invitation, and that the owner would like to share a photo stream with the recipient. The message also provides instructions for viewing the photo stream. Specifically, it states how to select the photo stream under the web section in the source list on the left (i.e., the side bar6450). In some embodiments, the application displays this window only once upon the recipient receiving a first invitation. That is, the application may not display the window when another invitation is received at the recipient's device.
As shown, thewindow6445 includes a show mebutton6460 and a cancelbutton6455. In some embodiments, the selection of the show mebutton6460 causes the application to display a top level a photo stream menu. The cancelbutton6455 closes the window. In thesecond stage6410, the user selects the show mebutton6460.
Thethird stage6415 illustrates the application after the selection of the show mebutton6460. The selection causes the application to display an icon representing thenew photo stream6465 in theimage display area6330. Thephoto stream6465 has also been highlighted in theside bar6450. Thephoto stream6465 in the side bar is also marked with a number that indicates that there is a new invitation for a new photo stream or an update to an existing one. This marking provides the recipient with a visual indication at the application level, as opposed to a visual indication at the OS level.
As shown, theimage display area6330 is overlaid by a heading6470 that state “Photo Stream”. The name of the new photo stream is also marked with a marking. Here, the marking is a colored dot (e.g., a blue dot). Different from the markings described above, the marking here provides the recipient with a visual indication at the album level or photo stream level.
In thethird stage6415, the recipient selects thenew photo stream6465 from theimage display area6330. The selection causes the application to display a photostream invitation window6475, as illustrated in thefourth stage6420. The invitation includes the photo stream icon and the invitation. The invitation originates from a device of the owner that shared the images. The invitation states the name and owner of the photo stream. The photostream invitation window6475 also includes an acceptbutton6480 to accept the invitation, adecline button6485 to decline it, and a decide laterbutton6482 to keep the invitation pending. Here, the recipient selects the acceptbutton6480 to accept the invitation. Once accepted, the images in the photo stream may be downloaded and presented in theimage display area6330.
C. Commenting
The previous example illustrated accepting a photo stream invitation on a subscriber's device.FIG. 65 provides an illustrative example of how the image sharing tools of some embodiments present comments on the photo application. Four operational stages6505-6520 of the subscriber's device are illustrated in this figure.
Thefirst stage6505 illustrates theimage display area6330 displaying the photo stream. The user has added an image to the photo stream, and two new comments have been left for the image. In some embodiments, the application plays a sound when there is an update to a photo stream. For example, the application may play a ding sound, a bell sound, a ring sound, or some other sound to indicate there is an update to a photo stream (e.g., there is a new comment, new image, etc.) and/or when there is a new photo stream invitation. The application may play different sounds for different events, in some embodiments.
In the example illustrated in thefirst stage6505, the application provides several different visual indications of an update to a photo stream. At the application level, theside bar6450 displays a marking next to thephoto stream6525. Here the number (i.e., “1”) indicates that there is an update to one photo stream. At the photo stream list or album list level, a photo stream representation (e.g., a thumbnail representation) may be marked with one or more markings. For example, thephoto stream representation6530 is marked with a number (i.e., “1”) next to an image symbol6535 (e.g., a photo icon) and a different number (i.e., “2”) next to a comment symbol6540 (e.g., a chat bubble). These markings provide a visual indication to the subscriber that there is one new image and two new comments.
In thefirst stage6505, the user selects thephoto stream representation6530 from the image display are6330. As shown in thesecond stage6510, the selection causes the application to display thumbnail representations of the images in the photo stream. In some embodiments, the display is dynamically or automatically updated each time a person (e.g., the owner shares) additional images. At this photo stream level, the application provides another visual indication of the updates. For example, the images are batched into different sections (e.g., a new image section and a previous image section). Different from several of the batch view described above, the current batch view display images by displaying new images separately from all other images that were added previously. This can entail grouping previous sets or batches of images into one group (e.g., labeled previous photos). In addition, the thumbnail representation of the image is marked with a marking (e.g., a chat bubble). Many examples of such a marking are described above.
As shown in thesecond stage6510, thethumbnail representation6545 of the new image is associated with new comments. In thethird stage6515, the user selects aninfo button6550 from thebottom bar6340. The selection of theinfo button6550 causes the application to display aninfo pane6555, as illustrated in thefourth stage6520.
Thefourth stage6520 illustrates the application displaying theinfo pane6555. Theinfo pane6555 appears on the right hand side of theimage display area6330. The info pane displays information (e.g., metadata) associated with the selected image. In this example, theinfo pane6555 lists (1) the image resolution, (2) the name of the image, and (3) a date or timestamp associated with the image. However, the info pane may list other information, such location information (e.g., based on GPS data associated with the image), people information (e.g., based on face detection algorithms), etc.
In addition to image info, theinfo pane6555 lists comments associated with the image. In some embodiments, the application provides tools to send and receive comments across multiple different sources. This is illustrated in thefourth stage6520 as theinfo pane6555 lists comment from a subscriber of the photo stream as well as a comment that is received through a social network website. That is, the application is not only integrated with the image sharing tools but is also integrated with the social network website (e.g., through the website's API). This allows the info pane display area to display comments from people associated with the social network website as well as those people associated with the shared stream.
In the example illustrated in thefourth stage6520, the comment section includes a heading that states the total number of comments that are received from both sources. Each source includes a heading. Specifically, the photo stream comment is listed under a photo stream heading and the social network comment is listed under a social network heading. Each of the two sections includes an add comment field to add a comment (i.e.,6556 or6558) and a post button for adding comments. The photo stream section also includes an icon or symbol (e.g., a smiley face icon) that can be selected to indicate that the subscriber approves or likes the selected image. The social network website section may have a similar selectable item in some embodiments.
In the example described above, theinfo pane6555 lists the image's metadata as well as the comments associated with the image. In some embodiments, the application displays other information relating to the photo stream in the info pane. For example, the photo application of some embodiments displays information regarding a photo stream. For example, when no image is selected in the image display area, the application may present the photo stream's name, a list of subscribers, or an indication of whether the public website version of the photo stream has been turned on or off. In some embodiments, the info pane can be used to modify the photo stream. For example, the info pane can be used to rename the photo stream, add or remove subscribers, resend an invitation or nudge the recipient, or turn on or off the public website version. When the public website is turned on, the info pane may list the URL of the public website.
X. Example System ArchitectureIn some embodiments, the image sharing tools are implemented across different user devices and/or different platforms (e.g., from different vendors). To facilitate the image and comment sharing operations, the devices (hereinafter clients) may communicate with several different servers. These servers may include storage servers (e.g., third-party storage servers) and control servers.FIG. 66 conceptually illustrates an example system architecture in which the clients communicate with the different servers to share images and comments.
As shown inFIG. 66, the figure includes different clients6620-6640, a set ofcontrol servers6610 and a set ofstorage servers6615. The clients are different computing devices that communicate with the control and storage servers overnetwork6605. Any one of these devices can be used to create a photo stream that includes a set of images, and invite one or more individuals to view and/or comment on the set of images. In the example illustrated inFIG. 66, the clients includes asmart phone6620, a laptop6630 (e.g., that operates on a MAC OS), a personal computer6625 (e.g., that operate on a Windows OS), atablet6635, and adigital media receiver6640. However, a client can be one of any number of different types of devices, such as a Personal Data Assistant (PDA), a workstation, etc.
The set ofstorage servers6615 stores photo stream images for the different clients. The set of storages may be contracted by the cloud service provider (e.g., that manages the set of control servers6610) to store content for the different clients. According, the set of storage servers may be a set of third-party servers. To facilitate the storage service, the set of third-party storage servers may be associated with an application program interface (API). The client devices may use this API to store and receive images stored by the third-party storage servers. The set of storage servers may store the images for a temporary period of time, in some embodiments.
The set ofcontrol servers6610 manages control data associated with the different clients. Examples of such control data include user data, photo stream data (e.g., a list of photo stream albums associated with a user, a list of individuals that can access a particular photos stream), etc. The control data may include references to the images that are stored by the set ofstorage servers6615. Thus, the set of control servers may maintain information relating to different shared streams, while not storing any of the images associated with those shared streams. However, the set of control servers may store comments associated images in the photo stream. To manage control data, each control server is associated with one or more storages (e.g., data stores). In some embodiments, the control server and the one or more storages is a logical partition in which data relating a particular user resides.
In some embodiments, the control server is configured to receive notifications from a client that one or more files are to be transmitted from the client. In response to such a notification, the control server sends, to the client, storage location data that indicates where the one or more files are to be sent. The storage location data may be data associated with a storage server. The client uses the storage location data to transmit the one or more files to the storage service.
The control server of some embodiments is a push server that pushes notifications (e.g., event triggers) to clients. For instance, when one user creates a shared photo stream that invites another person, the control server may add the other person to a list of authorized users that are able to access the shared stream. The control server may add the person once he or she accepts the invitation, in some embodiments. The control server may also send messages to all of the clients associated with the person. The clients then request for a list of albums from the control server. The content server provides the list with a new photo stream associated with an invitation. When the person accepts the invitation on one client, then all of the clients may retrieve the images in the photo stream from the set ofstorage servers6615. As mentioned above, the notifications may be presented differently in different clients. For example, thesmart phone client6620 may display a badge (e.g., over an application icon, play a sound, and/or cause it to vibrate), while thePC client6625 may display a notification through the OS's system tray.
In some embodiments, the set of control servers communicates with the different clients using one custom protocol. That is, each client uses the same protocol to communicate with a control server. The protocol may identify a particular type of client device (e.g., a digital media receiver, a smart phone). However, the control server may not perform any special operation or logic for that particular type of client. In some embodiments, the protocol is based on an API that includes different API calls or messages for modifying the photo stream's images (e.g., adding images, deleting images), inviting subscribers, accepting invitations, declining invitation, managing comments (e.g., creating a comment, deleting a comment), etc.
FIG. 67 conceptually illustrates an example of how a user's photo streams are represented at the server side (e.g., at a control server). As shown, the figure includes a hierarchical structure that represents the different hierarchical levels of the user's photo stream data. This figure includesuser6705, a set of photo streams6710-6720, a set of images6725-6735, and a set of comments6740-6750. These different boxes represent data structures associated with the user's photo streams.
In the example illustrated inFIG. 67, the user is at the top of the hierarchical structure. The user may be associated with a user identification (“ID”) and password. As shown, the user can be associated with any number of photo streams, including a personal photo stream and a shared stream. Here, the user is associated with three photo streams6710-6720.
In some embodiments, each photo stream is associated with a photo stream ID that uniquely identifies the photo stream and a name that identifies a name for the photo stream. Each photo stream is associated with one or more images. For example, the images6725-6735 are associated with thephoto stream6710. As mentioned above, the images may be stored at one or more third party storages. Accordingly, the control server may store a reference to each image (a URL) using the photo stream data structure.
In some embodiments, the control server references the image using a first key (e.g., unique key) for identifying the image in the photo stream. The first key may be associated with a second key for accessing the image file that is stored at a storage server (e.g., a third party storage server). The second key may include or is a checksum of that one image file. In some embodiments, the image file is run through a computation algorithm that generates the checksum, which is a hash of the image's content. When a same image is inputted multiple times, the algorithm returns the same file hash (e.g., hash value). Different from the control server, the storage server may reference the image by the file hash, instead of the first key. This allows the storage server to store one image, even though that image is in multiple different photo streams. On the other hand, the control server may reference the same image in different photo streams using different unique keys. Each client may generate keys and/or checksums for its images, in some embodiments.
As shown inFIG. 67, the comments are at the last level and are associated with the image. Many comments can be associated with the one image. For example, the comments6740-6750 are associated with theimage6725. In some embodiments, the data structure for a comment is associated with a name or user ID of the user that left the comment. The data structure may also include a comment ID for locating or accessing the comment and a timestamp for identifying the time and/or date the comment was left or posted.
XI. Example Server-Side ProcessesThe previous section described a control server that facilitates the sharing of content (e.g., images, video clips) and comments by managing control data associated with a shared content stream. Examples of such control data include user data (e.g., a list of devices associated with a user) and photo stream data (e.g., a list of photo stream associated with the user, a list of individuals that can access a particular photo stream, file location data, etc.). Several example processes of such a control server will now be described by reference toFIGS. 68-71.
A. Notifying Recipients of a Shared Stream Invitation
FIG. 68 conceptually illustrates anexample process6800 that some embodiments perform to notify recipients of a new-shared stream invitation. Theprocess6800, in some embodiments, is performed by the control server. Theprocess6800 begins when it receives (at6805) a message regarding a new shared content stream from a source device (e.g., the owner's device). Theprocess6800 then sends (at6810) file location data to the source device. In some embodiments, the file location data includes one or more URLs to upload content to a storage server (e.g., a third-party storage server).
At6815, theprocess6800 identities each recipient that has been invited to join the shared stream. For example, theprocess6800 might identify a username associated with each recipient. In some embodiment, the username is the same as the recipient's email address. Based on the identification, theprocess6800 identifies (at6820) one or more devices (e.g., destination devices) associated with each recipient. Theprocess6800 sends (at6825) a message regarding the shared stream invitation to each recipient device. Theprocess6800 then ends.
Some embodiments perform variations on theprocess6800. The specific operations may not be performed in one continuous series of operations, and different specific operations may be performed in different embodiments. Furthermore, theprocess6800 could be implemented using several sub-processes, or as part of a larger macro process. For instance, theprocess6800 might identify each device associated with the owner and send a message regarding an update to a shared content stream. Theprocess6800 might also send the file location data to one or more owner devices. The owner devices may then download the content using the file location data.
B. Adding Subscribers to a Shared Stream
The previous example described sending a shared stream invitation to each recipient device that is associated with a shared content stream.FIG. 69 conceptually illustrates anexample process6900 that some embodiments perform when it receives a response from a recipient device. Theprocess6900, in some embodiments, is performed by the control server. Theprocess6900 begins when it receives (at6905) receives a message that requests a list of shared streams from a recipient's device. Theprocess6900 then sends (at6910) the list of shared streams to the recipient device.
At6915, theprocess6900 receives, from the recipient's device, a message regarding the shared stream invitation. Based on the message, theprocess6900 determines (at6920) whether the shared stream invitation has been accepted. If so, theprocess6900 marks or specifies (at6925) the recipient as a subscriber in an authorization list that is associated with the shared content stream. In some embodiments, the authorization list lists different individuals that can access the shared content stream. The list may also specify whether a subscriber can add content to a shared stream, remove content, add or remove subscribers, and/or make comments.
After marking the recipient as a subscriber, theprocess6900 sends (at6930) file location data to each device associated with the recipient. Each recipient device may then download the shared content from the storage server using the file location data. Theprocess6900 then notifies the owner of the acceptance of the shared stream invitation. Specifically, theprocess6900 sends (at6935) a message regarding the acceptance of to each device associated with the owner. One or more of the owner's device may then display a notification (e.g., banner notification, system tray notification) regarding the acceptance of the shared stream invitation.
If the recipient has not accepted the shared stream invitation, theprocess6900 removes (at6940) the recipient from the authorization list. Instead of removing the recipient, theprocess6900 might mark the recipient as a person that declined the invitation. In some embodiments, theprocess6900 maintain two separate lists, e.g., one that lists different subscribers and another that lists different recipients that have not subscribed to the shared stream.
Some embodiments perform variations on theprocess6900. The specific operations may not be performed in one continuous series of operations, and different specific operations may be performed in different embodiments. Furthermore, theprocess6900 could be implemented using several sub-processes, or as part of a larger macro process.
C. Commenting
The content sharing tools of some embodiments allow different participants to share comments regarding the shared content.FIG. 70 conceptually illustrates anexample process7000 that some embodiments perform to notify participants of a new comment. Theprocess7000, in some embodiments, is performed by the control server. Theprocess7000 begins when it receives (at7005) receives a message with the new comment. Theprocess7000 then stores (at7010) the comment.
At7015, theprocess7000 identifies participants of the shared content stream. Based on the identification, theprocess7000 sends a message regarding an update to the shared content to the devices that are associated with the participants. Theprocess7000 then ends.
FIG. 71 conceptually illustrates anexample process7100 that some embodiments perform to deliver a new comment. Theprocess7100, in some embodiments, is performed by the control server. Theprocess7100 begins when it receives (at7105) receives a message that requests a list of shared content streams from a recipient device. Theprocess7100 then sends (at7110) the list of shared streams to the recipient device.
At6915, theprocess7100 receives, from the participant device, a message request for the new comment. Based on the message, theprocess710 sends (at7120) the comment to the participant's device. Some embodiments perform variations on theprocesses7000 and7100. The specific operations may not be performed in one continuous series of operations, and different specific operations may be performed in different embodiments. Furthermore, each of theprocesses7000 and7100 could be implemented using several sub-processes, or as part of a larger macro process.
XII. Software ArchitectureIn some embodiments, the processes described above are implemented as software running on a particular machine, such as a computer or a handheld device, or stored in a machine readable medium.FIG. 72 conceptually illustrates the software architecture of content sharing tools7200 of some embodiments. In some embodiments, the content sharing tools are provided as a stand-alone application or are integrated into another application, while in other embodiments the content sharing tools are implemented within an operating system. Furthermore, in some embodiments, the content sharing tools are provided as part of a server-based solution. In some such embodiments, the content sharing tools are provided via a thin client. That is, the content sharing tools runs on a server while a user interacts with the content sharing tools via a separate machine remote from the server. In other embodiments, the content sharing tools are provided via a thick client. That is, the content sharing tools are distributed from the server to the client machine and runs on the client machine.
The content sharing tools7200 includes a user interface (UI) interaction and generation module7210 and a shared stream manager7220. As shown, the user interface interaction and generation module7210 generates a number of different UI elements, including acontent display area7212, a sharedstream menu7214, sharedstream management tools7216, andcomment tools7218. The figure also illustrates stored data associated with the content sharing tools: sharedstream data7244,content data7244, andother data7248. In some embodiments, the sharedstream data7244 stores data related to a shared stream (e.g., a list of photo streams, list of individuals associated with a photo stream, references to images, comments, etc.). Thecontent data7246 may include images and/or video. Thecontent data7246 of some embodiments includes multiple versions of one image (e.g., at different resolution).
FIG. 72 also illustrates anoperating system7202 that includes input device driver(s)7204,display module7206 and notifications tools. In some embodiments, as illustrated, thedevice drivers7204 anddisplay module7206 are part of theoperating system7202 even when the content sharing tools7200 is part of an application that is separate from the operating system7270. Theinput device drivers7204 may include drivers for translating signals from a keyboard, mouse, touchpad, tablet, touchscreen, etc. A user interacts with one or more of these input devices, each of which send signals to its corresponding device driver. The device driver then translates the signals into user input data that is provided to the UI interaction and generation module7210.
The present application describes a graphical user interface that provides users with numerous ways to perform different sets of operations and functionalities. In some embodiments, these operations and functionalities are performed based on different commands that are received from users through different input devices (e.g., keyboard, trackpad, touchpad, mouse, etc.). For example, the present application illustrates the use of touch controls in the graphical user interface to control (e.g., select, move) objects in the graphical user interface. However, in some embodiments, objects in the graphical user interface can also be controlled or manipulated through other controls, such as a cursor control. In some embodiments, the touch control is implemented through an input device that can detect the presence and location of touch on a display of the device. An example of such a device is a touch screen device. In some embodiments, with touch control, a user can directly manipulate objects by interacting with the graphical user interface that is displayed on the display of the touch screen device. For instance, a user can select a particular object in the graphical user interface by simply touching that particular object on the display of the touch screen device. As such, when touch control is utilized, a cursor may not even be provided for enabling selection of an object of a graphical user interface in some embodiments. However, when a cursor is provided in a graphical user interface, touch control can be used to control the cursor in some embodiments.
Thedisplay module7206 translates the output of a user interface for a display device. That is, thedisplay module7206 receives signals (e.g., from the UI interaction and generation module7210) describing what should be displayed and translates these signals into pixel information that is sent to the display device. The display device may be an LCD, plasma screen, CRT monitor, touchscreen, etc.
In some embodiments, the notification tools7208 presents notifications (e.g., at the operating system level). Examples of such notifications may include one or more of the following: an icon badge, banner notification, system tray notification, lock-screen alert, notification center message, etc. In some embodiments, the notification tools7208 causes a computing device (e.g., smart phone, tablet) to play a sound or vibrate.
The UI interaction and generation module7210 of the content sharing tools7200 interprets the user input data received from theinput device drivers7204 and passes it to various UI components, including thecontent display area7212, the sharedstream menu7214, the sharedstream management tools7216, and thecomment tools7218. The UI interaction and generation module7210 also manages the display of the UI, and outputs this display information to thedisplay module7206. In some embodiments, the UI interaction and generation module7210 generates a basic UI and populates the UI with information from the other modules and stored data (e.g., storeddata7244,7248).
As shown, the UI interaction and generation module7210, in some embodiments, generates a number of different UI elements. These elements, in some embodiments, include thecontent display area7212, the sharedstream menu7214, the sharedstream management tools7216, and thecomment tools7218. In many of the examples described above, thecontent display area7212 is referred to as an image display, and the sharedstream menu7214 is referred to a photo stream menu. In some embodiments, the sharedstream management tools7216 include a photo stream options sheet, a comment sheet, a photo stream management sheet (e.g., to add or remove subscriber, to resend a photo stream invitation, to delete a photo stream, etc.). The comment tools of some embodiments include an add comment field, like button, delete comment button, etc. All of these UI elements are described in many different examples above.
As shown inFIG. 72, the shared stream manager includes several components to facilitate the content and comment sharing features. The components include (1) a data manager7222, (2) achecksum generator7224, (3) aweb publication module7226, (4) alayout manager7228, (5) animage generator7230, (6) acomment module7232, (7) a filename analyzer, and (8) a notification module. Different components may be provided for different platforms. For instance, the filename analyzer may be provided in one platform (e.g., a PC platform) while not provided for another platform (e.g., a smartphone or tablet platform).
In some embodiments, the data manager7222 facilitates the uploading and downloading of content data from one or more the storage servers7238 (e.g., third-party storage servers). The data manager7222 may receive file location data (e.g., URL address), and upload to or download content from a storage server. This data manager7222 of some embodiments operates automatically without any user input. For example, the shared stream manager7220 may receive a message regarding a new batch of images in a shared image, and direct the data manager7222 to download the batch from the storage server.
Thechecksum generator7224 runs an image file through a computation algorithm that generates a checksum of that image file, which is a hash of the image's content. The content sharing tools and the control server may reference an image using a first key (e.g., unique key) for identifying the image in the photo stream. The first key may be associated with a second key for accessing the image file that is stored at an external data source (e.g., a storage server). The second key may include or is a checksum of that one image file. This checksum allows the storage server to store one image, even though that image is in multiple different photo streams.
Theweb publication module7230 allows images to be published as a set of webpages to a website. In some embodiments, the website is a public website that can be accessed by any browser with the correct URL address. To publish the images, theweb publication module7230 may communicate with one or more of theweb publishing servers7242.
In some embodiments, thecontent display area7212 presents images similar to the ones that are published to a website. To present the images, the shared stream manager7220 may include thelayout manager7228. This layout manager of some embodiments selects a layout based on the number of images in a batch and the orientation of those images. The images may be presented in a particular order (e.g., starting with the oldest image and ending with the newest image, or vice versa). The batches may be presented in a particular order (e.g., starting with the oldest batch to the newest batch, or vice versa).
In some embodiments, thecomment module7232 allows the sharing of comments regarding content in a shared stream. This module of some embodiments receives a comment and generates a message regarding the comment to send to a control server. The comment module may also receive a message regarding a new comment and perform operations to display the comment (e.g., in the content display area7212). These operations may include identifying the image associated with the comment, the timestamp of the comment, and the person that left the comment. These operations may also entail counting the number of comments and/or likes associated with that same image.
Thefilename analyzer7234 analyzes a filename of a piece of content to automatically input a comment. The filename may be analyzed using a number of different techniques. In some embodiments, the analysis entails identifying one or more words, names, or people in the filename. The analysis may entail identifying random filenames that are generated by different image capturing devices (e.g., digital cameras, smart phones, tablets). The analysis may also entail identifying different characters (e.g., underscore) and replacing them with a space.
The notification module detects notifications from a control server and facilitates their presentation. For example, the notification module may cause different photo streams to be marked with a marking (e.g., colored dot) in the sharedstream menu7214 and/or cause images to be marked with a marking (e.g., a chat bubble, double chat bubble, a flag that identifies the number of new images, etc.) in thecontent display area7212. In some embodiments, the notification module interoperates with the notifications tools7208 to present notifications (e.g., icon badge, banner notification, system tray notification) at the operating system level.
While many of the features of the content sharing tools7200 have been described as being performed by one module (e.g., thecomment module7232, theweb publication module7226, etc.), one of ordinary skill in the art will recognize that the components (e.g., functions, modules) described herein might be split up into multiple components. Similarly, components that are described as being performed by multiple different modules might be performed by a single module, in some embodiments.
XIII. Electronic SystemsMany of the above-described features and applications are implemented as software processes that are specified as a set of instructions recorded on a computer readable storage medium (also referred to as computer readable medium). When these instructions are executed by one or more computational or processing unit(s) (e.g., one or more processors, cores of processors, or other processing units), they cause the processing unit(s) to perform the actions indicated in the instructions. Examples of computer readable media include, but are not limited to, CD-ROMs, flash drives, random access memory (RAM) chips, hard drives, erasable programmable read-only memories (EPROMs), electrically erasable programmable read-only memories (EEPROMs), etc. The computer readable media does not include carrier waves and electronic signals passing wirelessly or over wired connections.
In this specification, the term “software” is meant to include firmware residing in read-only memory or applications stored in magnetic storage, which can be read into memory for processing by a processor. In addition, in some embodiments, multiple software inventions can be implemented as sub-parts of a larger program while remaining distinct software inventions. In some embodiments, multiple software inventions can also be implemented as separate programs. Finally, any combination of separate programs that together implement a software invention described here is within the scope of the invention. In some embodiments, the software programs, when installed to operate on one or more electronic systems, define one or more specific machine implementations that execute and perform the operations of the software programs.
A. Mobile Device
The image editing and viewing applications of some embodiments operate on mobile devices.FIG. 73 is an example of anarchitecture7300 of such a mobile computing device. Examples of mobile computing devices include smartphones, tablets, laptops, etc. As shown, themobile computing device7300 includes one ormore processing units7305, amemory interface7310 and aperipherals interface7315.
The peripherals interface7315 is coupled to various sensors and subsystems, including acamera subsystem7320, a wireless communication subsystem(s)7325, anaudio subsystem7330, an I/O subsystem7335, etc. The peripherals interface7315 enables communication between theprocessing units7305 and various peripherals. For example, an orientation sensor7345 (e.g., a gyroscope) and an acceleration sensor7350 (e.g., an accelerometer) is coupled to the peripherals interface7315 to facilitate orientation and acceleration functions.
Thecamera subsystem7320 is coupled to one or more optical sensors7340 (e.g., a charged coupled device (CCD) optical sensor, a complementary metal-oxide-semiconductor (CMOS) optical sensor, etc.). Thecamera subsystem7320 coupled with theoptical sensors7340 facilitates camera functions, such as image and/or video data capturing. Thewireless communication subsystem7325 serves to facilitate communication functions. In some embodiments, thewireless communication subsystem7325 includes radio frequency receivers and transmitters, and optical receivers and transmitters (not shown inFIG. 73). These receivers and transmitters of some embodiments are implemented to operate over one or more communication networks such as a GSM network, a Wi-Fi network, a Bluetooth network, etc. Theaudio subsystem7330 is coupled to a speaker to output audio (e.g., to output different sound effects associated with different image operations). Additionally, theaudio subsystem7330 is coupled to a microphone to facilitate voice-enabled functions, such as voice recognition, digital recording, etc.
The I/O subsystem7335 involves the transfer between input/output peripheral devices, such as a display, a touch screen, etc., and the data bus of theprocessing units7305 through theperipherals interface7315. The I/O subsystem7335 includes a touch-screen controller7355 andother input controllers7360 to facilitate the transfer between input/output peripheral devices and the data bus of theprocessing units7305. As shown, the touch-screen controller7355 is coupled to atouch screen7365. The touch-screen controller7355 detects contact and movement on thetouch screen7365 using any of multiple touch sensitivity technologies. Theother input controllers7360 are coupled to other input/control devices, such as one or more buttons. Some embodiments include a near-touch sensitive screen and a corresponding controller that can detect near-touch interactions instead of or in addition to touch interactions.
Thememory interface7310 is coupled tomemory7370. In some embodiments, thememory7370 includes volatile memory (e.g., high-speed random access memory), non-volatile memory (e.g., flash memory), a combination of volatile and non-volatile memory, and/or any other type of memory. As illustrated inFIG. 73, thememory7370 stores an operating system (OS)7372. TheOS7372 includes instructions for handling basic system services and for performing hardware dependent tasks.
Thememory7370 also includescommunication instructions7374 to facilitate communicating with one or more additional devices; graphicaluser interface instructions7376 to facilitate graphic user interface processing;image processing instructions7378 to facilitate image-related processing and functions;input processing instructions7380 to facilitate input-related (e.g., touch input) processes and functions;audio processing instructions7382 to facilitate audio-related processes and functions; andcamera instructions7384 to facilitate camera-related processes and functions. The instructions described above are merely exemplary and thememory7370 includes additional and/or other instructions in some embodiments. For instance, the memory for a smartphone may include phone instructions to facilitate phone-related processes and functions. The above-identified instructions need not be implemented as separate software programs or modules. Various functions of the mobile computing device can be implemented in hardware and/or in software, including in one or more signal processing and/or application specific integrated circuits.
While the components illustrated inFIG. 73 are shown as separate components, one of ordinary skill in the art will recognize that two or more components may be integrated into one or more integrated circuits. In addition, two or more components may be coupled together by one or more communication buses or signal lines. Also, while many of the functions have been described as being performed by one component, one of ordinary skill in the art will realize that the functions described with respect toFIG. 73 may be split into two or more integrated circuits.
B. Computer System
FIG. 74 conceptually illustrates another example of anelectronic system7400 with which some embodiments of the invention are implemented. Theelectronic system7400 may be a computer (e.g., a desktop computer, personal computer, tablet computer, etc.), phone, PDA, or any other sort of electronic or computing device. Such an electronic system includes various types of computer readable media and interfaces for various other types of computer readable media.Electronic system7400 includes abus7405, processing unit(s)7410, a graphics processing unit (GPU)7415, asystem memory7420, anetwork7425, a read-only memory7430, apermanent storage device7435,input devices7440, andoutput devices7445.
Thebus7405 collectively represents all system, peripheral, and chipset buses that communicatively connect the numerous internal devices of theelectronic system7400. For instance, thebus7405 communicatively connects the processing unit(s)7410 with the read-only memory7430, the GPU7415, thesystem memory7420, and thepermanent storage device7435.
From these various memory units, the processing unit(s)7410 retrieves instructions to execute and data to process in order to execute the processes of the invention. The processing unit(s) may be a single processor or a multi-core processor in different embodiments. Some instructions are passed to and executed by the GPU7415. The GPU7415 can offload various computations or complement the image processing provided by the processing unit(s)7410.
The read-only-memory (ROM)7430 stores static data and instructions that are needed by the processing unit(s)7410 and other modules of the electronic system. Thepermanent storage device7435, on the other hand, is a read-and-write memory device. This device is a non-volatile memory unit that stores instructions and data even when theelectronic system7400 is off. Some embodiments of the invention use a mass-storage device (such as a magnetic or optical disk and its corresponding disk drive) as thepermanent storage device7435.
Other embodiments use a removable storage device (such as a floppy disk, flash memory device, etc., and its corresponding drive) as the permanent storage device. Like thepermanent storage device7435, thesystem memory7420 is a read-and-write memory device. However, unlikestorage device7435, thesystem memory7420 is a volatile read-and-write memory, such a random access memory. Thesystem memory7420 stores some of the instructions and data that the processor needs at runtime. In some embodiments, the invention's processes are stored in thesystem memory7420, thepermanent storage device7435, and/or the read-only memory7430. For example, the various memory units include instructions for processing multimedia clips in accordance with some embodiments. From these various memory units, the processing unit(s)7410 retrieves instructions to execute and data to process in order to execute the processes of some embodiments.
Thebus7405 also connects to the input andoutput devices7440 and7445. Theinput devices7440 enable the user to communicate information and select commands to the electronic system. Theinput devices7440 include alphanumeric keyboards and pointing devices (also called “cursor control devices”), cameras (e.g., webcams), microphones or similar devices for receiving voice commands, etc. Theoutput devices7445 display images generated by the electronic system or otherwise output data. Theoutput devices7445 include printers and display devices, such as cathode ray tubes (CRT) or liquid crystal displays (LCD), as well as speakers or similar audio output devices. Some embodiments include devices such as a touchscreen that function as both input and output devices.
Finally, as shown inFIG. 74,bus7405 also coupleselectronic system7400 to anetwork7425 through a network adapter (not shown). In this manner, the computer can be a part of a network of computers (such as a local area network (“LAN”), a wide area network (“WAN”), or an Intranet, or a network of networks, such as the Internet. Any or all components ofelectronic system7400 may be used in conjunction with the invention.
Some embodiments include electronic components, such as microprocessors, storage and memory that store computer program instructions in a machine-readable or computer-readable medium (alternatively referred to as computer-readable storage media, machine-readable media, or machine-readable storage media). Some examples of such computer-readable media include RAM, ROM, read-only compact discs (CD-ROM), recordable compact discs (CD-R), rewritable compact discs (CD-RW), read-only digital versatile discs (e.g., DVD-ROM, dual-layer DVD-ROM), a variety of recordable/rewritable DVDs (e.g., DVD-RAM, DVD-RW, DVD+RW, etc.), flash memory (e.g., SD cards, mini-SD cards, micro-SD cards, etc.), magnetic and/or solid state hard drives, read-only and recordable Blu-Ray® discs, ultra density optical discs, any other optical or magnetic media, and floppy disks. The computer-readable media may store a computer program that is executable by at least one processing unit and includes sets of instructions for performing various operations. Examples of computer programs or computer code include machine code, such as is produced by a compiler, and files including higher-level code that are executed by a computer, an electronic component, or a microprocessor using an interpreter.
While the above discussion primarily refers to microprocessor or multi-core processors that execute software, some embodiments are performed by one or more integrated circuits, such as application specific integrated circuits (ASICs) or field programmable gate arrays (FPGAs). In some embodiments, such integrated circuits execute instructions that are stored on the circuit itself. In addition, some embodiments execute software stored in programmable logic devices (PLDs), ROM, or RAM devices.
As used in this specification and any claims of this application, the terms “computer”, “server”, “processor”, and “memory” all refer to electronic or other technological devices. These terms exclude people or groups of people. For the purposes of the specification, the terms display or displaying means displaying on an electronic device. As used in this specification and any claims of this application, the terms “computer readable medium,” “computer readable media,” and “machine readable medium” are entirely restricted to tangible, physical objects that store information in a form that is readable by a computer. These terms exclude any wireless signals, wired download signals, and any other ephemeral signals.
While the invention has been described with reference to numerous specific details, one of ordinary skill in the art will recognize that the invention can be embodied in other specific forms without departing from the spirit of the invention. For instance, many of the figures illustrate various touch gestures (e.g., taps, double taps, swipe gestures, press and hold gestures, etc.). However, many of the illustrated operations could be performed via different touch gestures (e.g., a swipe instead of a tap, etc.) or by non-touch input (e.g., using a cursor controller, a keyboard, a touchpad/trackpad, a near-touch sensitive screen, etc.). In addition, a number of the figures (includingFIGS. 7,14,19,20,36,37,48, and68-71) conceptually illustrate processes. The specific operations of these processes may not be performed in the exact order shown and described. The specific operations may not be performed in one continuous series of operations, and different specific operations may be performed in different embodiments. Furthermore, the process could be implemented using several sub-processes, or as part of a larger macro process. Thus, one of ordinary skill in the art would understand that the invention is not to be limited by the foregoing illustrative details, but rather is to be defined by the appended claims.
While the invention has been described with reference to numerous specific details, one of ordinary skill in the art will recognize that the invention can be embodied in other specific forms without departing from the spirit of the invention. For example, one of ordinary skill in the art will understand that many of the UI items of inFIGS. 1-6,8-13,15-18,21-35,38-41, and49-65 can also be activated and/or set by a cursor control device (e.g., a mouse or trackball), a stylus, keyboard, a finger gesture (e.g., placing, pointing, tapping one or more fingers) near a near-touch sensitive screen, or any other control system in some embodiments. Thus, one of ordinary skill in the art would understand that the invention is not to be limited by the foregoing illustrative details, but rather is to be defined by the appended claims.