Mercurial > hg > soniczoomios
view QuestionnaireViewController.mm @ 16:fb2ef16dd013
Split alert views. Settled on using portrait mode.
author | Robert Tubb <rt300@eecs.qmul.ac.uk> |
---|---|
date | Thu, 17 Jan 2013 18:21:48 +0000 |
parents | |
children | 650589cac373 |
line wrap: on
line source
// // QuestionnaireViewController.m // oscSenderExample // // Created by Robert Tubb on 16/01/2013. // // #import "QuestionnaireViewController.h" #include "testApp.h" @interface QuestionnaireViewController () // the "model" is an array of questions and a bunch of answers @property (strong, nonatomic) NSArray * questionArray; @property (strong, nonatomic) NSMutableArray * answerArray; @property (nonatomic) NSInteger currentQuestionIndex; @property (nonatomic) id theOFAppRef; /* */ @end @implementation QuestionnaireViewController @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 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]; } } - (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 // DUZZNT WERK 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",questionIndex+1]; self.titleText.text = qtitle; self.questionText.text = [self.questionArray objectAtIndex:questionIndex]; // if question already answered show that self.segControl.selectedSegmentIndex = (NSInteger)[self.answerArray objectAtIndex:self.currentQuestionIndex]; } //---------------------------------------------------------------- - (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]; } //---------------------------------------------------------------- - (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]]; } NSLog(@"Answer count: %d", [self.answerArray count]); } @end // end implementation