diff --git a/Battery Time Remaining/AppDelegate.h b/Battery Time Remaining/AppDelegate.h index 801d18b..fa0ad64 100644 --- a/Battery Time Remaining/AppDelegate.h +++ b/Battery Time Remaining/AppDelegate.h @@ -22,6 +22,7 @@ #define kBTRMenuEnergySaverSetting 9 #define kBTRMenuUpdater 10 #define kBTRMenuQuitKey 11 +#define kBTRMenuFahrenheit 12 #endif diff --git a/Battery Time Remaining/AppDelegate.m b/Battery Time Remaining/AppDelegate.m index 64f6c28..1732ca2 100644 --- a/Battery Time Remaining/AppDelegate.m +++ b/Battery Time Remaining/AppDelegate.m @@ -39,10 +39,12 @@ @interface AppDelegate () BOOL isOptionKeyPressed; BOOL isCapacityWarning; BOOL showParenthesis; + BOOL displayFahrenheit; } - (void)cacheBatteryIcon; - (NSImage *)loadBatteryIconNamed:(NSString *)iconName; +- (double)convertCelsiusToFahrenheit:(double)celsius; @end @@ -123,11 +125,19 @@ - (void)applicationDidFinishLaunching:(NSNotification *)aNotification parenthesisSubmenuItem.target = self; showParenthesis = [[NSUserDefaults standardUserDefaults] boolForKey:@"parentheses"]; parenthesisSubmenuItem.state = (showParenthesis) ? NSOnState : NSOffState; + + // Display in Fahrenheit menu item + NSMenuItem *displayFahrenheitSubmenuItem = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Display temperature in degrees Fahrenheit", @"Display temperature in Fahrenheit setting") action:@selector(toggleFahrenheit:) keyEquivalent:@""]; + [displayFahrenheitSubmenuItem setTag:kBTRMenuFahrenheit]; + displayFahrenheitSubmenuItem.target = self; + displayFahrenheit = [[NSUserDefaults standardUserDefaults] boolForKey:@"fahrenheit"]; + displayFahrenheitSubmenuItem.state = (displayFahrenheit) ? NSOnState : NSOffState; // Build the setting submenu NSMenu *settingSubmenu = [[NSMenu alloc] initWithTitle:@"Setting Menu"]; [settingSubmenu addItem:advancedSubmenuItem]; [settingSubmenu addItem:parenthesisSubmenuItem]; + [settingSubmenu addItem:displayFahrenheitSubmenuItem]; // Settings menu item NSMenuItem *settingMenu = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Settings", @"Settings menuitem") action:nil keyEquivalent:@""]; @@ -328,11 +338,11 @@ - (void)updateStatusItemMenu [self.statusItem.menu itemWithTag:kBTRMenuPowerSourcePercent].title = [NSString stringWithFormat: NSLocalizedString(@"%ld %% left ( %ld/%ld mAh )", @"Advanced percentage left menuitem"), self.currentPercent, [currentBatteryPower integerValue], [maxBatteryPower integerValue]]; - // Each item in array will be a row in menu + // Each item in array will be a row in menu NSArray *advancedBatteryInfoTexts = [NSArray arrayWithObjects: [NSString stringWithFormat:NSLocalizedString(@"Cycle count: %ld", @"Advanced battery info menuitem"), [cycleCount integerValue]], [NSString stringWithFormat:NSLocalizedString(@"Power usage: %.2f Watt", @"Advanced battery info menuitem"), [watt doubleValue]], - [NSString stringWithFormat:NSLocalizedString(@"Temperature: %.1f°C", @"Advanced battery info menuitem"), [temperature doubleValue]], + (displayFahrenheit) ? [NSString stringWithFormat:NSLocalizedString(@"Temperature: %.1f°F", @"Advanced battery info menuitem"), [self convertCelsiusToFahrenheit:[temperature doubleValue]]] : [NSString stringWithFormat:NSLocalizedString(@"Temperature: %.1f°C", @"Advanced battery info menuitem"), [temperature doubleValue]], nil]; NSDictionary *advancedAttributedStyle = [NSDictionary dictionaryWithObjectsAndKeys: @@ -572,6 +582,28 @@ - (void)toggleParenthesis:(id)sender [self updateStatusItem]; } +- (void)toggleFahrenheit:(id)sender +{ + NSMenuItem *item = sender; + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + + if ([defaults boolForKey:@"fahrenheit"]) + { + item.state = NSOffState; + displayFahrenheit = NO; + [defaults setBool:NO forKey:@"fahrenheit"]; + } + else + { + item.state = NSOnState; + displayFahrenheit = YES; + [defaults setBool:YES forKey:@"fahrenheit"]; + } + [defaults synchronize]; + + [self updateStatusItem]; +} + - (void)notify:(NSString *)message { [self notify:@"Battery Time Remaining" message:message]; @@ -647,6 +679,11 @@ - (void)optionKeyPressed } } +- (double)convertCelsiusToFahrenheit:(double)celsius +{ + return ((celsius * 9.0) / 5.0 + 32.0); +} + #pragma mark - NSUserNotificationCenterDelegate methods // Force show notification diff --git a/Battery Time Remaining/de.lproj/Localizable.strings b/Battery Time Remaining/de.lproj/Localizable.strings index 9aeab64..9dcc92e 100644 Binary files a/Battery Time Remaining/de.lproj/Localizable.strings and b/Battery Time Remaining/de.lproj/Localizable.strings differ diff --git a/Battery Time Remaining/en.lproj/Localizable.strings b/Battery Time Remaining/en.lproj/Localizable.strings index 8c49659..a2ba57b 100644 Binary files a/Battery Time Remaining/en.lproj/Localizable.strings and b/Battery Time Remaining/en.lproj/Localizable.strings differ diff --git a/Battery Time Remaining/es.lproj/Localizable.strings b/Battery Time Remaining/es.lproj/Localizable.strings index b48c635..9f29807 100644 Binary files a/Battery Time Remaining/es.lproj/Localizable.strings and b/Battery Time Remaining/es.lproj/Localizable.strings differ diff --git a/Battery Time Remaining/fr.lproj/Localizable.strings b/Battery Time Remaining/fr.lproj/Localizable.strings index 36b0a71..fff5298 100644 Binary files a/Battery Time Remaining/fr.lproj/Localizable.strings and b/Battery Time Remaining/fr.lproj/Localizable.strings differ diff --git a/Battery Time Remaining/it.lproj/Localizable.strings b/Battery Time Remaining/it.lproj/Localizable.strings index 45a7ba2..560ef6d 100644 Binary files a/Battery Time Remaining/it.lproj/Localizable.strings and b/Battery Time Remaining/it.lproj/Localizable.strings differ diff --git a/Battery Time Remaining/ko.lproj/Localizable.strings b/Battery Time Remaining/ko.lproj/Localizable.strings index e9ed068..e489a65 100644 Binary files a/Battery Time Remaining/ko.lproj/Localizable.strings and b/Battery Time Remaining/ko.lproj/Localizable.strings differ diff --git a/Battery Time Remaining/nl.lproj/Localizable.strings b/Battery Time Remaining/nl.lproj/Localizable.strings index fa656dd..a0757ca 100644 Binary files a/Battery Time Remaining/nl.lproj/Localizable.strings and b/Battery Time Remaining/nl.lproj/Localizable.strings differ diff --git a/Battery Time Remaining/pl.lproj/Localizable.strings b/Battery Time Remaining/pl.lproj/Localizable.strings index ee17d26..4f62212 100644 Binary files a/Battery Time Remaining/pl.lproj/Localizable.strings and b/Battery Time Remaining/pl.lproj/Localizable.strings differ diff --git a/Battery Time Remaining/pt.lproj/Localizable.strings b/Battery Time Remaining/pt.lproj/Localizable.strings index f7f576e..e7a2f1a 100644 Binary files a/Battery Time Remaining/pt.lproj/Localizable.strings and b/Battery Time Remaining/pt.lproj/Localizable.strings differ diff --git a/Battery Time Remaining/ru.lproj/Localizable.strings b/Battery Time Remaining/ru.lproj/Localizable.strings index 38b44fc..c0112e8 100644 Binary files a/Battery Time Remaining/ru.lproj/Localizable.strings and b/Battery Time Remaining/ru.lproj/Localizable.strings differ diff --git a/Battery Time Remaining/sk.lproj/Localizable.strings b/Battery Time Remaining/sk.lproj/Localizable.strings index 4a4f0eb..2276003 100644 Binary files a/Battery Time Remaining/sk.lproj/Localizable.strings and b/Battery Time Remaining/sk.lproj/Localizable.strings differ diff --git a/Battery Time Remaining/sv.lproj/Localizable.strings b/Battery Time Remaining/sv.lproj/Localizable.strings index 006030a..71b109c 100644 Binary files a/Battery Time Remaining/sv.lproj/Localizable.strings and b/Battery Time Remaining/sv.lproj/Localizable.strings differ diff --git a/Battery Time Remaining/zh-Hans.lproj/Localizable.strings b/Battery Time Remaining/zh-Hans.lproj/Localizable.strings index 3d5cb99..e9ba1cb 100644 Binary files a/Battery Time Remaining/zh-Hans.lproj/Localizable.strings and b/Battery Time Remaining/zh-Hans.lproj/Localizable.strings differ