You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

208 lines
7.0 KiB

9 years ago
//
// CLAppearanceViewController.m
// Clocker
//
// Created by Abhishek Banthia on 12/19/15.
//
//
#import "CLAppearanceViewController.h"
#import "ApplicationDelegate.h"
#import "PanelController.h"
#import "CommonStrings.h"
#import "CLTimezoneData.h"
#import "CLFloatingWindowController.h"
9 years ago
@interface CLAppearanceViewController ()
@property (weak) IBOutlet NSSegmentedControl *timeFormat;
@property (weak) IBOutlet NSSegmentedControl *theme;
@property (weak) IBOutlet NSTextField *informationLabel;
@property (assign, nonatomic) BOOL enableOptions;
9 years ago
@end
@implementation CLAppearanceViewController
- (void)viewDidLoad {
[super viewDidLoad];
CALayer *viewLayer = [CALayer layer];
[viewLayer setBackgroundColor:CGColorCreateGenericRGB(255.0, 255.0, 255.0, 0.8)]; //RGB plus Alpha Channel
[self.view setWantsLayer:YES]; // view's backing store is using a Core Animation Layer
[self.view setLayer:viewLayer];
self.informationLabel.stringValue = @"Select a favourite timezone to enable menubar display options.";
self.informationLabel.textColor = [NSColor secondaryLabelColor];
self.enableOptions = [[NSUserDefaults standardUserDefaults] objectForKey:@"favouriteTimezone"] == nil ? NO : YES;
[self setAppropriateFont];
9 years ago
}
- (void)setAppropriateFont
{
NSOperatingSystemVersion operatingSystemVersion = [[NSProcessInfo processInfo] operatingSystemVersion];
if (operatingSystemVersion.minorVersion <= 10)
{
//Set up Helvetica Neue font
[self setFontFamily:@"HelveticaNeue-Light" forView:self.view andSubViews:YES];
}
}
-(void)setFontFamily:(NSString*)fontFamily forView:(NSView*)view andSubViews:(BOOL)isSubViews
{
if ([view isKindOfClass:[NSTextField class]])
{
NSTextField *lbl = (NSTextField *)view;
[lbl setFont:[NSFont fontWithName:fontFamily size:[[lbl font] pointSize]]];
}
if (isSubViews)
{
for (NSView *sview in view.subviews)
{
[self setFontFamily:fontFamily forView:sview andSubViews:YES];
}
}
}
9 years ago
- (IBAction)timeFormatSelectionChanged:(id)sender
{
NSSegmentedControl *timeFormat = (NSSegmentedControl *)sender;
[[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithInteger:timeFormat.selectedSegment] forKey:CL24hourFormatSelectedKey];
[self refreshMainTableview:YES andUpdateFloatingWindow:YES];
9 years ago
}
- (IBAction)themeChanged:(id)sender
{
NSSegmentedControl *themeSegment = (NSSegmentedControl *)sender;
//Get the current display mode
[self refreshMainTableview:NO andUpdateFloatingWindow:YES];
9 years ago
ApplicationDelegate *appDelegate = [[NSApplication sharedApplication] delegate];
PanelController *panelController = appDelegate.panelController;
[panelController.backgroundView setNeedsDisplay:YES];
if (themeSegment.selectedSegment == CLBlackTheme) {
panelController.shutdownButton.image = [NSImage imageNamed:@"PowerIcon-White"];
panelController.preferencesButton.image = [NSImage imageNamed:@"Settings-White"];
}
else
{
panelController.shutdownButton.image = [NSImage imageNamed:@"PowerIcon"];
panelController.preferencesButton.image = [NSImage imageNamed:NSImageNameActionTemplate];
}
9 years ago
if (panelController.defaultPreferences.count == 0)
{
[panelController updatePanelColor];
}
9 years ago
[panelController.mainTableview reloadData];
}
- (IBAction)displayModeChanged:(id)sender
{
NSSegmentedControl *modeSegment = (NSSegmentedControl *)sender;
ApplicationDelegate *sharedDelege = (ApplicationDelegate*)[NSApplication sharedApplication].delegate;
if (modeSegment.selectedSegment == 1)
{
sharedDelege.floatingWindow = [CLFloatingWindowController sharedFloatingWindow];
[sharedDelege.floatingWindow showWindow:nil];
9 years ago
[sharedDelege.floatingWindow.mainTableview reloadData];
[sharedDelege.floatingWindow startWindowTimer];
[NSApp activateIgnoringOtherApps:YES];
}
else
{
sharedDelege.floatingWindow = [CLFloatingWindowController sharedFloatingWindow];
[sharedDelege.floatingWindow.window close];
[sharedDelege.panelController updateDefaultPreferences];
}
}
- (IBAction)changeRelativeDayDisplay:(id)sender
{
NSSegmentedControl *relativeDayControl = (NSSegmentedControl*) sender;
NSNumber *selectedIndex = [NSNumber numberWithInteger:relativeDayControl.selectedSegment];
9 years ago
[[NSUserDefaults standardUserDefaults] setObject:selectedIndex forKey:CLRelativeDateKey];
[self refreshMainTableview:YES andUpdateFloatingWindow:YES];
9 years ago
}
- (void)refreshMainTableview:(BOOL)panel andUpdateFloatingWindow:(BOOL)value
9 years ago
{
dispatch_async(dispatch_get_main_queue(), ^{
if (panel)
{
ApplicationDelegate *appDelegate = [[NSApplication sharedApplication] delegate];
PanelController *panelController = appDelegate.panelController;
[panelController updateDefaultPreferences];
[panelController.mainTableview reloadData];
[appDelegate.menubarController shouldIconBeUpdated:YES];
}
if (value)
{
//Get the current display mode
NSNumber *displayMode = [[NSUserDefaults standardUserDefaults] objectForKey:CLShowAppInForeground];
if (displayMode.integerValue == 1)
{
//Get the Floating window instance
for (NSWindow *window in [NSApplication sharedApplication].windows)
{
if ([window.windowController isKindOfClass:[CLFloatingWindowController class]])
{
CLFloatingWindowController *currentInstance = (CLFloatingWindowController *)window.windowController;
[currentInstance.mainTableview reloadData];
//Only one instance where we need to update panel color and in that instance we pass panel as NO
if (!panel)
{
[currentInstance updatePanelColor];
}
}
}
}
}
9 years ago
});
}
- (IBAction)changeMenuBarDisplayPreferences:(id)sender
{
NSSegmentedControl *segmentedControl = (NSSegmentedControl *)sender;
NSNumber *shouldDayBeShown = [NSNumber numberWithBool:[segmentedControl isSelectedForSegment:0]];
NSNumber *shouldCityBeShown = [NSNumber numberWithBool:[segmentedControl isSelectedForSegment:1]];
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:shouldDayBeShown forKey:@"shouldDayBeShown"];
[userDefaults setObject:shouldCityBeShown forKey:@"shouldCityBeShown"];
}
- (IBAction)showFutureSlider:(id)sender
{
//Get the current display mode
[self refreshMainTableview:NO andUpdateFloatingWindow:YES];
}
9 years ago
@end