Rotary-Gecko/Code/Rotary_Player/Rotary Player/MGMAppDelegate.m

145 lines
5.8 KiB
Mathematica
Raw Normal View History

//
// MGMAppDelegate.m
// Rotary Player
//
// Created by Mr. Gecko's Media (James Coleman) on 1/28/14.
// No Copyright Claimed. Public Domain.
//
#import "MGMAppDelegate.h"
#import "MGMSerial.h"
#import "MGMSound.h"
NSString * const serialPort = @"/dev/cu.RotaryGecko-SPPDev";
NSString * const MGMSong1 = @"song1";
NSString * const MGMSong2 = @"song2";
NSString * const MGMSong3 = @"song3";
NSString * const MGMSong4 = @"song4";
NSString * const MGMSong5 = @"song5";
NSString * const MGMSong6 = @"song6";
NSString * const MGMSong7 = @"song7";
NSString * const MGMSong8 = @"song8";
NSString * const MGMSong9 = @"song9";
@implementation MGMAppDelegate
- (void)awakeFromNib {
MGMSerialPorts *ports = [MGMSerialPorts sharedSerialPorts];
NSLog(@"%@", [ports serialPorts]);
NSUserDefaults *settings = [NSUserDefaults standardUserDefaults];
if ([settings objectForKey:MGMSong1]!=nil)
[song1Field setStringValue:[[[settings objectForKey:MGMSong1] lastPathComponent] stringByDeletingPathExtension]];
if ([settings objectForKey:MGMSong2]!=nil)
[song2Field setStringValue:[[[settings objectForKey:MGMSong2] lastPathComponent] stringByDeletingPathExtension]];
if ([settings objectForKey:MGMSong3]!=nil)
[song3Field setStringValue:[[[settings objectForKey:MGMSong3] lastPathComponent] stringByDeletingPathExtension]];
if ([settings objectForKey:MGMSong4]!=nil)
[song4Field setStringValue:[[[settings objectForKey:MGMSong4] lastPathComponent] stringByDeletingPathExtension]];
if ([settings objectForKey:MGMSong5]!=nil)
[song5Field setStringValue:[[[settings objectForKey:MGMSong5] lastPathComponent] stringByDeletingPathExtension]];
if ([settings objectForKey:MGMSong6]!=nil)
[song6Field setStringValue:[[[settings objectForKey:MGMSong6] lastPathComponent] stringByDeletingPathExtension]];
if ([settings objectForKey:MGMSong7]!=nil)
[song7Field setStringValue:[[[settings objectForKey:MGMSong7] lastPathComponent] stringByDeletingPathExtension]];
if ([settings objectForKey:MGMSong8]!=nil)
[song8Field setStringValue:[[[settings objectForKey:MGMSong8] lastPathComponent] stringByDeletingPathExtension]];
if ([settings objectForKey:MGMSong9]!=nil)
[song9Field setStringValue:[[[settings objectForKey:MGMSong9] lastPathComponent] stringByDeletingPathExtension]];
}
- (void)dealloc {
[super dealloc];
}
- (IBAction)connect:(id)sender {
MGMSerialPort *port = [[MGMSerialPorts sharedSerialPorts] portForPath:serialPort];
[port setSpeed:9600];
if ([port open]) {
[statusField setStringValue:@"Connected"];
} else {
[statusField setStringValue:@"Unable to Connect"];
}
[port setDelegate:self];
NSLog(@"%@", port);
[port readDataInBackgroundNewLine];
}
- (IBAction)disconnect:(id)sender {
[[[MGMSerialPorts sharedSerialPorts] portForPath:serialPort] close];
[statusField setStringValue:@"Disconnected"];
}
- (void)serial:(MGMSerialPort *)thePort read:(NSData *)theBytes; {
NSString *info = [[[NSString alloc] initWithData:theBytes encoding:NSUTF8StringEncoding] autorelease];
[lastInfoField setStringValue:info];
NSUserDefaults *settings = [NSUserDefaults standardUserDefaults];
if ([info hasPrefix:@"Dialed: "]) {
NSString *number = [info substringFromIndex:8];
NSString *song = [NSString stringWithFormat:@"song%@", number];
if ([settings objectForKey:song]!=nil) {
if (songPlaying!=nil) {
[songPlaying stop];
[songPlaying release];
}
songPlaying = [[MGMSound alloc] initWithContentsOfFile:[settings objectForKey:song]];
[songPlaying setDelegate:self];
[songPlaying play];
}
NSLog(@"%@", info);
} else if ([info hasPrefix:@"Hook: "]) {
NSString *status = [info substringFromIndex:6];
if ([status isEqual:@"0"] && songPlaying!=nil) {
[songPlaying stop];
[songPlaying release];
songPlaying = nil;
}
NSLog(@"%@", info);
}
}
- (void)soundDidFinishPlaying:(MGMSound *)theSound {
[songPlaying release];
songPlaying = nil;
}
- (IBAction)chooseSong:(id)sender {
NSUserDefaults *settings = [NSUserDefaults standardUserDefaults];
NSOpenPanel *panel = [NSOpenPanel openPanel];
[panel setCanChooseDirectories:NO];
[panel setCanChooseFiles:YES];
long returnCode = [panel runModal];
if (returnCode==NSOKButton) {
NSString *path = [[panel URL] path];
if ([[sender identifier] isEqual:@"1"]) {
[song1Field setStringValue:[[path lastPathComponent] stringByDeletingPathExtension]];
[settings setObject:path forKey:MGMSong1];
} else if ([[sender identifier] isEqual:@"2"]) {
[song2Field setStringValue:[[path lastPathComponent] stringByDeletingPathExtension]];
[settings setObject:path forKey:MGMSong2];
} else if ([[sender identifier] isEqual:@"3"]) {
[song3Field setStringValue:[[path lastPathComponent] stringByDeletingPathExtension]];
[settings setObject:path forKey:MGMSong3];
} else if ([[sender identifier] isEqual:@"4"]) {
[song4Field setStringValue:[[path lastPathComponent] stringByDeletingPathExtension]];
[settings setObject:path forKey:MGMSong4];
} else if ([[sender identifier] isEqual:@"5"]) {
[song5Field setStringValue:[[path lastPathComponent] stringByDeletingPathExtension]];
[settings setObject:path forKey:MGMSong5];
} else if ([[sender identifier] isEqual:@"6"]) {
[song6Field setStringValue:[[path lastPathComponent] stringByDeletingPathExtension]];
[settings setObject:path forKey:MGMSong6];
} else if ([[sender identifier] isEqual:@"7"]) {
[song7Field setStringValue:[[path lastPathComponent] stringByDeletingPathExtension]];
[settings setObject:path forKey:MGMSong7];
} else if ([[sender identifier] isEqual:@"8"]) {
[song8Field setStringValue:[[path lastPathComponent] stringByDeletingPathExtension]];
[settings setObject:path forKey:MGMSong8];
} else if ([[sender identifier] isEqual:@"9"]) {
[song9Field setStringValue:[[path lastPathComponent] stringByDeletingPathExtension]];
[settings setObject:path forKey:MGMSong9];
}
}
}
@end