Skip to content
Snippets Groups Projects
Commit 4745b942 authored by Maxime Graulich's avatar Maxime Graulich
Browse files

iOS: same way as Android to read model's informations + add icon in model list

parent 0db1efc6
No related branches found
No related tags found
No related merge requests found
......@@ -94,6 +94,7 @@
- (void)layoutSubviews
{
[super layoutSubviews];
[EAGLContext setCurrentContext:context];
[self destroyFramebuffer];
[self createFramebuffer];
......
......@@ -13,9 +13,10 @@
@interface ModelListController : UITableViewController <NSXMLParserDelegate>
{
@private
NSMutableArray *models, *modelsName, *modelsDescription;
NSMutableArray *models;
NSString *currentElement;
NSMutableString *currentElementValue;
NSString *currentDir;
NSString *selectedModel;
}
@property (nonatomic, retain) EAGLView *glView;
......
......@@ -10,13 +10,12 @@
#import "ModelListController.h"
#import "Utils.h"
#import "Model.h"
@implementation ModelListController
-(void)viewDidLoad
{
models = [[NSMutableArray alloc] init];
modelsName = [[NSMutableArray alloc] init];
modelsDescription = [[NSMutableArray alloc] init];
NSString *docsPath = [Utils getApplicationDocumentsDirectory];
[Utils copyRes];
......@@ -25,16 +24,10 @@
NSString *docPath = [NSString stringWithFormat:@"%@/%@/", docsPath, doc];
BOOL isDir = NO; [[NSFileManager defaultManager] fileExistsAtPath:docPath isDirectory:&isDir];
if(isDir){
[models addObject:doc];
NSString *infos = [NSString stringWithFormat:@"%@%@", docPath, @"infos.xml"];
if([[NSFileManager defaultManager] fileExistsAtPath:infos]) {
currentDir = docPath;
[self parseInfosFile:infos];
if(models.count > modelsName.count)[modelsName addObject:@""];
if(models.count > modelsDescription.count)[modelsDescription addObject:@""];
}
else {
[modelsName addObject:@""];
[modelsDescription addObject:@""];
}
}
}
......@@ -54,13 +47,13 @@
UITableViewCell *cell;
if(indexPath.row >= [models count])
return cell;
NSString *modelName = [models objectAtIndex:indexPath.row];
cell = [tableView dequeueReusableCellWithIdentifier:modelName];
Model *m = [models objectAtIndex:indexPath.row];
cell = [tableView dequeueReusableCellWithIdentifier:[m getName]];
if(cell != nil) return cell;
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:modelName];
[cell.textLabel setText:(![[modelsName objectAtIndex:indexPath.row] isEqual:@""])? [modelsName objectAtIndex:indexPath.row] : [models objectAtIndex:indexPath.row]];
if(![[modelsDescription objectAtIndex:indexPath.row] isEqual:@""])
[cell.detailTextLabel setText:[modelsDescription objectAtIndex:indexPath.row]];
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:[m getName]];
[cell.textLabel setText:[m getName]];
if([m getSummary] != nil) [cell.detailTextLabel setText:[m getSummary]];
if([m getPreview] != nil) cell.imageView.image = [m getPreview];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
return cell;
}
......@@ -71,7 +64,7 @@
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
selectedModel = [NSString stringWithFormat:@"%@/%@/%@.geo",[Utils getApplicationDocumentsDirectory],[models objectAtIndex:indexPath.row], [models objectAtIndex:indexPath.row]];
selectedModel = [[models objectAtIndex:indexPath.row] getFile];
if([[UIDevice currentDevice].model isEqualToString:@"iPad"] || [[UIDevice currentDevice].model isEqualToString:@"iPad Simulator"]){
appDelegate.splitViewController.initialModel = selectedModel;
[UIView transitionWithView:appDelegate.window
......@@ -113,11 +106,34 @@
}
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
if([elementName isEqual:@"name"] && models.count > modelsName.count) [modelsName addObject:currentElementValue];
else if([elementName isEqual:@"description"] && models.count > modelsDescription.count) [modelsDescription addObject:currentElementValue];
if([elementName isEqual:@"title"]) {
Model *m = [[Model alloc] initWithName:currentElementValue];
[models addObject:m];
}
else {
if(models.count < 1) return;
if([elementName isEqual:@"summary"]) {
Model *m = [models lastObject];
[m setSummary:currentElementValue];
}
else if([elementName isEqual:@"file"]) {
Model *m = [models lastObject];
[m setFile:[NSString stringWithFormat:@"%@%@", currentDir, currentElementValue]];
}
else if([elementName isEqual:@"url"]) {
Model *m = [models lastObject];
[m setUrl:currentElementValue];
}
else if([elementName isEqual:@"preview"]) {
Model *m = [models lastObject];
[m setPreview:[NSString stringWithFormat:@"%@%@", currentDir, currentElementValue]];
}
}
//[currentElementValue release];
currentElementValue = nil;
}
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"showModelSegue"])
......
......@@ -43,13 +43,9 @@
}
}
-(void)viewWillAppear:(BOOL)animated
{
_runStopButton.frame = CGRectMake(self.view.frame.size.width - _runStopButton.frame.size.width - 7, 50, _runStopButton.frame.size.width, _runStopButton.frame.size.height );
}
-(void)viewDidAppear:(BOOL)animated
{
_runStopButton.frame = CGRectMake(self.view.frame.size.width - _runStopButton.frame.size.width - 7, 50, _runStopButton.frame.size.width, _runStopButton.frame.size.height );
if(self.initialModel != nil){
UIAlertView* progressAlert = [[UIAlertView alloc] initWithTitle:@"Please wait..." message: @"The model is loading" delegate: self cancelButtonTitle: nil otherButtonTitles: nil];
[progressAlert show];
......
......@@ -104,6 +104,10 @@
[self setIntervalsType:nil];
[self setIntervals:nil];
[self setRaiseZ:nil];
[self setRaiseZ:nil];
[self setIntervals:nil];
[self setIntervalsType:nil];
[self setName:nil];
[super viewDidUnload];
}
@end
......@@ -45,7 +45,8 @@
-(void)viewDidAppear:(BOOL)animated
{
if(self.initialModel != nil) [modelViewController.glView load:self.initialModel];
modelViewController.initialModel = self.initialModel;
[super viewDidAppear:animated];
}
- (void)didReceiveMemoryWarning
......
......@@ -107,7 +107,7 @@
</tableViewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="3Aw-Tm-Dq6" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="1280" y="-800"/>
<point key="canvasLocation" x="1277" y="-806"/>
</scene>
<!--Post Processing View Controller-->
<scene sceneID="inJ-Ob-bP0">
......@@ -166,7 +166,7 @@
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="URb-SK-Z2A" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="1759" y="-811"/>
<point key="canvasLocation" x="1754" y="-806"/>
</scene>
<!--Split View Controller-->
<scene sceneID="18">
......@@ -293,6 +293,38 @@
<point key="canvasLocation" x="336" y="340"/>
</scene>
</scenes>
<classes>
<class className="EAGLView" superclassName="UIView">
<source key="sourceIdentifier" type="project" relativePath="./Classes/EAGLView.h"/>
</class>
<class className="ModelListController" superclassName="UITableViewController">
<source key="sourceIdentifier" type="project" relativePath="./Classes/ModelListController.h"/>
</class>
<class className="ModelViewController" superclassName="UIViewController">
<source key="sourceIdentifier" type="project" relativePath="./Classes/ModelViewController.h"/>
<relationships>
<relationship kind="action" name="pinch:" candidateClass="UIPinchGestureRecognizer"/>
<relationship kind="action" name="tap:" candidateClass="UITapGestureRecognizer"/>
<relationship kind="outlet" name="detailDescriptionLabel" candidateClass="UILabel"/>
<relationship kind="outlet" name="runStopButton" candidateClass="UIButton"/>
</relationships>
</class>
<class className="ParametersViewController" superclassName="UITableViewController">
<source key="sourceIdentifier" type="project" relativePath="./Classes/ParametersViewController.h"/>
</class>
<class className="PostProcessingViewController" superclassName="UIViewController">
<source key="sourceIdentifier" type="project" relativePath="./Classes/PostProcessingViewController.h"/>
<relationships>
<relationship kind="outlet" name="Intervals" candidateClass="UITextField"/>
<relationship kind="outlet" name="IntervalsType" candidateClass="UIPickerView"/>
<relationship kind="outlet" name="Name" candidateClass="UILabel"/>
<relationship kind="outlet" name="RaiseZ" candidateClass="UISlider"/>
</relationships>
</class>
<class className="SplitViewController" superclassName="UISplitViewController">
<source key="sourceIdentifier" type="project" relativePath="./Classes/SplitViewController.h"/>
</class>
</classes>
<simulatedMetricsContainer key="defaultSimulatedMetrics">
<simulatedStatusBarMetrics key="statusBar" statusBarStyle="blackTranslucent"/>
<simulatedOrientationMetrics key="orientation"/>
......
......@@ -220,6 +220,7 @@
<constraint firstItem="z3z-Xo-nQF" firstAttribute="leading" secondItem="Lh8-gQ-vBl" secondAttribute="leading" constant="20" symbolic="YES" type="default" id="435-s8-4Es"/>
<constraint firstItem="BC5-E7-rEF" firstAttribute="leading" secondItem="Bfu-t9-dAj" secondAttribute="trailing" constant="8" symbolic="YES" type="default" id="6vr-r4-RiJ"/>
<constraint firstItem="xW0-cN-kxL" firstAttribute="centerX" secondItem="z3z-Xo-nQF" secondAttribute="centerX" type="default" id="7xR-YV-WCT"/>
<constraint firstAttribute="trailing" secondItem="z3z-Xo-nQF" secondAttribute="trailing" constant="20" symbolic="YES" type="default" id="DFn-CU-BmX"/>
<constraint firstItem="BC5-E7-rEF" firstAttribute="top" secondItem="Bfu-t9-dAj" secondAttribute="top" type="default" id="LeJ-T9-cOP"/>
<constraint firstItem="xW0-cN-kxL" firstAttribute="top" secondItem="z3z-Xo-nQF" secondAttribute="bottom" constant="8" symbolic="YES" type="default" id="SBU-ke-wyb"/>
<constraint firstItem="BC5-E7-rEF" firstAttribute="leading" secondItem="rgB-dz-6XG" secondAttribute="leading" type="default" id="SEG-ir-r8Z"/>
......@@ -228,8 +229,7 @@
<constraint firstItem="elK-Av-NO2" firstAttribute="baseline" secondItem="rgB-dz-6XG" secondAttribute="baseline" type="default" id="Ves-uS-Wgp"/>
<constraint firstItem="Bfu-t9-dAj" firstAttribute="leading" secondItem="Lh8-gQ-vBl" secondAttribute="leading" constant="20" symbolic="YES" type="default" id="ao2-ou-LYp"/>
<constraint firstItem="elK-Av-NO2" firstAttribute="leading" secondItem="Lh8-gQ-vBl" secondAttribute="leading" constant="20" symbolic="YES" type="default" id="dHF-Hd-Edk"/>
<constraint firstItem="z3z-Xo-nQF" firstAttribute="top" secondItem="Lh8-gQ-vBl" secondAttribute="top" constant="20" symbolic="YES" type="default" id="dhL-em-cgJ"/>
<constraint firstItem="rgB-dz-6XG" firstAttribute="trailing" secondItem="z3z-Xo-nQF" secondAttribute="trailing" type="default" id="iWx-Qa-Nds"/>
<constraint firstItem="z3z-Xo-nQF" firstAttribute="top" secondItem="Lh8-gQ-vBl" secondAttribute="top" constant="53" id="e9a-2b-RgF"/>
<constraint firstItem="Bfu-t9-dAj" firstAttribute="top" secondItem="elK-Av-NO2" secondAttribute="bottom" constant="8" symbolic="YES" type="default" id="pa9-yz-1vW"/>
<constraint firstItem="rgB-dz-6XG" firstAttribute="top" secondItem="xW0-cN-kxL" secondAttribute="bottom" constant="8" symbolic="YES" type="default" id="xgH-ey-y52"/>
<constraint firstAttribute="trailing" secondItem="BC5-E7-rEF" secondAttribute="trailing" constant="20" symbolic="YES" type="default" id="zuO-wq-2vN"/>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment