Files
MapLibreParticleLab/platform/macos/app/TimeIntervalTransformer.m

54 lines
1.5 KiB
Objective-C

#import "TimeIntervalTransformer.h"
@implementation TimeIntervalTransformer
+ (Class)transformedValueClass {
return [NSString class];
}
+ (BOOL)allowsReverseTransformation {
return NO;
}
NSString *NumberAndUnitString(NSInteger quantity, NSString *singular, NSString *plural) {
return [NSString stringWithFormat:@"%ld %@", quantity, quantity == 1 ? singular : plural];
}
- (id)transformedValue:(id)value {
if (![value isKindOfClass:[NSValue class]]) {
return nil;
}
NSTimeInterval timeInterval = [value doubleValue];
NSInteger seconds = floor(timeInterval);
NSInteger minutes = floor(seconds / 60);
seconds -= minutes * 60;
NSInteger hours = floor(minutes / 60);
minutes -= hours * 60;
NSInteger days = floor(hours / 24);
hours -= days * 24;
NSInteger weeks = floor(days) / 7;
days -= weeks * 7;
NSMutableArray *components = [NSMutableArray array];
if (seconds || timeInterval < 60) {
[components addObject:NumberAndUnitString(seconds, @"second", @"seconds")];
}
if (minutes) {
[components insertObject:NumberAndUnitString(minutes, @"minute", @"minutes") atIndex:0];
}
if (hours) {
[components insertObject:NumberAndUnitString(hours, @"hour", @"hours") atIndex:0];
}
if (days) {
[components insertObject:NumberAndUnitString(days, @"day", @"days") atIndex:0];
}
if (weeks) {
[components insertObject:NumberAndUnitString(weeks, @"week", @"weeks") atIndex:0];
}
return [components componentsJoinedByString:@", "];
}
@end