annotate foosdk/sdk/foobar2000/helpers-mac/fooTimeFormatter.mm @ 1:20d02a178406 default tip

*: check in everything else yay
author Paper <paper@tflc.us>
date Mon, 05 Jan 2026 02:15:46 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1 //
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
2 // fooTimeFormatter.m
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
3 // foo_abx
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
4 //
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
5 // Created by P on 06/09/2023.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6 //
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
7
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
8 #import "stdafx.h"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9 #import "fooTimeFormatter.h"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
10
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
11 @implementation fooTimeFormatter
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
12
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
13 - (NSString *)stringForObjectValue:(id)obj {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
14 double v = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
15 if ( [obj respondsToSelector: @selector(doubleValue)]) v = [obj doubleValue];
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
16 else if ( [obj respondsToSelector: @selector(longValue)]) v = [obj longValue];
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
17 else if ( [obj respondsToSelector: @selector(intValue)]) v = [obj intValue];
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
18
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
19 unsigned digits = 3;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
20 if ( _digits ) digits = _digits.unsignedIntValue;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
21 return [NSString stringWithUTF8String: pfc::format_time_ex(v, digits)];
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
22 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
23
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
24 - (NSString *)editingStringForObjectValue:(id)obj {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
25 return [self stringForObjectValue: obj];
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
26 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
27 - (BOOL)getObjectValue:(out id _Nullable __autoreleasing *)obj forString:(NSString *)string errorDescription:(out NSString * _Nullable __autoreleasing *)error {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
28 if ( string == nil ) return NO;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
29 try {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
30 double v = pfc::parse_timecode( string.UTF8String );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
31 *obj = [NSNumber numberWithDouble: v];
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
32 return YES;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
33 } catch(...) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
34 return NO;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
35 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
36 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
37 @end