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