diff options
Diffstat (limited to 'device_test/AppleRemotePaneController.m')
| -rw-r--r-- | device_test/AppleRemotePaneController.m | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/device_test/AppleRemotePaneController.m b/device_test/AppleRemotePaneController.m new file mode 100644 index 0000000..7cbaf52 --- /dev/null +++ b/device_test/AppleRemotePaneController.m @@ -0,0 +1,145 @@ +/* + * Copyright (c) 2007 Dave Dribin + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#import "AppleRemotePaneController.h" +#import "RemoteFeedbackView.h" + +@implementation AppleRemotePaneController + +- (void) awakeFromNib; +{ + [self willChangeValueForKey: @"remote"]; + mRemote = [[DDHidAppleRemote firstRemote] retain]; + [self didChangeValueForKey: @"remote"]; + + [mRemote setDelegate: self]; + [self setOpenInExclusiveMode: YES]; +} + +//=========================================================== +// dealloc +//=========================================================== +- (void) dealloc +{ + [mRemote release]; + + mRemote = nil; + [super dealloc]; +} + +- (DDHidAppleRemote *) remote; +{ + return mRemote; +} + +- (IBAction) toggleListening: (id) sender; +{ + NSAssert(mRemote != nil, @"Remote is nil"); + + if ([mRemote isListening]) + { + [mRemote stopListening]; + [mStartStopButton setTitle: @"Start Listening"]; + } + else + { + [mRemote setListenInExclusiveMode: mOpenInExclusiveMode]; + [mRemote startListening]; + [mStartStopButton setTitle: @"Stop Listening"]; + } +} + +//=========================================================== +// openInExclusiveMode +//=========================================================== +- (BOOL) openInExclusiveMode +{ + return mOpenInExclusiveMode; +} + +- (void) setOpenInExclusiveMode: (BOOL) flag +{ + mOpenInExclusiveMode = flag; +} + +- (void) ddhidAppleRemoteButton: (DDHidAppleRemoteEventIdentifier) buttonIdentifier + pressedDown: (BOOL) pressedDown; +{ + NSString * buttonName= nil; + NSString * pressed = @""; + + switch(buttonIdentifier) + { + case kDDHidRemoteButtonVolume_Plus: + buttonName = @"Volume up"; + if (pressedDown) pressed = @"(down)"; else pressed = @"(up)"; + break; + case kDDHidRemoteButtonVolume_Minus: + buttonName = @"Volume down"; + if (pressedDown) pressed = @"(down)"; else pressed = @"(up)"; + break; + case kDDHidRemoteButtonMenu: + buttonName = @"Menu"; + break; + case kDDHidRemoteButtonPlay: + buttonName = @"Play"; + break; + case kDDHidRemoteButtonRight: + buttonName = @"Right"; + break; + case kDDHidRemoteButtonLeft: + buttonName = @"Left"; + break; + case kDDHidRemoteButtonRight_Hold: + buttonName = @"Right holding"; + if (pressedDown) pressed = @"(down)"; else pressed = @"(up)"; + break; + case kDDHidRemoteButtonLeft_Hold: + buttonName = @"Left holding"; + if (pressedDown) pressed = @"(down)"; else pressed = @"(up)"; + break; + case kDDHidRemoteButtonPlay_Sleep: + buttonName = @"Play (sleep mode)"; + break; + case kDDHidRemoteButtonMenu_Hold: + buttonName = @"Menu (long)"; + break; + case kDDHidRemoteControl_Switched: + buttonName = @"Remote Control Switched"; + break; + case kDDHidRemoteControl_Paired: + buttonName = @"Remote Control Paired"; + break; + default: + NSLog(@"Unmapped event for button %d", buttonIdentifier); + break; + } + [mFeedbackText setStringValue:[NSString stringWithFormat:@"%@ %@", + buttonName, pressed]]; + + [mFeedbackView ddhidAppleRemoteButton: buttonIdentifier + pressedDown: pressedDown]; +} + +@end |
