145 lines
5.8 KiB
Mathematica
145 lines
5.8 KiB
Mathematica
|
//
|
||
|
// 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
|