macOS: Implement isEqual for VLCRendererItem
[vlc.git] / modules / gui / macosx / VLCRendererItem.m
1 /*****************************************************************************
2  * VLCRendererItem.m: Wrapper class for vlc_renderer_item_t
3  *****************************************************************************
4  * Copyright (C) 2016 VLC authors and VideoLAN
5  * $Id$
6  *
7  * Authors: Marvin Scholz <epirat07 at gmail dot com>
8  *
9  * This program is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 2 of the License, or
12  * (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software
21  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
22  *****************************************************************************/
23
24 #import "VLCRendererItem.h"
25 #import "VLCStringUtility.h"
26
27 #include <vlc_common.h>
28 #include <vlc_renderer_discovery.h>
29
30 @implementation VLCRendererItem
31
32 - (instancetype)initWithRendererItem:(vlc_renderer_item_t*)item
33 {
34     self = [super init];
35     if (self) {
36         if (!item)
37             [NSException raise:NSInvalidArgumentException
38                         format:@"item must not be nil"];
39         _rendererItem = vlc_renderer_item_hold(item);
40     }
41     return self;
42 }
43
44 - (void)dealloc
45 {
46     vlc_renderer_item_release(_rendererItem);
47     _rendererItem = nil;
48 }
49
50 - (NSString*)name
51 {
52     const char *name = vlc_renderer_item_name(_rendererItem);
53     if (!name)
54         return nil;
55     return [NSString stringWithUTF8String:name];
56 }
57
58 - (NSString*)iconURI
59 {
60     const char *uri = vlc_renderer_item_icon_uri(_rendererItem);
61     if (!uri)
62         return nil;
63     return [NSString stringWithUTF8String:uri];
64 }
65
66 - (int)capabilityFlags
67 {
68     return vlc_renderer_item_flags(_rendererItem);
69 }
70
71 - (bool)isSoutEqualTo:(const char*)sout asOutput:(bool)output
72 {
73     NSString *temp_sout;
74     NSString *prefix;
75     NSString *self_sout;
76
77     prefix = (output) ? @"#" : @"";
78     self_sout = [prefix stringByAppendingString:toNSStr(vlc_renderer_item_sout(_rendererItem))];
79     temp_sout = toNSStr(sout);
80
81     return [temp_sout isEqualToString:self_sout];
82 }
83
84 - (void)setSoutForPlaylist:(playlist_t*)playlist
85 {
86     NSString *sout;
87     const char *item_sout = vlc_renderer_item_sout(_rendererItem);
88
89     if (!playlist || !item_sout)
90         return;
91
92     sout = [[NSString alloc] initWithFormat:@"#%s", item_sout];
93     var_SetString(playlist , "sout", sout.UTF8String);
94 }
95
96 - (BOOL)isEqual:(id)object
97 {
98     if (![object isKindOfClass:[VLCRendererItem class]]) {
99         return NO;
100     }
101     VLCRendererItem *other = object;
102     return (other.rendererItem == self.rendererItem);
103 }
104
105 @end