From 704d4571518fdc460f476d4bb4fced68bea6fb9e Mon Sep 17 00:00:00 2001 From: Elle Mundy Date: Mon, 26 Mar 2018 15:47:57 -0400 Subject: [PATCH] Add calibration scale for displays whose brightness don't match --- BrightnessMenulet/LMUController.m | 8 +- BrightnessMenulet/Preferences.xib | 142 ++++++++++++++++------ BrightnessMenulet/PreferencesController.m | 33 +++++ 3 files changed, 143 insertions(+), 40 deletions(-) diff --git a/BrightnessMenulet/LMUController.m b/BrightnessMenulet/LMUController.m index 82f3671..3d16ad0 100755 --- a/BrightnessMenulet/LMUController.m +++ b/BrightnessMenulet/LMUController.m @@ -7,6 +7,7 @@ // #import "LMUController.h" +#include @interface LMUController () @@ -82,11 +83,16 @@ - (float) getSystemBrightness { } } +- (float)getScale { + NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; + return [defaults floatForKey:@"LMUScale"]; +} - (void)updateTimerCallBack { float value = self.getSystemBrightness; - int newPercent = value * 100; + int newPercent = fmin(value * 100 * self.getScale, 100.0); + NSLog(@"\nnewPercent: %i\nvalue: %f\ngetScale: %f", newPercent, value, self.getScale); for(Screen* screen in controls.screens) { diff --git a/BrightnessMenulet/Preferences.xib b/BrightnessMenulet/Preferences.xib index 02e75d8..3297715 100755 --- a/BrightnessMenulet/Preferences.xib +++ b/BrightnessMenulet/Preferences.xib @@ -1,9 +1,10 @@ - - + + - + + @@ -19,6 +20,9 @@ + + + @@ -32,20 +36,22 @@ - - + + - + - - + + + + @@ -57,6 +63,7 @@ + @@ -67,14 +74,16 @@ - + + - + + @@ -82,6 +91,7 @@ + @@ -89,6 +99,7 @@ + @@ -96,6 +107,7 @@ + @@ -105,6 +117,7 @@ + @@ -113,6 +126,7 @@ + @@ -142,34 +158,25 @@ - - - - + + + - + - - + + - + + @@ -180,7 +187,8 @@ - + + @@ -188,19 +196,68 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + @@ -217,7 +274,8 @@ - - + + + + @@ -252,9 +313,11 @@ + + @@ -263,9 +326,11 @@ + + @@ -274,15 +339,14 @@ + - - - + diff --git a/BrightnessMenulet/PreferencesController.m b/BrightnessMenulet/PreferencesController.m index 9fba7a6..34bf3ea 100755 --- a/BrightnessMenulet/PreferencesController.m +++ b/BrightnessMenulet/PreferencesController.m @@ -37,7 +37,12 @@ @interface PreferencesController () @property (weak) IBOutlet NSTextField *updateIntTextField; @property (weak) IBOutlet NSStepper *updateIntStepper; +@property (weak) IBOutlet NSSlider *scaleSlider; +@property (weak) IBOutlet NSTextField *scaleTextField; +@property (weak) IBOutlet NSStepper *scaleStepper; + @property (strong) NSArray* updateIntervalOutlets; +@property (strong) NSArray* scaleOutlets; // MASShortcut @property (nonatomic, weak) IBOutlet MASShortcutView *shortcutViewBrighter; @@ -66,6 +71,7 @@ - (void)showWindow { _contrastOutlets = @[_contCSlider, _contCTextField, _contCStepper]; _updateIntervalOutlets = @[_updateIntervalSlider, _updateIntTextField, _updateIntStepper]; + _scaleOutlets = @[_scaleSlider, _scaleTextField, _scaleStepper]; _updateIntervalSlider.maxValue = 4.0; _updateIntervalSlider.minValue = 0.1; @@ -81,6 +87,14 @@ - (void)showWindow { for(id outlet in _updateIntervalOutlets) [outlet setFloatValue:updateInterval]; + + float scale = [defaults floatForKey:@"LMUScale"]; + + if(scale <= _scaleSlider.minValue) + scale = _scaleSlider.minValue; + + for(id outlet in _scaleOutlets) + [outlet setFloatValue:scale]; self.shortcutViewBrighter.associatedUserDefaultsKey = @"ShortcutBrighter"; self.shortcutViewDarker.associatedUserDefaultsKey = @"ShortcutDarker"; @@ -253,12 +267,31 @@ - (IBAction)updateIntOutletValueChanged:(id)sender { } +- (IBAction)updateScaleOutletValueChanged:(id)sender { + NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; + float value = [sender floatValue]; + + if(value > _scaleSlider.maxValue) + value = _scaleSlider.maxValue; + else if(value <= _scaleSlider.minValue) + value = _scaleSlider.minValue; + + [defaults setFloat:value forKey:@"LMUScale"]; + + NSMutableArray* dirtyOutlets = [_scaleOutlets mutableCopy]; + [dirtyOutlets removeObject:sender]; + + for(id outlet in dirtyOutlets) + [outlet setFloatValue:value]; +} + #pragma mark - NSWindowDelegate - (void)windowWillClose:(NSNotification *)notification { _brightnessOutlets = nil; _contrastOutlets = nil; _updateIntervalOutlets = nil; + _scaleOutlets = nil; _preferenceWindow = nil; // RestartLMU Controller to apply any interval changes