a2c705bec16812348f960f6864c5d6ac803ab82b
[vlc.git] / extras / 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     NSLog(@"%@", value);
89     if( ![value isKindOfClass:[NSURL class]] || ![value isFileURL] )
90         return @"";
91
92     return [value path];
93 }
94
95 @end
96