aboutsummaryrefslogtreecommitdiffstats
path: root/device_test/AppleRemotePaneController.m
diff options
context:
space:
mode:
Diffstat (limited to 'device_test/AppleRemotePaneController.m')
-rw-r--r--device_test/AppleRemotePaneController.m145
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