Key Information

Register
Submit
The challenge is finished.

Challenge Overview

Overview

The Hercules Personal Content DVR application is a stand-alone iOS app, allowing users to upload their own video content they recorded on their phone or tablet camera into their DVR for playback on their TV and syncing with other devices.

This assembly will add new photos functionality to the application

Project setup

The current codebase has multiple targets for Fog, University, and "PCDVR".  This assembly will update the code in the DVR folder for the app, used by the "PCDVR Development" and "PCDVR Prod" targets.  Don't make any code changes outside the DVR folder in the codebase without forum approval as it could have unintended consequences for other apps.

This app will run in the simulator.  Look in the configuration.plist to configure the authGuid for the account used and the test username and password for login.  You should be able to do all necessary development in the simulator, although testing on a device is required for reviewers.

Platforms

The code changes for the requirements must be tested and work on all devices (iPhones, iPods, iPads), with both retina and non-retina displays and in both orientations.  iOS 6.1+ is required.

Requirements

Currently, the application supports video only.  Videos can be uploaded, edited, moved, and displayed in the app.  This assembly will add:

* Photo support

* Photo editing

Photo support

The API for the uploading, moving, editing, and downloading of photos should be the same for photos as it is for videos.  The only difference will be in the MIME types reported by the clients backend API.

In the UI, we won't have "Take to go" buttons for photos, although we will support them being downloaded and sent to the camera roll.  To test this, select a photo on an album view, and then pick the "Send to camera roll" option from the share menu.

Photos can be:

* Uploaded to albums (new or existing)

* Displayed in an album, next to videos.

* Edited (name and other options detailed below)

* Moved between albums (new or existing)

* Deleted

* Exported to the camera roll

* Viewed full screen.  Replace the "Play" text with "View".  When viewed full screen, just show a simple "Done" button in the upper left of the header to go back.

You will need to also modify the current video selector for uploading.  Right now it only shows videos, but we'll need to update it to show photos as well.  The display for photos in the selector should eliminate the time overlay.  Only photos should have the overlay.

NOTE: For the repost, a sample app with a lot of this functionality will be provided.  You are responsible for ALL fixes and proper testing of this code, which was done quickly, but it should give you a head start on implementing the requirements listed here.

Photo display

Photos are displayed in the app with the camera icon.  This should be carried through throughout the app.  Note that the album display has to be updated as well to match the screenshot provided in the forum.  Only the footer details need to updated - we're basically just replacing text with the icons.

Editing

We will support Aviary (http://www.aviary.com/) for editing photos.  This should be supported in the upload selector, and when a single photo is selected in the album view.

We will show the edit panel we use now for the videos.  It will allow for the same name editing, but in place of the cover image selector we for videos, for photos we'll show a "Launch Photo Editor" button that will open the Aviary edit panel.  The user will be able to manipulate the photo through Aviary in the app.

*NOTE*: The edit panel for videos shouldn't be changed.  We want to ensure the cover editor still works as expected.

Here's how editing should work:

On the file upload selector:

1) In the file upload selector, the user should be able to press and hold on a photo.  Instead of the cover selector for videos, we'll have an "Edit Photo" button that will launch the Aviary screen.

2) When the user has confirmed an update to the file, the edited version will be saved locally to the app, in the documents folder.  It will show as a separate file in the file upload selector.  It will not show in the user's camera roll, and it will not replace the original - the user will see the original and the edited photo.

In the album view:

The user will see 3 buttons when they select a photo - View, Edit, and Delete.  In the PoC, the edit button is shown when viewing the image.  We are moving this to replace the "Take To Go" button that is shown when the user has a video selected.

When the user confirms the update to the photo after using Aviary, we will reupload the file to the same GUID in the API.  This will replace the file on the server with the updated version.

File selector

The file selector has been updated in the PoC to show photos and videos and differentiate them with the icon on the cell.  The file selector is taking too long to load now and scrolling can cause problems.  Users have 10's-100's of videos, but thousands of photos, and the selector isn't scaling properly.  We need to implement a better scrolling mechanism here, so instead of processing *all* files when the selector loads, we will only process and display the files to fill the initial selector view and when the user scrolls, we will asynchronously process and display the thumbnails.

Settings

A new UI for the settings screen has been provided.  The text in the upper left currently says "Log Out".  We are going to replace that with a "Settings" button.  When the user presses this button, the Settings screen will display as shown in the UI.  The user can press the Log Out button on the Settings popup to log out as it is implemented now.  The user can enable photo functionality by putting in the passcode (described below), and they can set the auto-upload and 3G upload switches, which should be saved in the app and the settings retrieved through an API.

Configurable photos

The photos functionality must be configurable.  The user will put in a passcode in the settings screen to enable this functionality.  It will be disabled by default.

Milestone

For the milestone, please show photo uploading working.  We should be able to:

  • Edit a photo before uploading
  • Quickly scroll through the file selector 


Final Submission Guidelines

Technology overview

  • XCode 5.1
  • iOS 6.1+
  • iPhones and iPads
  • Objective-C

Existing Documents

  • PCDVR codebase
  • ARS (without photo requirements)

 

ELIGIBLE EVENTS:

2014 TopCoder(R) Open

REVIEW STYLE:

Final Review:

Community Review Board

Approval:

User Sign-Off

SHARE:

ID: 30042045