return fallbacks;
}
-- (NSString *)isoCodeForNativeLang:(NSString *)language
-{
- const iso639_lang_t *lang = lang_get_next(NULL);
- for (lang = lang_get_next(lang); lang != NULL; lang = lang_get_next(lang))
- {
- NSString *nativeLanguage = strlen(lang->native_name) ? @(lang->native_name) : @(lang->eng_name);
-
- if ([language isEqualToString:nativeLanguage])
- {
- return @(lang->iso639_2);
- }
- }
-
- return nil;
-}
-
#pragma mark - HBPresetCoding
- (void)applyPreset:(HBPreset *)preset
}
self.trackSelectionLanguages = [NSMutableArray arrayWithArray:preset[@"AudioLanguageList"]];
- // If the preset is one of the built in, set some additional options
- if ([preset[@"Type"] intValue] == 0)
- {
- if (self.trackSelectionLanguages.count == 0 || [self.trackSelectionLanguages.firstObject isEqualToString:@"und"])
- {
- if ([[NSUserDefaults standardUserDefaults] stringForKey:@"AlternateLanguage"])
- {
- NSString *lang = [self isoCodeForNativeLang:[[NSUserDefaults standardUserDefaults] stringForKey:@"AlternateLanguage"]];
- if (lang)
- {
- [self.trackSelectionLanguages insertObject:lang atIndex:0];
- }
- }
- if ([[NSUserDefaults standardUserDefaults] stringForKey:@"DefaultLanguage"])
- {
- NSString *lang = [self isoCodeForNativeLang:[[NSUserDefaults standardUserDefaults] stringForKey:@"DefaultLanguage"]];
- if (lang)
- {
- [self.trackSelectionLanguages insertObject:lang atIndex:0];
- }
- }
- }
- }
-
// Auto Passthru settings
// first, disable all encoders
self.allowAACPassthru = NO;
fQueueController.controller = self;
presetManager = manager;
- _currentPreset = manager.defaultPreset;
+ if (manager.defaultPreset.isBuiltIn)
+ {
+ _currentPreset = [self presetByAddingDefaultLanguages:manager.defaultPreset];
+ }
+ else
+ {
+ _currentPreset = manager.defaultPreset;
+ }
_scanSpecificTitleIdx = 1;
}
_currentPreset = currentPreset;
}
+
+ if (!(self.undoManager.isUndoing || self.undoManager.isRedoing))
+ {
+ // If the preset is one of the built in, set some additional options
+ if (_currentPreset.isBuiltIn)
+ {
+ _currentPreset = [self presetByAddingDefaultLanguages:_currentPreset];
+ }
+ }
+}
+
+- (HBPreset *)presetByAddingDefaultLanguages:(HBPreset *)preset
+{
+ HBMutablePreset *mutablePreset = [preset mutableCopy];
+ NSMutableArray<NSString *> *languages = [NSMutableArray array];
+
+ if ([[NSUserDefaults standardUserDefaults] stringForKey:@"AlternateLanguage"])
+ {
+ NSString *lang = [HBUtilities isoCodeForNativeLang:[[NSUserDefaults standardUserDefaults] stringForKey:@"AlternateLanguage"]];
+ if (lang)
+ {
+ [languages insertObject:lang atIndex:0];
+ }
+ }
+
+ if ([[NSUserDefaults standardUserDefaults] stringForKey:@"DefaultLanguage"])
+ {
+ NSString *lang = [HBUtilities isoCodeForNativeLang:[[NSUserDefaults standardUserDefaults] stringForKey:@"DefaultLanguage"]];
+ if (lang)
+ {
+ [languages insertObject:lang atIndex:0];
+ }
+ }
+
+ mutablePreset[@"AudioLanguageList"] = languages;
+
+ return mutablePreset;
}
- (void)setEdited:(BOOL)edited
[self removeJobObservers];
// Apply the preset to the current job
- [self.job applyPreset:preset];
+ [self.job applyPreset:self.currentPreset];
// If Auto Naming is on, update the destination
[self updateFileName];
bitrate:(int)bitrate
videoCodec:(uint32_t)codec;
++ (NSString *)isoCodeForNativeLang:(NSString *)language;
+ (NSString *)iso6392CodeFor:(NSString *)language;
+ (NSString *)languageCodeForIso6392Code:(NSString *)language;
return [name copy];
}
++ (NSString *)isoCodeForNativeLang:(NSString *)language
+{
+ const iso639_lang_t *lang = lang_get_next(NULL);
+ for (lang = lang_get_next(lang); lang != NULL; lang = lang_get_next(lang))
+ {
+ NSString *nativeLanguage = strlen(lang->native_name) ? @(lang->native_name) : @(lang->eng_name);
+
+ if ([language isEqualToString:nativeLanguage])
+ {
+ return @(lang->iso639_2);
+ }
+ }
+
+ return nil;
+}
+
+ (NSString *)iso6392CodeFor:(NSString *)aLanguage
{
iso639_lang_t *lang = lang_for_english(aLanguage.UTF8String);