Mercurial > hg > soniczoomios
view QuestionnaireViewController.mm @ 21:650589cac373
Picker view stuff started.
author | Robert Tubb <rt300@eecs.qmul.ac.uk> |
---|---|
date | Fri, 18 Jan 2013 15:48:33 +0000 |
parents | fb2ef16dd013 |
children | 8c0783739337 |
line wrap: on
line source
// // QuestionnaireViewController.m // oscSenderExample // // Created by Robert Tubb on 16/01/2013. // // #import "QuestionnaireViewController.h" #include "testApp.h" #pragma mark - #pragma mark QuestionnaireViewController @interface QuestionnaireViewController () // the "model" is an array of questions and a bunch of answers @property (strong, nonatomic) NSArray * questionArray; @property (strong, nonatomic) NSArray * answerTypeArray; @property (strong, nonatomic) NSMutableArray * answerArray; @property (nonatomic) NSInteger currentQuestionIndex; @property (nonatomic, assign) id theOFAppRef; /* */ @end @implementation QuestionnaireViewController @synthesize picker; @synthesize agreeAnswer; @synthesize agreeType; @synthesize answerTypeArray; @synthesize nextButton = _nextButton; @synthesize segControl = _segControl; //---------------------------------------------------------------- - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization [self populateQuestionArray ]; [self populateAnswerArray]; } return self; } - (void)setAppRef:(id)theOFApp{ self.theOFAppRef = theOFApp; } //---------------------------------------------------------------- - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view from its nib. self.currentQuestionIndex = 0; // load question 1 self.agreeAnswer = [[NSArray alloc] initWithObjects: @"Strongly disagree", @"Disagree", @"Neither", @"Agree", @"Strongly agree", nil]; self.interfaceAnswer = [[NSArray alloc] initWithObjects: @"Definitely Sliders", @"Maybe Sliders", @"Neither", @"Maybe Zoomer", @"Definitely Zoomer", nil]; agreeType = YES; [self loadQuestion:self.currentQuestionIndex]; } //---------------------------------------------------------------- - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } //---------------------------------------------------------------- - (void)dealloc { [_questionText release]; [_titleText release]; [_finishButton release]; [_nextButton release]; [_segControl release]; [super dealloc]; } //---------------------------------------------------------------- - (void)viewDidUnload { [self setQuestionText:nil]; [self setTitleText:nil]; [self setFinishButton:nil]; [self setNextButton:nil]; [self setSegControl:nil]; [super viewDidUnload]; } //---------------------------------------------------------------- - (IBAction)answerWasSelected:(id)sender { // look at property? } //---------------------------------------------------------------- -(IBAction)hide:(id)sender{ // c++ call with NSArray argument?? ((testApp *)self.theOFAppRef)->questionnaireHidden(self.answerArray); self.view.hidden = YES; } //---------------------------------------------------------------- -(IBAction)show:(id)sender{ self.view.hidden = NO; } //---------------------------------------------------------------- - (IBAction)nextQuestionPressed:(id)sender { // save answer ? no button did that hopefully // if last question show thanks // else go to next self.currentQuestionIndex++; if(self.currentQuestionIndex >= [self.questionArray count]){ [self showThanks]; }else{ [self loadQuestion:self.currentQuestionIndex]; } } //---------------------------------------------------------------- - (IBAction)previousQuestionPressed:(id)sender { self.currentQuestionIndex--; if(self.currentQuestionIndex < 0){ // nothing self.currentQuestionIndex = 0; }else{ [self loadQuestion:self.currentQuestionIndex]; } } //---------------------------------------------------------------- // NAH - (IBAction)answerSelected:(id)sender { // nice short lines of code. [self.answerArray replaceObjectAtIndex:self.currentQuestionIndex withObject:[NSNumber numberWithInteger:self.segControl.selectedSegmentIndex]]; // chek wot we just rote NSLog(@"%@",[self.answerArray objectAtIndex:self.currentQuestionIndex]); } //---------------------------------------------------------------- - (void)showThanks{ // hide next question button self.nextButton.hidden = YES; // hide selector self.segControl.hidden = YES; self.titleText.text = @"Thank you!"; self.questionText.text = @"Thanks for helping science help you. Visit the study website to keep abreast of exciting events."; } //---------------------------------------------------------------- - (void)loadQuestion:(NSInteger)questionIndex { // populate text fields with question NSString *qtitle; qtitle = [@"Question " stringByAppendingFormat:@"%d / 16",questionIndex+1]; self.titleText.text = qtitle; self.questionText.text = [self.questionArray objectAtIndex:questionIndex]; // if question already answered show that NSInteger answerInt = [[self.answerArray objectAtIndex:questionIndex] integerValue]; // set different answer type agreeType = [answerTypeArray objectAtIndex:questionIndex]; // then refresh picker view content [picker reloadComponent:0]; // DUZZNT WERK if(answerInt==-1){ // select "neither" (2) NSLog(@"No answer answerInt %d", answerInt); [picker selectRow:2 inComponent:0 animated:YES]; }else{ // select previous answer NSLog(@"Prev answer answerInt %d", answerInt); [picker selectRow:answerInt inComponent:0 animated:YES]; } } //---------------------------------------------------------------- - (void)populateQuestionArray{ self.questionArray = [[NSArray alloc] initWithObjects: @"I am familiar with music software and synthesisers.", @"The best way to get a feel for the possibilities of the synth was with:", @"Interesting sounds could be discovered more quickly as a result of using:", @"A sound could be fine tuned more easily using:", @"The correspondence between the sliders and the grid was understandable.", @"The interface that felt more familiar was:", @"Scrolling a greater distance the zoom grid seemed to correspond to larger difference in the sound.", @"The ability to see other presets on the grid was useful.", @"The range of sounds was too limited to be able to judge the eventual usefulness of the interface.", @"The interface better for generating new ideas was", @"The interface better for live performance would be:", @"A specific type of sound could be found more quickly using:", @"I felt more in control when using:", @"The Zoomer was an improvement on just using a randomiser.", @"The combination of Zoomer and Sliders was more useful than either individually.", @"Overall, I preferred using:", nil]; self.answerTypeArray = [[NSArray alloc] initWithObjects: YES, NO, NO, NO, YES, NO, YES, YES, YES, NO, NO, NO, NO, YES, YES, NO, nil] } //---------------------------------------------------------------- - (void)populateAnswerArray{ int N = [self.questionArray count]; //[self.answerArray initWithCapacity:N]; // necessary? self.answerArray = [[NSMutableArray alloc] initWithCapacity:N]; // set the number to what? for(int i=0;i<N;i++){ [self.answerArray addObject:[NSNumber numberWithInt:-1]]; } } //---------------------------------------------------------------- #pragma mark - #pragma mark PickerView DataSource - (NSInteger)numberOfComponentsInPickerView: (UIPickerView *)pickerView { return 1; } - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { return [agreeAnswer count]; // always 5 } - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component { if(agreeType){ return [agreeAnswer objectAtIndex:row]; }else{ return [interfaceAnswer objectAtIndex:row]; } } #pragma mark - #pragma mark PickerView Delegate -(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { // set question answerArray [self.answerArray replaceObjectAtIndex:self.currentQuestionIndex withObject:[NSNumber numberWithInteger:row]]; // chek wot we just rote NSLog(@"%@",[self.answerArray objectAtIndex:self.currentQuestionIndex]); /* float rate = [[exchangeRates objectAtIndex:row] floatValue]; float dollars = [dollarText.text floatValue]; float result = dollars * rate; NSString *resultString = [[NSString alloc] initWithFormat: @"%.2f USD = %.2f %@", dollars, result, [countryNames objectAtIndex:row]]; resultLabel.text = resultString; */ } @end // end implementation //---------------------------------------------------------------- //----------------------------------------------------------------