]> granicus.if.org Git - handbrake/commitdiff
MacGui: use the languages from the audio preferences for built-in presets, this had...
authorDamiano Galassi <damiog@gmail.com>
Wed, 14 Dec 2016 14:15:36 +0000 (15:15 +0100)
committerDamiano Galassi <damiog@gmail.com>
Wed, 14 Dec 2016 14:15:36 +0000 (15:15 +0100)
macosx/HBAudioDefaults.m
macosx/HBController.m
macosx/HBUtilities.h
macosx/HBUtilities.m

index 43e8c858afb2539a8eedcc4c38a20b4cdd48c162..127e2a47a4e9af11e0b50c6f61be12364478621d 100644 (file)
     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;
index a223ef54f2b71a9b52ccdb4f3252365fd2036442..8b55d634347e5d9d5e372a525188a3297d4db431 100644 (file)
         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];
index fb35b4354e1537b15b3ebaf5a8aa80623631a328..af5538fb96a54566974e3cfdfe42fa905b93c263 100644 (file)
@@ -57,6 +57,7 @@ NS_ASSUME_NONNULL_BEGIN
                              bitrate:(int)bitrate
                           videoCodec:(uint32_t)codec;
 
++ (NSString *)isoCodeForNativeLang:(NSString *)language;
 + (NSString *)iso6392CodeFor:(NSString *)language;
 + (NSString *)languageCodeForIso6392Code:(NSString *)language;
 
index de3fa6b9515017464ac5064da6c0d5a206451530..47cb530605155632c98f257a762e74d4fe354737 100644 (file)
     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);