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