Teach symstore more duplicated DLLs
[LibreOffice.git] / apple_remote / source / RemoteControlContainer.m
blob14ecb36f13361b03d192aad98639e26dd41f2426
1 /* -*- Mode: ObjC; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*****************************************************************************
3  * RemoteControlContainer.m
4  * RemoteControlWrapper
5  *
6  * Created by Martin Kahr on 11.03.06 under a MIT-style license.
7  * Copyright (c) 2006 martinkahr.com. All rights reserved.
8  *
9  * Code modified and adapted to OpenOffice.org
10  * by Eric Bachard on 11.08.2008 under the same License
11  *
12  * Permission is hereby granted, free of charge, to any person obtaining a
13  * copy of this software and associated documentation files (the "Software"),
14  * to deal in the Software without restriction, including without limitation
15  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
16  * and/or sell copies of the Software, and to permit persons to whom the
17  * Software is furnished to do so, subject to the following conditions:
18  *
19  * The above copyright notice and this permission notice shall be included
20  * in all copies or substantial portions of the Software.
21  *
22  * THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
25  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
26  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
27  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
28  * THE SOFTWARE.
29  *
30  *****************************************************************************/
32 #import "RemoteControlContainer.h"
34 @implementation RemoteControlContainer
36 - (id) initWithDelegate: (id) _remoteControlDelegate {
37     if ( (self = [super initWithDelegate:_remoteControlDelegate]) ) {
38         remoteControls = [[NSMutableArray alloc] init];
39 #ifdef DEBUG
40         NSLog( @"Apple Remote: ControlContainer initWithDelegate ok");
41     }
42     else {
43         NSLog( @"Apple Remote: RemoteControlContainer initWithDelegate failed");
44 #endif
45     }
47     return self;
50 - (void) dealloc {
51     [self stopListening: self];
52     [remoteControls release];
53     [super dealloc];
56 - (BOOL) instantiateAndAddRemoteControlDeviceWithClass: (Class) clazz {
57     BOOL toReturn = NO;
58     RemoteControl* remoteControl = [[clazz alloc] initWithDelegate: delegate];
59     if (remoteControl) {
60         [remoteControls addObject: remoteControl];
61         [remoteControl addObserver: self forKeyPath:@"listeningToRemote" options:NSKeyValueObservingOptionNew context:nil];
62         toReturn = YES;
63     }
64 #ifdef DEBUG
65     else {
66         NSLog( @"Apple Remote: ControlContainer instantiateAndAddRemoteControlDeviceWithClass failed");
67         toReturn = NO;
68     }
69 #endif
70     return toReturn;
73 - (unsigned int) count {
74     return [remoteControls count];
77 - (void) reset {
78     [self willChangeValueForKey:@"listeningToRemote"];
79     [self didChangeValueForKey:@"listeningToRemote"];
80 #ifdef DEBUG
81     // debug purpose
82     NSLog( @"Apple Remote: reset... (after listening)");
83 #endif
86 - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
87     [self reset];
88     (void)keyPath;
89     (void)object;
90     (void)change;
91     (void)context;
94 - (void) setListeningToRemote: (BOOL) value {
95     for(NSUInteger i=0; i < [remoteControls count]; i++) {
96         [[remoteControls objectAtIndex: i] setListeningToRemote: value];
97     }
98     if (value && value != [self isListeningToRemote]) [self performSelector:@selector(reset) withObject:nil afterDelay:0.01];
100 - (BOOL) isListeningToRemote {
101     for(NSUInteger i=0; i < [remoteControls count]; i++) {
102         if ([[remoteControls objectAtIndex: i] isListeningToRemote]) {
103             return YES;
104         }
105     }
106     return NO;
109 - (void) startListening: (id) sender {
110 #ifdef DEBUG
111     NSLog(@"Apple Remote: start listening to events... ");
112 #endif
113     for(NSUInteger i=0; i < [remoteControls count]; i++) {
114         [[remoteControls objectAtIndex: i] startListening: sender];
115     }
117 - (void) stopListening: (id) sender {
118 #ifdef DEBUG
119     NSLog(@"Apple Remote: stopListening to events... ");
120 #endif
121     for(NSUInteger i=0; i < [remoteControls count]; i++) {
122         [[remoteControls objectAtIndex: i] stopListening: sender];
123     }
126 - (BOOL) isOpenInExclusiveMode {
127     BOOL mode = YES;
128     for(NSUInteger i=0; i < [remoteControls count]; i++) {
129         mode = mode && ([[remoteControls objectAtIndex: i] isOpenInExclusiveMode]);
130     }
131     return mode;
133 - (void) setOpenInExclusiveMode: (BOOL) value {
134     for(NSUInteger i=0; i < [remoteControls count]; i++) {
135         [[remoteControls objectAtIndex: i] setOpenInExclusiveMode:value];
136     }
139 @end
141 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */