Mercurial > hg > soniczoomios
diff 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 diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/QuestionnaireViewController.mm Thu Jan 17 18:21:48 2013 +0000 @@ -0,0 +1,195 @@ +// +// 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 \ No newline at end of file