Fixed language menu.
This commit is contained in:
parent
b7e3c49648
commit
e9a43c4872
1 changed files with 26 additions and 12 deletions
|
@ -40,38 +40,52 @@
|
||||||
|
|
||||||
- (void)initLanugageMenu
|
- (void)initLanugageMenu
|
||||||
{
|
{
|
||||||
NSInteger start = [[NSUserDefaults standardUserDefaults] integerForKey:@"languageVoiceIndex"];
|
NSString *startName = [[NSUserDefaults standardUserDefaults] stringForKey:@"languageVoiceName"];
|
||||||
|
NSMenuItem *startItem = nil;
|
||||||
|
|
||||||
NSLocale *currentLocale = [NSLocale currentLocale];
|
NSLocale *currentLocale = [NSLocale currentLocale];
|
||||||
NSArray *voices = [NSSpeechSynthesizer availableVoices];
|
NSArray *voices = [NSSpeechSynthesizer availableVoices];
|
||||||
|
|
||||||
[self.languageMenu removeAllItems];
|
[self.languageMenu removeAllItems];
|
||||||
|
|
||||||
for (NSInteger i = 0; i < [voices count]; i++)
|
for (NSInteger i = 0; i < [voices count]; i++)
|
||||||
{
|
{
|
||||||
NSDictionary *dict = [NSSpeechSynthesizer attributesForVoice:[voices objectAtIndex:i]];
|
NSDictionary *dict = [NSSpeechSynthesizer attributesForVoice:[voices objectAtIndex:i]];
|
||||||
NSString *country = [currentLocale displayNameForKey:NSLocaleIdentifier value:[dict objectForKey:@"VoiceLocaleIdentifier"]];
|
NSString *countryString = [currentLocale displayNameForKey:NSLocaleIdentifier value:[dict objectForKey:@"VoiceLocaleIdentifier"]];
|
||||||
|
|
||||||
NSMenuItem *item = [[NSMenuItem alloc] initWithTitle:[NSString stringWithFormat:@"%@ - %@", country, [dict objectForKey:@"VoiceName"]] action:@selector(changeLanguage:) keyEquivalent:@""];
|
NSMenuItem *country = [self.languageMenu itemWithTitle:countryString];
|
||||||
|
if (!country) {
|
||||||
|
country = [[NSMenuItem alloc] initWithTitle:countryString action:nil keyEquivalent:@""];
|
||||||
|
NSMenu *submenu = [[NSMenu alloc] init];
|
||||||
|
[country setSubmenu:submenu];
|
||||||
|
[self.languageMenu addItem:country];
|
||||||
|
}
|
||||||
|
|
||||||
|
NSMenuItem *item = [[NSMenuItem alloc] initWithTitle:[dict objectForKey:@"VoiceName"] action:@selector(changeLanguage:) keyEquivalent:@""];
|
||||||
item.tag = i;
|
item.tag = i;
|
||||||
[self.languageMenu addItem:item];
|
[[country submenu] addItem:item];
|
||||||
|
|
||||||
if (![[NSUserDefaults standardUserDefaults] objectForKey:@"languageVoiceIndex"] && [[dict objectForKey:@"VoiceName"] isEqualToString:@"Alex"])
|
if ((![[NSUserDefaults standardUserDefaults] objectForKey:@"languageVoiceIndex"] && [[dict objectForKey:@"VoiceName"] isEqualToString:@"Alex"]) || [item.title isEqualToString:startName])
|
||||||
{
|
{
|
||||||
start = i;
|
startItem = item;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[self changeLanguage:[self.languageMenu itemAtIndex:start]];
|
[self changeLanguage:startItem];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)changeLanguage:(id)sender
|
- (void)changeLanguage:(id)sender
|
||||||
{
|
{
|
||||||
NSInteger index = [(NSMenuItem *)sender tag];
|
NSMenuItem *item = (NSMenuItem *)sender;
|
||||||
NSString *voice = [[NSSpeechSynthesizer attributesForVoice:[[NSSpeechSynthesizer availableVoices] objectAtIndex:index]] objectForKey:@"VoiceIdentifier"];
|
|
||||||
[synth setVoice:voice];
|
|
||||||
|
|
||||||
[[NSUserDefaults standardUserDefaults] setInteger:index forKey:@"languageVoiceIndex"];
|
// Only if the user doesn't chose the same as it already was.
|
||||||
[self.languageMenuPopupButton selectItemAtIndex:index];
|
if (item.menu != self.languageMenu) {
|
||||||
|
NSString *voice = [[NSSpeechSynthesizer attributesForVoice:[[NSSpeechSynthesizer availableVoices] objectAtIndex:item.tag]] objectForKey:@"VoiceIdentifier"];
|
||||||
|
[synth setVoice:voice];
|
||||||
|
|
||||||
|
[[NSUserDefaults standardUserDefaults] setObject:item.title forKey:@"languageVoiceName"];
|
||||||
|
[self.languageMenuPopupButton setTitle:item.title];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)applicationWillTerminate:(NSNotification *)aNotification {
|
- (void)applicationWillTerminate:(NSNotification *)aNotification {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue