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