diff options
Diffstat (limited to 'macosx/HBStateFormatter.m')
-rw-r--r-- | macosx/HBStateFormatter.m | 153 |
1 files changed, 153 insertions, 0 deletions
diff --git a/macosx/HBStateFormatter.m b/macosx/HBStateFormatter.m index 5dadd821d..9d39d29b2 100644 --- a/macosx/HBStateFormatter.m +++ b/macosx/HBStateFormatter.m @@ -5,6 +5,8 @@ It may be used under the terms of the GNU General Public License. */ #import "HBStateFormatter.h" +#import "HBLocalizationUtilities.h" +#include "hb.h" @implementation HBStateFormatter @@ -19,4 +21,155 @@ return self; } +- (NSString *)stateToString:(hb_state_t)s +{ + NSMutableString *string = [NSMutableString string]; + + switch (s.state) + { +#define p s.param.working + + case HB_STATE_SEARCHING: + { + [string appendFormat: + HBKitLocalizedString(@"Searching for start point: %.2f %%", @"HBStateFormatter -> search pass display name"), + 100.0 * p.progress]; + + if (p.seconds > -1) + { + [string appendFormat:HBKitLocalizedString(@" (ETA %02dh%02dm%02ds)", @"HBStateFormatter -> search time format"), p.hours, p.minutes, p.seconds]; + } + + break; + } + + case HB_STATE_WORKING: + { + if (_title) + { + [string appendFormat:HBKitLocalizedString(@"Encoding %@ ", @"HBStateFormatter -> work pass display name"), _title]; + if (_twoLines) + { + [string appendString:@"\n"]; + } + } + + if (_showPassNumber && p.pass_count > -1) + { + if (p.pass_id == HB_PASS_SUBTITLE) + { + [string appendFormat: + HBKitLocalizedString(@"Pass %d %@ of %d, %.2f %%", @"HBStateFormatter -> work pass number format"), + p.pass, + HBKitLocalizedString(@"(subtitle scan)", @"HBStateFormatter -> work pass type format"), + p.pass_count, 100.0 * p.progress]; + } + else + { + [string appendFormat: + HBKitLocalizedString(@"Pass %d of %d, %.2f %%", @"HBStateFormatter -> work pass number format"), + p.pass, p.pass_count, 100.0 * p.progress]; + } + } + + if (p.seconds > -1) + { + if (p.rate_cur > 0.0) + { + [string appendFormat: + HBKitLocalizedString(@" (%.2f fps, avg %.2f fps, ETA %02dh%02dm%02ds)", @"HBStateFormatter -> work time format"), + p.rate_cur, p.rate_avg, p.hours, p.minutes, p.seconds]; + } + else + { + [string appendFormat: + HBKitLocalizedString(@" (ETA %02dh%02dm%02ds)", @"HBStateFormatter -> work time format"), + p.hours, p.minutes, p.seconds]; + } + } + + break; + } +#undef p + + case HB_STATE_MUXING: + { + [string appendString:HBKitLocalizedString(@"Muxing…", @"HBStateFormatter -> pass display name")]; + break; + } + + case HB_STATE_PAUSED: + { + [string appendString:HBKitLocalizedString(@"Paused", @"HBStateFormatter -> pass display name")]; + break; + } + + case HB_STATE_SCANNING: + { +#define p s.param.scanning + if (p.preview_cur) + { + [string appendFormat: + HBKitLocalizedString(@"Scanning title %d of %d, preview %d…", @"HBStateFormatter -> scan pass format"), + p.title_cur, p.title_count, + p.preview_cur]; + } + else + { + [string appendFormat: + HBKitLocalizedString(@"Scanning title %d of %d…", @"HBStateFormatter -> scan pass format"), + p.title_cur, p.title_count]; + } +#undef p + break; + } + + default: + break; + } + + return string; +} + +- (float)stateToPercentComplete:(hb_state_t)s +{ + float progress = 0; + + switch (s.state) + { + case HB_STATE_SEARCHING: + case HB_STATE_WORKING: + case HB_STATE_PAUSED: +#define p s.param.working + progress = (p.progress + p.pass - 1) / p.pass_count; +#undef p + + break; + + case HB_STATE_SCANNING: +#define p s.param.scanning + progress = p.progress; +#undef p + break; + + case HB_STATE_MUXING: + progress = 1; + break; + + default: + break; + } + + if (progress < 0) + { + progress = 0; + } + else if (progress > 1) + { + progress = 1; + } + + return progress; +} + @end |