]> git.sesse.net Git - vlc/blob - projects/macosx/vlc_app/Sources/VLCValueTransformer.m
41133aa35e71433ed09f1ebe4dff1a0396187640
[vlc] / projects / macosx / vlc_app / Sources / VLCValueTransformer.m
1 //
2 //  VLCValueTransformer.m
3 //  VLC
4 //
5 //  Created by Pierre d'Herbemont on 12/29/07.
6 //  Copyright 2007 __MyCompanyName__. All rights reserved.
7 //
8
9 #import "VLCValueTransformer.h"
10
11
12 @implementation VLCFloat10000FoldTransformer
13
14 + (Class)transformedValueClass
15 {
16     return [NSNumber class];
17 }
18
19 + (BOOL)allowsReverseTransformation
20 {
21     return YES;
22 }
23
24 - (id)transformedValue:(id)value
25 {
26     if( !value ) return nil;
27  
28     if(![value respondsToSelector: @selector(floatValue)])
29     {
30         [NSException raise: NSInternalInconsistencyException
31                     format: @"Value (%@) does not respond to -floatValue.",
32         [value class]];
33         return nil;
34     }
35  
36     return [NSNumber numberWithFloat: [value floatValue]*10000.];
37 }
38
39 - (id)reverseTransformedValue:(id)value
40 {
41     if( !value ) return nil;
42  
43     if(![value respondsToSelector: @selector(floatValue)])
44     {
45         [NSException raise: NSInternalInconsistencyException
46                     format: @"Value (%@) does not respond to -floatValue.",
47         [value class]];
48         return nil;
49     }
50  
51     return [NSNumber numberWithFloat: [value floatValue]/10000.];
52 }
53 @end
54
55 @implementation VLCNonNilAsBoolTransformer
56
57 + (Class)transformedValueClass
58 {
59     return [NSObject class];
60 }
61
62 + (BOOL)allowsReverseTransformation
63 {
64     return NO;
65 }
66
67 - (NSNumber *)transformedValue:(id)value
68 {
69     return [NSNumber numberWithBool: !!value];
70 }
71
72 @end
73
74 @implementation VLCURLToRepresentedFileNameTransformer
75
76 + (Class)transformedValueClass
77 {
78     return [NSURL class];
79 }
80
81 + (BOOL)allowsReverseTransformation
82 {
83     return NO;
84 }
85
86 - (NSString *)transformedValue:(id)value
87 {
88     if( ![value isKindOfClass:[NSURL class]] || ![value isFileURL] )
89         return @"";
90
91     return [value path];
92 }
93
94 @end
95
96 @implementation VLCSelectionIndexToDescriptionTransformer
97
98 + (Class)transformedValueClass
99 {
100     return [NSNumber class];
101 }
102
103 + (BOOL)allowsReverseTransformation
104 {
105     return NO;
106 }
107
108 - (NSString *)transformedValue:(id)value
109 {
110     if( ![value isKindOfClass:[NSNumber class]])
111         return @"";
112
113     return [value intValue] == NSNotFound ? @"" : [NSString stringWithFormat:@"%@ of ", value];
114 }
115
116 @end
117