1#import "FileInfoViewController.h" 2#import "NSStringUtils.h" 3 4enum 5{ 6 SECTION_INFO, 7 SECTION_RAWTAGS, 8 SECTION_COUNT 9}; 10 11enum 12{ 13 INFO_SECTION_TITLE, 14 INFO_SECTION_ARTIST, 15 INFO_SECTION_GAME, 16 INFO_SECTION_YEAR, 17 INFO_SECTION_GENRE, 18 INFO_SECTION_COMMENT, 19 INFO_SECTION_COPYRIGHT, 20 INFO_SECTION_PSFBY, 21 INFO_SECTION_COUNT 22}; 23 24@implementation FileInfoViewController 25 26@synthesize delegate; 27 28- (void)setTags:(const CPsfTags&)tags 29{ 30 m_tags = tags; 31 m_rawTags.clear(); 32 33 for(CPsfTags::ConstTagIterator tagIterator(m_tags.GetTagsBegin()); 34 tagIterator != m_tags.GetTagsEnd(); tagIterator++) 35 { 36 std::string rawTag; 37 rawTag = tagIterator->first + ": " + tagIterator->second; 38 m_rawTags.push_back(rawTag); 39 } 40 41 [m_tagsTable reloadData]; 42} 43 44- (void)setTrackTitle:(NSString*)trackTitle 45{ 46 m_trackTitleLabel.text = trackTitle; 47} 48 49- (void)setTrackTime:(NSString*)trackTime 50{ 51 m_trackTimeLabel.text = trackTime; 52} 53 54- (void)setPlayButtonText:(NSString*)playButtonText 55{ 56 [m_playButton setTitle:playButtonText forState:UIControlStateNormal]; 57} 58 59- (IBAction)onPlayButtonPress:(id)sender 60{ 61 if(delegate != nil) 62 { 63 [self.delegate onPlayButtonPress]; 64 } 65} 66 67- (IBAction)onPrevButtonPress:(id)sender 68{ 69 if(delegate != nil) 70 { 71 [self.delegate onPrevButtonPress]; 72 } 73} 74 75- (IBAction)onNextButtonPress:(id)sender 76{ 77 if(delegate != nil) 78 { 79 [self.delegate onNextButtonPress]; 80 } 81} 82 83- (NSInteger)numberOfSectionsInTableView:(UITableView*)tableView 84{ 85 return SECTION_COUNT; 86} 87 88- (NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section 89{ 90 NSInteger rowCount = 0; 91 switch(section) 92 { 93 case SECTION_INFO: 94 rowCount = INFO_SECTION_COUNT; 95 break; 96 case SECTION_RAWTAGS: 97 rowCount = m_rawTags.size(); 98 break; 99 } 100 return rowCount; 101} 102 103- (NSString*)tableView:(UITableView*)tableView titleForHeaderInSection:(NSInteger)section 104{ 105 NSString* sectionHeader = nil; 106 107 switch(section) 108 { 109 case SECTION_INFO: 110 sectionHeader = @"Info"; 111 break; 112 case SECTION_RAWTAGS: 113 sectionHeader = @"Raw Tags"; 114 break; 115 } 116 117 return sectionHeader; 118} 119 120- (NSString*)infoDisplayTextForItem:(const char*)itemName withTag:(const char*)tagName 121{ 122 NSString* itemValue = @""; 123 if(m_tags.HasTag(tagName)) 124 { 125 itemValue = stringWithWchar(m_tags.GetTagValue(tagName)); 126 } 127 return [NSString stringWithFormat:@"%s: %@", itemName, itemValue]; 128} 129 130- (UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath 131{ 132 static NSString* CellIdentifier = @"Cell"; 133 134 UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 135 if(cell == nil) 136 { 137 cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 138 } 139 140 cell.textLabel.adjustsFontSizeToFitWidth = YES; 141 142 if(indexPath.section == SECTION_INFO) 143 { 144 switch(indexPath.row) 145 { 146 case INFO_SECTION_TITLE: 147 cell.textLabel.text = [self infoDisplayTextForItem:"Title" withTag:"title"]; 148 break; 149 case INFO_SECTION_ARTIST: 150 cell.textLabel.text = [self infoDisplayTextForItem:"Artist" withTag:"artist"]; 151 break; 152 case INFO_SECTION_GAME: 153 cell.textLabel.text = [self infoDisplayTextForItem:"Game" withTag:"game"]; 154 break; 155 case INFO_SECTION_YEAR: 156 cell.textLabel.text = [self infoDisplayTextForItem:"Year" withTag:"year"]; 157 break; 158 case INFO_SECTION_GENRE: 159 cell.textLabel.text = [self infoDisplayTextForItem:"Genre" withTag:"genre"]; 160 break; 161 case INFO_SECTION_COMMENT: 162 cell.textLabel.text = [self infoDisplayTextForItem:"Comment" withTag:"comment"]; 163 break; 164 case INFO_SECTION_COPYRIGHT: 165 cell.textLabel.text = [self infoDisplayTextForItem:"Copyright" withTag:"copyright"]; 166 break; 167 case INFO_SECTION_PSFBY: 168 cell.textLabel.text = [self infoDisplayTextForItem:"Psf by" withTag:"psfby"]; 169 break; 170 } 171 } 172 else if(indexPath.section == SECTION_RAWTAGS) 173 { 174 std::string rawTag = m_rawTags[indexPath.row]; 175 cell.textLabel.text = [NSString stringWithUTF8String:rawTag.c_str()]; 176 } 177 178 return cell; 179} 180 181@end 182