]> granicus.if.org Git - handbrake/commitdiff
Added support to the mac gui for auto-selecting subtitles if the main audio language...
authoreddyg <eddyg.hb@myreflection.org>
Mon, 27 Aug 2007 03:46:08 +0000 (03:46 +0000)
committereddyg <eddyg.hb@myreflection.org>
Mon, 27 Aug 2007 03:46:08 +0000 (03:46 +0000)
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@872 b64f7644-9d1e-0410-96f1-a4d463321fa5

libhb/lang.h
macosx/Controller.mm

index a1cab4d3200f177eea1d8dffab965f3c00b686eb..8b6283b4d42694a18421419aa7d7eb0eb0b607f2 100644 (file)
@@ -224,4 +224,19 @@ static iso639_lang_t * lang_for_code( int code )
     return (iso639_lang_t*) languages;
 }
 
+static iso639_lang_t * lang_for_english( const char * english )
+{
+    iso639_lang_t * lang;
+    
+    for( lang = (iso639_lang_t*) languages; lang->eng_name; lang++ )
+    {
+        if( !strcmp( lang->eng_name, english ) )
+        {
+            return lang;
+        }
+    }
+
+    return (iso639_lang_t*) languages;
+}
+
 #endif
index 4e281b38825076f7076abe2373aed01f23500118..18aa65d1c6a20daed3fab3f6e31db23bd2a9cafc 100644 (file)
@@ -6,6 +6,7 @@
 
 #include "Controller.h"
 #include "a52dec/a52.h"
+#include "lang.h"
 #import "HBOutputPanelController.h"
 #import "HBPreferencesController.h"
 
@@ -1421,7 +1422,25 @@ list = hb_get_titles( fHandle );
 
     job->grayscale = ( [fVidGrayscaleCheck state] == NSOnState );
     
-
+    if ([[NSUserDefaults standardUserDefaults] boolForKey:@"PreferredLanguageSubtitles"] == 1)
+    {
+        /*
+         * This user prefers to have subtitles when the default language
+         * is not their own. So set the native language seleector to their
+         * language.
+         *
+         * Unfortunatly for us the language in the GUI is not in the
+         * right ISO-639-3 format that native_language expects.
+         */
+        NSString * language = [[NSUserDefaults standardUserDefaults] stringForKey:@"DefaultLanguage"];
+        iso639_lang_t *lang_code = lang_for_english( [ language cString ] );
+        if( lang_code )
+        {
+            job->native_language = lang_code->iso639_2;
+        } else {
+            job->native_language = NULL;
+        }
+    }  
 
     /* Subtitle settings */
     job->subtitle = [fSubPopUp indexOfSelectedItem] - 2;
@@ -1869,7 +1888,16 @@ list = hb_get_titles( fHandle );
     [self addAllAudioTracksToPopUp: fAudLang2PopUp];
     /* search for the first instance of our prefs default language for track 1, and set track 2 to "none" */
        NSString * audioSearchPrefix = [[NSUserDefaults standardUserDefaults] stringForKey:@"DefaultLanguage"];
-    [self selectAudioTrackInPopUp: fAudLang1PopUp searchPrefixString: audioSearchPrefix selectIndexIfNotFound: 1];
+    if ([[NSUserDefaults standardUserDefaults] boolForKey:@"PreferredLanguageSubtitles"] != 1)
+    {
+        [self selectAudioTrackInPopUp: fAudLang1PopUp searchPrefixString: audioSearchPrefix selectIndexIfNotFound: 1];
+    } else {
+        /*
+         * We prefer to have subtitles and not change the audio language from the
+         * default (first one).
+         */
+        [self selectAudioTrackInPopUp: fAudLang1PopUp searchPrefixString: NULL selectIndexIfNotFound: 1];
+    }
     [self selectAudioTrackInPopUp: fAudLang2PopUp searchPrefixString: NULL selectIndexIfNotFound: 0];
        
        /* changing the title may have changed the audio channels on offer, */