Mikhail Kuznetsov avatar Mikhail Kuznetsov committed e798e17

cell prototype; additional show info;

Comments (0)

Files changed (16)

MyShows.xcodeproj/project.pbxproj

 		1829F1921454720F00B98707 /* SVProgressHUD.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 1829F18F1454720F00B98707 /* SVProgressHUD.bundle */; };
 		1829F1931454720F00B98707 /* SVProgressHUD.m in Sources */ = {isa = PBXBuildFile; fileRef = 1829F1911454720F00B98707 /* SVProgressHUD.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
 		1829F195145473DD00B98707 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1829F194145473DD00B98707 /* QuartzCore.framework */; };
+		184043E8145D9A6300DE0A94 /* TvShowCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 184043E7145D9A6300DE0A94 /* TvShowCell.m */; };
+		184043EF145DA24500DE0A94 /* 1starsmall.png in Resources */ = {isa = PBXBuildFile; fileRef = 184043EA145DA24500DE0A94 /* 1starsmall.png */; };
+		184043F0145DA24500DE0A94 /* 2starsmall.png in Resources */ = {isa = PBXBuildFile; fileRef = 184043EB145DA24500DE0A94 /* 2starsmall.png */; };
+		184043F1145DA24500DE0A94 /* 3starsmall.png in Resources */ = {isa = PBXBuildFile; fileRef = 184043EC145DA24500DE0A94 /* 3starsmall.png */; };
+		184043F2145DA24500DE0A94 /* 4starsmall.png in Resources */ = {isa = PBXBuildFile; fileRef = 184043ED145DA24500DE0A94 /* 4starsmall.png */; };
+		184043F3145DA24500DE0A94 /* 5starsmall.png in Resources */ = {isa = PBXBuildFile; fileRef = 184043EE145DA24500DE0A94 /* 5starsmall.png */; };
+		184043F5145DA56A00DE0A94 /* tv_show_placeholder2.png in Resources */ = {isa = PBXBuildFile; fileRef = 184043F4145DA56A00DE0A94 /* tv_show_placeholder2.png */; };
 		1866084B144AEC120050B8E1 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1866084A144AEC120050B8E1 /* UIKit.framework */; };
 		1866084D144AEC120050B8E1 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1866084C144AEC120050B8E1 /* Foundation.framework */; };
 		1866084F144AEC120050B8E1 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1866084E144AEC120050B8E1 /* CoreGraphics.framework */; };
 		1829F1901454720F00B98707 /* SVProgressHUD.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVProgressHUD.h; sourceTree = "<group>"; };
 		1829F1911454720F00B98707 /* SVProgressHUD.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SVProgressHUD.m; sourceTree = "<group>"; };
 		1829F194145473DD00B98707 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
+		184043E6145D9A6300DE0A94 /* TvShowCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TvShowCell.h; path = Classes/TvShowCell.h; sourceTree = "<group>"; };
+		184043E7145D9A6300DE0A94 /* TvShowCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TvShowCell.m; path = Classes/TvShowCell.m; sourceTree = "<group>"; };
+		184043EA145DA24500DE0A94 /* 1starsmall.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = 1starsmall.png; sourceTree = "<group>"; };
+		184043EB145DA24500DE0A94 /* 2starsmall.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = 2starsmall.png; sourceTree = "<group>"; };
+		184043EC145DA24500DE0A94 /* 3starsmall.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = 3starsmall.png; sourceTree = "<group>"; };
+		184043ED145DA24500DE0A94 /* 4starsmall.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = 4starsmall.png; sourceTree = "<group>"; };
+		184043EE145DA24500DE0A94 /* 5starsmall.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = 5starsmall.png; sourceTree = "<group>"; };
+		184043F4145DA56A00DE0A94 /* tv_show_placeholder2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = tv_show_placeholder2.png; sourceTree = "<group>"; };
 		18660846144AEC120050B8E1 /* MyShows.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MyShows.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		1866084A144AEC120050B8E1 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
 		1866084C144AEC120050B8E1 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
 		18660884144AEF2D0050B8E1 /* Images */ = {
 			isa = PBXGroup;
 			children = (
+				184043F4145DA56A00DE0A94 /* tv_show_placeholder2.png */,
+				184043EA145DA24500DE0A94 /* 1starsmall.png */,
+				184043EB145DA24500DE0A94 /* 2starsmall.png */,
+				184043EC145DA24500DE0A94 /* 3starsmall.png */,
+				184043ED145DA24500DE0A94 /* 4starsmall.png */,
+				184043EE145DA24500DE0A94 /* 5starsmall.png */,
 				186C58CE145C464500B0E53E /* tv_show_placeholder.png */,
 				18660885144AEF2D0050B8E1 /* logo-tv.gif */,
 			);
 				1829F18C14546E4700B98707 /* ImageManager.m */,
 				186608DC144B14920050B8E1 /* MyShowsApi.h */,
 				186608DD144B14930050B8E1 /* MyShowsApi.m */,
+				184043E6145D9A6300DE0A94 /* TvShowCell.h */,
+				184043E7145D9A6300DE0A94 /* TvShowCell.m */,
 			);
 			name = Classes;
 			sourceTree = "<group>";
 				18660886144AEF2D0050B8E1 /* logo-tv.gif in Resources */,
 				1829F1921454720F00B98707 /* SVProgressHUD.bundle in Resources */,
 				186C58CF145C464500B0E53E /* tv_show_placeholder.png in Resources */,
+				184043EF145DA24500DE0A94 /* 1starsmall.png in Resources */,
+				184043F0145DA24500DE0A94 /* 2starsmall.png in Resources */,
+				184043F1145DA24500DE0A94 /* 3starsmall.png in Resources */,
+				184043F2145DA24500DE0A94 /* 4starsmall.png in Resources */,
+				184043F3145DA24500DE0A94 /* 5starsmall.png in Resources */,
+				184043F5145DA56A00DE0A94 /* tv_show_placeholder2.png in Resources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 				1829F18D14546E4700B98707 /* ImageManager.m in Sources */,
 				1829F1931454720F00B98707 /* SVProgressHUD.m in Sources */,
 				186C58CC145C39F000B0E53E /* TvShow.m in Sources */,
+				184043E8145D9A6300DE0A94 /* TvShowCell.m in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};

MyShows/Classes/MyShowsApi.m

 
 - (void) requestFailed:(ASIHTTPRequest *)request {
     NSLog(@"Request failed with %d status code", [request responseStatusCode]);
+    NSDictionary *data = [[NSDictionary alloc] initWithObjectsAndKeys:
+                          [[NSNumber alloc] initWithInt:[request responseStatusCode]], @"status",
+                          nil];
+    [[self responder] didRequestFailed:data];
 }
 
 - (void) requestLoginFinished:(ASIHTTPRequest *)request {

MyShows/Classes/TvShowCell.h

+//
+//  TvShowCell.h
+//  MyShows
+//
+//  Created by Mikhail Kuznetsov on 30.10.11.
+//  Copyright (c) 2011 __MyCompanyName__. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+@interface TvShowCell : UITableViewCell
+
+@property (nonatomic, strong) IBOutlet UILabel *enTitleLabel;
+@property (nonatomic, strong) IBOutlet UILabel *ruTitleLabel;
+@property (nonatomic, strong) IBOutlet UIImageView *imageView;
+@property (nonatomic, strong) IBOutlet UILabel *watchedAllLabel;
+@property (nonatomic, strong) IBOutlet UILabel *watchStatusLabel;
+@property (nonatomic, strong) IBOutlet UILabel *showStatusLabel;
+@property (nonatomic, strong) IBOutlet UIImageView *ratingImageView;
+@end

MyShows/Classes/TvShowCell.m

+//
+//  TvShowCell.m
+//  MyShows
+//
+//  Created by Mikhail Kuznetsov on 30.10.11.
+//  Copyright (c) 2011 __MyCompanyName__. All rights reserved.
+//
+
+#import "TvShowCell.h"
+
+@implementation TvShowCell
+
+@synthesize enTitleLabel, ruTitleLabel, watchedAllLabel, watchStatusLabel, showStatusLabel, imageView, ratingImageView;
+
+- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
+{
+    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
+    if (self) {
+        // Initialization code
+    }
+    return self;
+}
+
+- (void)setSelected:(BOOL)selected animated:(BOOL)animated
+{
+    [super setSelected:selected animated:animated];
+
+    // Configure the view for the selected state
+}
+
+@end

MyShows/Controllers/LoginViewController.m

         [self performSegueWithIdentifier:@"login_to_main_controller" sender:nil];
     }
     else {
-        if (status == 404) {
-            [SVProgressHUD dismissWithError:@"User not found"];
-        }
-        else if (status == 403) {
-            [SVProgressHUD dismissWithError:@"Wrong credentials"];
-        }
-        else {
-            [SVProgressHUD dismiss];
-        }
+        [SVProgressHUD dismissWithError:@"Unknown error"];
     }
 }
 
 - (void) didRequestFailed:(NSDictionary *) data {
-    
+    int status = [(NSNumber *)[data objectForKey:@"status"] intValue];
+    if (status == 404) {
+        [SVProgressHUD dismissWithError:@"User not found"];
+    }
+    else if (status == 403) {
+        [SVProgressHUD dismissWithError:@"Wrong credentials"];
+    }
+    else {
+        [SVProgressHUD dismissWithError:@"Unknown error"];
+    }
 }
 
 #pragma mark - Actions

MyShows/Controllers/ShowsListTableViewController.h

     IBOutlet UITableView *showsTable;
 }
 
-- (UIImage *) loadImage:(TvShow *)currentShow indexPath:(NSIndexPath *) indexPath;
+- (UIImage *)loadImage:(TvShow *)currentShow indexPath:(NSIndexPath *) indexPath;
 - (UIImage *)resizeImage:(UIImage *)image;
-- (void) loadImagesForOnscreenRows;
-
+- (void)loadImagesForOnscreenRows;
+- (UIImage *)imageForRating:(NSNumber *)rating;
 @end

MyShows/Controllers/ShowsListTableViewController.m

 #import "ShowsListTableViewController.h"
 #import "SVProgressHUD.h"
 #import "TvShow.h"
+#import "TvShowCell.h"
 
 
 @implementation ShowsListTableViewController
     
     api = [[MyShowsApi alloc] init];
     [api setResponder:self];
-
+    
     // Uncomment the following line to preserve selection between presentations.
     // self.clearsSelectionOnViewWillAppear = NO;
  
 #pragma mark - Custom methods
 
 - (UIImage *)resizeImage:(UIImage *)image {
-    if (image.size.width != 48 && image.size.height != 48) {
-        CGSize imageSize = CGSizeMake(48, 48);
+    if (image.size.width != 61 && image.size.height != 61) {
+        CGSize imageSize = CGSizeMake(61, 61);
         UIGraphicsBeginImageContext(imageSize);
         CGRect imageRect = CGRectMake(0.0, 0.0, imageSize.width, imageSize.height);
         [image drawInRect:imageRect];
      ];
 }
 
+- (UIImage *)imageForRating:(NSNumber *)rating
+{
+	switch (rating.intValue)
+	{
+		case 1: return [UIImage imageNamed:@"1starsmall.png"];
+		case 2: return [UIImage imageNamed:@"2starsmall.png"];
+		case 3: return [UIImage imageNamed:@"3starsmall.png"];
+		case 4: return [UIImage imageNamed:@"4starsmall.png"];
+		case 5: return [UIImage imageNamed:@"5starsmall.png"];
+	}
+	return nil;
+}
+
 #pragma mark - Table view data source
 
 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
 {
     static NSString *CellIdentifier = @"TvShowCell";
     
-    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
-    if (cell == nil) {
-        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
-    }
-    
-    // Configure the cell...
-    cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;
+    TvShowCell *cell = (TvShowCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
     
+    // Configure the cell...    
     TvShow *currentShow = [shows objectAtIndex:[indexPath row]];
          
     if (currentShow.ruTitle != (id)[NSNull null] && currentShow.ruTitle != nil && currentShow.ruTitle.length != 0) {
-        cell.detailTextLabel.text = currentShow.ruTitle;
+        cell.ruTitleLabel.text = currentShow.ruTitle;
     }
     else {
-        cell.detailTextLabel.text = @"";
+        cell.ruTitleLabel.text = @"";
     }
     
-    cell.textLabel.text = currentShow.enTitle;
+    cell.enTitleLabel.text = currentShow.enTitle;
+    
+    cell.watchedAllLabel.text = [NSString stringWithFormat:@"%d/%d", 
+                                 currentShow.watchedEpisodes.intValue, 
+                                 currentShow.totalEpisodes.intValue];
+    cell.showStatusLabel.text = currentShow.showStatus;
+    cell.watchStatusLabel.text = currentShow.watchStatus;
+    if (currentShow.ratingValue > 0) {
+        cell.ratingImageView.image = [self imageForRating:currentShow.ratingValue];
+    }
+    else {
+        cell.ratingImageView.image = nil;
+    }
     
     if (!currentShow.image) {
         UIImage *image;
             cell.imageView.image = image;
         }
         else {
-            cell.imageView.image = [UIImage imageNamed:@"tv_show_placeholder.png"];
+            cell.imageView.image = [UIImage imageNamed:@"tv_show_placeholder2.png"];
         }
     }
     else {
      */
 }
 
-- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
-    return 50;
-}
-
 - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
     if (!decelerate) {
         [self loadImagesForOnscreenRows];
     [self loadImagesForOnscreenRows];
 }
 
+-(void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath {
+    [self performSegueWithIdentifier:@"show_details" sender:nil];
+}
+
 @end

MyShows/Models/TvShow.h

     NSString *_ruTitle;
     NSString *_enTitle;
     NSString *_imageUrl;
+    NSString *_showStatus;
+    NSString *_watchStatus;
+    NSNumber *_watchedEpisodes;
+    NSNumber *_totalEpisodes;
+    NSNumber *_ratingValue;
     
     //Object fields
     UIImage *_image;
+    UIImage *_rating;
 }
 
 @property (nonatomic, retain) NSString *ruTitle;
 @property (nonatomic, retain) NSString *enTitle;
 @property (nonatomic, retain) NSString *imageUrl;
+@property (nonatomic, retain) NSString *showStatus;
+@property (nonatomic, retain) NSString *watchStatus;
+@property (nonatomic, retain) NSNumber *watchedEpisodes;
+@property (nonatomic, retain) NSNumber *totalEpisodes;
+@property (nonatomic, retain) NSNumber *ratingValue;
+@property (nonatomic, retain) UIImage *rating;
 @property (nonatomic, retain) UIImage *image;
 
 - (id)initWithDictionary:(NSDictionary *)data;

MyShows/Models/TvShow.m

 @synthesize ruTitle = _ruTitle;
 @synthesize enTitle = _enTitle;
 @synthesize imageUrl = _imageUrl;
+@synthesize showStatus = _showStatus;
+@synthesize watchStatus = _watchStatus;
+@synthesize totalEpisodes = _totalEpisodes;
+@synthesize watchedEpisodes = _watchedEpisodes;
+@synthesize ratingValue = _ratingValue;
+@synthesize rating = _rating;
 @synthesize image = _image;
 
 - (id)initWithDictionary:(NSDictionary *)data {
     self = [super init];
     if (self) {
+        NSLog(@"%@", data);
+        NSLog(@"%@", [[data objectForKey:@"rating"] class]);
         NSDictionary *fieldMap = [self fieldMap];
         NSEnumerator *enumerator = [fieldMap keyEnumerator];
         id key;
                 [self performSelector:s withObject:[data objectForKey:key]];
             }
         }
+        NSLog(@"%@, %@", self.rating, self.totalEpisodes);
     }
     return self;
 }
             @"ruTitle", @"ruTitle",
             @"enTitle", @"title",
             @"imageUrl", @"image",
+            @"showStatus", @"showStatus",
+            @"watchStatus", @"watchStatus",
+            @"watchedEpisodes", @"watchedEpisodes",
+            @"totalEpisodes", @"totalEpisodes",
+            @"ratingValue", @"rating",
             nil];
 }
 
Add a comment to this file

MyShows/Resources/Images/1starsmall.png

Added
New image
Add a comment to this file

MyShows/Resources/Images/2starsmall.png

Added
New image
Add a comment to this file

MyShows/Resources/Images/3starsmall.png

Added
New image
Add a comment to this file

MyShows/Resources/Images/4starsmall.png

Added
New image
Add a comment to this file

MyShows/Resources/Images/5starsmall.png

Added
New image
Add a comment to this file

MyShows/Resources/Images/tv_show_placeholder2.png

Added
New image

MyShows/en.lproj/MainStoryboard.storyboard

                     </connections>
                 </viewController>
             </objects>
-            <point key="canvasLocation" x="346" y="-87"/>
+            <point key="canvasLocation" x="-902" y="5"/>
         </scene>
         <scene sceneID="ysL-OL-Sg2">
             <objects>
                 <placeholder placeholderIdentifier="IBFirstResponder" id="LlN-H3-iK2" userLabel="First Responder" sceneMemberID="firstResponder"/>
                 <navigationController navigationBarHidden="YES" id="2DL-wh-LZG" sceneMemberID="viewController">
                     <toolbarItems/>
+                    <simulatedStatusBarMetrics key="simulatedStatusBarMetrics" statusBarStyle="blackTranslucent"/>
                     <navigationBar key="navigationBar" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" id="XRL-1W-U69">
                         <rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
                         <autoresizingMask key="autoresizingMask"/>
                     </connections>
                 </navigationController>
             </objects>
-            <point key="canvasLocation" x="-564" y="-15"/>
+            <point key="canvasLocation" x="-1352" y="5"/>
         </scene>
         <scene sceneID="w6c-v9-Zaj">
             <objects>
                     <tabBarItem key="tabBarItem" title="News" id="N3t-aH-i6e"/>
                 </viewController>
             </objects>
-            <point key="canvasLocation" x="337" y="1243"/>
+            <point key="canvasLocation" x="113" y="-129"/>
+        </scene>
+        <scene sceneID="ggw-Vt-6aG">
+            <objects>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="KYm-g1-kv8" userLabel="First Responder" sceneMemberID="firstResponder"/>
+                <viewController id="N1f-SA-PHD" sceneMemberID="viewController">
+                    <view key="view" contentMode="scaleToFill" id="QJM-qk-s9q">
+                        <rect key="frame" x="0.0" y="64" width="320" height="367"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Label" lineBreakMode="tailTruncation" minimumFontSize="10" id="E92-Vp-Cv4">
+                                <rect key="frame" x="111" y="90" width="42" height="21"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                        </subviews>
+                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
+                    </view>
+                    <navigationItem key="navigationItem" id="pIn-1H-XqX"/>
+                </viewController>
+            </objects>
+            <point key="canvasLocation" x="548" y="796"/>
         </scene>
         <scene sceneID="yI7-fY-k41">
             <objects>
                 <placeholder placeholderIdentifier="IBFirstResponder" id="i9u-oa-UzA" userLabel="First Responder" sceneMemberID="firstResponder"/>
                 <tableViewController id="C5l-zf-gp5" customClass="ShowsListTableViewController" sceneMemberID="viewController">
-                    <tableView key="view" opaque="NO" clipsSubviews="YES" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="xLb-pa-bCi">
-                        <rect key="frame" x="0.0" y="20" width="320" height="411"/>
+                    <tableView key="view" opaque="NO" clipsSubviews="YES" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" rowHeight="99" sectionHeaderHeight="22" sectionFooterHeight="22" id="xLb-pa-bCi">
+                        <rect key="frame" x="0.0" y="64" width="320" height="367"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
                         <prototypes>
-                            <tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="ahh-bd-RUH" customClass="ShowTableViewCell">
-                                <rect key="frame" x="0.0" y="22" width="320" height="44"/>
+                            <tableViewCell contentMode="scaleToFill" selectionStyle="gray" accessoryType="detailDisclosureButton" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="TvShowCell" rowHeight="99" id="ahh-bd-RUH" customClass="TvShowCell">
+                                <rect key="frame" x="0.0" y="22" width="320" height="99"/>
                                 <autoresizingMask key="autoresizingMask"/>
                                 <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
-                                    <rect key="frame" x="0.0" y="0.0" width="320" height="43"/>
+                                    <rect key="frame" x="0.0" y="0.0" width="287" height="98"/>
                                     <autoresizingMask key="autoresizingMask"/>
+                                    <subviews>
+                                        <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="enTitle" lineBreakMode="tailTruncation" minimumFontSize="10" id="YIh-JU-WCD">
+                                            <rect key="frame" x="80" y="4" width="187" height="32"/>
+                                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                            <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                            <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+                                            <nil key="highlightedColor"/>
+                                        </label>
+                                        <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="ruTitle" lineBreakMode="tailTruncation" minimumFontSize="10" id="vgV-8Y-Ngy">
+                                            <rect key="frame" x="80" y="44" width="187" height="21"/>
+                                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                            <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                            <color key="textColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
+                                            <nil key="highlightedColor"/>
+                                        </label>
+                                        <imageView userInteractionEnabled="NO" contentMode="scaleToFill" id="SED-Ow-GI6">
+                                            <rect key="frame" x="11" y="4" width="61" height="61"/>
+                                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                        </imageView>
+                                        <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="view/all" lineBreakMode="tailTruncation" minimumFontSize="10" id="vpi-Kq-sLt">
+                                            <rect key="frame" x="11" y="73" width="61" height="21"/>
+                                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                            <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                            <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+                                            <nil key="highlightedColor"/>
+                                        </label>
+                                        <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="watch" lineBreakMode="tailTruncation" minimumFontSize="10" id="FZu-5A-pXB">
+                                            <rect key="frame" x="80" y="73" width="54" height="21"/>
+                                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                            <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                            <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+                                            <nil key="highlightedColor"/>
+                                        </label>
+                                        <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="show" lineBreakMode="tailTruncation" minimumFontSize="10" id="lPs-sQ-b1k">
+                                            <rect key="frame" x="142" y="73" width="47" height="21"/>
+                                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                            <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                            <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+                                            <nil key="highlightedColor"/>
+                                        </label>
+                                        <imageView userInteractionEnabled="NO" contentMode="scaleToFill" id="Bz9-jQ-c9Q">
+                                            <rect key="frame" x="197" y="70" width="90" height="24"/>
+                                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                        </imageView>
+                                    </subviews>
                                     <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
                                 </view>
+                                <connections>
+                                    <outlet property="enTitleLabel" destination="YIh-JU-WCD" id="rwt-pd-W1M"/>
+                                    <outlet property="imageView" destination="SED-Ow-GI6" id="bP4-g5-wwn"/>
+                                    <outlet property="ratingImageView" destination="Bz9-jQ-c9Q" id="yj3-7i-Y4V"/>
+                                    <outlet property="ruTitleLabel" destination="vgV-8Y-Ngy" id="uWi-pW-tI0"/>
+                                    <outlet property="showStatusLabel" destination="lPs-sQ-b1k" id="UOX-0w-qjd"/>
+                                    <outlet property="watchStatusLabel" destination="FZu-5A-pXB" id="xUh-Bk-PSb"/>
+                                    <outlet property="watchedAllLabel" destination="vpi-Kq-sLt" id="Efk-3A-0UY"/>
+                                    <segue destination="N1f-SA-PHD" kind="push" identifier="show_detail" id="sRG-dh-QD6"/>
+                                </connections>
                             </tableViewCell>
                         </prototypes>
                         <connections>
                         </connections>
                     </tableView>
                     <tabBarItem key="tabBarItem" title="Shows" id="VrA-Dn-L4e"/>
+                    <navigationItem key="navigationItem" title="TvShows" id="NFI-Nl-ChL"/>
                     <connections>
                         <outlet property="showsTable" destination="xLb-pa-bCi" id="8t4-oA-paW"/>
                     </connections>
                 </tableViewController>
             </objects>
-            <point key="canvasLocation" x="-194" y="1556"/>
+            <point key="canvasLocation" x="113" y="485"/>
+        </scene>
+        <scene sceneID="tSA-3R-93l">
+            <objects>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="U8m-FG-vKd" userLabel="First Responder" sceneMemberID="firstResponder"/>
+                <navigationController definesPresentationContext="YES" id="7aU-Nx-otb" sceneMemberID="viewController">
+                    <tabBarItem key="tabBarItem" title="Shows" id="pBD-JK-wZC"/>
+                    <navigationBar key="navigationBar" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" barStyle="blackOpaque" id="R7E-2A-OVJ">
+                        <autoresizingMask key="autoresizingMask"/>
+                    </navigationBar>
+                    <toolbar key="toolbar" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" id="hLF-9y-2Wo">
+                        <rect key="frame" x="0.0" y="416" width="320" height="44"/>
+                        <autoresizingMask key="autoresizingMask"/>
+                    </toolbar>
+                    <connections>
+                        <segue destination="C5l-zf-gp5" kind="relationship" relationship="rootViewController" id="XXo-UE-hbI"/>
+                    </connections>
+                </navigationController>
+            </objects>
+            <point key="canvasLocation" x="-354" y="814"/>
         </scene>
         <scene sceneID="HOY-Hz-hTg">
             <objects>
                         <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
                     </tabBar>
                     <connections>
-                        <segue destination="C5l-zf-gp5" kind="relationship" relationship="viewControllers" id="Nej-6s-w0S"/>
+                        <segue destination="7aU-Nx-otb" kind="relationship" relationship="viewControllers" id="ueL-EM-SgR"/>
                         <segue destination="sLz-U7-UeI" kind="relationship" relationship="viewControllers" id="P1c-em-wsC"/>
                     </connections>
                 </tabBarController>
             </objects>
-            <point key="canvasLocation" x="-199" y="963"/>
+            <point key="canvasLocation" x="-441" y="-5"/>
         </scene>
     </scenes>
     <resources>
                 <relationship kind="outlet" name="password" candidateClass="UITextField"/>
             </relationships>
         </class>
-        <class className="ShowTableViewCell" superclassName="UITableViewCell">
-            <source key="sourceIdentifier" type="project" relativePath="./Classes/ShowTableViewCell.h"/>
-        </class>
         <class className="ShowsListTableViewController" superclassName="UITableViewController">
             <source key="sourceIdentifier" type="project" relativePath="./Classes/ShowsListTableViewController.h"/>
             <relationships>
                 <relationship kind="outlet" name="showsTable" candidateClass="UITableView"/>
             </relationships>
         </class>
+        <class className="TvShowCell" superclassName="UITableViewCell">
+            <source key="sourceIdentifier" type="project" relativePath="./Classes/TvShowCell.h"/>
+            <relationships>
+                <relationship kind="outlet" name="enTitleLabel" candidateClass="UILabel"/>
+                <relationship kind="outlet" name="imageView" candidateClass="UIImageView"/>
+                <relationship kind="outlet" name="ratingImageView" candidateClass="UIImageView"/>
+                <relationship kind="outlet" name="ruTitleLabel" candidateClass="UILabel"/>
+                <relationship kind="outlet" name="showStatusLabel" candidateClass="UILabel"/>
+                <relationship kind="outlet" name="watchStatusLabel" candidateClass="UILabel"/>
+                <relationship kind="outlet" name="watchedAllLabel" candidateClass="UILabel"/>
+            </relationships>
+        </class>
     </classes>
     <simulatedMetricsContainer key="defaultSimulatedMetrics">
         <simulatedStatusBarMetrics key="statusBar"/>
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.